:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:#15273a;background:#f4f6f8;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit}h1,h2,h3,p{margin:0}input,select,textarea{outline:none}svg{vertical-align:middle;flex-shrink:0}::selection{background:#a5efd2}#app{min-height:100vh}.boot-screen{height:100vh;display:grid;place-content:center;text-align:center;color:#57677a;gap:20px}.boot-logo{margin:auto;background:#15273a;color:#5de2b3;border-radius:16px;padding:18px;font-size:24px;font-weight:900;letter-spacing:-.06em}
/* Auth */.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(320px,1fr) minmax(360px,1fr);background:#fff}.auth-brand{padding:58px 7vw;background:#112438;color:#edf8f8;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.auth-brand:after{content:"";width:510px;height:510px;border:1px solid #3b5d67;border-radius:50%;position:absolute;right:-230px;bottom:4%;box-shadow:0 0 0 75px #142c40,0 0 0 76px #284857,0 0 0 153px #142a3d}.brand{display:flex;align-items:center;gap:12px;font-weight:780;font-size:18px;letter-spacing:-.035em}.brand-mark{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:#123c3a;background:#71e8b9;font-size:14px;font-weight:900;letter-spacing:-.045em}.auth-brand main{position:relative;z-index:1;max-width:480px}.eyebrow{font-size:11px;letter-spacing:.13em;text-transform:uppercase;font-weight:850;color:#899aab}.auth-brand .eyebrow{color:#6ed8b5}.auth-brand h1{font-size:clamp(40px,4.6vw,72px);line-height:1.04;letter-spacing:-.07em;margin:19px 0 20px;font-weight:760}.auth-brand h1 span{color:#70ddba}.auth-brand p{font-size:16px;color:#abc0c9;max-width:410px;line-height:1.7}.auth-foot{position:relative;z-index:1;color:#91a9b3;font-size:12px}.auth-panel{display:grid;place-content:center;padding:44px 8vw}.auth-box{width:min(410px,100%)}.auth-box h2{font-size:30px;letter-spacing:-.05em;margin:12px 0}.auth-box .sub{font-size:14px;color:#82909c;margin-bottom:32px;line-height:1.5}.login-hint{font-size:12px;color:#8796a6;line-height:1.6;margin-top:20px}.field{display:flex;flex-direction:column;gap:7px;min-width:0}.field label{font-weight:700;font-size:12px;color:#34475a}.input,select,textarea{background:#fff;color:#172c41;border:1px solid #dae2e9;border-radius:10px;min-height:43px;padding:10px 12px;width:100%;transition:border .15s,box-shadow .15s}.input:focus,select:focus,textarea:focus{border-color:#309c85;box-shadow:0 0 0 3px #d9f6e9}textarea{resize:vertical;min-height:85px}.field-note{font-size:11px;color:#96a1ac}.form-stack{display:grid;gap:17px}.grid-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid-fields .wide{grid-column:1 / -1}.required:after{content:" *";color:#ef7b6d}.btn{border:1px solid transparent;min-height:39px;border-radius:10px;padding:9px 15px;font-size:12px;display:inline-flex;gap:8px;align-items:center;justify-content:center;font-weight:740;line-height:1.2;transition:transform .12s,background .15s,box-shadow .15s;white-space:nowrap}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn-primary{background:#153c42;color:white}.btn-primary:hover:not(:disabled){background:#195961}.btn-mint{background:#63dfb0;color:#183b35}.btn-secondary{background:white;color:#2b4556;border-color:#dce4ea}.btn-secondary:hover{background:#f7fafb}.btn-danger{background:#fff2f1;color:#b34335;border-color:#ffdad4}.btn-full{width:100%}.btn-lg{min-height:48px;font-size:14px}.auth-form{display:grid;gap:18px}.error-box{border:1px solid #ffcdc3;background:#fff4f1;color:#a54130;padding:12px;border-radius:10px;font-size:12px;line-height:1.5}.muted{color:#8895a2}.text-sm{font-size:12px}.bold{font-weight:780}
/* Layout */.layout{display:flex;min-height:100vh}.sidebar{width:255px;min-width:255px;background:#142538;color:#a8bbca;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:23px 15px 14px;z-index:30}.sidebar .brand{color:#fff;padding:0 12px;font-size:17px;margin-bottom:35px}.sidebar .brand-mark{width:36px;height:36px}.menu-label{font-size:10px;text-transform:uppercase;letter-spacing:.11em;font-weight:750;color:#617a90;padding:9px 13px;margin:12px 0 5px}.nav-link{width:100%;border:0;background:transparent;text-align:left;display:flex;align-items:center;gap:12px;padding:12px 13px;font-weight:570;font-size:12px;color:#a8bbca;border-radius:10px;margin-bottom:2px}.nav-link:hover{background:#1b354a;color:#f1f9fa}.nav-link.active{color:#ebfff7;background:#234b52;box-shadow:inset 3px 0 0 #6ee0b5}.nav-link svg{width:17px;height:17px}.nav-link .counter{margin-left:auto;font-size:10px;color:#d0efdc;border:1px solid #48796e;padding:2px 6px;border-radius:7px}.sidebar-spacer{flex:1}.sidebar-foot{border-top:1px solid #2a4154;padding:17px 10px 4px;display:flex;gap:10px;align-items:center}.avatar{background:#d9f7e9;border-radius:50%;color:#216656;display:grid;place-items:center;font-weight:850;font-size:12px;width:36px;height:36px;flex-shrink:0}.sidebar-foot .avatar{background:#345b61;color:#dcfff0}.sidebar-foot .person{min-width:0;flex:1}.sidebar-foot .person strong,.sidebar-foot .person span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-foot .person strong{font-size:12px;color:#fff}.sidebar-foot .person span{font-size:10px;color:#829eac;margin-top:2px}.icon-button{border:0;background:transparent;border-radius:8px;padding:8px;display:grid;place-items:center;color:inherit}.icon-button:hover{background:#ffffff18}.main-panel{min-width:0;flex:1;background:#f4f6f8}.topbar{height:73px;background:#fff;border-bottom:1px solid #e6eaee;display:flex;align-items:center;justify-content:space-between;padding:0 38px;gap:12px}.crumbs{font-size:12px;color:#8b98a6;display:flex;gap:9px;align-items:center}.crumbs b{font-weight:760;color:#254057}.top-actions{display:flex;align-items:center;gap:15px}.top-actions .today{font-size:11px;color:#80909e}.top-chip{padding:7px 10px;border:1px solid #e1e7eb;background:#f8fafb;border-radius:8px;font-size:11px;color:#556879;font-weight:640}.mobile-open{display:none}.content{max-width:1500px;padding:33px 38px 70px;margin:auto}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:26px}.page-header h1{font-size:31px;letter-spacing:-.055em;line-height:1.12;font-weight:785;margin-top:7px}.page-header p{color:#8492a0;font-size:13px;margin-top:10px;line-height:1.5}.header-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.panel{background:#fff;border-radius:16px;border:1px solid #e4e9ee;box-shadow:0 3px 20px #284b5707;padding:21px}.panel h2{font-size:16px;letter-spacing:-.025em;font-weight:780}.panel .panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.panel-sub{color:#8a98a4;font-size:11px;margin-top:5px}.grid-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:21px}.kpi{background:#fff;border:1px solid #e4e9ee;border-radius:15px;padding:21px 20px 19px;min-width:0}.kpi-top{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#8493a0;font-size:11px;font-weight:680}.kpi-icon{border-radius:10px;padding:8px;background:#ebf7f2;color:#2b8b72;display:grid;place-items:center}.kpi-icon.orange{background:#fff3e9;color:#de9355}.kpi-icon.blue{background:#eef2ff;color:#6478bb}.kpi-icon.red{background:#fff0ed;color:#d46e5f}.kpi-number{font-size:33px;letter-spacing:-.065em;font-weight:815;margin:17px 0 8px;line-height:1}.kpi-description{color:#9aa5af;font-size:11px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.16fr) minmax(290px,.84fr);gap:17px;margin-bottom:18px}.dashboard-grid.bottom{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.donut-container{display:flex;gap:27px;align-items:center;justify-content:space-around;padding:14px 0}.donut{width:178px;height:178px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;position:relative;background:conic-gradient(#35b18d 0 var(--a),#527da5 var(--a) var(--b),#f5bf6a var(--b) 100%)}.donut:before{content:"";position:absolute;inset:36px;border-radius:50%;background:#fff}.donut-center{position:relative;text-align:center}.donut-center strong{display:block;font-size:25px;letter-spacing:-.05em}.donut-center span{display:block;font-size:10px;color:#8999a3}.legend{display:grid;gap:13px;min-width:170px}.legend-item{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#63788a;font-size:11px}.legend-item .name{display:flex;align-items:center;gap:9px}.legend-item strong{font-size:12px;color:#2c4053}.dot{width:8px;height:8px;border-radius:50%;background:#35b18d}.bar-list{display:grid;gap:16px;padding:8px 3px 4px}.bar-row{display:grid;gap:7px}.bar-row-label{display:flex;justify-content:space-between;align-items:center;color:#5c6f80;font-size:11px}.bar-row-label b{color:#273d50}.bar-track{height:8px;background:#edf1f4;border-radius:20px;overflow:hidden}.bar-fill{height:100%;border-radius:20px;background:#68ac9a}.bar-fill.high{background:#e2a65c}.bar-fill.critical{background:#d97466}.bar-fill.medium{background:#6c91c3}.bar-fill.low{background:#72b998}.badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;padding:6px 9px;border-radius:100px;font-weight:760;white-space:nowrap;background:#eef2f5;color:#687c8b}.badge.green{background:#e4f7ec;color:#2a8d60}.badge.yellow{background:#fff3de;color:#a77a2a}.badge.blue{background:#ebf0ff;color:#5d78bd}.badge.red{background:#ffe9e5;color:#b75b4a}.badge.gray{background:#f0f2f5;color:#647486}.badge.teal{background:#ddf5f1;color:#238976}.table-scroll{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;text-align:left}.data-table th{font-size:10px;color:#8293a0;text-transform:uppercase;letter-spacing:.065em;padding:13px 11px;font-weight:750;background:#f8fafb;white-space:nowrap}.data-table th:first-child{border-radius:9px 0 0 9px}.data-table th:last-child{border-radius:0 9px 9px 0}.data-table td{padding:14px 11px;border-bottom:1px solid #edf0f3;font-size:12px;color:#596c7d;vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.data-table strong{color:#20394a;font-weight:750}.text-link{border:0;padding:0;color:#258e78;font-weight:770;background:none;text-align:left}.text-link:hover{text-decoration:underline}.empty{padding:35px 15px;text-align:center;color:#98a6b1}.empty svg{color:#b5c4cd;margin-bottom:10px}.empty h3{font-size:14px;color:#476072;margin-bottom:7px}.empty p{font-size:12px;line-height:1.7;max-width:350px;margin:auto}.empty .btn{margin-top:16px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px;flex-wrap:wrap}.filters{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.search-input{height:39px;min-width:230px;border:1px solid #e0e7eb;background:#fff;border-radius:10px;display:flex;align-items:center;gap:8px;padding:0 12px;color:#9aabb5}.search-input input{border:0;background:transparent;width:100%;color:#263a4d;font-size:12px;outline:none}.filter-select{max-width:205px;min-height:39px;font-size:12px}.hint{color:#8b9aa8;font-size:11px;line-height:1.6}.hint strong{color:#496171}.stat-pair{display:flex;gap:15px;justify-content:space-between;padding:10px 0;border-bottom:1px solid #edf1f4;font-size:12px}.stat-pair:last-child{border:0}.stat-pair .key{color:#8796a4}.stat-pair .val{font-weight:720;color:#355066;text-align:right}.detail-head{display:flex;justify-content:space-between;gap:15px;margin-bottom:15px}.detail-title{font-size:22px;letter-spacing:-.04em;font-weight:800}.detail-desc{color:#8998a6;font-size:12px;margin-top:7px}.detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.detail-card{border:1px solid #e7edf0;border-radius:11px;padding:13px}.detail-card .label{font-size:10px;color:#93a0aa;margin-bottom:6px}.detail-card .value{font-weight:780;font-size:13px;overflow-wrap:anywhere}.section-subtitle{font-size:12px;color:#798f9f;margin:13px 0}.notice{border-radius:11px;padding:14px 16px;font-size:12px;line-height:1.6;background:#e9f4f1;color:#337564;border:1px solid #d6e9e2}.notice.warning{background:#fff7ec;color:#9b7239;border-color:#f1dfbe}.notice.danger{background:#fff1ee;color:#ae6052;border-color:#f5d6ce}.notice.info{background:#eff6fc;color:#527596;border-color:#dce9f3}.tiny-actions{display:flex;gap:7px;flex-wrap:wrap}.mini-link{border:1px solid #dae6e7;border-radius:8px;padding:7px 10px;background:#f7fbfa;font-size:10px;font-weight:700;color:#337b71}.mini-link:hover{background:#e6f3ef}.seg-tabs{display:flex;gap:5px;background:#f1f4f6;border-radius:10px;padding:4px;margin-bottom:20px;flex-wrap:wrap}.seg-tabs button{background:none;border:0;font-size:11px;color:#7b8c99;padding:10px 14px;border-radius:8px;font-weight:740}.seg-tabs button.active{background:#fff;color:#2a5d64;box-shadow:0 1px 8px #20304012}
/* Modal */.modal-backdrop{position:fixed;inset:0;background:#0c1f32aa;z-index:70;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(3px)}.modal{width:min(650px,100%);max-height:min(90vh,950px);overflow:auto;background:#fff;border-radius:18px;box-shadow:0 30px 100px #0b223750}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 26px 17px;border-bottom:1px solid #edf1f4}.modal-header h2{font-size:20px;letter-spacing:-.04em}.modal-header p{font-size:12px;color:#8da0aa;margin-top:5px}.modal-body{padding:23px 26px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:17px 26px;border-top:1px solid #edf1f4}.close{background:#f3f6f7;border:0;border-radius:9px;padding:8px;color:#8394a0}.inline-helpers{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:9px}.divider{height:1px;background:#ebeff2;margin:15px 0}.sublist{display:grid;gap:8px}.subitem{padding:11px 12px;border:1px solid #e9edf0;border-radius:9px;display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:12px}.subitem .desc{font-size:10px;color:#8ca0ac;margin-top:4px}.modal [data-role="repeater"]{display:grid;gap:9px}.list-row{display:flex;gap:8px;align-items:center}.list-row .input{flex:1}.toast{position:fixed;bottom:26px;right:28px;z-index:90;max-width:420px;background:#153a3d;color:#f4ffff;padding:15px 20px;border-radius:12px;box-shadow:0 12px 45px #092a3255;font-size:12px;line-height:1.5}.toast.error{background:#a8493d}.skeleton{background:linear-gradient(90deg,#f1f5f7 25%,#e5ebef 50%,#f1f5f7 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:10px;height:60px}@keyframes shimmer{to{background-position:-200% 0}}.mobile-shade{display:none}.footer-note{font-size:11px;color:#a1adb6;padding-top:18px;line-height:1.5}
@media(max-width:1200px){.content{padding:25px}.topbar{padding:0 25px}.sidebar{width:225px;min-width:225px}.grid-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:880px){.sidebar{position:fixed;left:-285px;top:0;transition:left .2s;width:265px;min-width:265px}.sidebar.mobile-visible{left:0}.mobile-shade.show{display:block;position:fixed;inset:0;background:#102335a8;z-index:20}.mobile-open{display:grid}.topbar{height:65px}.dashboard-grid,.dashboard-grid.bottom{grid-template-columns:1fr}.auth-shell{grid-template-columns:1fr}.auth-brand{min-height:230px;padding:28px}.auth-brand h1{font-size:38px}.auth-brand main{margin-top:20px}.auth-brand p{display:none}.auth-foot{display:none}.auth-panel{padding:50px 25px}.auth-box{width:min(480px,100%)}}@media(max-width:580px){.content{padding:22px 14px 50px}.topbar{padding:0 14px}.top-actions .today{display:none}.page-header{align-items:flex-start;flex-direction:column}.page-header h1{font-size:26px}.grid-kpis{gap:9px}.kpi{padding:15px}.kpi-number{font-size:27px}.kpi-top{font-size:10px}.panel{padding:15px}.donut-container{flex-direction:column}.grid-fields,.detail-grid{grid-template-columns:1fr}.grid-fields .wide{grid-column:auto}.modal-backdrop{padding:0}.modal{border-radius:0;height:100vh;max-height:100vh}.modal-header,.modal-body,.modal-footer{padding-left:19px;padding-right:19px}.modal-footer{position:sticky;bottom:0;background:#fff}.search-input{min-width:0;width:100%}.filters{width:100%}.filter-select{flex:1}.toolbar{align-items:stretch}.crumbs{max-width:200px}.header-actions{width:100%}.header-actions .btn{flex:1}.donut{width:155px;height:155px}.top-chip{display:none}}

/* Materiais em campo — estoque paralelo */
.campo-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0 0 18px}
.campo-toolbar{margin-bottom:15px;gap:12px;flex-wrap:wrap}.campo-toolbar .filters{min-width:220px;flex:1}
.campo-acoes{display:flex;flex-wrap:wrap;gap:10px;white-space:nowrap}
.campo-saida{color:#ab583c}.campo-acoes button:disabled{opacity:.4;cursor:not-allowed}
.saldo-campo{display:inline-block;background:#e9f7f0;color:#137254;padding:5px 9px;border-radius:8px;font-variant-numeric:tabular-nums}
.saldo-campo.zerado{background:#fff1ee;color:#b24b3c}
@media(max-width:1100px){.campo-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.campo-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.campo-toolbar{align-items:stretch}.campo-toolbar .search-input{width:100%}}
