:root{
    --bg:#f2f4f8;
    --bg-soft:#e8ecf3;
    --card:#ffffff;
    --line:#d7dce5;
    --line-strong:#bfc7d6;
    --text:#2c3133;
    --muted:#666d6f;
    --brand:#6382bf;
    --brand-dark:#4a6baa;
    --primary:#344e80;
    --primary-dark:#1b3566;
    --primary-soft:#ebeff4;
    --success:#2a7f45;
    --danger:#dc2626;
    --warning:#d97706;
    --info:#0e7490;
    --secondary:#818687;
    --sidebar:#ffffff;
    --sidebar-soft:#f1f4f8;
    --shadow-soft:0 10px 30px rgba(22,40,74,.08);
    --shadow-card:0 14px 36px rgba(22,40,74,.10);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:Arial,Helvetica,sans-serif;background:linear-gradient(180deg,#fafbfd,#f2f4f7);color:var(--text)}
a{text-decoration:none;color:inherit}
img{max-width:100%;display:block}
h1,h2,h3,h4{margin:0 0 12px}
p{margin:0 0 12px;line-height:1.5}
small,.muted{color:var(--muted)}

.app-shell{display:flex;min-height:100vh}
.sidebar{
    width:290px;
    background:var(--sidebar);
    color:var(--text);
    padding:24px 20px;
    display:flex;
    flex-direction:column;
    gap:24px;
    position:sticky;
    top:0;
    height:100vh;
    border-right:1px solid var(--line);
    box-shadow:20px 0 40px rgba(15,23,42,.04);
}
.brand{display:flex;gap:12px;align-items:center}
.brand-vertical{align-items:flex-start;flex-direction:column;gap:12px}
.brand-logo{
    width:100%;
    max-width:220px;
    background:transparent;
    border-radius:0;
    padding:0;
    box-shadow:none;
    border:none;
}
.brand small{display:block;color:var(--muted)}

.menu{display:flex;flex-direction:column;gap:8px}
.menu-link{
    padding:13px 16px;
    border-radius:14px;
    color:#272d39;
    font-weight:700;
    transition:.18s ease;
}
.menu-link:hover{
    background:var(--primary-soft);
    color:var(--primary);
    transform:translateX(2px);
}
.menu-link.active{
    background:linear-gradient(135deg,var(--primary),var(--primary-dark));
    color:#fff;
    box-shadow:0 12px 24px rgba(22,40,74,.24);
}

.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:12px}
.user-card{
    background:linear-gradient(180deg,#fafbfc,#f3f5f9);
    border:1px solid var(--line);
    border-radius:18px;
    padding:14px;
}
.user-card small{display:block;color:var(--muted);margin-top:4px}

.content{flex:1;padding:28px}
.content-header{margin-bottom:20px}
.content-header h1{font-size:38px;letter-spacing:-.02em}
.subtitle{color:var(--muted)}

.card{
    background:var(--card);
    border:1px solid rgba(221,229,215,.95);
    border-radius:22px;
    padding:18px;
    box-shadow:var(--shadow-soft);
    margin-bottom:16px;
}
.card.compact{padding:14px}
.card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.card-table{padding:0;overflow:hidden}

.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.inline-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}

.btn{
    border:none;
    border-radius:14px;
    padding:12px 16px;
    font-weight:700;
    cursor:pointer;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    transition:.18s ease;
}
.btn:hover{transform:translateY(-1px)}
.btn-sm{padding:8px 11px;border-radius:11px;font-size:12px}
.btn-block{width:100%}
.btn-primary{
    background:linear-gradient(135deg,var(--primary),var(--primary-dark));
    color:#fff;
    box-shadow:0 12px 24px rgba(22,40,74,.24);
}
.btn-primary:hover{background:linear-gradient(135deg,var(--primary-dark),#162c55)}
.btn-outline{
    background:#fff;
    border:1px solid var(--line-strong);
    color:var(--text);
}
.btn-outline:hover{background:var(--primary-soft);border-color:#cfd8eb;color:var(--primary)}
.btn-danger{background:#fff1f2;color:#b42318;border:1px solid #fecdd3}

.alert{padding:12px 14px;border-radius:14px;margin-bottom:12px;border:1px solid transparent}
.alert-success{background:#ecfdf3;color:#166534;border-color:#c5f0d1}
.alert-danger{background:#fff1f2;color:#991b1b;border-color:#fecdd3}
.alert-info{background:#f5f6f9;color:#4a6bab;border-color:#d1daec}

.table{width:100%;border-collapse:collapse}
.table th,.table td{padding:13px 12px;border-bottom:1px solid #ebeef3;vertical-align:top;text-align:left}
.table th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;background:#fbfcfd}
.table tr:hover td{background:#fcfdfe}

.grid{display:grid;gap:16px}
.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))}
.grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.stat-card strong{display:block;font-size:34px;margin-top:6px;color:var(--primary)}

input,select,textarea{
    width:100%;
    border:1px solid var(--line-strong);
    border-radius:14px;
    padding:11px 12px;
    background:#fff;
    font:inherit;
    color:var(--text);
}
input:focus,select:focus,textarea:focus{
    outline:none;
    border-color:#b0c0df;
    box-shadow:0 0 0 4px rgba(22,40,74,.10);
}
textarea{resize:vertical}
label{display:block;font-size:13px;font-weight:700;margin-bottom:8px;color:#3a4150}

.checks{display:grid;gap:8px;align-content:start;padding-top:8px}
.checks-2cols{grid-template-columns:repeat(2,minmax(0,1fr))}
.checks label,.check-pill{font-weight:400}

.badge{display:inline-flex;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:700}
.badge-success{background:#e8fff1;color:#0f7a36}
.badge-danger{background:#fff1f2;color:#b42318}
.badge-warning{background:#fff7ed;color:#b45309}
.badge-info{background:#eaedf4;color:#2a3344}
.badge-secondary{background:#f3f4f7;color:#454c5a}

.thumb{width:100%;max-width:280px;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fafbfd}
.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}

.client-card .client-logo,.report-logo{height:74px;margin-bottom:10px;display:flex;align-items:center}
.client-card .client-logo img,.report-logo img{max-height:100%;max-width:220px;object-fit:contain}
.placeholder-logo{width:70px;height:70px;border-radius:18px;background:var(--primary-soft);color:var(--primary-dark);font-size:28px;font-weight:700;display:flex;align-items:center;justify-content:center}
.placeholder-logo.large{width:120px;height:80px;border-radius:14px}
.meta{display:flex;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:14px;margin-bottom:12px}
.checklist-grid{display:flex;flex-wrap:wrap;gap:10px}
.check-pill{display:inline-flex;gap:8px;align-items:center;border:1px solid var(--line);padding:10px 12px;border-radius:999px;background:#fff}
.simple-list{margin:0;padding-left:20px;display:grid;gap:10px}

.login-body{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(180deg,#f4f6f9,#fafbfd)}
.login-card{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-card);border-radius:24px;padding:30px;width:min(430px,100%)}
.login-card.wide{width:min(760px,100%)}
.login-logo{max-width:260px;margin:0 auto 18px;background:transparent;border-radius:0;padding:0;box-shadow:none}
.login-help{margin-top:14px;text-align:center}

.calendar-nav{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.calendar-head div{background:var(--primary-soft);border-radius:14px;padding:10px;text-align:center;font-weight:700;color:#4866a0}
.calendar-cell{min-height:132px;border:1px solid var(--line);border-radius:16px;padding:10px;background:#fff;box-shadow:0 4px 14px rgba(15,23,42,.03)}
.calendar-cell.empty{background:transparent;border:0;box-shadow:none}
.calendar-day{font-weight:700;margin-bottom:8px;color:#272d39}
.calendar-item{display:block;background:#f9fafc;border-radius:12px;padding:8px;margin-bottom:6px;font-size:12px;color:#4866a0;border:1px solid #e0e7f3}
.calendar-item small{display:block;color:#474c55;margin-top:4px}

.execution-item{border-left:5px solid var(--primary)}
.mobile-jobs{display:grid;gap:12px}
.mobile-job-card{padding:16px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-soft)}
.mobile-job-card .job-meta{display:grid;gap:6px;color:var(--muted);font-size:14px;margin:10px 0}
.mobile-job-card .job-actions{display:flex;gap:10px;flex-wrap:wrap}

.action-flow-card{max-width:860px;margin:0 auto;box-shadow:var(--shadow-card)}
.step-counter{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.progress-track{height:14px;background:#edeff4;border-radius:999px;overflow:hidden}
.progress-fill{height:100%;background:linear-gradient(90deg,#adbddd,var(--primary))}
.flow-chip{display:inline-flex;align-items:center;gap:6px;padding:8px 10px;border-radius:999px;background:var(--primary-soft);color:#4866a0;font-weight:700;font-size:13px}
.flow-question{padding:14px 16px;border-radius:18px;background:#fafbfd;border:1px solid #e8ebf2;margin-bottom:16px}
.flow-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0 18px}
.flow-option{border:1px solid var(--line);border-radius:18px;padding:14px;background:#fff}
.multi-select{min-height:120px}

.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.kpi-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:16px;box-shadow:var(--shadow-soft)}
.kpi-card strong{display:block;font-size:28px;margin-top:4px;color:var(--primary)}

.report-sheet{max-width:1100px;margin:0 auto;padding:20px}
.report-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:18px;border-bottom:2px solid var(--line);margin-bottom:18px}
.report-section{margin-bottom:24px}
.report-item{border:1px solid var(--line);border-radius:18px;padding:16px;margin-bottom:14px}
.report-item-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px}
.report-photo{margin-top:8px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fafbfd}
.print-toolbar{max-width:1100px;margin:18px auto 0;display:flex;gap:10px;padding:0 20px;flex-wrap:wrap}
.print-body{background:#edeff3}

.bar-row{display:grid;grid-template-columns:190px 1fr 60px;gap:12px;align-items:center;margin-bottom:12px}
.bar-label{font-size:14px}
.bar-track{height:14px;background:#edeff4;border-radius:999px;overflow:hidden}
.bar-fill{height:100%;background:linear-gradient(90deg,#adbddd,var(--primary))}
.no-print{}

@media (max-width: 1100px){
    .grid-4,.grid-5,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 840px){
    .app-shell{display:block}
    .sidebar{position:relative;height:auto;width:auto}
    .content{padding:18px}
    .grid-2,.grid-3,.grid-4,.grid-5,.flow-options{grid-template-columns:1fr}
    .bar-row{grid-template-columns:1fr}
    .calendar-grid{grid-template-columns:1fr}
    .calendar-cell{min-height:auto}
    .table{display:block;overflow:auto}
    .brand-logo{max-width:190px}
    .content-header h1{font-size:30px}
}
@media print{
    .no-print,.sidebar,.content-header,.toolbar{display:none !important}
    body,.print-body{background:#fff}
    .report-sheet{padding:0}
    .report-item{break-inside:avoid}
}

/* ═══════════════════════════════════════════════════════════════════
/* ═══════════════════════════════════════════════════════════════════════
   PALETA OFICIAL DE MARCA — reemplaza al verde provisional
   ───────────────────────────────────────────────────────────────────────
   Azul marino  #16284A  color base: títulos y textos
   Verde lima   #8CC63F  acento principal y destaques
   Verde oscuro #5C9A28  acento secundario
   Azul medio   #4A6285  textos de apoyo
   Gris claro   #AAB6C4  líneas y notas
   Fondo        #F1F5F8  tarjetas y fondos suaves

   Reparto según contraste medido:
   · Botones primarios en AZUL MARINO (14,6:1 con blanco). El verde lima
     con texto blanco da 2,05:1 — ilegible — y el verde oscuro 3,44:1,
     insuficiente para texto normal.
   · El verde lima se usa como RELLENO con texto azul marino encima
     (7,15:1), nunca con texto blanco.
   · El gris claro es solo para líneas: como texto da 1,88:1.
   ═══════════════════════════════════════════════════════════════════════ */

:root{
    /* Marca */
    --azul:#16284a;
    --azul-medio:#4a6285;
    --lima:#8cc63f;
    --verde:#5c9a28;
    --gris-linea:#aab6c4;

    /* Superficies */
    --superficie:#ffffff;
    --lienzo:#f1f5f8;
    --borde:#dde4ec;
    --borde-suave:#eaeff4;

    /* Tinta */
    --tinta:#16284a;
    --tinta-2:#4a6285;
    --tinta-3:#5f7391;
    --tinta-4:#93a2b5;

    /* Acentos suaves */
    --lima-tenue:#eff7e1;
    --azul-tenue:#e8eef6;

    /* Alias que usan las reglas heredadas */
    --brand:#8cc63f;
    --brand-dark:#5c9a28;
    --primary:#16284a;
    --primary-dark:#0e1b33;
    --primary-soft:#e8eef6;
    --text:#16284a;
    --muted:#5f7391;
    --line:#dde4ec;
    --line-strong:#aab6c4;
    --bg:#f1f5f8;
    --bg-soft:#e8eef6;
    --card:#ffffff;
    --sidebar:#ffffff;
    --sidebar-soft:#f1f5f8;
    --secondary:#4a6285;
    --success:#2a7f45;
    --danger:#c02626;
    --warning:#b45309;
    --info:#4a6285;
    --shadow-soft:0 1px 2px rgba(22,40,74,.05);
    --shadow-card:0 1px 3px rgba(22,40,74,.07),0 12px 32px rgba(22,40,74,.09);

    --radio:10px;
    --radio-lg:12px;
}

/* ── Tipografía ──────────────────────────────────────────────────────── */
body{
    font-family:"Segoe UI Variable Text","Segoe UI",-apple-system,BlinkMacSystemFont,
                "Inter","Roboto","Helvetica Neue",Arial,sans-serif;
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    background:var(--lienzo);
    font-size:14px;
    line-height:1.55;
    color:var(--tinta-2);
}
h1,h2,h3,h4{color:var(--tinta);letter-spacing:-.02em;font-weight:700}
h1{font-size:26px;line-height:1.2;margin-bottom:6px}
h2{font-size:20px}
h3{font-size:17px}
h4{font-size:15px}
.subtitle,.content-header .muted{color:var(--tinta-3)}
::selection{background:rgba(140,198,63,.35)}

/* ── Barra lateral ───────────────────────────────────────────────────── */
.sidebar{
    background:var(--superficie);
    color:var(--tinta-2);
    width:248px;
    padding:20px 14px;
    gap:14px;
    border-right:1px solid var(--borde);
    box-shadow:none;
    overflow-y:auto;
    overscroll-behavior:contain;
}
.sidebar::-webkit-scrollbar{width:8px}
.sidebar::-webkit-scrollbar-thumb{background:var(--borde);border-radius:8px}
.sidebar::-webkit-scrollbar-track{background:transparent}
.sidebar .brand-logo{background:none;box-shadow:none;padding:0;border-radius:0;max-width:152px}
.brand-vertical{gap:9px}
.sidebar .brand strong{color:var(--tinta);font-size:13.5px;letter-spacing:-.01em}
.sidebar .brand small{color:var(--tinta-3);font-size:11.5px}
.sidebar .muted,.sidebar small{color:var(--tinta-3)}

.menu{gap:1px}
.menu-link{
    display:flex;align-items:center;gap:11px;
    color:var(--tinta-2);
    font-weight:550;
    font-size:13.5px;
    padding:9px 11px;
    border-radius:var(--radio);
}
.menu-link:hover{background:var(--borde-suave);color:var(--tinta);transform:none}
/* Activo en verde lima con texto azul marino: 7,15:1. */
.menu-link.active{
    background:var(--lima-tenue);
    color:var(--azul);
    font-weight:700;
    box-shadow:none;
}
.menu-link.active:hover{background:var(--lima-tenue);color:var(--azul)}

.menu-icono{width:18px;height:18px;flex:0 0 18px;color:var(--tinta-4);transition:color .14s ease}
.menu-link:hover .menu-icono{color:var(--tinta-2)}
.menu-link.active .menu-icono{color:var(--verde)}

.menu-grupo{
    display:block;margin:16px 0 4px;padding:0 11px;
    font-size:10px;font-weight:800;letter-spacing:.11em;
    text-transform:uppercase;color:var(--tinta-4);
}
.menu > .menu-grupo:first-child{margin-top:6px}

.sidebar .user-card{
    background:var(--lienzo);
    border:1px solid var(--borde);
    border-radius:var(--radio);
    padding:12px;
}
.sidebar .user-card strong{color:var(--tinta);font-size:13px}
.sidebar .user-card small{color:var(--tinta-3)}

/* ── Contenido ───────────────────────────────────────────────────────── */
.content{padding:28px 32px;background:var(--lienzo)}
.content-header h1{font-size:26px}

.card{
    background:var(--superficie);
    border:1px solid var(--borde);
    border-radius:var(--radio-lg);
    box-shadow:var(--shadow-soft);
    padding:18px;
}
.client-card,.mobile-job-card,.kpi-card{transition:border-color .15s ease,box-shadow .15s ease}
.client-card:hover,.mobile-job-card:hover,.kpi-card:hover{
    border-color:var(--gris-linea);
    box-shadow:0 2px 10px rgba(22,40,74,.09);
}

/* ── Indicadores ─────────────────────────────────────────────────────── */
.kpi-grid{gap:14px}
.kpi-card{display:flex;flex-direction:column;gap:6px;padding:16px 18px}
.stat-card{padding:16px 18px}
.stat-card small,.kpi-card small{
    text-transform:uppercase;letter-spacing:.07em;font-size:10.5px;
    font-weight:700;color:var(--tinta-3);
}
.stat-card strong,.kpi-card strong{
    font-size:28px;font-weight:700;margin-top:4px;
    font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--tinta);
}
.kpi-card strong{font-size:32px;line-height:1.05;margin:0}
.cifra-alerta{color:var(--danger)}
.kpi-pie{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;margin-top:2px}
.kpi-pie .muted{font-size:12px}

.kpi-pista{height:6px;background:var(--azul-tenue);border-radius:999px;overflow:hidden;margin-top:2px}
.kpi-relleno{height:100%;border-radius:999px;transition:width .3s ease}
.kpi-relleno.kpi-bien{background:var(--verde)}
.kpi-relleno.kpi-atencion{background:var(--warning)}
.kpi-relleno.kpi-critico{background:var(--danger)}
.kpi-relleno.kpi-neutro{background:var(--gris-linea)}

.kpi-estado{display:inline-block;padding:2px 8px;border-radius:5px;font-size:11px;font-weight:700}
.kpi-estado.kpi-bien{background:#e9f5e4;color:#3d6b1c}
.kpi-estado.kpi-atencion{background:#fdf4e7;color:#8a5a08}
.kpi-estado.kpi-critico{background:#fdf0f0;color:#a91d1d}
.kpi-estado.kpi-neutro{background:var(--azul-tenue);color:var(--tinta-2)}

/* ── Gráficos ────────────────────────────────────────────────────────── */
.grafico{width:100%;height:auto;display:block;margin-top:4px}
.g-linea{stroke:var(--borde-suave);stroke-width:1}
.g-escala{fill:var(--tinta-4);font-size:10px;text-anchor:end;font-variant-numeric:tabular-nums}
.g-pista{fill:var(--azul-tenue)}
.g-fill{fill:var(--verde)}
.g-pct{fill:var(--tinta-2);font-size:11px;font-weight:700;text-anchor:middle;font-variant-numeric:tabular-nums}
.g-mes{fill:var(--tinta-3);font-size:11px;text-anchor:middle}

.leyenda{display:flex;gap:14px;align-items:center;font-size:12px;color:var(--tinta-3)}
.leyenda span{display:inline-flex;align-items:center;gap:6px}
.ll{width:10px;height:10px;border-radius:3px;display:inline-block}
.ll-pista{background:var(--azul-tenue)}
.ll-fill{background:var(--verde)}

.barras{display:flex;flex-direction:column;gap:11px;margin-top:4px}
.barra-fila{display:grid;grid-template-columns:minmax(90px,1.4fr) 3fr 38px 44px;gap:10px;align-items:center}
.barra-etq{font-size:12.5px;font-weight:600;color:var(--tinta);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.barra-pista{height:8px;background:var(--azul-tenue);border-radius:999px;overflow:hidden}
.barra-fill{display:block;height:100%;border-radius:999px}
.barra-fill.kpi-bien{background:var(--verde)}
.barra-fill.kpi-atencion{background:var(--warning)}
.barra-fill.kpi-critico{background:var(--danger)}
.barra-fill.kpi-neutro{background:var(--gris-linea)}
.barra-val{font-size:12.5px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;color:var(--tinta)}
.barra-abs{font-size:11.5px;text-align:right;font-variant-numeric:tabular-nums}
.panel-graficos .card-header{align-items:center;margin-bottom:10px}
.panel-graficos h3{margin:0;font-size:15px}

/* ── Tablas ──────────────────────────────────────────────────────────── */
.table.card-table{
    background:var(--superficie);
    border:1px solid var(--borde);
    border-radius:var(--radio-lg);
    border-collapse:separate;
    border-spacing:0;
    overflow:hidden;
    box-shadow:var(--shadow-soft);
}
.table.card-table thead th:first-child{border-top-left-radius:var(--radio-lg)}
.table.card-table thead th:last-child{border-top-right-radius:var(--radio-lg)}
.table.card-table tbody tr:last-child td:first-child{border-bottom-left-radius:var(--radio-lg)}
.table.card-table tbody tr:last-child td:last-child{border-bottom-right-radius:var(--radio-lg)}
.table th{
    background:var(--superficie);
    border-bottom:1px solid var(--borde);
    color:var(--tinta-3);
    font-size:10.5px;font-weight:700;letter-spacing:.08em;
    padding:11px 14px;
}
.table td{
    padding:11px 14px;
    border-bottom:1px solid var(--borde-suave);
    vertical-align:middle;font-size:13.5px;color:var(--tinta-2);
}
.table tbody tr{transition:background .12s ease}
.table tbody tr:hover td{background:var(--lienzo)}
.table tbody tr:last-child td{border-bottom:none}

td.actions,.table .actions{gap:2px;flex-wrap:nowrap}
.table .actions .btn-sm{
    padding:6px 10px;font-size:12px;font-weight:600;border-radius:7px;
    background:transparent;border:1px solid transparent;
    color:var(--tinta-3);box-shadow:none;
}
.table .actions .btn-sm:hover{
    background:var(--azul-tenue);border-color:var(--borde);
    color:var(--azul);transform:none;
}
.table .actions .btn-danger{color:var(--tinta-4);background:transparent;border-color:transparent}
.table .actions .btn-danger:hover{background:#fdf1f1;border-color:#f2d6d6;color:#a91d1d}

/* ── Formularios ─────────────────────────────────────────────────────── */
input,select,textarea{
    border-radius:var(--radio);
    padding:9px 12px;
    border:1px solid var(--gris-linea);
    background:var(--superficie);
    font-size:13.5px;
    color:var(--tinta);
    transition:border-color .15s ease,box-shadow .15s ease;
}
input:hover,select:hover,textarea:hover{border-color:var(--azul-medio)}
input:focus,select:focus,textarea:focus{
    border-color:var(--lima);
    box-shadow:0 0 0 3px rgba(140,198,63,.28);
}
input[type="search"]{
    background:var(--superficie) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235f7391' stroke-width='2' stroke-linecap='round'><circle cx='11' cy='11' r='7'/><path d='M20 20l-3.2-3.2'/></svg>") no-repeat 11px center;
    background-size:16px;
    padding-left:35px;
}
label{color:var(--tinta-2);font-size:12.5px;font-weight:600;margin-bottom:6px}

/* ── Botones ─────────────────────────────────────────────────────────── */
.btn{border-radius:var(--radio);font-weight:600;font-size:13px;padding:9px 15px;box-shadow:none}
.btn:hover{transform:none}
.btn-sm{padding:7px 11px;font-size:12px;border-radius:8px}
.btn-primary{background:var(--azul);color:#fff;box-shadow:none}
.btn-primary:hover{background:var(--primary-dark);box-shadow:none}
.btn-outline{background:var(--superficie);border:1px solid var(--gris-linea);color:var(--tinta-2)}
.btn-outline:hover{background:var(--azul-tenue);border-color:var(--azul-medio);color:var(--azul)}
.btn-danger{background:var(--superficie);border:1px solid #f0d6d6;color:#a91d1d}
.btn-danger:hover{background:#fdf1f1;border-color:#e8c2c2}
.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{
    outline:2px solid var(--lima);outline-offset:2px;
}

/* ── Insignias y avisos ──────────────────────────────────────────────── */
.badge{padding:4px 10px;font-size:11.5px;font-weight:700;letter-spacing:.01em;border-radius:6px}
.badge-success{background:#e9f5e4;color:#3d6b1c}
.badge-secondary{background:var(--azul-tenue);color:var(--tinta-2)}
.badge-warning{background:#fdf4e7;color:#8a5a08}
.badge-danger{background:#fdf0f0;color:#a91d1d}
.badge-info{background:var(--azul-tenue);color:var(--tinta-2)}

.alert{border-radius:var(--radio);padding:11px 14px;font-size:13.5px;font-weight:500;border-width:1px}
.alert-success{background:#eef8e8;border-color:#d3e9c2;color:#3d6b1c}
.alert-info{background:var(--azul-tenue);border-color:#cfdcec;color:var(--tinta-2)}
.alert-danger{background:#fdf2f2;border-color:#f3d7d7;color:#a91d1d}

.check-pill{border-radius:999px;border-color:var(--borde);font-weight:500;font-size:13px;padding:8px 12px;background:var(--superficie)}
.check-pill:hover{border-color:var(--lima);background:var(--lima-tenue)}
.placeholder-logo{border-radius:var(--radio);background:var(--azul-tenue);color:var(--azul)}
.thumb{border-radius:var(--radio);border-color:var(--borde);background:var(--lienzo)}

/* ── Ingreso ─────────────────────────────────────────────────────────── */
.login-body{background:var(--lienzo)}
.login-card{
    border-radius:14px;padding:32px;background:var(--superficie);
    border:1px solid var(--borde);box-shadow:var(--shadow-card);
}
.login-card h1{font-size:22px;margin-bottom:4px}
.login-help{margin-top:14px;text-align:center}
.login-help a{color:var(--azul-medio);font-weight:600;font-size:13px}
.login-help a:hover{color:var(--azul);text-decoration:underline}

/* ── Calendario y barras ─────────────────────────────────────────────── */
.calendar-cell{border-radius:var(--radio);border-color:var(--borde);box-shadow:none;background:var(--superficie)}
.calendar-cell:hover{border-color:var(--gris-linea)}
.calendar-head div{background:var(--azul-tenue);color:var(--tinta-2);border-radius:8px;font-size:11.5px;letter-spacing:.05em;text-transform:uppercase}
.calendar-item{border-radius:8px;border-color:var(--borde);background:var(--lienzo);color:var(--tinta-2)}
.calendar-item small{color:var(--tinta-3)}
.calendar-day{color:var(--tinta)}
.progress-track,.bar-track{background:var(--azul-tenue);height:10px}
.progress-fill,.bar-fill{background:var(--verde);border-radius:999px}
.execution-item{border-left:5px solid var(--lima)}
.flow-chip{background:var(--lima-tenue);color:var(--azul)}
.flow-question{background:var(--lienzo);border-color:var(--borde)}
.flow-option{border-color:var(--borde);background:var(--superficie)}
.toolbar{gap:10px}

@media (max-width: 1100px){
    .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 840px){
    .sidebar{border-right:none;border-bottom:1px solid var(--borde);padding:16px}
    .content{padding:18px}
    h1{font-size:22px}
}
@media (max-width: 640px){
    .kpi-grid{grid-template-columns:1fr}
    .barra-fila{grid-template-columns:minmax(70px,1fr) 2fr 34px 40px}
}
