:root {
  --navy:#063a5e; --navy-dark:#052b47; --blue:#0888b9; --cyan:#10a9d6;
  --green:#17986c; --red:#c84040; --amber:#c77a09; --ink:#173247;
  --muted:#687d8e; --line:#dfe7ed; --panel:#fff; --bg:#f3f6f9;
  --shadow:0 12px 34px rgba(15,48,72,.10); --radius:16px;
}
*{box-sizing:border-box}
body.modal-open{overflow:hidden}
html,body{margin:0;min-height:100%;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--bg)}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.hidden{display:none!important}
.muted{color:var(--muted)}
.eyebrow{display:inline-block;color:var(--blue);font-size:.72rem;font-weight:800;letter-spacing:.14em;margin-bottom:.35rem}
.login-screen{min-height:100vh;display:grid;place-items:center;padding:2rem;background:radial-gradient(circle at 20% 10%,#dff4fb 0,transparent 34%),linear-gradient(145deg,#f8fafc,#eaf1f6)}
.login-card{width:min(430px,100%);background:#fff;border:1px solid #e3ebf1;border-radius:22px;padding:2.2rem;box-shadow:0 24px 70px rgba(5,45,75,.16)}
.login-logo{display:block;width:min(270px,80%);height:105px;object-fit:contain;margin:0 auto 1.25rem}
.login-card h1{margin:.1rem 0 .45rem;font-size:1.85rem;color:var(--navy)}
.login-card form{display:grid;gap:.55rem;margin-top:1.2rem}
label{font-weight:700;font-size:.86rem;color:#385369;margin-top:.35rem}
input,select,textarea{width:100%;border:1px solid #cedbe4;border-radius:10px;background:#fff;color:var(--ink);padding:.78rem .85rem;outline:none;transition:.15s}
input:focus,select:focus,textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(16,169,214,.12)}
textarea{resize:vertical;min-height:92px}
.button{border:0;border-radius:10px;padding:.75rem 1rem;font-weight:750;transition:.15s}
.button:hover{transform:translateY(-1px)}
.button:disabled{opacity:.45;cursor:not-allowed;transform:none}
.button-primary{color:#fff;background:linear-gradient(120deg,var(--navy),var(--blue));box-shadow:0 7px 18px rgba(6,58,94,.18)}
.button-secondary{background:#e8f4f8;color:var(--navy)}
.button-danger{background:#feecec;color:#9d2828}
.button-ghost{background:rgba(255,255,255,.09);color:#fff;border:1px solid rgba(255,255,255,.18)}
.button-block{width:100%;margin-top:.65rem}
.status{padding:.7rem .85rem;border-radius:10px;font-size:.86rem;font-weight:650;margin:1rem 0}
.status-loading{background:#eef3f7;color:#567083}.status-ok{background:#e6f6ef;color:#14744f}.status-error{background:#fff0f0;color:#a92e2e}
.form-error{color:var(--red);font-size:.86rem;min-height:1.2rem}
.app-shell{display:grid;grid-template-columns:270px 1fr;min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;width:270px;background:linear-gradient(180deg,var(--navy-dark),var(--navy));color:#fff;padding:1.25rem 1rem;display:flex;flex-direction:column;z-index:20;box-shadow:8px 0 24px rgba(4,35,57,.12)}
.brand{display:flex;align-items:center;gap:.7rem;padding:.35rem .4rem 1rem;border-bottom:1px solid rgba(255,255,255,.13)}
.brand img{width:60px;height:42px;object-fit:contain;background:#fff;border-radius:9px;padding:.2rem}.brand strong,.brand small{display:block}.brand small{opacity:.72;margin-top:.12rem}
.user-card{width:100%;display:flex;align-items:center;gap:.7rem;padding:1rem .45rem;border:0;background:transparent;color:#fff;text-align:left;cursor:pointer}.user-card strong,.user-card span{display:block}.user-card-copy{min-width:0}.user-card-copy>span{font-size:.76rem;opacity:.72;margin-top:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-avatar,.profile-avatar{display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:var(--blue);color:#fff;font-weight:800;overflow:hidden}.user-avatar{width:44px;height:44px;font-size:.9rem}.user-avatar img,.profile-avatar img{width:100%;height:100%;object-fit:cover}.user-card:hover{background:rgba(255,255,255,.1);border-radius:10px}
.pill{width:max-content!important;margin-top:.75rem!important;padding:.32rem .6rem;border-radius:999px;background:#dff5eb;color:#11734e!important;opacity:1!important;font-weight:800;font-size:.65rem!important;letter-spacing:.03em}
nav{display:grid;gap:.22rem;overflow:auto;padding-right:.15rem}.nav-item{border:0;background:transparent;color:#e8f2f8;text-align:left;padding:.67rem .7rem;border-radius:9px;font-weight:650}.nav-icon{width:18px;height:18px;vertical-align:-4px;margin-right:.35rem;color:#71d1ef;stroke:currentColor}.nav-item:hover,.nav-item.active{background:rgba(255,255,255,.13);color:#fff}.nav-item:hover .nav-icon,.nav-item.active .nav-icon{color:#fff}.nav-item.active{box-shadow:inset 3px 0 0 #35c4eb}
.sidebar-footer{margin-top:auto;padding:.8rem .35rem 0}.sidebar-footer small{display:block;opacity:.65;margin:.55rem 0}.api-indicator{font-size:.82rem}.api-indicator i,.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#32c68b;margin-right:.4rem;box-shadow:0 0 0 4px rgba(50,198,139,.13)}
.workspace{grid-column:2;min-width:0}.topbar{height:70px;position:sticky;top:0;z-index:10;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 1.6rem}.topbar strong,.topbar-label{display:block}.topbar-label{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.topbar-right{font-size:.78rem;color:var(--muted)}.menu-button{display:none;border:0;background:transparent;font-size:1.3rem;color:var(--navy)}
.content{padding:1.55rem;max-width:1650px;margin:auto}
.page-head{padding:1rem 0 .75rem;margin-bottom:.2rem}.page-head h1{margin:0;color:var(--navy);font-size:1.45rem}.page-head p{margin:.3rem 0 0;color:var(--muted)}
.profile-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:1rem}.profile-card{text-align:center}.profile-avatar{width:120px;height:120px;margin:.25rem auto 1rem;font-size:2rem}.profile-card .button{width:100%}.profile-card p{font-size:.75rem}.profile-details{grid-template-columns:repeat(3,minmax(0,1fr))}.profile-phone{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}.profile-phone .actions{align-items:center}.profile-phone .actions input{max-width:360px}.profile-phone p{font-size:.75rem}
.hero{background:linear-gradient(120deg,var(--navy),#075c88 62%,var(--cyan));color:#fff;border-radius:var(--radius);padding:1.25rem 1.45rem;box-shadow:var(--shadow);margin-bottom:1.15rem}.hero h1{font-size:1.55rem;margin:0}.hero p{margin:.35rem 0 0;opacity:.86}
.notice{padding:.8rem 1rem;border-radius:10px;border-left:4px solid var(--cyan);background:#e8f7fc;color:#27566d;margin:.8rem 0 1rem}.notice-warning{border-color:#e4a536;background:#fff8e8;color:#755313}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1.15rem;box-shadow:0 5px 18px rgba(14,47,71,.045);margin-bottom:1rem}.panel h2,.panel h3{margin:.1rem 0 .9rem;color:var(--navy)}
.grid{display:grid;gap:1rem}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.field{display:flex;flex-direction:column;gap:.35rem}.actions{display:flex;gap:.65rem;align-items:end;flex-wrap:wrap;margin-top:1rem}
.metric{background:#fff;border:1px solid var(--line);border-radius:13px;padding:1rem;min-height:92px}.metric span{display:block;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.05em}.metric strong{display:block;font-size:1.38rem;color:var(--navy);margin-top:.3rem;word-break:normal;overflow-wrap:anywhere}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}.data-table{border-collapse:collapse;width:100%;font-size:.8rem;white-space:nowrap}.data-table th{position:sticky;top:0;background:#edf3f7;color:#365064;text-align:left;padding:.7rem;border-bottom:1px solid var(--line);z-index:1}.data-table td{padding:.66rem .7rem;border-bottom:1px solid #edf1f4;max-width:340px;overflow:hidden;text-overflow:ellipsis}.data-table td.action-cell{max-width:none;overflow:visible;white-space:nowrap;position:sticky;right:0;background:#fff;box-shadow:-3px 0 6px rgba(0,0,0,.05)}.data-table th.action-cell{max-width:none;overflow:visible;white-space:nowrap;position:sticky;right:0;background:#edf3f7;z-index:2;box-shadow:-3px 0 6px rgba(0,0,0,.05)}.data-table tbody tr:hover{background:#f4fafc}.data-table tbody tr:hover td.action-cell{background:#f4fafc}.empty{padding:2rem;text-align:center;color:var(--muted)}
.badge{display:inline-block;padding:.25rem .5rem;border-radius:999px;background:#e8f3f8;color:#27637f;font-weight:750;font-size:.72rem}.success-box{padding:1rem;border-radius:12px;background:#e6f7ef;border:1px solid #bee9d7;color:#126b49;margin-top:1rem}.error-box{padding:1rem;border-radius:12px;background:#fff0f0;border:1px solid #f0c8c8;color:#9a2d2d;margin-top:1rem}
.json{background:#102d40;color:#d8ecf7;padding:1rem;border-radius:10px;overflow:auto;max-height:420px;font-size:.75rem}.section-title{display:flex;justify-content:space-between;align-items:center;gap:1rem}.counter{font-size:.8rem;color:var(--muted)}
.checkbox-row{display:flex;align-items:flex-start;gap:.55rem;margin-top:1rem;font-weight:650}.checkbox-row input{width:auto;margin-top:.2rem}
.content{position:relative}
.loading-overlay{position:absolute;inset:0;background:rgba(240,246,250,.72);backdrop-filter:blur(2px);z-index:5;display:grid;place-content:center;justify-items:center;gap:.7rem;color:var(--navy);font-weight:750;min-height:200px}.spinner{width:38px;height:38px;border:4px solid #cce5ef;border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.toast{position:fixed;right:1.2rem;top:1.2rem;z-index:200;max-width:420px;padding:.85rem 1rem;border-radius:11px;background:var(--navy);color:#fff;box-shadow:var(--shadow);transform:translateY(-140%);transition:.25s}.toast.show{transform:translateY(0)}.toast.error{background:#a93232}.toast.success{background:#14754f}
@media(max-width:980px){.app-shell{display:block}.sidebar{transform:translateX(-105%);transition:.22s}.app-shell.menu-open .sidebar{transform:translateX(0)}.workspace{grid-column:1}.menu-button{display:block}.topbar{padding:0 .85rem}.topbar-right{display:none}.content{padding:1rem}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.login-screen{padding:.8rem}.login-card{padding:1.35rem}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.hero{padding:1rem}.hero h1{font-size:1.3rem}.content{padding:.75rem}.actions .button{width:100%}}
@media(max-width:640px){.profile-layout{grid-template-columns:1fr}.profile-details{grid-template-columns:1fr}.profile-phone .actions{display:grid}.profile-phone .actions input{max-width:none}}

/* ERP Web — visão operacional ampliada */
.nav-section{display:block;margin:.72rem .7rem .16rem;color:#8ccde4;font-size:.63rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
#main-nav>.nav-section:first-child{margin-top:0}
.topbar-actions{display:flex;align-items:center;gap:.75rem}.last-sync{font-size:.72rem;color:var(--muted)}
.topbar-search{display:flex;align-items:center;gap:.4rem;width:min(420px,34vw);margin:0 1rem}.topbar-search input{height:38px;padding:.55rem .75rem;background:#f7fafc}.topbar-search .icon-button{flex:none}
.icon-button{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--navy);font-size:1.05rem}.icon-button:hover{background:#edf7fa}
.hero{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:108px}
.hero-eyebrow{display:block;margin-bottom:.35rem;font-size:.65rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;opacity:.72}
.hero-chip{flex:none;padding:.45rem .7rem;border:1px solid rgba(255,255,255,.32);border-radius:999px;background:rgba(255,255,255,.1);font-size:.65rem;font-weight:800;letter-spacing:.06em}
.toolbar{display:flex;align-items:end;gap:1rem;flex-wrap:wrap}.toolbar .field{min-width:280px}.field.compact{max-width:320px}.field.wide{grid-column:span 2}
.filter-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:.85rem;align-items:end}
.search-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.8rem;align-items:end}.secondary-row{margin-top:1rem;padding:1rem;background:#f5f9fb;border:1px solid var(--line);border-radius:12px}
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem;margin-bottom:1rem}.metric small{display:block;margin-top:.35rem;color:var(--muted);line-height:1.35}
.metric.good{border-color:#bce5d3;background:#f5fcf8}.metric.good strong{color:#14734f}.metric.warn{border-color:#f0d59c;background:#fffaf0}.metric.warn strong{color:#9a6105}.metric.bad{border-color:#f0c5c5;background:#fff7f7}.metric.bad strong{color:#a63232}
.dashboard-stack{display:grid;gap:0}.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.dashboard-grid>.panel{min-width:0}.dashboard-grid>.span-2{grid-column:span 2}
.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.9rem}.section-heading h2{font-size:1.02rem;margin:0!important}.section-heading p{margin:.24rem 0 0;color:var(--muted);font-size:.78rem}
.distribution{display:grid;gap:.58rem}.bar-row{display:grid;grid-template-columns:minmax(120px,1.3fr) minmax(120px,2fr) 48px;gap:.7rem;align-items:center;font-size:.78rem}.bar-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-row>strong{text-align:right;color:var(--navy)}
.bar-row progress{width:100%;height:9px;border:0;border-radius:999px;overflow:hidden;background:#e9f0f4}.bar-row progress::-webkit-progress-bar{background:#e9f0f4;border-radius:999px}.bar-row progress::-webkit-progress-value{background:linear-gradient(90deg,var(--blue),var(--cyan));border-radius:999px}.bar-row progress::-moz-progress-bar{background:var(--blue);border-radius:999px}
.status-badge{display:inline-block;padding:.25rem .52rem;border-radius:999px;font-size:.69rem;font-weight:800;text-transform:uppercase;letter-spacing:.025em}.status-badge.good{background:#e2f5ec;color:#11724c}.status-badge.warn{background:#fff0cf;color:#895603}.status-badge.bad{background:#fde5e5;color:#9d2d2d}.status-badge.neutral{background:#e9f2f7;color:#365f76}
.table-meta{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:.25rem 0 .5rem;color:var(--muted);font-size:.75rem}.data-table td{height:45px}.table-action,.link-button{border:0;background:#e8f4f8;color:var(--navy);padding:.38rem .58rem;border-radius:7px;font-size:.72rem;font-weight:750;white-space:nowrap}.table-action:hover,.link-button:hover{background:#d7edf5}.compact-actions{margin:0;gap:.35rem;flex-wrap:nowrap}.table-meta{flex-wrap:wrap}.table-search{flex:0 1 260px;min-width:160px;width:auto;padding:.5rem .7rem;font-size:.78rem}.data-table th[data-sort-key]{cursor:pointer;user-select:none}.data-table th[data-sort-key]:hover{background:#e2edf4}.data-table th[data-sort-key] .sort-arrow{display:inline-block;margin-left:.35rem;font-size:.72em;opacity:.4}.data-table th[data-sort-key].sort-active .sort-arrow{opacity:1;color:var(--cyan)}.data-table td.table-empty-row{text-align:center;color:var(--muted)}
.inline-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.7rem;margin:1rem 0}.inline-summary .metric{min-height:78px;padding:.78rem}.inline-summary .metric strong{font-size:1.1rem}
.key-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0}.key-values>div{padding:.75rem;border-bottom:1px solid #edf1f4}.key-values dt{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.045em}.key-values dd{margin:.25rem 0 0;font-weight:650;overflow-wrap:anywhere}
.dossier-header{margin-bottom:1rem}.dispatch-context{margin:1rem 0}.panel.nested{margin-top:1rem;box-shadow:none;background:#f8fbfc}.panel summary{cursor:pointer;font-weight:750;color:var(--navy)}
.success-box,.error-box{display:flex;align-items:flex-start;gap:.35rem;flex-direction:column}.error-box .link-button{margin-top:.35rem;background:#fff;color:#992e2e;border:1px solid #efc1c1}
.skeleton-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.9rem}.skeleton-grid i,.skeleton-lines i{display:block;border-radius:12px;background:linear-gradient(90deg,#edf2f5 25%,#f8fafb 50%,#edf2f5 75%);background-size:220% 100%;animation:shimmer 1.2s infinite}.skeleton-grid i{height:96px}.skeleton-lines{display:grid;gap:.7rem}.skeleton-lines i{height:48px}@keyframes shimmer{to{background-position:-220% 0}}
.api-indicator.offline i{background:#d84b4b;box-shadow:0 0 0 4px rgba(216,75,75,.15)}
.modal-backdrop{position:fixed;inset:0;z-index:150;background:rgba(3,31,50,.58);backdrop-filter:blur(4px);display:grid;place-items:center;padding:1rem}.modal-card{width:min(1120px,96vw);max-height:92vh;display:flex;flex-direction:column;background:#f5f8fa;border:1px solid #d7e3ea;border-radius:18px;box-shadow:0 28px 90px rgba(1,25,42,.32);overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.2rem;background:#fff;border-bottom:1px solid var(--line)}.modal-header h2{margin:.12rem 0 0;color:var(--navy);font-size:1.25rem}.modal-body{padding:1rem;overflow:auto}.modal-body>.panel:last-child{margin-bottom:0}.modal-loading{padding:3rem;text-align:center;color:var(--muted)}
.team-stage-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.65rem;margin:1rem 0}.team-stage-grid .metric{min-height:78px;padding:.75rem}.team-stage-grid .metric strong{font-size:1.15rem}.record-raw{margin-top:1rem}
.dispatch-type-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.7rem}.dispatch-type{display:flex;flex-direction:column;gap:.25rem;min-height:78px;padding:.85rem;text-align:left;border:1px solid var(--line);border-radius:12px;background:#f7fafc;color:var(--ink)}.dispatch-type strong{color:var(--navy)}.dispatch-type span{color:var(--muted);font-size:.72rem;line-height:1.35}.dispatch-type:hover,.dispatch-type.active{border-color:var(--cyan);background:#eaf8fc;box-shadow:0 0 0 2px rgba(16,169,214,.09)}
.team-check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;margin:1rem 0}.team-check{display:flex;align-items:center;gap:.5rem;padding:.7rem;border:1px solid var(--line);border-radius:10px;background:#f8fbfc;font-size:.78rem}.team-check input{width:auto;margin:0}.team-check:has(input:checked){border-color:#69c6df;background:#eaf8fc;color:var(--navy)}.team-check.is-disabled{background:#f4f5f6;color:#6b7480;border-style:dashed;opacity:.82}.team-check.is-disabled b{color:#9b2c2c}.team-check.is-disabled input{cursor:not-allowed}
.user-access-block{margin-top:1rem;padding:1rem;border:1px solid var(--line);border-radius:13px;background:#f8fbfc}.user-access-block h3{margin:0;color:var(--navy);font-size:.88rem}.user-access-block p{margin:.25rem 0 .8rem;color:var(--muted);font-size:.73rem}.access-check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;margin-top:.75rem}.access-check{display:flex;align-items:center;gap:.5rem;min-height:42px;padding:.62rem .7rem;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:.75rem}.access-check input{width:auto;margin:0}.access-check:has(input:checked){border-color:#69c6df;background:#eaf8fc;color:var(--navy)}.access-check:has(input:disabled){opacity:.65}
.permission-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.permission-groups{display:grid;gap:.8rem;margin-top:.8rem}.permission-group{padding:.8rem;border:1px solid #dce8ee;border-radius:11px;background:#fff}.permission-group h4{margin:0;color:var(--navy);font-size:.8rem}.permission-group .access-check-grid{margin-top:.55rem}.erp-modules{margin-top:1rem;padding:.8rem;border-top:1px solid var(--line)}.erp-modules summary{cursor:pointer;color:var(--navy);font-size:.8rem;font-weight:750}
.nested-section{margin-top:1rem;padding:1rem;border:1px solid var(--line);border-radius:13px;background:#f8fbfc}.maneuver-key{display:grid;grid-template-columns:34px minmax(180px,2fr) minmax(105px,.7fr) minmax(120px,.8fr) minmax(170px,1.4fr) minmax(110px,.8fr) minmax(110px,.8fr) auto;gap:.5rem;align-items:center;margin:.55rem 0}.maneuver-key input,.maneuver-key select{padding:.62rem}.key-number{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--navy);color:#fff;font-weight:800;font-size:.75rem}
.answer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0}.answer-grid>div{padding:.72rem;border:1px solid #e6edf2;margin:-1px 0 0 -1px;background:#fff}.answer-grid dt{font-size:.66rem;color:var(--muted);text-transform:uppercase;letter-spacing:.035em}.answer-grid dd{margin:.3rem 0 0;font-weight:650;font-size:.82rem;white-space:pre-wrap;overflow-wrap:anywhere}.response-stack{display:grid;gap:.8rem}.response-card{border:1px solid var(--line);border-radius:13px;padding:1rem;background:#f8fbfc}.response-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.8rem}.response-card-head strong,.response-card-head small{display:block}.response-card-head strong{color:var(--navy)}.response-card-head small{margin-top:.2rem;color:var(--muted);font-size:.72rem}
.answer-stage{margin-top:1rem}.answer-stage h4{margin:0 0 .45rem;color:var(--navy);font-size:.82rem}.arrastos-list{display:grid;gap:.4rem;margin-top:.7rem}.arrasto-row{display:grid;grid-template-columns:1.2fr 1fr 1fr auto;gap:.5rem;align-items:center;padding:.55rem .7rem;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:.75rem}.photo-pdf{display:grid;place-items:center;gap:.3rem;color:var(--navy);font-weight:800}.pdf-icon{font-size:1.25rem;color:#b42318}
.card-badges{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;justify-content:flex-end}.alteracao-croqui{margin:1rem 0}.alteracao-croqui .photo-card{max-width:240px}.alteracao-descricao{margin-bottom:.8rem}
.emergency-response>h4{margin:1rem 0 .45rem;color:var(--navy);font-size:.82rem}.emergency-response>.key-values{border:1px solid #e3edf2;border-radius:10px;overflow:hidden;background:#fff}.emergency-response>.panel{margin-top:1rem;box-shadow:none;background:#fff}.emergency-response>.photo-gallery{margin-top:.45rem}
.photo-gallery{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:.8rem}.photo-card{margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.photo-button{position:relative;display:block;width:100%;aspect-ratio:4/3;padding:0;border:0;background:#eaf1f5;overflow:hidden}.photo-button img{display:block;width:100%;height:100%;object-fit:cover;opacity:0;transition:.2s}.photo-button.loaded img{opacity:1}.photo-loading{position:absolute;inset:0;display:grid;place-items:center;padding:1rem;color:var(--muted);font-size:.72rem}.photo-button.loaded .photo-loading{display:none}.photo-card figcaption{padding:.6rem .7rem;color:#456276;font-size:.72rem}.photo-preview{display:grid;place-items:center;min-height:280px}.photo-preview img{max-width:100%;max-height:75vh;border-radius:12px;box-shadow:var(--shadow)}
.closer-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.65rem}.closer-card{padding:.8rem;border:1px solid var(--line);border-radius:12px;background:#f8fbfc}.closer-card span,.closer-card small{display:block}.closer-card span{font-weight:750;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.closer-card strong{display:block;margin:.25rem 0;font-size:1.35rem;color:var(--blue)}.closer-card small{color:var(--muted)}.closing-actions{display:grid;gap:.35rem}.closing-actions .closing-row{display:flex;align-items:center;gap:.35rem}.table-select{width:220px;min-width:220px;max-width:220px;padding:.42rem .55rem;border-radius:7px;font-size:.72rem}.danger-link{background:#feecec;color:#9d2828}.danger-link:hover{background:#f8dada}
.attachment-section{border-color:#c7dce7;background:linear-gradient(180deg,#fbfdfe,#f4f9fb)}.attachment-section .filter-grid{margin-top:.35rem}.attachment-section input[type=file]{padding:.56rem;background:#fff;font-size:.76rem}.premise-list{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.8rem}.premise-list span{padding:.38rem .58rem;border:1px solid #cfe3ec;border-radius:999px;background:#eaf6fa;color:#295b71;font-size:.69rem;font-weight:750}.compact-box{margin:.25rem 0 .8rem;padding:.7rem}.ads-close-panel{border-color:#e6d29f;background:linear-gradient(180deg,#fff,#fffdf7)}
.pag-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.7rem;margin:1rem 0}.pag-card{display:grid;gap:.25rem;padding:.85rem;text-align:left;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);cursor:pointer}.pag-card:hover,.pag-card.active{border-color:var(--cyan);background:#effafe;box-shadow:0 0 0 2px rgba(16,169,214,.1)}.pag-card span{color:var(--muted);font-size:.75rem;font-weight:750}.pag-card strong{font-size:1.35rem;color:var(--navy)}.pag-card small{color:var(--muted);font-size:.7rem}.pag-card-alerta{border-color:#f0d59c;background:#fffaf0}.pag-card-alerta strong{color:#9a6105}

@media(min-width:1350px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid>.span-2{grid-column:span 2}}
@media(max-width:1200px){.filter-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.key-values,.answer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.team-stage-grid,.closer-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dispatch-type-grid,.access-check-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-gallery{grid-template-columns:repeat(3,minmax(150px,1fr))}.maneuver-key{grid-template-columns:34px repeat(2,minmax(130px,1fr));padding-bottom:.7rem;border-bottom:1px solid var(--line)}.topbar-search{width:min(330px,30vw)}}
@media(max-width:980px){.dashboard-grid>.span-2{grid-column:span 1}.last-sync{display:none}.topbar-actions{gap:.35rem}.dashboard-grid{grid-template-columns:1fr}.hero-chip{display:none}.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skeleton-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar-search{width:min(340px,42vw)}}
@media(max-width:640px){.hero{align-items:flex-start}.filter-grid,.metric-grid,.inline-summary,.key-values,.answer-grid,.skeleton-grid{grid-template-columns:1fr}.field.wide{grid-column:auto}.search-row{grid-template-columns:1fr}.search-row .button{width:100%}.toolbar{display:grid}.toolbar .field{min-width:0}.bar-row{grid-template-columns:100px minmax(70px,1fr) 36px}.topbar-actions .topbar-right{display:none}.last-sync{display:none}.topbar-search{display:none}.team-stage-grid,.closer-grid,.dispatch-type-grid,.team-check-grid,.access-check-grid{grid-template-columns:1fr}.photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.maneuver-key{grid-template-columns:30px 1fr}.closing-actions{min-width:380px}.modal-backdrop{padding:.35rem}.modal-card{width:100%;max-height:97vh}.modal-body{padding:.65rem}}

/* ERP Web — Indicadores: abas, gráfico de barras e o padrão "em construção" */
.tab-bar{display:flex;gap:.35rem;flex-wrap:wrap;margin:0 0 1rem;padding:.3rem;background:#e9f1f6;border:1px solid var(--line);border-radius:13px}
.tab{flex:1 1 auto;min-width:max-content;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:0;background:transparent;color:#41627a;padding:.6rem .85rem;border-radius:10px;font-weight:700;font-size:.82rem;transition:.15s}
.tab:hover{background:rgba(255,255,255,.65);color:var(--navy)}
.tab.active{background:#fff;color:var(--navy);box-shadow:0 3px 10px rgba(10,52,80,.09)}
.tab-flag{font-style:normal;padding:.15rem .38rem;border-radius:999px;background:#fdf0d8;color:#8a5c07;font-size:.6rem;font-weight:800;letter-spacing:.03em;text-transform:uppercase}
.tab.active .tab-flag{background:#fbe4b6}

.bar-chart{display:flex;align-items:flex-end;gap:.55rem;height:var(--chart-h,170px);padding:1.4rem .25rem .25rem;overflow-x:auto}
.bar-col{flex:1 1 0;min-width:52px;height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;justify-items:center;align-items:end;gap:.3rem}
.bar-track{display:flex;align-items:flex-end;justify-content:center;width:100%;height:100%;min-height:0}
.bar-col i{display:block;width:100%;max-width:74px;min-height:4px;flex:none;border-radius:7px 7px 3px 3px;background:linear-gradient(180deg,var(--cyan),var(--blue));transition:.2s}
.bar-col:hover i{filter:brightness(1.08)}
/* Mes PARCIAL no grafico de producao: aparece, mas nao entrou na media da
   capacidade. Listrado em vez de cor nova — a diferenca aqui e "nao conta",
   nao uma categoria a mais. */
.bar-col i.bar-muted{background:repeating-linear-gradient(135deg,var(--muted) 0,var(--muted) 5px,transparent 5px,transparent 10px);opacity:.55}
.bar-col .bar-value{font-size:.72rem;font-weight:800;color:var(--navy);white-space:nowrap}
.bar-col .bar-label{font-size:.68rem;color:var(--muted);text-align:center;line-height:1.2;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}
.bar-col.good-bar i{background:linear-gradient(180deg,#3fc294,#17986c)}
.bar-col.warn-bar i{background:linear-gradient(180deg,#eab455,#c77a09)}
.bar-col.bad-bar i{background:linear-gradient(180deg,#e07373,#c84040)}
.bar-col.muted-bar i{background:linear-gradient(180deg,#c3d3de,#9fb4c3)}
.chart-caption{margin:.7rem 0 0;color:var(--muted);font-size:.74rem;line-height:1.45}

.panel.construction{border-style:dashed;border-color:#dcc79a;background:linear-gradient(180deg,#fffdf8,#fdf7ea)}
.construction-head{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;margin-bottom:.6rem}
.construction-head h2{margin:0!important;font-size:1.02rem}
.construction-tag{padding:.3rem .6rem;border-radius:999px;background:#f3dcae;color:#7a5405;font-size:.63rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.construction-why{margin:0;color:#6d5a33;font-size:.86rem;line-height:1.55;max-width:78ch}
.construction-list{margin:.8rem 0 0;padding-left:1.1rem;color:#6d5a33;font-size:.82rem;line-height:1.7}
.construction-foot{margin:.9rem 0 0;color:#8a7a55;font-size:.76rem}

/* Central de Despacho — o seletor tem 10 modos; sem um passo intermediário ele
   saltava de 6 para 2 colunas e a segunda fileira ficava órfã. */
@media(max-width:1500px){.dispatch-type-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1200px){.dispatch-type-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){.dispatch-type-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Despacho: o formulário é a tarefa, o painel ao lado é contexto. Em 50/50 os
   campos caíam para 180px e "Localizar obra" — que aceita OS, OV, nota, ordem,
   cliente ou município — não cabia. Medido em 1600px: 625px para o formulário. */
.dashboard-grid.work-split{grid-template-columns:minmax(0,1.9fr) minmax(0,1fr)}
@media(max-width:1200px){.dashboard-grid.work-split{grid-template-columns:1fr}}

/* Texto longo do SAP (descrição da D5): média de 220 caracteres, máximo de 1.971,
   e 95% chegam como parágrafo único. Preserva as quebras, rola dentro da própria
   caixa e nunca empurra o formulário. */
.long-text{margin:.8rem 0 1rem;border:1px solid var(--line);border-radius:11px;background:#fff;overflow:hidden}
.long-text header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.55rem .8rem;background:#eef4f8;border-bottom:1px solid var(--line)}
.long-text header span{font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--navy)}
.long-text header small{font-size:.7rem;color:var(--muted)}
.long-text pre{margin:0;padding:.85rem;max-height:270px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;
  font-family:inherit;font-size:.82rem;line-height:1.6;color:var(--ink)}

/* Busca na lista de notas D5: o campo fica colado na lista, e a lista mostra
   8 linhas de uma vez (eram 184 notas num select de 1 linha). */
#d5-dispatch-search{margin-bottom:.4rem}
#d5-dispatch-note[size]{height:auto;padding:.35rem;font-size:.8rem;line-height:1.5}
#d5-dispatch-note[size] option{padding:.3rem .4rem;border-radius:5px}
#d5-dispatch-note[size] option:checked{background:#dcf0f8;color:var(--navy);font-weight:700}
#d5-dispatch-count{display:block;margin-top:.35rem}

/* Identificador da obra no card do despacho em massa: 20,6% das obras não têm
   OV (só NOTA), então os dois aparecem rotulados em vez de um valor solto. */
.batch-id{display:inline-block;margin:.15rem 0;padding:.12rem .35rem;border-radius:5px;background:#eef4f8;color:#2e5c78;font-size:.68rem;font-weight:750;letter-spacing:.01em}
.team-check.is-disabled .batch-id{background:#f0f2f4;color:#7d8c98}

/* Auditoria de Uso do App (Adoção, Inatividade e Risco) */
.status-badge.ghost{background:#4c6273;color:#fff;border:1px solid #3d5160}
.status-badge.dormant{background:#fbe5e5;color:#9b1f1f;border:1px solid #f3bcbc}
.status-badge.critical{background:#fff0e6;color:#b24a08;border:1px solid #fed3b7}
.risk-tag{display:inline-flex;align-items:center;gap:.35rem;padding:.22rem .55rem;border-radius:999px;background:#feecec;color:#9b2424;font-size:.7rem;font-weight:800;border:1px solid #f8c8c8}
.risk-tag.none{background:#edf6f2;color:#18734e;border-color:#cbe7dc}
.user-dossier-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;margin-top:.85rem}
.user-dossier-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:1rem}
.user-dossier-card h4{margin:0 0 .5rem;color:var(--navy);font-size:.85rem}
.user-dossier-card p{margin:0;color:var(--muted);font-size:.75rem}
.user-dossier-card strong{display:block;margin-top:.35rem;font-size:1.1rem;color:var(--ink)}

/* Utilitários para conteúdo dinâmico compatíveis com a CSP (sem style inline). */
.mb-lg{margin-bottom:1.25rem}
.mb-md{margin-bottom:.75rem}
.mt-sm{margin-top:.4rem}
.mt-lg{margin-top:1rem}
.mt-xl{margin-top:1.2rem}
.duplicate-rule{font-weight:600;margin-top:.3rem}
.route-field{margin-bottom:12px}
.label-semibold{font-weight:600}
.full-width{width:100%}
.muted-small{color:var(--muted);font-size:11px}
.scroll-box{overflow-y:auto}
.scroll-box-lg{max-height:420px;padding-right:8px}
.scroll-box-md{max-height:320px;margin-bottom:16px}
.actions-spaced-lg{margin-top:16px}
.actions-spaced-md{margin-top:12px}
.simple-table{width:100%;border-collapse:collapse;font-size:13px}
.simple-table-row{border-bottom:1px solid var(--line)}
.simple-table-head{border-bottom:2px solid var(--line);background:var(--bg);text-align:left}
.simple-table-cell{padding:8px}
.cell-medium{font-weight:500}
.align-right{text-align:right}

/* Gerador de etiquetas: conferência em tela e folha A4 para impressão. */
#etq-folha{display:none}
.etq-summary{margin:1rem 0 .7rem;padding:.75rem 1rem;border:1px solid var(--line);border-radius:10px;background:#eef6fa;color:var(--navy);font-weight:800}
.etq-table td:first-child,.etq-table th:first-child{text-align:center}
.etq-table input[type="checkbox"]{width:1rem;height:1rem}
.etq-label{box-sizing:border-box;width:80mm;height:35mm;border:.3mm solid #000;display:grid;grid-template-rows:auto 1fr 1fr;text-align:center;color:#000;background:#fff;break-inside:avoid;page-break-inside:avoid}
.etq-label strong{display:flex;align-items:center;justify-content:center;padding:1.5mm 2mm;font-size:12pt;font-weight:700;border-bottom:.3mm solid #000}
.etq-label span{display:flex;align-items:center;justify-content:center;padding:1mm 2mm;font-size:11pt;font-weight:600;line-height:1.1}
.etq-label span+span{border-top:.3mm solid #000}

@page{size:A4;margin:10mm}
@media print{
  body.etq-printing *{visibility:hidden!important}
  body.etq-printing #etq-folha,body.etq-printing #etq-folha *{visibility:visible!important}
  body.etq-printing #etq-folha{display:grid!important;position:absolute;inset:0 auto auto 0;grid-template-columns:80mm 80mm;grid-auto-rows:35mm;column-gap:10mm;row-gap:5mm;width:170mm;margin:0;padding:0}
}

/* Re-autenticação Overlay & Recuperação de Sessão */
.reauth-backdrop{position:fixed;inset:0;z-index:300;background:rgba(2,24,39,.75);backdrop-filter:blur(5px);display:grid;place-items:center;padding:1rem}
.reauth-card{width:min(440px,96vw);background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 70px rgba(2,24,39,.32);padding:1.8rem}
.reauth-card h3{margin:0 0 .4rem;color:var(--navy);font-size:1.25rem}
.reauth-card p{margin:0 0 1rem;color:var(--muted);font-size:.82rem;line-height:1.45}
.reauth-card form{display:grid;gap:.75rem}

/* Estilos de Impressão Oficial para Dossiê 360 e Relatórios Executivos */
.print-only{display:none}
@media print {
  body{background:#fff!important;color:#000!important;font-size:11pt}
  .sidebar,.topbar,.actions,.compact-actions,#toast,.loading-overlay,.modal-backdrop,button,.search-row,.secondary-row{display:none!important}
  .workspace{grid-column:1!important;margin:0!important;padding:0!important;width:100%!important}
  .content{padding:0!important;max-width:100%!important;margin:0!important}
  .hero{background:#063a5e!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;border-radius:8px!important;padding:1rem!important;box-shadow:none!important}
  .hero h1{font-size:1.3rem!important}
  .panel{border:1px solid #c8d4dc!important;box-shadow:none!important;border-radius:8px!important;margin-bottom:.9rem!important;break-inside:avoid;page-break-inside:avoid}
  .metric-grid,.inline-summary{grid-template-columns:repeat(4,1fr)!important;gap:.5rem!important}
  .metric{border:1px solid #d0dbe2!important;box-shadow:none!important;min-height:0!important;padding:.6rem!important}
  .metric strong{font-size:1.1rem!important}
  .data-table th{background:#edf2f6!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .data-table td{padding:.45rem .6rem!important;font-size:.76rem!important}
  .photo-gallery{grid-template-columns:repeat(3,1fr)!important;gap:.5rem!important;page-break-inside:avoid}
  .photo-card{border:1px solid #d0dbe2!important;border-radius:6px!important;page-break-inside:avoid}
  .photo-button{aspect-ratio:4/3;max-height:160px!important}
  .photo-button img{opacity:1!important;max-height:160px!important}
  .print-only{display:block!important;margin-bottom:.8rem;font-size:.75rem;color:#555}
}

/* ─── Campos com Trava de Sistema (Invioláveis / Readonly) ──────────────── */
.input-readonly-locked {
  background-color: #f8fafc !important;
  border: 1.5px dashed #94a3b8 !important;
  color: #0f172a !important;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  cursor: not-allowed !important;
  user-select: all !important;
}
.input-readonly-locked:focus {
  outline: none !important;
  border-color: #64748b !important;
  box-shadow: 0 0 0 2px rgba(100, 116, 139, 0.15) !important;
}
.badge-locked {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.72rem;
  font-weight: 700;
  background: #e0e7ff;
  color: #3730a3;
  padding: 0.15rem 0.5rem;
  border-radius: 9999px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  vertical-align: middle;
}
.button-compact {
  padding: 0.4rem 0.75rem !important;
  font-size: 0.78rem !important;
  white-space: nowrap !important;
}
.field-hint {
  display: block;
  margin-top: 0.3rem;
  font-size: 0.75rem;
  color: var(--muted);
  line-height: 1.35;
}
.field-hint.valid { color: #166534; font-weight: 600; }
.field-hint.warn { color: #9a3412; font-weight: 600; }
.field-hint.loading { color: #0369a1; font-style: italic; }
.dossier-actions { margin-bottom: 1rem; display: flex; gap: 0.5rem; justify-content: flex-end; margin-top: 0; }

/* P63 — calendário de equipes e validação da programação. */
.cal-scroll{overflow-x:auto;max-width:100%;border:1px solid var(--line);border-radius:12px;background:#fff}
.cal-grid{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;font-size:.74rem}
.cal-grid th,.cal-grid td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:.45rem;white-space:nowrap}
.cal-grid thead th{position:sticky;top:0;background:#eef4f8;color:var(--navy);z-index:1;text-align:center}
.cal-grid tbody th{position:sticky;left:0;background:#fff;color:var(--navy);text-align:left;z-index:1}
.cal-cell{min-width:96px;padding:0!important;text-align:center;transition:filter .15s}
.cal-cell:hover{filter:brightness(.97)}
.cal-cell button{display:grid;gap:.12rem;width:100%;height:100%;min-height:58px;padding:.48rem;border:0;background:transparent;color:inherit;cursor:pointer}
.cal-cell button strong{font-size:.76rem}.cal-cell button span{font-size:.65rem;color:var(--muted)}
.cal-vaga{background:#e5f3ff}.cal-sem-valor{background:#fde7e7}.cal-abaixo{background:#fff3cf}.cal-meta{background:#e1f5e9}
.cal-weekend{background-image:linear-gradient(rgba(95,108,118,.08),rgba(95,108,118,.08))}
.cal-legend{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center;margin-top:.8rem;font-size:.72rem}.cal-legend span{padding:.3rem .55rem;border:1px solid rgba(20,50,70,.1);border-radius:999px;color:var(--navy);font-weight:700}
.cal-modal-row{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;padding:.65rem 0;border-bottom:1px solid var(--line)}.cal-modal-row:last-child{border-bottom:0}
.validation-help{margin:-.45rem 0 .75rem;color:var(--muted);font-size:.78rem}.validation-list{overflow:hidden}.validation-list .table-block{overflow-x:auto}

/* ─── P34: Grade de Complemento e Campo Faltando ───────────────────────── */
.campo-faltando {
  border-color: #dc2626 !important;
  background-color: #fef2f2 !important;
}
.campo-faltando:focus {
  border-color: #b91c1c !important;
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15) !important;
}
.intake-complemento-table input {
  padding: 0.4rem 0.5rem;
  font-size: 0.78rem;
  min-width: 110px;
}
.intake-complemento-table select {
  padding: 0.4rem 0.5rem;
  font-size: 0.78rem;
}
.intake-complemento-table td {
  padding: 0.4rem 0.5rem;
  vertical-align: middle;
}
.intake-complemento-table th {
  padding: 0.5rem;
  font-size: 0.75rem;
}
.intake-pdf-cell {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  min-width: 170px;
}
.intake-pdf-name {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--navy);
  word-break: break-all;
}
.intake-pdf-missing {
  font-size: 0.72rem;
  color: #dc2626;
  font-weight: 600;
}
.intake-status-completa {
  color: #166534;
  font-weight: 700;
  font-size: 0.75rem;
}
.intake-status-falta {
  color: #b91c1c;
  font-weight: 600;
  font-size: 0.72rem;
}
.intake-resumo-topo {
  margin: 0.5rem 0 1rem;
  padding: 0.6rem 0.9rem;
  background: #f8fafc;
  border: 1px solid var(--line);
  border-radius: 10px;
  font-weight: 700;
  font-size: 0.85rem;
  color: var(--navy);
}

/* Aba Cadastro Incompleto (P33) */
.pendencias-top{display:flex;gap:1rem;align-items:flex-start;flex-wrap:wrap;margin-bottom:1rem}
.pendencias-top .metric-grid{flex:0 0 auto;min-width:240px}
.pendencias-chips{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;flex:1 1 300px;padding:.5rem 0}
.pendencia-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .75rem;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font-size:.78rem;font-weight:600;cursor:pointer;transition:.15s}
.pendencia-chip:hover{background:#eef4f8;border-color:var(--cyan);color:var(--navy)}
.pendencia-chip.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.pendencia-chip strong{background:#e2ecf3;color:var(--navy);padding:.15rem .45rem;border-radius:999px;font-size:.72rem}
.pendencia-chip.active strong{background:rgba(255,255,255,.25);color:#fff}
.summary-card{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:.85rem}
.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem}
.summary-grid small{display:block;text-transform:uppercase;letter-spacing:.04em;font-size:.68rem;margin-bottom:.2rem}
/* Chat */
.nav-badge{display:inline-grid;place-items:center;min-width:1.25rem;height:1.25rem;margin-left:.35rem;padding:0 .3rem;border-radius:999px;background:#e45d5d;color:#fff;font-size:.67rem;font-weight:800;line-height:1}
.chat-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:1rem;align-items:start}
.chat-messages{max-height:calc(100vh - 290px);min-height:360px;overflow:auto;padding:.25rem .2rem}
.chat-day{display:flex;align-items:center;gap:.7rem;margin:1rem 0;color:var(--muted);font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.chat-day:before,.chat-day:after{content:"";height:1px;background:var(--line);flex:1}
.chat-message{display:flex;margin:.55rem 0}.chat-message.mine{justify-content:flex-end}.chat-bubble{max-width:min(78%,650px);padding:.65rem .8rem;border-radius:14px 14px 14px 4px;background:#edf5f8;border:1px solid var(--line)}.chat-message.mine .chat-bubble{border-radius:14px 14px 4px 14px;background:#dff2fa;border-color:#bde4f1}.chat-author{display:flex;gap:.45rem;align-items:baseline;margin-bottom:.25rem;font-size:.72rem}.chat-author strong{color:var(--navy)}.chat-author span,.chat-time{color:var(--muted);font-size:.67rem}.chat-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.45;font-size:.86rem}.chat-compose{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.7rem;align-items:end}.chat-compose textarea{min-height:74px;max-height:180px}.chat-compose-meta{display:flex;justify-content:space-between;align-items:center;margin-top:.3rem;color:var(--muted);font-size:.7rem}.chat-online{display:grid;gap:.65rem}.chat-online-user{display:flex;gap:.55rem;align-items:center;padding:.45rem;border-radius:9px;background:#f6fafc}.chat-online-dot{width:8px;height:8px;border-radius:50%;background:var(--green);flex:none}.chat-online-user strong,.chat-online-user small{display:block}.chat-online-user strong{font-size:.78rem}.chat-online-user small{color:var(--muted);font-size:.68rem}.chat-connection{margin-bottom:.7rem}
@media(max-width:820px){.chat-layout{grid-template-columns:1fr}.chat-messages{max-height:none}.chat-online{grid-template-columns:repeat(2,minmax(0,1fr))}}
:root {
  --emergency-red: #b42318;
  --emergency-yellow: #b54708;
}

.emergency-alert.vermelho { color: var(--emergency-red); font-weight: 700; }
.emergency-alert.amarelo { color: var(--emergency-yellow); font-weight: 700; }
.emergency-close-panel { margin-top: 1rem; }
.emergency-close-panel h2 { margin-top: 0; }
.emergency-detail { display: grid; gap: 1.25rem; }
.emergency-detail section { border-top: 1px solid var(--border, #d9dee8); padding-top: 1rem; }
.timeline-event { border-left: 3px solid var(--primary, #2563eb); display: grid; gap: .2rem; margin: .75rem 0; padding: .35rem .75rem; }
.timeline-event time { color: var(--muted, #667085); font-size: .85rem; }

/* Metadados de fotos e links com coordenadas (P79) */
.photo-meta { display: grid; gap: 0.2rem; font-size: 0.76rem; color: var(--muted); margin-top: 0.35rem; }
.photo-map-link { display: inline-flex; align-items: center; gap: 0.25rem; color: var(--cyan); text-decoration: underline; font-weight: 600; }
.sub-panel { margin-top: 1rem; border-top: 1px dashed var(--line); padding-top: 0.75rem; }
.sub-panel h4 { margin: 0 0 0.5rem 0; font-size: 0.88rem; color: var(--navy); }

/* ─── Quadro Programação Nativa (P98) ─────────────────────────────────── */
.quadro-container { display: grid; gap: 1rem; }
.quadro-toolbar-row { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; }
.quadro-nav-links { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.8rem; }
.quadro-scroll { overflow-x: auto; max-width: 100%; border: 1px solid var(--line); border-radius: 12px; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,0.05); }
.quadro-grid { width: max-content; min-width: 100%; border-collapse: separate; border-spacing: 0; font-size: 0.76rem; }
.quadro-grid th, .quadro-grid td { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 0.5rem; vertical-align: top; }
.quadro-grid thead th { position: sticky; top: 0; background: #eef4f8; color: var(--navy); z-index: 2; text-align: center; }
.quadro-th-equipe { position: sticky; left: 0; z-index: 3 !important; background: #eef4f8 !important; min-width: 160px; text-align: left !important; }
.quadro-grid tbody th.quadro-row-equipe { position: sticky; left: 0; background: #fff; color: var(--navy); text-align: left; z-index: 1; min-width: 160px; border-right: 2px solid var(--line); }
.quadro-th-dia { min-width: 200px; }
.quadro-th-dia-semana { font-size: 0.7rem; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.quadro-th-dia-data { font-size: 0.85rem; font-weight: 750; color: var(--navy); }
.quadro-th-dia-total { font-size: 0.7rem; font-weight: 600; color: #1a7f37; margin-top: 0.15rem; }
.quadro-dia-fds { background: #f8fafc !important; }
.quadro-eq-codigo { font-family: monospace; font-size: 0.82rem; font-weight: 750; color: var(--navy); }
.quadro-eq-nome { font-size: 0.68rem; color: var(--muted); }
.quadro-eq-meta { font-size: 0.68rem; font-weight: 600; color: #0b69a3; margin-top: 0.2rem; }
.quadro-cell { min-width: 200px; min-height: 100px; background: #fff; transition: background 0.15s; }
.quadro-cell-fds { background: #fafbfc; }
.quadro-cell-vaga { background: #fbfdfe; }
.quadro-cell-meta { background: #f6fcf8; }
.quadro-cell-abaixo_meta { background: #fffdf5; }
.quadro-cell-sem_valor { background: #fff8f8; }
.quadro-cell-conflito { box-shadow: inset 0 0 0 2px #d32f2f; background: #fff5f5; }
.quadro-aviso-conflito { background: #ffebee; color: #c62828; font-size: 0.68rem; font-weight: 700; padding: 0.2rem 0.4rem; border-radius: 4px; margin-bottom: 0.4rem; display: flex; align-items: center; gap: 0.25rem; }
.quadro-btn-add { display: block; width: 100%; min-height: 60px; border: 1px dashed #cbd5e1; border-radius: 6px; background: transparent; color: #94a3b8; font-size: 0.72rem; font-weight: 600; cursor: pointer; transition: all 0.15s; }
.quadro-btn-add:hover { border-color: #0077b6; color: #0077b6; background: rgba(0, 119, 182, 0.04); }
.quadro-vago { color: #cbd5e1; text-align: center; padding: 1rem 0; font-size: 0.9rem; }
.quadro-cards-wrap { display: flex; flex-direction: column; gap: 0.45rem; }
.quadro-card { border: 1px solid #e2e8f0; border-left-width: 4px; border-radius: 6px; background: #fff; padding: 0.45rem 0.55rem; box-shadow: 0 1px 2px rgba(0,0,0,0.04); display: flex; flex-direction: column; gap: 0.25rem; position: relative; }
.quadro-card.quadro-farol-verde { border-left-color: #2e7d32; }
.quadro-card.quadro-farol-amarelo { border-left-color: #f57f17; }
.quadro-card.quadro-farol-vermelho { border-left-color: #d32f2f; }
.quadro-card.card-com-conflito { border-color: #ef5350; background: #fffafa; }
.quadro-card-header { display: flex; align-items: center; justify-content: space-between; gap: 0.3rem; }
.farol-pill { display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.62rem; font-weight: 750; text-transform: uppercase; padding: 0.15rem 0.4rem; border-radius: 999px; cursor: help; }
.farol-pill.farol-verde { background: #e8f5e9; color: #1b5e20; }
.farol-pill.farol-amarelo { background: #fffde7; color: #f57f17; }
.farol-pill.farol-vermelho { background: #ffebee; color: #b71c1c; }
.farol-dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.badge-estagio { font-size: 0.65rem; background: #f1f5f9; color: #475569; padding: 0.12rem 0.35rem; border-radius: 4px; font-weight: 600; }
.quadro-card-ov-nota { font-size: 0.78rem; color: #0f172a; line-height: 1.2; }
.quadro-card-ov-nota strong { font-weight: 750; }
.quadro-card-os { font-size: 0.65rem; color: #64748b; font-family: monospace; }
.quadro-card-tags { display: flex; gap: 0.3rem; flex-wrap: wrap; }
.quadro-card-tag { font-size: 0.62rem; padding: 0.1rem 0.3rem; border-radius: 4px; font-weight: 600; }
.tag-desligamento { background: #fef3c7; color: #92400e; }
.tag-lv { background: #e0e7ff; color: #3730a3; }
.quadro-card-equipes { display: flex; gap: 0.25rem; flex-wrap: wrap; align-items: center; margin-top: 0.15rem; }
.badge-equipe { font-size: 0.62rem; font-family: monospace; font-weight: 600; padding: 0.1rem 0.35rem; border-radius: 3px; background: #f1f5f9; color: #334155; }
.badge-equipe-lider { background: #fef9c3; color: #854d0e; border: 1px solid #facc15; font-weight: 750; }
.quadro-card-valor { font-size: 0.72rem; font-weight: 700; color: #334155; margin-top: 0.15rem; }
.badge-conflito { font-size: 0.62rem; font-weight: 750; background: #fee2e2; color: #991b1b; padding: 0.15rem 0.35rem; border-radius: 4px; }
.quadro-card-actions { display: flex; gap: 0.3rem; margin-top: 0.25rem; border-top: 1px dashed #f1f5f9; padding-top: 0.25rem; }
.btn-card-action { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px; padding: 0.15rem 0.35rem; font-size: 0.68rem; cursor: pointer; color: #475569; }
.btn-card-action:hover { background: #f1f5f9; border-color: #cbd5e1; }
.quadro-cell-footer { display: flex; align-items: center; justify-content: space-between; margin-top: 0.45rem; padding-top: 0.3rem; border-top: 1px solid #f1f5f9; font-size: 0.68rem; }
.quadro-cell-status { font-size: 0.62rem; font-weight: 700; padding: 0.1rem 0.35rem; border-radius: 4px; text-transform: uppercase; }
.badge-status-meta { background: #dcfce7; color: #166534; }
.badge-status-abaixo_meta { background: #fef3c7; color: #92400e; }
.badge-status-sem_valor { background: #fee2e2; color: #991b1b; }
.badge-status-vaga { background: #f1f5f9; color: #64748b; }
.quadro-cell-total { font-weight: 750; color: #1e293b; }
.quadro-legend { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; font-size: 0.72rem; padding: 0.75rem 1rem; background: #f8fafc; border: 1px solid var(--line); border-radius: 8px; }
.quadro-legend-group { display: flex; align-items: center; gap: 0.4rem; }

/* ─── Modais da Programação Nativa (P99) ──────────────────────────────── */
.modal-prog-container { display: flex; flex-direction: column; gap: 1rem; font-size: 0.82rem; }
.modal-prog-origem-tabs { display: flex; gap: 1rem; margin-bottom: 0.75rem; }
.modal-prog-search-row { margin-bottom: 0.5rem; }
.search-input-group { display: flex; gap: 0.5rem; align-items: center; width: 100%; }
.search-input-group input { flex: 1; }
.modal-prog-search-results { max-height: 180px; overflow-y: auto; border: 1px solid var(--line); border-radius: 8px; background: #fff; margin-bottom: 0.75rem; box-shadow: 0 4px 12px rgba(0,0,0,0.06); }
.modal-prog-search-item { padding: 0.5rem 0.75rem; border-bottom: 1px solid #f1f5f9; cursor: pointer; transition: background 0.15s; }
.modal-prog-search-item:last-child { border-bottom: none; }
.modal-prog-search-item:hover { background: #eaf8fc; }
.modal-prog-search-item strong { color: var(--navy); display: block; font-size: 0.8rem; }
.modal-prog-search-item span { color: var(--muted); font-size: 0.72rem; display: block; }
.modal-prog-obra-info { background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 10px; padding: 0.85rem; margin-top: 0.5rem; display: grid; gap: 0.35rem; font-size: 0.78rem; }
.modal-prog-obra-info strong { color: #166534; font-size: 0.86rem; }
.modal-prog-obra-detalhes { display: flex; flex-wrap: wrap; gap: 0.75rem; color: #374151; font-size: 0.74rem; }
.modal-prog-checkboxes { display: flex; gap: 1.25rem; flex-wrap: wrap; margin: 0.75rem 0; padding: 0.5rem 0; border-top: 1px dashed var(--line); border-bottom: 1px dashed var(--line); }
.modal-prog-rateio { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 0.65rem 0.85rem; font-size: 0.76rem; color: #334155; font-weight: 600; margin-top: 0.5rem; }
.modal-prog-conflito-box { background: #fef2f2; border: 1px solid #fecaca; border-radius: 8px; padding: 0.65rem 0.85rem; color: #991b1b; font-size: 0.75rem; font-weight: 600; margin-top: 0.5rem; }
.modal-prog-erros { margin-top: 0.5rem; }
.modal-actions { margin-top: 1rem; display: flex; gap: 0.5rem; justify-content: flex-end; }
.farol-radio-group { display: flex; gap: 1rem; flex-wrap: wrap; margin-top: 0.4rem; }
.farol-radio-item { display: flex; align-items: center; gap: 0.45rem; padding: 0.5rem 0.85rem; border: 1px solid var(--line); border-radius: 8px; background: #fff; cursor: pointer; font-size: 0.78rem; font-weight: 600; }
.farol-radio-item:has(input:checked) { border-color: var(--cyan); background: #f0f9ff; }
.modal-prog-timeline { display: flex; flex-direction: column; gap: 0.6rem; max-height: 380px; overflow-y: auto; padding: 0.25rem; }
.modal-prog-log-card { border: 1px solid #e2e8f0; border-left: 3px solid #0077b6; border-radius: 6px; background: #fff; padding: 0.6rem 0.8rem; font-size: 0.76rem; display: grid; gap: 0.25rem; }
.modal-prog-log-card time { color: var(--muted); font-size: 0.7rem; font-weight: 600; }
.modal-prog-log-card .log-diff { font-family: monospace; font-size: 0.74rem; background: #f8fafc; padding: 0.2rem 0.4rem; border-radius: 4px; }
.modal-prog-log-card .log-diff .diff-antes { color: #b91c1c; text-decoration: line-through; }
.modal-prog-log-card .log-diff .diff-depois { color: #15803d; font-weight: 700; }
.modal-prog-log-card .log-motivo { color: #475569; font-style: italic; }
.badge-acao { display: inline-block; font-size: 0.65rem; font-weight: 750; text-transform: uppercase; padding: 0.1rem 0.35rem; border-radius: 4px; background: #e0f2fe; color: #0369a1; }
.badge-classe-especial { display: inline-block; font-size: 0.68rem; font-weight: 750; text-transform: uppercase; padding: 0.15rem 0.45rem; border-radius: 4px; background: #fef3c7; color: #92400e; border: 1px solid #fde68a; }
.btn-card-cancelar { color: #dc2626 !important; }
.btn-card-cancelar:hover { background: #fef2f2 !important; border-color: #fca5a5 !important; }

/* P100 — Extrato da Programação Nativa */
.extrato-container { display: flex; flex-direction: column; gap: 1rem; }
.extrato-resumo { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; padding: 0.75rem 1rem; background: #f8fafc; border: 1px solid var(--line); border-radius: 8px; font-size: 0.8rem; }
.extrato-resumo-item { display: flex; align-items: center; gap: 0.4rem; font-weight: 600; color: var(--navy); }
.extrato-resumo-farois { display: flex; align-items: center; gap: 0.5rem; margin-left: auto; }
.extrato-table-wrap { overflow-x: auto; max-width: 100%; border: 1px solid var(--line); border-radius: 8px; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,0.05); }
.extrato-table { width: 100%; min-width: 1200px; border-collapse: collapse; font-size: 0.78rem; text-align: left; }
.extrato-table th { background: #f1f5f9; color: var(--navy); font-weight: 700; padding: 0.55rem 0.6rem; border-bottom: 1px solid var(--line); font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.02em; }
.extrato-table td { padding: 0.55rem 0.6rem; border-bottom: 1px solid #f1f5f9; vertical-align: middle; color: #1e293b; }
.extrato-table tbody tr:hover { background: #f8fafc; }
.extrato-ov-nota { font-family: monospace; font-size: 0.82rem; font-weight: 750; color: #0f172a; white-space: nowrap; }
.extrato-os { font-family: monospace; font-size: 0.72rem; color: #64748b; }
.extrato-equipe-wrap { display: flex; align-items: center; gap: 0.3rem; }
.extrato-data-wrap { display: flex; flex-direction: column; line-height: 1.2; font-size: 0.75rem; }
.extrato-data-dia { font-weight: 700; color: #0f172a; }
.extrato-data-hora { font-size: 0.68rem; color: #64748b; }
.extrato-pagination { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: 0.75rem 0; font-size: 0.8rem; color: #475569; }
.extrato-pagination-controls { display: flex; align-items: center; gap: 0.5rem; }
.extrato-page-btn { padding: 0.3rem 0.7rem; font-size: 0.75rem; border: 1px solid #cbd5e1; border-radius: 4px; background: #fff; cursor: pointer; color: #334155; font-weight: 600; }
.extrato-page-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.extrato-page-btn:not(:disabled):hover { background: #f1f5f9; border-color: #94a3b8; }
.extrato-vazio { text-align: center; padding: 2.5rem 1rem; color: #64748b; font-size: 0.85rem; }

/* P110 — Saúde do Sistema & Sentinelas */
.sentinela-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; margin-top: 0.85rem; }
.sentinela-card { border: 1px solid var(--line); border-radius: 12px; padding: 1rem; background: #fff; display: flex; flex-direction: column; gap: 0.65rem; cursor: pointer; transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s; }
.sentinela-card:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(10,52,80,0.08); border-color: var(--cyan); }
.sentinela-card.verde { border-color: #bce5d3; background: #f5fcf8; }
.sentinela-card.vermelho { border-color: #f0c5c5; background: #fff7f7; }
.sentinela-card.cinza { border-color: #d7e3ea; background: #f8fafb; }
.sentinela-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.5rem; }
.sentinela-card-header h4 { margin: 0; font-size: 0.95rem; color: var(--navy); }
.sentinela-values { display: flex; align-items: baseline; justify-content: space-between; gap: 0.5rem; font-size: 0.85rem; padding: 0.4rem 0; border-bottom: 1px solid rgba(0,0,0,0.05); }
.sentinela-values strong { font-size: 1.25rem; color: var(--navy); }
.sentinela-card.vermelho .sentinela-values strong { color: #a63232; }
.sentinela-card.verde .sentinela-values strong { color: #14734f; }
.sentinela-history-box { display: flex; flex-direction: column; gap: 0.3rem; }
.sentinela-history-track { display: flex; align-items: flex-end; gap: 3px; height: 22px; background: rgba(0,0,0,0.03); padding: 2px; border-radius: 4px; }
.sentinela-history-bar { flex: 1; min-width: 3px; height: 100%; border-radius: 2px; display: inline-block; }
.sentinela-history-bar.verde { background: #22c55e; }
.sentinela-history-bar.vermelho { background: #ef4444; }
.sentinela-history-bar.cinza { background: #94a3b8; }
.sentinela-history-label { color: var(--muted); font-size: 0.7rem; }
.sentinela-card-footer { display: flex; justify-content: flex-end; margin-top: auto; }

/* P126 — Projeto e croqui de campo */
.doc-campo-ident { display: flex; gap: 0.5rem; margin-bottom: 0.75rem; flex-wrap: wrap; }
.doc-campo-lista { display: flex; flex-direction: column; gap: 0.75rem; }
.doc-campo-card { border: 1px solid var(--line); border-radius: 8px; padding: 0.85rem 1rem; background: #fff; display: flex; flex-direction: column; gap: 0.65rem; }
.doc-campo-card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.75rem; flex-wrap: wrap; }
.doc-campo-info { display: flex; flex-direction: column; gap: 0.2rem; }
.doc-campo-nome { font-size: 0.95rem; color: var(--navy); }
.doc-campo-despacho-equipe { font-size: 0.8rem; color: var(--muted); }
.doc-campo-selo-wrapper { display: flex; align-items: center; }
.doc-campo-versoes { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; padding-top: 0.5rem; border-top: 1px solid rgba(0,0,0,0.05); }
.doc-versao-item { display: flex; align-items: center; gap: 0.5rem; }
.doc-versao-rotulo { font-size: 0.8rem; font-weight: 600; color: var(--navy); }
.doc-campo-croquis { margin-top: 1rem; }
.doc-campo-croqui-lista { display: flex; flex-direction: column; gap: 0.5rem; }
.doc-croqui-item { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem 0.75rem; background: var(--bg-alt, #f8fafc); border-radius: 6px; gap: 0.5rem; flex-wrap: wrap; }
.doc-croqui-info { display: flex; flex-direction: column; gap: 0.15rem; }
.badge-muted { background: #e2e8f0; color: #475569; }
.badge-warning { background: #fff3cd; color: #856404; border: 1px solid #ffeeba; }
.doc-campo-folha-badge { font-size: 0.82rem; font-weight: 600; color: var(--navy); margin-bottom: 0.2rem; }
.doc-alerta-base-antiga { margin-top: 0.25rem; }
.doc-historico { margin-top: 0.5rem; border-top: 1px dashed rgba(0,0,0,0.1); padding-top: 0.5rem; }
.doc-historico-summary { cursor: pointer; font-size: 0.8rem; margin-bottom: 0.5rem; display: inline-block; }
.doc-historico-lista { display: flex; flex-direction: column; gap: 0.4rem; padding-left: 0.5rem; }
.doc-historico-item { display: flex; justify-content: space-between; align-items: center; font-size: 0.8rem; color: var(--muted); gap: 0.5rem; flex-wrap: wrap; }

.melhoria-flutuante {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  z-index: 20;
  box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, .2);
}

/* P128 — Painel Executivo */
.clickable-card { cursor: pointer; transition: transform .12s ease, box-shadow .12s ease; }
.clickable-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(2, 24, 39, .08); }
.shortcuts-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .85rem; margin-top: .75rem; }
.shortcut-card { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 1rem; display: flex; flex-direction: column; justify-content: space-between; cursor: pointer; transition: .15s; outline: none; }
.shortcut-card:hover, .shortcut-card:focus-visible { border-color: var(--blue); background: #f6fafe; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(10, 52, 80, .07); }
.shortcut-tag { font-size: .68rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); font-weight: 700; }
.shortcut-header h4 { margin: .25rem 0 .4rem; font-size: .98rem; color: var(--navy); }
.shortcut-card p { margin: 0 0 .75rem; font-size: .8rem; color: var(--muted); line-height: 1.4; flex: 1 1 auto; }
.shortcut-link { font-size: .76rem; font-weight: 700; color: var(--blue); display: inline-flex; align-items: center; gap: .3rem; }
.overview-header-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; flex-wrap: wrap; gap: .5rem; }
.overview-timestamp { font-size: .82rem; color: var(--muted); font-weight: 600; }
.metrics-subgrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; margin-bottom: .85rem; }
.metrics-subgrid p { margin: 0; font-size: .82rem; color: var(--navy); }
.metrics-subgrid p strong { color: var(--muted); font-size: .75rem; display: block; text-transform: uppercase; letter-spacing: .03em; }
.metrics-row { display: flex; flex-direction: column; gap: 0.25rem; margin-bottom: 0.5rem; }
.metrics-row-label { display: flex; justify-content: space-between; font-size: 0.82rem; color: var(--navy); }
.chart-svg-bar { border-radius: 4px; overflow: hidden; }
.chart-svg-monthly { display: block; max-width: 100%; height: auto; }
.programacao-7d-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(80px, 1fr)); gap: 0.5rem; margin-top: 0.5rem; }
.programacao-dia-card { background: var(--bg-alt, #f8fafc); border: 1px solid var(--line); border-radius: 8px; padding: 0.6rem 0.4rem; text-align: center; display: flex; flex-direction: column; gap: 0.2rem; }
.programacao-dia-card .dia-semana { font-size: 0.72rem; text-transform: uppercase; font-weight: 700; color: var(--muted); }
.programacao-dia-card .dia-data { font-size: 0.75rem; color: var(--navy); }
.programacao-dia-card strong { font-size: 0.95rem; color: var(--navy); margin-top: 0.2rem; }
.programacao-dia-card small { font-size: 0.7rem; color: var(--muted); }
.tag-badge-list { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.4rem; }
.tag-badge { background: #f1f5f9; color: var(--navy); padding: 0.25rem 0.5rem; border-radius: 6px; font-size: 0.78rem; font-weight: 600; display: inline-flex; align-items: center; gap: 0.3rem; }
.cancelar-despacho-confirmacao { display: flex; flex-direction: column; gap: 0.85rem; }
.cancelar-despacho-confirmacao textarea { width: 100%; min-height: 80px; resize: vertical; }
.table-row-clickable { cursor: pointer; }
.table-row-clickable:hover { background: #f0f7fa; }
.sort-header { cursor: pointer; user-select: none; }
.sort-header:hover { background: #e2edf4; }
.pagination-bar { display: flex; align-items: center; justify-content: space-between; padding: .75rem 0; gap: 1rem; flex-wrap: wrap; }
.emergency-filter-row th{background:#f7fafc;vertical-align:top;padding:.45rem;min-width:130px}.emergency-filter-row input,.emergency-filter-row select{min-width:120px;width:100%;padding:.42rem .48rem;font-size:.72rem}.emergency-date-range{display:grid;gap:.3rem;min-width:150px}.emergency-date-filter{display:grid;grid-template-columns:24px 1fr;align-items:center;gap:.25rem;font-size:.65rem;font-weight:600;color:var(--muted)}.emergency-date-filter input{min-width:112px}
.pagination-info { font-size: .85rem; color: var(--muted); }
.page-indicator { font-size: .85rem; font-weight: 600; padding: 0 .5rem; }

.previsao-legenda { display: block; font-size: 0.75rem; opacity: 0.85; font-weight: normal; }
.pagamentos-nota { margin-top: 10px; font-size: 0.85rem; color: var(--muted, #666); }
.mt-6 { margin-top: 6px; }

/* P158 — Regras das equipes */
.regras-equipes-table td { vertical-align: middle; }
.cell-equipe { font-family: var(--font-mono, monospace); font-size: 0.95rem; }
.cell-toggle { white-space: nowrap; }
.switch-label { display: inline-flex; align-items: center; gap: 0.45rem; cursor: pointer; user-select: none; }
.switch-label input[type="checkbox"] { width: 1.25rem; height: 1.25rem; cursor: pointer; accent-color: var(--blue, #0d6efd); }
.switch-text { font-size: 0.85rem; font-weight: 600; color: var(--navy); }
.input-meta-diaria { width: 130px; font-size: 0.85rem; padding: 0.35rem 0.5rem; }
.input-observacao { min-width: 150px; width: 100%; font-size: 0.85rem; padding: 0.35rem 0.5rem; }

/* P170 — Programação para a virada */
.modal-prog-etapa-card { border: 1px solid var(--line); border-radius: 10px; background: #fff; padding: 1rem; margin-bottom: 1rem; display: flex; flex-direction: column; gap: 0.75rem; box-shadow: 0 2px 6px rgba(0,0,0,0.03); }
.modal-prog-etapa-card-head { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--line); padding-bottom: 0.5rem; flex-wrap: wrap; gap: 0.5rem; }
.modal-prog-etapa-card-head h4 { margin: 0; color: var(--navy); font-size: 0.95rem; }
.prog-eq-livre { display: inline-block; font-size: 0.65rem; font-weight: 700; color: #15803d; background: #dcfce7; padding: 0.1rem 0.4rem; border-radius: 4px; margin-left: 0.35rem; }
.prog-eq-uma { display: inline-block; font-size: 0.65rem; font-weight: 700; color: #854d0e; background: #fef9c3; border: 1px solid #facc15; padding: 0.1rem 0.4rem; border-radius: 4px; margin-left: 0.35rem; }
.prog-eq-varias { display: inline-block; font-size: 0.65rem; font-weight: 700; color: #991b1b; background: #fee2e2; border: 1px solid #f87171; padding: 0.1rem 0.4rem; border-radius: 4px; margin-left: 0.35rem; }
.modal-prog-conflito-box-alerta { background: #fee2e2; border: 1px solid #ef4444; border-radius: 8px; padding: 0.65rem 0.85rem; color: #7f1d1d; font-size: 0.75rem; font-weight: 600; margin-top: 0.5rem; }
.prog-alerta-ads { color: #dc2626; font-size: 0.75rem; font-weight: 700; background: #fef2f2; border: 1px solid #fecaca; border-radius: 6px; padding: 0.4rem 0.6rem; margin-top: 0.35rem; }
.prog-rateio-rodape { background: #f8fafc; border: 1px solid var(--line); border-radius: 8px; padding: 0.75rem 1rem; font-size: 0.8rem; font-weight: 600; color: var(--navy); margin-top: 0.5rem; }

/* Obras para programar (P170) */
.prog-pendentes-container { display: flex; flex-direction: column; gap: 1rem; }
.prog-pendentes-resumo { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; }
.prog-pendentes-resumo-card { flex: 1; min-width: 140px; background: #fff; border: 1px solid var(--line); border-radius: 10px; padding: 0.75rem 1rem; text-align: center; }
.prog-pendentes-resumo-card span { display: block; font-size: 0.72rem; color: var(--muted); text-transform: uppercase; font-weight: 700; letter-spacing: 0.04em; }
.prog-pendentes-resumo-card strong { display: block; font-size: 1.35rem; color: var(--navy); margin-top: 0.2rem; }
.prog-pendentes-table-wrap { overflow-x: auto; max-width: 100%; border: 1px solid var(--line); border-radius: 8px; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,0.05); }
.prog-pendentes-table { width: 100%; min-width: 1100px; border-collapse: collapse; font-size: 0.78rem; text-align: left; }
.prog-pendentes-table th { background: #f1f5f9; color: var(--navy); font-weight: 700; padding: 0.6rem; border-bottom: 1px solid var(--line); font-size: 0.74rem; text-transform: uppercase; }
.prog-pendentes-table td { padding: 0.6rem; border-bottom: 1px solid #f1f5f9; vertical-align: middle; color: #1e293b; }
.prog-pendentes-table tbody tr:hover { background: #f8fafc; }
.prog-pendentes-ov-nota { font-family: monospace; font-size: 0.84rem; font-weight: 750; color: var(--navy); }
.prog-pendentes-subtext { font-size: 0.72rem; color: var(--muted); margin-top: 0.15rem; }

/* Selos de Viabilidade */
.viabilidade-viavel { display: inline-block; font-size: 0.68rem; font-weight: 700; padding: 0.15rem 0.45rem; border-radius: 4px; background: #dcfce7; color: #166534; }
.viabilidade-ressalvas, .viabilidade-viavel_ressalvas { display: inline-block; font-size: 0.68rem; font-weight: 700; padding: 0.15rem 0.45rem; border-radius: 4px; background: #fef9c3; color: #854d0e; }
.viabilidade-inviavel { display: inline-block; font-size: 0.68rem; font-weight: 700; padding: 0.15rem 0.45rem; border-radius: 4px; background: #fee2e2; color: #991b1b; }
.viabilidade-campo, .viabilidade-em_campo { display: inline-block; font-size: 0.68rem; font-weight: 700; padding: 0.15rem 0.45rem; border-radius: 4px; background: #e0e7ff; color: #3730a3; }
.viabilidade-sem { display: inline-block; font-size: 0.68rem; font-weight: 700; padding: 0.15rem 0.45rem; border-radius: 4px; background: #f1f5f9; color: #64748b; }
.badge-tag, .badge-projeto, .badge-planejamento { display: inline-block; font-size: 0.65rem; font-weight: 600; padding: 0.1rem 0.35rem; border-radius: 4px; background: #f1f5f9; color: #475569; margin-left: 0.25rem; }

/* Selos de Status de Programação */
.prog-status-nao, .prog-status-nao-programada { display: inline-block; font-size: 0.72rem; font-weight: 700; padding: 0.2rem 0.5rem; border-radius: 4px; background: #f1f5f9; color: #475569; }
.prog-status-parcial { display: inline-block; font-size: 0.72rem; font-weight: 700; padding: 0.2rem 0.5rem; border-radius: 4px; background: #fef3c7; color: #92400e; }
.prog-status-completa { display: inline-block; font-size: 0.72rem; font-weight: 700; padding: 0.2rem 0.5rem; border-radius: 4px; background: #dcfce7; color: #166534; }
.farol-pill.quadro-farol-verde { background: #e8f5e9; color: #1b5e20; }
.farol-pill.quadro-farol-amarelo { background: #fffde7; color: #f57f17; }
.farol-pill.quadro-farol-vermelho { background: #ffebee; color: #b71c1c; }
.prog-janela-sem-equipe { font-size: 0.72rem; color: #b45309; font-weight: 600; margin-top: 0.2rem; }

/* P174 — Equipes da programação */
.prog-aviso-sem-destino { color: #b45309; background: #fffbeb; border: 1px solid #fde68a; border-radius: 4px; padding: 0.2rem 0.4rem; font-size: 0.72rem; font-weight: 600; margin-top: 0.25rem; display: inline-block; }
.prog-aviso-fora-cadastro { font-size: 0.7rem; font-weight: 700; color: #b45309; background: #fef3c7; border: 1px solid #fcd34d; border-radius: 4px; padding: 0.1rem 0.35rem; margin-left: 0.35rem; }
.manual-equipes-tags { display: flex; flex-wrap: wrap; gap: .4rem; min-height: 2rem; margin-bottom: .4rem; }
.manual-equipe-tag { display: inline-flex; align-items: center; gap: .35rem; border-radius: 999px; padding: .3rem .45rem .3rem .65rem; background: #e8f2f8; color: var(--navy); font-size: .78rem; font-weight: 700; }
.manual-equipe-tag.principal { background: #dff5e8; color: #166534; }
.manual-equipe-tag button { border: 0; background: transparent; color: inherit; cursor: pointer; font-size: 1rem; line-height: 1; padding: 0 .15rem; }
.project-file-list, .project-upload-results { list-style: none; padding: 0; margin: .45rem 0 0; display: flex; flex-direction: column; gap: .3rem; }
.project-file-list li, .project-upload-results li { display: flex; justify-content: space-between; gap: .75rem; border: 1px solid var(--line); border-radius: 6px; padding: .35rem .5rem; font-size: .78rem; }
.project-upload-results li.ok { border-color: #86cda7; background: #f2fbf6; }
.project-upload-results li.fail { border-color: #efb0b0; background: #fff5f5; }
.prog-tag-fora-cadastro { font-size: 0.65rem; font-weight: 700; color: #b45309; background: #fef3c7; border: 1px solid #fcd34d; border-radius: 4px; padding: 0.1rem 0.35rem; margin-left: 0.25rem; display: inline-block; }
.modal-prog-card-erros { margin-top: 0.5rem; }
.modal-prog-etapa-erro { margin-top: 0.5rem; }
.input-equipe-ordem { width: 65px; font-size: 0.85rem; padding: 0.35rem 0.5rem; }
.input-equipe-nome { min-width: 140px; width: 100%; font-size: 0.85rem; padding: 0.35rem 0.5rem; }
.select-equipe-destino { max-width: 220px; width: 100%; font-size: 0.85rem; padding: 0.35rem 0.5rem; }
.modal-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0.75rem; }

/* P178 — D5: Painel de Indicadores para Reunião Diária */
/* ─── P198: Indicadores › Fechamento ─────────────────────────────────────── */
.fechamento-toolbar { display: flex; flex-direction: column; gap: 0.8rem; margin-bottom: 1rem; }
.fechamento-filter-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 0.75rem; align-items: end; }
.fechamento-context-bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: 0.65rem 0.9rem; background: #eef6fa; border: 1px solid var(--line); border-radius: 10px; margin-top: 0.5rem; }
.fechamento-context-text { font-size: 0.82rem; font-weight: 700; color: var(--navy); }
.fechamento-subtab-bar { display: flex; gap: 0.35rem; flex-wrap: wrap; margin: 0 0 1rem; padding: 0.3rem; background: #e9f1f6; border: 1px solid var(--line); border-radius: 13px; }
.fechamento-cards-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0.9rem; margin-bottom: 1rem; }
.fechamento-card { cursor: pointer; transition: transform 0.15s, box-shadow 0.15s; user-select: none; }
.fechamento-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(10,52,80,0.12); }
.fechamento-card-sub { display: block; margin-top: 0.35rem; font-size: 0.75rem; color: var(--muted); line-height: 1.35; }
.fechamento-clickable { cursor: pointer; transition: color 0.15s; }
.fechamento-clickable:hover { color: var(--blue); text-decoration: underline; }
.fechamento-chart-wrap { margin-top: 1rem; border: 1px solid var(--line); border-radius: 12px; padding: 1.25rem; background: #fff; width: 100%; box-sizing: border-box; }
.fechamento-chart-svg { width: 100%; height: auto; display: block; }
.fechamento-chart-legend { display: flex; gap: 1.2rem; margin-top: 0.75rem; font-size: 0.82rem; justify-content: center; flex-wrap: wrap; }
.fechamento-legend-item { display: inline-flex; align-items: center; gap: 0.4rem; }
.fechamento-legend-dot { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.fechamento-charts-container { display: flex; flex-direction: column; width: 100%; gap: 1.25rem; margin-top: 1rem; }
.fechamento-charts-container .fechamento-chart-wrap { margin-top: 0; width: 100%; }
.fechamento-chart-header { margin-bottom: 0.5rem; font-size: 0.92rem; color: var(--navy); font-weight: 700; }
.fechamento-modal-meta { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap; }
.fechamento-toggle-group { display: flex; gap: 0.5rem; margin-bottom: 1rem; }
.fechamento-faixas-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 0.75rem; margin-bottom: 1rem; }
.badge-ok { background: #dcfce7; color: #166534; font-weight: 700; }
.badge-warn { background: #fef3c7; color: #92400e; font-weight: 700; }
.badge-bad { background: #fee2e2; color: #991b1b; font-weight: 700; }
.fechamento-cards-mb { margin-bottom: 1rem; }
.fechamento-dot-no-prazo { background: #0284c7; }
.fechamento-dot-meta { background: transparent; border: 1.5px dashed #059669; }
.fechamento-faixa-title { font-weight: 700; font-size: 0.85rem; }
.fechamento-faixa-val { font-size: 1.4rem; }
.fechamento-faixa-track { width: 100%; height: 6px; background: #eef3f7; border-radius: 3px; margin-top: 0.4rem; overflow: hidden; }
.fechamento-faixa-bar { display: block; height: 100%; border-radius: 3px; }
.fechamento-cor-0-3 { color: #10b981; }
.fechamento-bg-0-3 { background: #10b981; }
.fechamento-cor-4-5 { color: #f59e0b; }
.fechamento-bg-4-5 { background: #f59e0b; }
.fechamento-cor-6-10 { color: #ea580c; }
.fechamento-bg-6-10 { background: #ea580c; }
.fechamento-cor-11-20 { color: #ef4444; }
.fechamento-bg-11-20 { background: #ef4444; }
.fechamento-cor-mais20 { color: #b91c1c; }
.fechamento-bg-mais20 { background: #b91c1c; }

.d5-toolbar { display: flex; flex-direction: column; gap: 0.8rem; margin-bottom: 1rem; }
.d5-filter-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 0.75rem; align-items: end; }
.d5-context-bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: 0.65rem 0.9rem; background: #eef6fa; border: 1px solid var(--line); border-radius: 10px; margin-top: 0.5rem; }
.d5-context-text { font-size: 0.82rem; font-weight: 700; color: var(--navy); }
.d5-subtab-bar { display: flex; gap: 0.35rem; flex-wrap: wrap; margin: 0 0 1rem; padding: 0.3rem; background: #e9f1f6; border: 1px solid var(--line); border-radius: 13px; }
.d5-cards-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0.9rem; margin-bottom: 1rem; }
.d5-card { cursor: pointer; transition: transform 0.15s, box-shadow 0.15s; user-select: none; }
.d5-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(10,52,80,0.12); }
.d5-card-sub { display: block; margin-top: 0.35rem; font-size: 0.75rem; color: var(--muted); line-height: 1.35; }
.d5-clickable { cursor: pointer; transition: color 0.15s; }
.d5-clickable:hover { color: var(--blue); text-decoration: underline; }
.d5-chart-wrap { margin-top: 1rem; border: 1px solid var(--line); border-radius: 12px; padding: 1.25rem; background: #fff; width: 100%; box-sizing: border-box; }
.d5-chart-svg { width: 100%; height: auto; display: block; }
.d5-chart-legend { display: flex; gap: 1.2rem; margin-top: 0.75rem; font-size: 0.82rem; justify-content: center; flex-wrap: wrap; }
.d5-legend-item { display: inline-flex; align-items: center; gap: 0.4rem; }
.d5-legend-dot { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.d5-dot-entradas { background: var(--cyan); }
.d5-dot-encerramentos { background: var(--green); }
.d5-dot-saldo { background: var(--navy); }
.d5-pareto-row { display: flex; align-items: center; gap: 0.7rem; margin-bottom: 0.5rem; font-size: 0.78rem; }
.d5-pareto-label { width: 180px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.d5-pareto-track { flex: 1; height: 18px; background: #eef3f7; border-radius: 4px; overflow: hidden; position: relative; }
.d5-pareto-bar-inner { height: 100%; background: linear-gradient(90deg, var(--blue), var(--cyan)); border-radius: 4px; }
.d5-pareto-val { width: 85px; text-align: right; font-weight: 700; }
.d5-pareto-acum { width: 75px; text-align: right; color: var(--muted); font-size: 0.74rem; }
.d5-review-card { border: 1px solid var(--line); border-radius: 12px; padding: 1rem; margin-bottom: 1rem; background: #fbfdfe; }
.d5-review-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 0.75rem; }
.d5-families-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 0.5rem; margin: 0.5rem 0; }
.d5-modal-meta { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap; }
.d5-tag-carga { font-size: 0.68rem; font-weight: 800; text-transform: uppercase; padding: 0.2rem 0.5rem; border-radius: 999px; background: #fff2d6; color: #8a5700; margin-right: 0.4rem; }
.d5-charts-container { display: flex; flex-direction: column; width: 100%; gap: 1.25rem; margin-top: 1rem; }
.d5-charts-container .d5-chart-wrap { margin-top: 0; width: 100%; }
.d5-charts-container .d5-chart-svg { min-height: 240px; }
.d5-chart-header { margin-bottom: 0.5rem; font-size: 0.92rem; color: var(--navy); font-weight: 700; }
.d5-dot-mais365 { background: #d97706; }
.d5-dot-meta { background: transparent; border: 1.5px dashed #059669; }
.d5-stacked-bar-svg { width: 100%; height: auto; display: block; max-height: 50px; }
.d5-reaberturas-rodape { margin-top: 0.6rem; font-size: 0.8rem; color: var(--muted); }
.d5-dot-f-0-7 { background: var(--cyan); }
.d5-dot-f-8-30 { background: #38bdf8; }
.d5-dot-f-31-60 { background: var(--blue); }
.d5-dot-f-61-90 { background: #6366f1; }
.d5-dot-f-91-180 { background: #f59e0b; }
.d5-dot-f-181-365 { background: #ea580c; }
.d5-dot-f-365 { background: var(--red); }

/* ─── P194: Município com lista oficial ─────────────────────────────────── */
.campo-municipio-wrap {
  position: relative;
  width: 100%;
}
.municipio-erro {
  display: block;
  margin-top: 0.25rem;
  font-size: 0.75rem;
  color: var(--red);
  font-weight: 600;
  line-height: 1.35;
}
.municipio-aviso-antigo {
  display: block;
  margin-top: 0.25rem;
  font-size: 0.75rem;
  color: var(--amber);
  font-weight: 600;
  line-height: 1.35;
}

/* ─── P196: Grade de Notas D5 — colunas fixas à esquerda e rolagem dupla ───── */
.table-scroll-top {
  overflow-x: auto;
  overflow-y: hidden;
  height: 14px;
  background: #f1f5f9;
  border: 1px solid var(--line);
  border-bottom: none;
  border-radius: 8px 8px 0 0;
}
.table-scroll-top-inner {
  height: 1px;
  min-width: 2600px;
}
.table-scroll-top + .table-wrap {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}
.table-scroll-top::-webkit-scrollbar,
.table-wrap::-webkit-scrollbar {
  height: 10px;
}
.table-scroll-top::-webkit-scrollbar-track,
.table-wrap::-webkit-scrollbar-track {
  background: #f1f5f9;
  border-radius: 4px;
}
.table-scroll-top::-webkit-scrollbar-thumb,
.table-wrap::-webkit-scrollbar-thumb {
  background: #cbd5e1;
  border-radius: 4px;
}
.table-scroll-top::-webkit-scrollbar-thumb:hover,
.table-wrap::-webkit-scrollbar-thumb:hover {
  background: #94a3b8;
}

/* Colunas fixas de D5: OV, NOTA, OS, Contrato, Nº D5 */
.d5-table th:nth-child(1), .d5-table td:nth-child(1),
#d5-result .data-table th:nth-child(1), #d5-result .data-table td:nth-child(1) {
  position: sticky;
  left: 0;
  min-width: 85px;
  max-width: 95px;
  width: 90px;
}
.d5-table th:nth-child(2), .d5-table td:nth-child(2),
#d5-result .data-table th:nth-child(2), #d5-result .data-table td:nth-child(2) {
  position: sticky;
  left: 90px;
  min-width: 85px;
  max-width: 95px;
  width: 90px;
}
.d5-table th:nth-child(3), .d5-table td:nth-child(3),
#d5-result .data-table th:nth-child(3), #d5-result .data-table td:nth-child(3) {
  position: sticky;
  left: 180px;
  min-width: 85px;
  max-width: 95px;
  width: 90px;
}
.d5-table th:nth-child(4), .d5-table td:nth-child(4),
#d5-result .data-table th:nth-child(4), #d5-result .data-table td:nth-child(4) {
  position: sticky;
  left: 270px;
  min-width: 85px;
  max-width: 95px;
  width: 90px;
}
.d5-table th:nth-child(5), .d5-table td:nth-child(5),
#d5-result .data-table th:nth-child(5), #d5-result .data-table td:nth-child(5) {
  position: sticky;
  left: 360px;
  min-width: 90px;
  max-width: 105px;
  width: 95px;
  box-shadow: 3px 0 6px rgba(0,0,0,.08);
  border-right: 1px solid var(--line);
}

.d5-table th:nth-child(-n+5),
#d5-result .data-table th:nth-child(-n+5) {
  background: #edf3f7;
  z-index: 3;
}

.d5-table td:nth-child(-n+5),
#d5-result .data-table td:nth-child(-n+5) {
  background: #fff;
  z-index: 2;
}

.d5-table tbody tr:hover td:nth-child(-n+5),
#d5-result .data-table tbody tr:hover td:nth-child(-n+5) {
  background: #f4fafc;
}

.d5-table th.action-cell,
#d5-result .data-table th.action-cell {
  z-index: 4;
}

.d5-table td.action-cell,
#d5-result .data-table td.action-cell {
  z-index: 2;
}

/* Faixa de atualização da D5 (SAP) — P207 */
.d5-status-banner {
  padding: 0.7rem 1rem;
  border-radius: 8px;
  font-size: 0.83rem;
  line-height: 1.45;
  margin-bottom: 1rem;
  border: 1px solid transparent;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.d5-status-banner.em_dia {
  background: #ecfdf5;
  border-color: #a7f3d0;
  color: #065f46;
}
.d5-status-banner.atrasada {
  background: #fffbeb;
  border-color: #fde68a;
  color: #92400e;
}
.d5-status-banner.erro {
  background: #fef2f2;
  border-color: #fecaca;
  color: #991b1b;
}
.d5-status-banner.sem_dados,
.d5-status-banner.falha {
  background: #f3f4f6;
  border-color: #e5e7eb;
  color: #374151;
}
.d5-status-banner a {
  color: inherit;
  font-weight: 700;
  text-decoration: underline;
}




