:root{
    --azul:#1f4e79;
    --azul-escuro:#173a5c;
    --azul-claro:#eaf3fb;
    --verde:#1f8f5f;
    --verde-claro:#e8f7ef;
    --vermelho:#b42318;
    --vermelho-claro:#fdecec;
    --amarelo:#b7791f;
    --cinza:#64748b;
    --borda:#dbe4ef;
    --fundo:#f4f7fb;
    --card:#ffffff;
    --texto:#172033;
    --sombra:0 12px 30px rgba(31,78,121,.08);
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--fundo);color:var(--texto)}
a{text-decoration:none;color:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:270px;background:linear-gradient(180deg,var(--azul-escuro),var(--azul));color:#fff;padding:22px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0}.brand{display:flex;align-items:center;gap:12px;margin-bottom:34px}.brand-icon{width:46px;height:46px;border-radius:16px;background:#fff;color:var(--azul);display:grid;place-items:center;font-size:24px;font-weight:800}.brand strong{display:block;font-size:22px;letter-spacing:.5px}.brand span{display:block;color:#cfe3f7;font-size:13px}.nav-menu{display:grid;gap:8px}.nav-link{padding:13px 14px;border-radius:14px;color:#e8f3ff;font-weight:600}.nav-link:hover,.nav-link.active{background:rgba(255,255,255,.14)}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.16);padding-top:18px}.user-mini strong{display:block}.user-mini span{color:#cfe3f7;font-size:13px}.logout{display:inline-block;margin-top:14px;background:rgba(255,255,255,.12);padding:10px 14px;border-radius:12px}.main-content{margin-left:270px;width:calc(100% - 270px);padding:26px}.topbar{background:var(--card);border:1px solid var(--borda);border-radius:24px;padding:22px 26px;margin-bottom:22px;box-shadow:var(--sombra)}.topbar h1{margin:0;font-size:26px}.topbar p{margin:6px 0 0;color:var(--cinza)}.grid{display:grid;gap:18px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--borda);border-radius:24px;padding:22px;box-shadow:var(--sombra)}.kpi small{color:var(--cinza);font-weight:700;text-transform:uppercase;font-size:12px}.kpi strong{display:block;margin-top:10px;font-size:28px}.kpi span{display:block;color:var(--cinza);margin-top:4px}.btn{border:0;border-radius:14px;padding:12px 16px;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn-primary{background:var(--azul);color:#fff}.btn-secondary{background:var(--azul-claro);color:var(--azul)}.btn-danger{background:var(--vermelho-claro);color:var(--vermelho)}.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-group{margin-bottom:14px}.form-group label{display:block;font-weight:800;margin-bottom:7px}.form-control,select,textarea{width:100%;border:1px solid var(--borda);border-radius:14px;padding:12px 13px;background:#fff;font-size:15px}textarea{min-height:90px}.table-wrap{overflow:auto;border-radius:18px;border:1px solid var(--borda)}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:13px 14px;border-bottom:1px solid var(--borda);text-align:left;vertical-align:top}th{background:#f8fbff;color:var(--azul);font-size:13px;text-transform:uppercase}tr:last-child td{border-bottom:0}.badge{display:inline-flex;padding:6px 10px;border-radius:999px;font-weight:800;font-size:12px}.badge-green{background:var(--verde-claro);color:var(--verde)}.badge-blue{background:var(--azul-claro);color:var(--azul)}.badge-red{background:var(--vermelho-claro);color:var(--vermelho)}.alert{padding:14px 16px;border-radius:16px;margin-bottom:16px;font-weight:700}.alert-success{background:var(--verde-claro);color:var(--verde)}.alert-danger{background:var(--vermelho-claro);color:var(--vermelho)}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#eaf3fb,#f7fbff)}.login-card{width:min(430px,92vw);background:#fff;border:1px solid var(--borda);border-radius:28px;padding:30px;box-shadow:var(--sombra)}.login-logo{display:flex;align-items:center;gap:12px;margin-bottom:22px}.login-logo .brand-icon{background:var(--azul);color:#fff}.muted{color:var(--cinza)}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.upload-box{border:2px dashed #b9cadb;border-radius:24px;background:#fbfdff;padding:28px;text-align:center}.upload-box input{margin-top:14px}.text-right{text-align:right}.value-credit{color:var(--verde);font-weight:800}.value-debit{color:var(--vermelho);font-weight:800}
@media(max-width:950px){.sidebar{position:relative;width:100%;inset:auto}.app-shell{display:block}.main-content{margin-left:0;width:100%;padding:16px}.grid-4,.grid-2,.form-row{grid-template-columns:1fr}}

.btn-sm{padding:8px 10px;border-radius:10px;font-size:12px}.actions-compact{gap:6px}.actions-compact form{margin:0}.upload-dropzone{display:block;cursor:pointer;transition:.18s ease}.upload-dropzone:hover,.upload-dropzone.dragover{border-color:var(--azul);background:var(--azul-claro)}.upload-dropzone input[type=file]{position:absolute;left:-9999px}.upload-icon{width:54px;height:54px;border-radius:18px;background:var(--azul);color:#fff;display:grid;place-items:center;font-weight:900;margin:0 auto 12px}.file-list{margin-top:14px;color:var(--azul);font-weight:800;font-size:14px}.file-list span{display:inline-block;background:#fff;border:1px solid var(--borda);border-radius:999px;padding:7px 10px;margin:4px}

/* ASEP v1.2 - conflitos de upload */
.conflict-card {
    border: 1px solid #ffd6a5;
    background: #fffaf3;
}
.btn-danger {
    background: #b42318;
    color: #fff;
    border: 1px solid #b42318;
}
.btn-danger:hover {
    background: #912018;
    border-color: #912018;
}

/* ASEP v1.3 - processamento financeiro */
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.kpi-card{background:#f8fbff;border:1px solid var(--borda);border-radius:18px;padding:16px}
.kpi-card span{display:block;color:var(--cinza);font-size:12px;text-transform:uppercase;font-weight:800;margin-bottom:8px}
.kpi-card strong{font-size:22px;color:var(--azul-escuro)}
@media(max-width:950px){.kpi-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.kpi-grid{grid-template-columns:1fr}}
