:root{--duam-blue:#002750;--duam-red:#c50013;--duam-sky:#679bba;--ink:#172338;--text:#26374c;--muted:#718197;--line:#dce5ef;--line-soft:#edf2f7;--surface:#fff;--surface-soft:#f6f9fc;--background:#f2f6fa;--success:#0f8f63;--warning:#b35b00;--danger:#b42318;--radius:18px;--shadow:0 18px 55px rgba(0,39,80,.08);--shadow-soft:0 8px 28px rgba(0,39,80,.06)}
*{box-sizing:border-box}html{min-height:100%}body{min-height:100%;margin:0;background:linear-gradient(180deg,#f7fafc 0%,var(--background) 100%);color:var(--text);font-family:Montserrat,Calibri,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.42;-webkit-font-smoothing:antialiased}a{color:var(--duam-blue)}
.app-shell{display:flex;min-height:100vh}.sidebar{width:260px;flex:0 0 260px;padding:18px 16px;border-right:1px solid var(--line);background:rgba(255,255,255,.94);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:16px;z-index:40}.brand-card,.sidebar-foot,.session-card,.card,.table-wrap,.summary-grid article,.notice{border:1px solid var(--line);background:rgba(255,255,255,.96);box-shadow:var(--shadow-soft)}.brand-card{padding:18px;display:flex;gap:13px;align-items:center;border-radius:16px;text-decoration:none;color:inherit}.brand-logo-wrap{width:58px;height:58px;border-radius:15px;background:#fff;border:1px solid #edf0f4;display:grid;place-items:center;overflow:hidden;box-shadow:0 5px 14px rgba(0,39,80,.08)}.brand-logo{width:46px;height:46px;object-fit:contain;display:block}.brand-copy{display:flex;flex-direction:column;min-width:0}.brand-copy strong{font-size:18px;line-height:1.05;color:var(--ink)}.brand-copy small,.sidebar-foot small,.sidebar-foot span,.session-card span{color:var(--muted);font-weight:700;font-size:11px}.eyebrow{display:block;color:var(--duam-sky);text-transform:uppercase;letter-spacing:.11em;font-size:10px;font-weight:900;margin-bottom:4px}.side-nav{display:flex;flex-direction:column;gap:8px;margin-top:2px}.side-nav a{text-decoration:none;color:#66758a;padding:12px 14px;border-radius:12px;font-weight:850;transition:.16s ease}.side-nav a:hover{background:#f1f7fb;color:var(--duam-blue)}.side-nav a.active{background:linear-gradient(90deg,#2f9dac 0%,#43a5b2 100%);color:#fff;box-shadow:0 10px 24px rgba(47,157,172,.25)}.sidebar-foot{margin-top:auto;border-radius:14px;padding:12px;background:#fbfdff}.sidebar-foot strong{display:block;color:var(--duam-blue);margin-top:2px;overflow-wrap:anywhere}.sidebar-foot small{display:block;margin-top:3px}.content-shell{min-width:0;flex:1;display:flex;flex-direction:column}.topbar{height:74px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 28px;background:rgba(255,255,255,.92);border-bottom:1px solid var(--line);backdrop-filter:blur(12px);position:sticky;top:0;z-index:30}.topbar h1{margin:0;font-size:20px;color:#172338;letter-spacing:-.02em}.mobile-menu-btn{display:none;border:1px solid var(--line);background:#fff;border-radius:12px;padding:9px 11px;color:var(--duam-blue);font-weight:900}.session-card{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:16px;background:#fff}.session-card strong{display:block;color:var(--ink);font-size:12px;overflow-wrap:anywhere}.mini-logo{width:38px;height:38px;border-radius:50%;background:#fff;display:grid;place-items:center;border:1px solid var(--line);overflow:hidden;flex:0 0 auto}.mini-logo img{width:30px;height:30px;object-fit:contain}.main{padding:26px 28px 44px;max-width:1480px;width:100%;margin:0 auto}.footer{padding:18px 28px 24px;text-align:center;color:var(--muted);font-size:12px}
.notice{padding:16px 18px;margin-bottom:18px;border-radius:18px;display:flex;gap:12px;flex-wrap:wrap;color:#344054}.notice span{color:var(--muted)}.summary-grid{display:grid;grid-template-columns:repeat(6,minmax(160px,1fr));gap:14px;margin-bottom:18px}.summary-grid article{padding:18px;min-height:105px;border-radius:18px}.summary-grid span{display:block;color:var(--muted);font-size:13px;line-height:1.25}.summary-grid strong{display:block;margin-top:10px;color:var(--duam-blue);font-size:25px}.card{padding:20px;margin:18px 0;border-radius:18px}.filters form{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr)) auto auto;gap:12px;align-items:end}label{font-size:12px;font-weight:800;color:#344054;text-transform:uppercase;letter-spacing:.04em}select,input,textarea{width:100%;margin-top:6px;border:1px solid #d0d5dd;border-radius:12px;padding:11px 12px;background:white;font:inherit;color:var(--text)}button,.ghost{border:0;background:var(--duam-blue);color:white;border-radius:12px;padding:12px 16px;font-weight:800;text-decoration:none;text-align:center;cursor:pointer}.ghost{background:#eef4f8;color:var(--duam-blue)}.section-title{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:14px}.section-title h2{margin:0;color:var(--duam-blue);font-size:20px}.section-title span{color:var(--muted);font-size:13px}.table-wrap{overflow:auto;border-radius:18px;box-shadow:none}table{width:100%;border-collapse:separate;border-spacing:0;min-width:1300px;background:#fff}th{position:sticky;top:0;background:#f8fafc;color:#475467;font-size:12px;text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid var(--line);padding:12px}td{border-bottom:1px solid var(--line);padding:12px;vertical-align:top;font-size:14px}td small{display:block;color:var(--muted);margin-top:4px}.person{color:var(--duam-blue);font-weight:900;text-decoration:none}.pill{padding:4px 9px;border-radius:999px;font-size:12px;background:#ecfdf3;color:#067647}.chart{height:230px;display:flex;align-items:end;gap:13px;border-left:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 10px 28px;overflow:auto}.bar-group{height:200px;display:flex;align-items:end;gap:3px;position:relative;min-width:42px}.bar{width:10px;border-radius:6px 6px 0 0;min-height:2px}.bar.gross,.dot.gross{background:var(--duam-blue)}.bar.employer,.dot.employer{background:var(--duam-sky)}.bar.cost,.dot.cost{background:var(--duam-red)}.bar-group small{position:absolute;bottom:-25px;left:0;font-size:11px;color:var(--muted)}.legend{display:flex;gap:14px;align-items:center;margin-top:14px;color:#475467;font-size:13px;flex-wrap:wrap}.dot{width:10px;height:10px;border-radius:50%;display:inline-block}.back{display:inline-block;margin-bottom:14px;color:var(--duam-blue);font-weight:900;text-decoration:none}.profile h2{margin-top:0;color:var(--duam-blue)}.profile-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.profile-grid p{background:#f8fafc;border-radius:14px;padding:14px;margin:0}.profile-grid span{display:block;color:var(--muted);font-size:12px;text-transform:uppercase;font-weight:800;margin-bottom:6px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:24px}.config-card form{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.wide{grid-column:1/-1}textarea{min-height:90px}.flash{border-radius:16px;padding:14px 16px;margin:0 0 18px;font-weight:800}.flash.success{background:#ecfdf3;color:#067647;border:1px solid #abefc6}.flash.error{background:#fef3f2;color:#b42318;border:1px solid #fecdca}.upload-card form{display:grid;grid-template-columns:minmax(260px,1fr) minmax(180px,240px) auto;gap:12px;align-items:end}.upload-card p{color:#475467;margin:12px 0 0;line-height:1.5}.upload-log{margin-top:14px;border-top:1px solid var(--line);padding-top:12px;color:#475467;font-size:13px;display:flex;gap:10px;flex-wrap:wrap}.upload-log strong{color:var(--duam-blue)}.upload-log span{background:#f8fafc;border:1px solid var(--line);border-radius:999px;padding:6px 10px}
@media(max-width:1050px){.sidebar{position:fixed;left:-280px;transition:.2s ease}.sidebar-open .sidebar{left:0}.mobile-menu-btn{display:inline-block}.summary-grid{grid-template-columns:repeat(2,1fr)}.filters form,.profile-grid,.two-col,.config-card form,.upload-card form{grid-template-columns:1fr}.topbar{padding:0 16px}.main{padding:20px 16px}.session-card{display:none}}@media(max-width:700px){.summary-grid{grid-template-columns:1fr}.topbar h1{font-size:18px}}
.ods-summary strong{font-size:21px}.ods-table th,.ods-table td{white-space:nowrap}.alert-chip{display:inline-block;padding:5px 9px;border-radius:999px;background:#fff6e8;color:#b35b00;border:1px solid #ffd89a;font-size:12px;font-weight:850}.pill.vigente{background:#ecfdf3;color:#067647}.muted-note{color:#475467;background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:12px 14px}.compact-wrap,.small-table-wrap{box-shadow:none}.compact-table,.small-table{min-width:720px}.compact-table th,.compact-table td,.small-table th,.small-table td{text-align:right}.compact-table th:first-child,.compact-table td:first-child,.small-table th:first-child,.small-table td:first-child{text-align:left;font-weight:850}.small-table{min-width:560px}.total-row td{background:#f4f8fb;color:var(--duam-blue)}.ods-chart .bar-group{min-width:54px}.ods-chart .bar{width:22px}.side-nav a:nth-child(2).active{background:linear-gradient(90deg,var(--duam-blue),#16466f)}
.area-overview{align-items:stretch}.area-card,.pie-card{margin-top:0}.area-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.area-kpis article{border:1px solid var(--line);background:#f8fafc;border-radius:16px;padding:14px;display:flex;gap:12px;align-items:flex-start}.area-kpis p,.pie-legend p{margin:0}.area-kpis span:not(.area-dot),.pie-legend small{display:block;color:var(--muted);font-size:12px}.area-kpis strong{display:block;color:var(--duam-blue);font-size:24px;margin-top:4px}.area-dot{width:12px;height:12px;border-radius:50%;display:inline-block;flex:0 0 auto;margin-top:5px}.pie-layout{display:flex;align-items:center;gap:22px;flex-wrap:wrap}.pie-chart{width:180px;height:180px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--line),0 10px 28px rgba(0,39,80,.08)}.pie-legend{display:grid;gap:10px;min-width:220px}.pie-legend p{display:grid;grid-template-columns:18px 1fr;gap:6px 10px;align-items:start}.pie-legend small{grid-column:2}.people-hours-wrap table{min-width:1900px}.people-hours-table th,.people-hours-table td{text-align:right;white-space:nowrap}.people-hours-table th:first-child,.people-hours-table td:first-child,.people-hours-table th:nth-child(2),.people-hours-table td:nth-child(2){text-align:left}.sold-full{background:#fee4e2!important;color:#b42318!important;font-weight:900}.sold-high{background:#fff6e8!important;color:#b35b00!important;font-weight:850}.capacity-legend{margin:-4px 0 12px}.sold-sample{width:14px;height:14px;border-radius:4px;display:inline-block;vertical-align:middle;margin:0 4px 0 12px;border:1px solid var(--line)}.sold-sample.full{background:#fee4e2;border-color:#fecdca}.sold-sample.high{background:#fff6e8;border-color:#ffd89a}
.summary-grid article small{display:block;margin-top:6px;color:#66758a;font-size:12px;font-weight:800}.projection-bar{min-width:78px;align-items:center}.projection-bar .bar{width:26px}.projection-bar .bar-value{position:absolute;bottom:calc(100% - 20px);transform:translateY(-4px);font-size:10px;font-weight:900;color:#344054;white-space:nowrap;background:#fff;border:1px solid var(--line);border-radius:999px;padding:2px 5px;box-shadow:0 4px 12px rgba(0,39,80,.06)}.compact-table{table-layout:fixed}.compact-table th,.compact-table td{text-align:center;vertical-align:middle}.compact-table th:first-child,.compact-table td:first-child{text-align:left;width:130px}.people-hours-table th:first-child,.people-hours-table td:first-child{min-width:280px}.person-breakdown summary{cursor:pointer;color:var(--duam-blue);font-weight:900;list-style:none;display:flex;align-items:center;gap:10px}.person-breakdown summary::-webkit-details-marker{display:none}.person-breakdown summary span{font-size:11px;color:#66758a;background:#eef4f8;border-radius:999px;padding:3px 8px}.breakdown-list{margin-top:10px;display:grid;gap:10px;min-width:260px}.breakdown-list article{border:1px solid var(--line);background:#f8fafc;border-radius:12px;padding:10px}.breakdown-list small{display:block;color:#66758a;line-height:1.35}.breakdown-list ul{margin:8px 0 0;padding-left:16px;color:#344054;columns:2;column-gap:18px}.breakdown-list li{break-inside:avoid;margin:2px 0;font-size:12px}.people-hours-table td{vertical-align:top}

/* Ajuste de proyeccion mensual: cada barra queda anclada a su columna y la seccion usa scroll horizontal real. */
.projection-card{overflow:hidden}.projection-scroll{overflow-x:auto;overflow-y:hidden;padding-bottom:4px}.projection-grid,.projection-table{min-width:calc(150px + (var(--projection-cols) * 132px))}.projection-grid{display:grid;grid-template-columns:150px repeat(var(--projection-cols),132px);align-items:end;border-left:1px solid var(--line);border-bottom:1px solid var(--line);height:270px;padding-top:34px}.projection-row-label{height:1px}.projection-month{height:220px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;position:relative;padding:0 18px 31px}.projection-month .bar{width:28px;border-radius:8px 8px 0 0;min-height:2px}.projection-month .bar-value{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:12px;font-weight:900;color:#344054;white-space:nowrap;background:#fff;border:1px solid var(--line);border-radius:999px;padding:3px 8px;box-shadow:0 4px 12px rgba(0,39,80,.07);z-index:1}.projection-month small{position:absolute;bottom:5px;left:0;right:0;text-align:center;font-size:12px;color:var(--muted);font-weight:750}.projection-table{border-collapse:separate;border-spacing:0;width:auto;margin-top:0;border:1px solid var(--line);border-radius:0 0 18px 18px;overflow:hidden}.projection-table th,.projection-table td{width:132px;min-width:132px;text-align:center;vertical-align:middle;padding:15px 14px;border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);font-size:15px}.projection-table th:first-child,.projection-table td:first-child{width:150px;min-width:150px;text-align:left;font-weight:900;color:#26374c;background:#f8fafc}.projection-table thead th{background:#f8fafc;color:#46566d;text-transform:uppercase;letter-spacing:.04em;font-size:13px}.projection-table tr:last-child td{border-bottom:0}.projection-table th:last-child,.projection-table td:last-child{border-right:0}
@media(max-width:1050px){.projection-grid,.projection-table{min-width:calc(138px + (var(--projection-cols) * 120px))}.projection-grid{grid-template-columns:138px repeat(var(--projection-cols),120px)}.projection-table th,.projection-table td{width:120px;min-width:120px}.projection-table th:first-child,.projection-table td:first-child{width:138px;min-width:138px}}
/* Desglose mensual por persona: cada detalle cae bajo la columna del mes correspondiente. */
.inline-toggle{border:0;background:transparent;padding:0;display:flex;align-items:center;gap:10px;color:var(--duam-blue);font-family:inherit;cursor:pointer;text-align:left}
.inline-toggle strong{font-weight:900}.inline-toggle span{font-size:11px;color:#66758a;background:#eef4f8;border-radius:999px;padding:3px 8px;font-weight:900;white-space:nowrap}.inline-toggle[aria-expanded="true"] span{background:#e6f0f6;color:#002750}.person-month-detail.is-hidden{display:none}.person-month-detail td{background:#fff!important;border-top:0!important;vertical-align:top}.person-month-detail .detail-label{position:static;text-align:left!important;color:#344054;background:#fff!important;box-shadow:none;border-right:1px solid var(--line-soft);min-width:260px}.detail-label strong{display:block;color:var(--duam-blue);font-weight:950}.detail-label small{display:block;color:#66758a;font-size:11px;margin-top:3px;line-height:1.25}.month-break-cell{min-width:120px;text-align:left!important;padding:8px 7px!important}.month-break-item{display:flex;justify-content:space-between;gap:6px;align-items:center;border:1px solid var(--line);border-radius:9px;background:#fff;padding:5px 6px;margin:3px 0;font-size:11px;line-height:1.1;box-shadow:0 2px 7px rgba(0,39,80,.04)}.month-break-item strong{color:#002750;font-size:10px;white-space:nowrap}.month-break-item span{font-weight:900;color:#344054;white-space:nowrap}.empty-break{color:#98a2b3;font-weight:800;display:block;text-align:center}.people-hours-table td{vertical-align:middle}.person-month-detail td{vertical-align:top}

/* Ajuste visual: el desglose mensual se mantiene alineado por columna sin superposición gris */
.people-hours-wrap{overflow-x:auto;overflow-y:visible;max-width:100%;}
.people-hours-table{border-collapse:separate;border-spacing:0;}
.person-month-detail .detail-label strong{font-size:12px;}
.person-month-detail .detail-label small{max-width:220px;}
.month-break-cell{background:#fff!important;}

/* Sticky first column for people/month sold-hours matrix */
.people-hours-wrap{
  position:relative;
  overflow-x:auto;
  overflow-y:visible;
}
.people-hours-table th:first-child,
.people-hours-table td:first-child{
  position:sticky;
  left:0;
  z-index:8;
  background:#fff;
  box-shadow:10px 0 18px -18px rgba(0,39,80,.55);
}
.people-hours-table thead th:first-child{
  z-index:12;
  background:#f8fafc;
}
.people-hours-table tbody tr:not(.person-month-detail) td:first-child{
  background:#fff;
}
.people-hours-table tbody tr:not(.person-month-detail):hover td:first-child{
  background:#fbfdff;
}
.person-month-detail td{
  background:#f3f9fc!important;
  border-top:1px solid #d7e9f2!important;
  border-bottom:1px solid #d7e9f2!important;
}
.person-month-detail .detail-label{
  background:#eaf5fb!important;
  color:#344054;
  border-right:1px solid #cfe3ee!important;
  box-shadow:10px 0 18px -18px rgba(0,39,80,.55);
}
.person-month-detail .detail-label strong{
  color:#002750;
}
.detail-spacer{
  background:#f7fbfd!important;
}
.month-break-cell{
  background:#f3f9fc!important;
}
.month-break-item{
  background:#fff!important;
  border-color:#cfe3ee!important;
}
.inline-toggle[aria-expanded="true"]{
  color:#002750;
}
.inline-toggle[aria-expanded="true"] span{
  background:#dff0f7;
  color:#002750;
}
/* Resumen compacto del desglose abierto por persona */
.person-project-summary{
  background:#eef7fb!important;
  text-align:left!important;
  min-width:420px;
  border-right:1px solid #cfe3ee!important;
}
.person-project-summary>strong{display:block;color:#002750;font-size:12px;margin-bottom:7px}
.project-summary-list{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;max-width:720px}
.project-summary-list span{display:inline-flex;gap:4px;align-items:center;background:#fff;border:1px solid #cfe3ee;border-radius:999px;padding:5px 8px;font-size:11px;color:#344054;white-space:nowrap;box-shadow:0 2px 7px rgba(0,39,80,.04)}
.project-summary-list b{color:#002750}.warning-text{color:#b35b00!important;font-weight:900}.warning-note{border-color:#ffd89a!important;background:#fff8ed!important;color:#7a3b00!important}.pill.cerrada{background:#f2f4f7;color:#475467}.filters form{grid-template-columns:repeat(6,minmax(145px,1fr)) auto auto}
.month-break-item strong{font-size:9px}
@media(max-width:1050px){.filters form{grid-template-columns:1fr}.person-project-summary{min-width:360px}.project-summary-list{max-width:560px}}

/* Ajustes HH: filtro anual, columna ODS compacta y resumen vertical */
.filters form{grid-template-columns:repeat(7,minmax(135px,1fr)) auto auto}
.ods-toggle{display:inline-flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0;background:transparent;color:var(--duam-blue)}
.ods-toggle span{font-size:11px;color:#66758a;background:#eef4f8;border-radius:999px;padding:3px 8px;font-weight:900;white-space:nowrap}
.ods-toggle small{font-size:10px;color:#718197;margin:0 0 0 4px;font-weight:800}
.ods-toggle[aria-expanded="true"] span{background:#dff0f7;color:#002750}
.person-project-summary{vertical-align:top!important;min-width:320px}
.project-summary-list.compact-bullets{display:block;max-width:460px;margin:6px 0 0 0;padding:0;list-style:none}
.project-summary-list.compact-bullets li{display:grid;grid-template-columns:minmax(170px,1fr) auto;gap:8px;align-items:center;background:#fff;border:1px solid #cfe3ee;border-radius:10px;padding:7px 9px;margin:5px 0;font-size:11px;color:#344054;box-shadow:0 2px 7px rgba(0,39,80,.04)}
.project-summary-list.compact-bullets .project-code{white-space:normal;line-height:1.2;color:#344054}
.project-summary-list.compact-bullets .project-code b{color:#002750}
.project-summary-list.compact-bullets .project-meta{font-weight:900;color:#002750;white-space:nowrap;text-align:right}
@media(max-width:1050px){.filters form{grid-template-columns:1fr}.project-summary-list.compact-bullets li{grid-template-columns:1fr}.project-summary-list.compact-bullets .project-meta{text-align:left}}

/* Ajuste HH por persona: filtro anual, columnas compactas y desglose alineado */
.people-hours-wrap{overflow-x:auto;overflow-y:visible;max-width:100%;}
.people-hours-table{min-width:1400px;border-collapse:separate;border-spacing:0;}
.people-hours-table th,.people-hours-table td{white-space:nowrap;}
.people-hours-table th:first-child,.people-hours-table td:first-child{position:sticky;left:0;z-index:4;background:#fff;min-width:255px;max-width:255px;width:255px;box-shadow:1px 0 0 var(--line);}
.people-hours-table th:nth-child(2),.people-hours-table td:nth-child(2){position:sticky;left:255px;z-index:3;background:#fff;min-width:98px;width:98px;max-width:98px;text-align:center!important;box-shadow:1px 0 0 var(--line);}
.people-hours-table thead th:first-child,.people-hours-table thead th:nth-child(2){z-index:6;background:#f8fafc;}
.people-hours-table tbody tr:not(.person-month-detail):hover td:first-child,
.people-hours-table tbody tr:not(.person-month-detail):hover td:nth-child(2){background:#f8fafc;}
.people-hours-table .ods-toggle{justify-content:center;gap:2px;min-width:78px;padding:3px 5px;border-radius:10px;border:1px solid #d8e5ee;background:#fff;}
.people-hours-table .ods-toggle span{padding:2px 5px;font-size:10px;}
.people-hours-table .ods-toggle small{display:block;font-size:9px;line-height:1.05;color:#66758a;margin-top:2px;}
.person-month-detail td{background:#eef8fc!important;border-top:1px solid #cfe3ee!important;border-bottom:1px solid #cfe3ee!important;}
.person-month-detail .detail-label{background:#e6f3fa!important;z-index:5!important;}
.person-month-detail .project-code-cell{background:#eef8fc!important;text-align:left!important;min-width:180px;position:sticky;left:255px;z-index:4;box-shadow:1px 0 0 #cfe3ee;}
.person-month-detail .project-empty-cell{background:#eef8fc!important;}
.project-detail-list{list-style:none;margin:0;padding:0;display:grid;gap:4px;}
.project-detail-list li{min-height:26px;display:flex;align-items:center;gap:6px;border:1px solid #cfe3ee;background:#fff;border-radius:9px;padding:4px 7px;font-size:10.5px;line-height:1.15;color:#344054;}
.project-detail-list li b{color:#002750;white-space:nowrap;font-weight:950;}
.project-detail-list li span{white-space:normal;}
.project-detail-list.values-list li{justify-content:flex-end;text-align:right;font-weight:900;color:#002750;white-space:nowrap;}
.month-break-cell{background:#f6fbfe!important;min-width:105px;}
.month-break-item{background:#fff!important;border-color:#cfe3ee!important;}
.empty-break{color:#98a2b3;font-weight:700;}
@media(max-width:1050px){.people-hours-table th:first-child,.people-hours-table td:first-child{min-width:210px;width:210px;max-width:210px}.people-hours-table th:nth-child(2),.people-hours-table td:nth-child(2),.person-month-detail .project-code-cell{left:210px}}

/* Compact ODS breakdown adjustments */
.people-hours-table .project-code-cell{min-width:112px!important;width:112px!important;max-width:112px!important;padding:8px 6px!important;}
.project-detail-list.compact-codes{gap:3px!important;}
.project-detail-list.compact-codes li{justify-content:center!important;min-height:22px!important;padding:3px 5px!important;border-radius:8px!important;font-size:10px!important;line-height:1!important;}
.project-detail-list.compact-codes li b{font-size:10px!important;white-space:nowrap!important;}
.project-detail-list.values-list li{min-height:22px!important;padding:3px 6px!important;border-radius:8px!important;font-size:10px!important;line-height:1!important;}
.people-hours-table .project-amount-cell,.people-hours-table .project-hours-cell{padding:8px 6px!important;min-width:92px!important;width:92px!important;}
.month-break-cell{min-width:82px!important;padding:6px 5px!important;}
.month-break-item.hours-only,.month-break-item.empty-aligned{justify-content:center!important;text-align:center!important;min-height:22px!important;padding:3px 5px!important;margin:3px 0!important;border-radius:8px!important;font-size:10px!important;font-weight:900!important;color:#002750!important;}
.month-break-item.empty-aligned{color:#b8c2cf!important;background:#f8fbfd!important;box-shadow:none!important;border-color:#e8eef3!important;}
@media(max-width:1050px){.people-hours-table .project-code-cell{min-width:104px!important;width:104px!important;max-width:104px!important}}

/* HH table final compact interaction */
.hh-title-row{align-items:flex-start!important;gap:18px;flex-wrap:wrap}
.hh-year-form{display:flex;align-items:flex-end;gap:10px;margin:0}
.hh-year-form label{min-width:135px;margin:0}
.hh-year-form select{margin-top:4px;padding:8px 10px;border-radius:10px;background:#fff}
.person-name-cell strong{display:block;color:#002750;font-weight:950;line-height:1.2}
.people-hours-table .person-name-cell{padding-top:17px!important;padding-bottom:17px!important}
.people-hours-table .ods-toggle{cursor:pointer}
.people-hours-table .ods-toggle:hover span{background:#dff0f7;color:#002750}

/* Sueldos estimados */
.sueldo-summary article strong{font-size:22px}.sueldo-sim-layout{align-items:stretch}.sim-kpi-grid,.pay-result-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:12px}.sim-kpi-grid article,.pay-result-grid article{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fbfdff}.sim-kpi-grid span,.pay-result-grid span{display:block;color:var(--muted);font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.sim-kpi-grid strong,.pay-result-grid strong{display:block;color:var(--duam-blue);font-size:19px;margin-top:4px}.sim-kpi-grid small,.pay-result-grid small{display:block;color:var(--muted);font-size:11px;font-weight:750;margin-top:3px}.rules-list{display:grid;gap:10px;margin-top:8px}.rules-list article{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);border-radius:14px;padding:13px;background:#fbfdff}.rules-list article>strong{min-width:54px;color:#fff;background:var(--duam-blue);border-radius:999px;text-align:center;padding:6px 8px}.rules-list p{margin:0}.rules-list b{display:block;color:var(--duam-blue)}.rules-list small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.muted-note{font-size:12px;color:var(--muted);margin:12px 0 0}.sueldo-table td small{display:block;color:var(--muted);font-size:11px}.progression-table tbody tr.reset-row{background:#f1fbf7}.progression-table tbody tr.low-margin{background:#fff7ed}.danger-text{color:var(--danger)!important}.professional-sim-table{min-width:1220px}.professional-sim-table td{vertical-align:middle}.filters input[type="number"]{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:9px 10px;color:var(--text);font-weight:750;background:#fff}.filters label input{margin-top:6px}@media(max-width:1150px){.sim-kpi-grid,.pay-result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sueldo-sim-layout{grid-template-columns:1fr}}@media(max-width:700px){.sim-kpi-grid,.pay-result-grid{grid-template-columns:1fr}}

/* Ajuste módulo Sueldos Estimados: reglas arriba y simulación a todo el ancho */
.rules-card-top{margin-bottom:18px}.rules-list-inline{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.rules-list-inline article{min-height:72px}.sim-card-full{width:100%}@media(max-width:1100px){.rules-list-inline{grid-template-columns:1fr}.rules-list-inline article{min-height:auto}}

/* Colores por área en proyección mensual: Innovación Corporativa rojo DUAM, Propiedad Intelectual azul DUAM. */
.projection-month .bar-stack{width:28px;display:flex;flex-direction:column-reverse;align-items:stretch;justify-content:flex-start;border-radius:8px 8px 0 0;overflow:hidden;min-height:2px;box-shadow:0 0 0 1px rgba(0,39,80,.06)}
.projection-month .bar-segment{display:block;width:100%;min-height:1px}
.projection-month .bar-segment:first-child{border-radius:0 0 0 0}
.projection-month .bar-segment:last-child{border-radius:8px 8px 0 0}

.month-detail summary {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 70px;
  border-radius: 999px;
  padding: 6px 10px;
  background: #eef6fb;
  border: 1px solid #cfe2ef;
  color: #002750;
  font-weight: 800;
  font-size: 12px;
  list-style: none;
}
.month-detail summary::-webkit-details-marker { display: none; }
.month-detail[open] summary { background: #e3f2fb; border-color: #679bba; }
.month-detail-panel {
  margin-top: 8px;
  display: grid;
  gap: 6px;
  min-width: 230px;
  text-align: left;
}
.month-detail-item {
  border: 1px solid #d9e7f0;
  background: #f8fbfd;
  border-radius: 10px;
  padding: 8px;
  box-shadow: 0 4px 12px rgba(0, 39, 80, .06);
}
.month-detail-item strong {
  display: block;
  color: #002750;
  font-size: 12px;
  margin-bottom: 3px;
}
.month-detail-item small {
  display: block;
  color: #667085;
  font-size: 11px;
  line-height: 1.35;
}
/* EDP / Estados de Pago */
.edp-filters form{grid-template-columns:repeat(5,minmax(140px,1fr)) minmax(140px,1fr) auto auto}.checkbox-label{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-size:13px;color:#344054}.checkbox-label input{width:auto;margin:0}.edp-status-grid{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));gap:12px}.edp-status-card{border:1px solid var(--line);border-radius:16px;padding:14px;background:#fff}.edp-status-card span{display:block;font-weight:900;color:#002750}.edp-status-card strong{display:block;font-size:24px;margin:7px 0 2px;color:#002750}.edp-status-card small{color:#475467;font-weight:800}.status-en-espera{background:#ffd9a3!important;color:#1f2937!important;border-color:#ffc46b!important}.status-subido-lod{background:#ffe56f!important;color:#1f2937!important;border-color:#f6d74d!important}.status-subido-ariba{background:#93c47d!important;color:#0b2f16!important;border-color:#79b65d!important}.status-facturado{background:#d9e8ed!important;color:#26374c!important;border-color:#b9d4dd!important}.status-pagado{background:#b7a7d7!important;color:#25194d!important;border-color:#9c89c4!important}.status-pendiente-envio{background:#ff00d8!important;color:#121212!important;border-color:#d900b8!important}.status-pendiente-duam{background:#ff1f1f!important;color:white!important;border-color:#d41414!important}.edp-badge{display:inline-block;padding:7px 10px;border-radius:999px;font-size:12px;font-weight:900;border:1px solid transparent;white-space:nowrap}.edp-table th,.edp-table td{white-space:nowrap}.edp-alert-row td{background:#fff7f7}.alert-chip.red{background:#ffebeb;color:#b42318;border-color:#fecdca}.alert-chip.ok{background:#ecfdf3;color:#067647;border-color:#abefc6}.edp-tools{align-items:start}.tool-form{display:grid;gap:10px}.tool-form label{text-transform:none;letter-spacing:0}.checkbox-line{display:flex;align-items:center;gap:8px;color:#344054;font-size:14px}.checkbox-line input{width:auto;margin:0}.ot11-form{grid-template-columns:1fr 90px}.ot11-form label{display:grid;grid-template-columns:1fr 86px;gap:10px;align-items:center;grid-column:1/-1}.ot11-form label input{margin-top:0}.sim-result{margin-top:14px;border:1px solid #b9dceb;background:#f2fbff;border-radius:16px;padding:14px}.sim-result strong{display:block;color:#002750;font-size:18px}.sim-result small{display:block;color:#66758a;margin-top:4px;font-weight:800}.sim-result p{display:flex;justify-content:space-between;gap:10px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 10px;margin:10px 0 0;color:#344054}.sim-result b{color:#002750;white-space:nowrap}.edp-rule-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.edp-rule-grid article{border:1px solid var(--line);background:#f8fafc;border-radius:16px;padding:16px}.edp-rule-grid strong{display:block;color:#002750;margin-bottom:7px}.edp-rule-grid p{margin:0;color:#475467;line-height:1.45}@media(max-width:1050px){.edp-filters form,.edp-status-grid,.edp-rule-grid{grid-template-columns:1fr}.ot11-form,.ot11-form label{grid-template-columns:1fr}}

/* EDP matrix architecture */
.edp-matrix-card { overflow: hidden; }
.edp-matrix-wrap { max-height: 72vh; overflow: auto; border: 1px solid #d9e6f4; border-radius: 18px; }
.edp-matrix-table { border-collapse: separate; border-spacing: 0; min-width: 1700px; width: max-content; }
.edp-matrix-table th, .edp-matrix-table td { border-bottom: 1px solid #e3edf7; border-right: 1px solid #edf3f9; vertical-align: middle; }
.edp-matrix-table thead th { position: sticky; top: 0; z-index: 4; background: #f7fafd; color: #43526a; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; padding: 12px 10px; }
.edp-matrix-table td { padding: 10px; background: white; }
.edp-matrix-table .sticky-col { position: sticky; z-index: 3; box-shadow: 1px 0 0 #d9e6f4; }
.edp-matrix-table .ods-col { left: 0; width: 260px; min-width: 260px; max-width: 260px; background: #fff; }
.edp-matrix-table .meta-col { left: 260px; width: 150px; min-width: 150px; max-width: 150px; background: #fff; }
.edp-matrix-table thead .sticky-col { z-index: 6; background: #f7fafd; }
.edp-matrix-table small { display: block; color: #75859d; margin-top: 3px; }
.edp-matrix-table .period-head { min-width: 128px; text-align: center; }
.matrix-cell { min-width: 128px; text-align: center; }
.cell-card { border-radius: 13px; padding: 8px 9px; min-height: 56px; display: flex; flex-direction: column; justify-content: center; gap: 2px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.06); }
.cell-card strong { color: #062e5d; font-size: 13px; }
.cell-card span { font-size: 11px; font-weight: 800; color: #203149; }
.cell-card small { font-size: 10px; font-weight: 700; color: #9f1d1d; }
.empty-cell { color: #a5b1c1; font-weight: 700; }
.cell-alert .cell-card { outline: 2px solid #e11d48; }
.matrix-edit-row td { background: #eef8ff; }
.matrix-edit-row .sticky-col { background: #e6f5ff; }
.edp-edit-cell { min-width: 170px; background: #eef8ff !important; }
.edp-edit-cell label { display: block; font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: #64748b; margin-bottom: 6px; }
.edp-edit-cell input, .edp-edit-cell select { width: 100%; padding: 7px 8px; border: 1px solid #bdd7ec; border-radius: 10px; background: white; font-weight: 700; color: #0a315d; }
.action-cell { min-width: 120px; text-align: center; }
.edit-button, .action-cell button { display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 12px; padding: 9px 14px; background: #0a315d; color: white; font-weight: 900; text-decoration: none; cursor: pointer; }
.action-cell .ghost.small { display: inline-flex; margin-top: 8px; padding: 8px 12px; border-radius: 10px; font-size: 12px; }
.edit-banner { border: 1px solid #b8dcf6; background: #eaf7ff; border-radius: 14px; padding: 12px 14px; margin: 0 0 14px; color: #0a315d; }
.edit-banner a { float: right; color: #0a315d; font-weight: 900; }

/* Ajustes solicitados: ODS al final, acordeon y matriz EDP compacta */
.ods-accordion-card { padding: 0; overflow: hidden; }
.ods-registered-details > summary { list-style: none; cursor: pointer; padding: 18px 20px; display: flex; justify-content: space-between; align-items: center; gap: 14px; }
.ods-registered-details > summary::-webkit-details-marker { display: none; }
.ods-registered-details > summary span { display: grid; gap: 4px; }
.ods-registered-details > summary strong { color: var(--duam-blue); font-size: 18px; }
.ods-registered-details > summary small { color: var(--muted); font-weight: 750; }
.ods-registered-details > summary b { background: #eef4fb; color: #0a315d; border: 1px solid var(--line); border-radius: 999px; padding: 8px 12px; font-size: 12px; }
.ods-registered-details[open] > summary { border-bottom: 1px solid var(--line); }
.ods-registered-details[open] > summary b::after { content: ' abierto'; }

.edp-matrix-table .ods-col { left: 0; width: 92px; min-width: 92px; max-width: 92px; background: #fff; }
.edp-matrix-table .meta-col { left: 92px; width: 132px; min-width: 132px; max-width: 132px; background: #fff; }
.edp-matrix-table .ods-col .person { font-size: 13px; }
.edp-matrix-table .meta-col span { font-weight: 900; color: #0a315d; }
.edp-matrix-table .meta-col small { font-size: 10px; line-height: 1.2; }
.edp-matrix-table .sticky-action-col { position: sticky; right: 0; z-index: 3; background: #fff; box-shadow: -1px 0 0 #d9e6f4; }
.edp-matrix-table thead .sticky-action-col { z-index: 7; background: #f7fafd; }
.matrix-edit-row .sticky-action-col { background: #e6f5ff; }
.edp-matrix-table tr { scroll-margin-top: 120px; }
.edp-matrix-table { min-width: 1450px; }
.action-cell { min-width: 104px; }

/* --- Formularios de gestión ODS/EDP agregados --- */
.ods-create-card details summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;color:#002750}.ods-create-card details[open] summary{border-bottom:1px solid #e7e9ef;margin-bottom:14px}.ods-editor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:end}.ods-editor-grid label,.tool-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:#475467;font-weight:700}.ods-editor-grid input,.ods-editor-grid select,.ods-editor-grid textarea,.tool-form input,.tool-form select,.tool-form textarea{border:1px solid #d0d5dd;border-radius:10px;padding:10px 12px;font:inherit;background:#fff;color:#101828}.ods-editor-grid textarea{min-height:70px;resize:vertical}.wide-field{grid-column:1/-1}.ods-editor-card .editor-note{padding:10px 12px;background:#f6f8fb;border:1px solid #e7e9ef;border-radius:12px;color:#475467;margin-bottom:14px}.editor-panels{align-items:stretch}.editor-panels form{border:1px solid #e7e9ef;border-radius:14px;padding:14px;background:#fbfcff}.editor-panels h3,.hh-inline-form h3{margin:0 0 8px;color:#002750}.hh-inline-form{margin-top:14px;border-top:1px solid #e7e9ef;padding-top:14px}.compact-editor-form{padding:12px;background:#f8fafc;border-radius:14px;border:1px dashed #cbd5e1}.edp-new-row td{background:#f8fafc}.edp-new-row .ods-col{background:#eef4ff}.edp-new-row button,.ods-editor-grid button,.tool-form button{border:0;border-radius:10px;background:#c50013;color:#fff;padding:10px 14px;font-weight:800;cursor:pointer}.edit-button.small{display:inline-block;margin-bottom:6px}.three-col{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}@media(max-width:980px){.three-col{grid-template-columns:1fr}}

/* Ajustes de navegación y edición solicitados */
.ods-create-title { margin-bottom: 6px; }
.ods-create-card { border: 1px solid #cfe0f2; box-shadow: 0 14px 30px rgba(0,39,80,.08); }
.ods-edit-left { min-width: 96px; text-align: center; background: #f7fafd; }
.profile-title-row { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.profile-title-row h2 { margin: 0; }

/* Menu/architecture updates */
.compact-link-notice{align-items:center}.compact-link-notice .ghost{padding:9px 13px;margin-left:auto}.form-actions-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.wide-field{grid-column:1/-1}.ods-editor-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:14px}.ods-editor-grid button{justify-self:start}.filters-top form{grid-template-columns:repeat(6,minmax(130px,1fr)) auto auto}.personal-filters form{grid-template-columns:repeat(4,minmax(145px,1fr)) auto auto}

/* Personal matrix */
.personal-matrix-wrap{max-height:72vh;overflow:auto;border:1px solid #d9e6f4;border-radius:18px}.personal-matrix-table{border-collapse:separate;border-spacing:0;min-width:1500px;width:max-content}.personal-matrix-table th,.personal-matrix-table td{border-bottom:1px solid #e3edf7;border-right:1px solid #edf3f9;vertical-align:middle}.personal-matrix-table thead th{position:sticky;top:0;z-index:5;background:#f7fafd;color:#43526a;font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:12px 10px}.personal-matrix-table td{background:#fff;padding:10px}.personal-matrix-table small{display:block;color:#75859d;margin-top:3px}.sticky-person-col{position:sticky;left:0;z-index:4;background:#fff!important;min-width:260px;max-width:260px;width:260px;box-shadow:1px 0 0 #d9e6f4}.sticky-role-col{position:sticky;left:260px;z-index:4;background:#fff!important;min-width:150px;max-width:150px;width:150px;box-shadow:1px 0 0 #d9e6f4}.personal-matrix-table thead .sticky-person-col,.personal-matrix-table thead .sticky-role-col{z-index:8;background:#f7fafd!important}.sticky-total-col{position:sticky;right:0;z-index:4;background:#fff!important;min-width:150px;max-width:150px;width:150px;box-shadow:-1px 0 0 #d9e6f4}.personal-matrix-table thead .sticky-total-col{z-index:8;background:#f7fafd!important}.personal-matrix-table .period-head{min-width:132px;text-align:center}.salary-cell{text-align:center;min-width:132px}.salary-cell strong{display:block;color:#002750}.salary-cell span{color:#b8c2cf;font-weight:900}.empty-salary-cell{background:#fbfdff!important}.personal-summary article strong{font-size:22px}
@media(max-width:1050px){.ods-editor-grid,.filters-top form,.personal-filters form{grid-template-columns:1fr}.sticky-person-col{min-width:220px;max-width:220px;width:220px}.sticky-role-col{left:220px;min-width:130px;max-width:130px;width:130px}}

/* Personal cost matrix refinements */
.salary-cell .liquid-amount {
  color: #111827;
  font-weight: 800;
  display: block;
}
.salary-cell .total-total-line {
  color: #002750;
  font-weight: 700;
}
.empty-salary-cell span {
  color: #9ca3af;
}
.projected-salary-cell{background:#fff1f1!important;border-color:#ffd1d1!important;}
.projected-salary-cell strong,.projected-salary-cell .total-total-line{color:#9f1239!important;}
.projection-tag{display:inline-block!important;margin-top:6px!important;padding:3px 7px;border-radius:999px;background:#ffe4e6;color:#9f1239!important;font-weight:900!important;}
.real-tag{display:inline-block!important;margin-top:6px!important;padding:3px 7px;border-radius:999px;background:#e8f5ee;color:#146c43!important;font-weight:900!important;}
.projection-editor{margin-top:8px;text-align:left;}
.projection-editor summary{cursor:pointer;color:#9f1239;font-weight:900;font-size:11px;list-style:none;}
.projection-editor summary::-webkit-details-marker{display:none;}
.projection-editor form{display:grid;gap:6px;margin-top:8px;padding:8px;border:1px solid #fecdd3;border-radius:12px;background:#fff;}
.projection-editor label{font-size:10px;color:#6b7280;font-weight:800;display:grid;gap:3px;}
.projection-editor input{width:100%;box-sizing:border-box;border:1px solid #e5e7eb;border-radius:8px;padding:6px 7px;font-size:11px;}
.projection-editor button{padding:7px 9px;border-radius:9px;font-size:11px;}
.salary-cell .liquid-amount{font-weight:950;}

.sub-nav-link{font-size:13px;padding-left:22px!important;opacity:.92}

/* Bonos */
.bonos-summary article strong{font-size:20px}.bonos-filters form{grid-template-columns:repeat(3,minmax(150px,1fr)) auto auto}.bonos-table{min-width:1320px}.bonos-table th,.bonos-table td{white-space:nowrap}.bonos-table td:nth-child(9){white-space:normal;min-width:260px}.bonus-positive-row td{background:#f6fffb}.bonus-zero-row td{background:#fff}.bonus-detail summary{cursor:pointer;font-weight:900;color:#002750}.bonus-detail p{margin:8px 0 0;color:#475467}.muted{color:#98a2b3;font-weight:800}@media(max-width:1050px){.bonos-filters form{grid-template-columns:1fr}}


/* Parametros */
.param-tabs{display:flex;gap:10px;flex-wrap:wrap}.param-tabs a{display:inline-flex;align-items:center;justify-content:center;border:1px solid #d9e6f4;border-radius:999px;padding:10px 16px;text-decoration:none;color:#002750;font-weight:900;background:#fff}.param-tabs a.active{background:#002750;color:#fff;border-color:#002750}.parametros-table-wrap{max-height:72vh;overflow:auto}.parametros-table{min-width:1400px}.parametros-table th,.parametros-table td{vertical-align:top;white-space:nowrap}.parametros-table td:nth-child(3),.parametros-table td:nth-child(4),.parametros-table td:nth-child(6){white-space:normal}.inline-editor summary{cursor:pointer;color:#002750;font-weight:900}.param-inline-form{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:10px;min-width:520px;padding:12px;margin-top:8px;background:#f8fafc;border:1px solid #d9e6f4;border-radius:14px}.param-inline-form label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:800;color:#475467}.param-inline-form input,.param-inline-form select,.param-inline-form textarea{border:1px solid #d0d5dd;border-radius:10px;padding:9px 10px;font:inherit;background:#fff;color:#101828}.param-inline-form textarea{min-height:70px;resize:vertical}.param-inline-form button{border:0;border-radius:10px;background:#c50013;color:#fff;padding:10px 14px;font-weight:900;cursor:pointer;justify-self:start}.editor-note{color:#475467;background:#f8fafc;border:1px solid #e7e9ef;border-radius:12px;padding:10px 12px}.flash{border-radius:14px;padding:12px 14px;margin-bottom:16px;font-weight:800}.flash.success{background:#ecfdf3;color:#067647;border:1px solid #abefc6}.flash.error{background:#fef3f2;color:#b42318;border:1px solid #fecdca}@media(max-width:900px){.param-inline-form{grid-template-columns:1fr;min-width:260px}.parametros-table{min-width:1100px}}
.edp-invoice-fields,.edp-payment-fields{margin-top:8px;padding-top:8px;border-top:1px dashed #cbd5e1}.edp-invoice-fields small,.edp-payment-fields small{display:block;margin-top:6px;color:#0a315d;font-weight:900}.edp-edit-cell .edp-invoice-fields label,.edp-edit-cell .edp-payment-fields label{margin-top:6px}.cell-card small{line-height:1.25}
.button-link{display:inline-block;background:var(--duam-blue);color:#fff!important;text-decoration:none;border-radius:12px;padding:11px 15px;font-weight:900}.compact-kpis{grid-template-columns:repeat(3,minmax(180px,1fr));margin-top:12px}.pill.activa{background:#ecfdf3;color:#067647}.pill.pausada,.pill.pendiente{background:#fff6e8;color:#b35b00}.pill.inactiva{background:#f2f4f7;color:#475467}
@media(max-width:900px){.compact-kpis{grid-template-columns:1fr}}

/* EDP: datos obligatorios de facturación/pago incompletos */
.cell-data-warning .cell-card {
  outline: 2px solid #dc2626;
  box-shadow: inset 0 0 0 1px rgba(220, 38, 38, .16), 0 0 0 3px rgba(220, 38, 38, .08);
}
.cell-data-warning .cell-card strong,
.cell-data-warning .cell-card span,
.cell-data-warning .cell-card small,
.data-warning-text {
  color: #b42318 !important;
}
.edp-matrix-table .danger-text { color: #b42318 !important; font-weight: 900; }

/* Suscripciones / Parámetros: KPIs ordenados para evitar desplazamientos visuales */
.kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 14px;
  margin: 0 0 18px;
  align-items: stretch;
}
.kpi-card {
  border: 1px solid var(--line);
  background: rgba(255,255,255,.96);
  box-shadow: var(--shadow-soft);
  border-radius: 18px;
  padding: 16px 18px;
  min-height: 92px;
}
.kpi-card span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.25;
  font-weight: 900;
}
.kpi-card strong {
  display: block;
  color: var(--duam-blue);
  font-size: 22px;
  margin-top: 8px;
  overflow-wrap: anywhere;
}
.kpi-card small {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 750;
  margin-top: 3px;
}
.hero-card {
  border: 1px solid var(--line);
  background: rgba(255,255,255,.96);
  box-shadow: var(--shadow-soft);
  border-radius: 22px;
  padding: 22px 24px;
  margin-bottom: 18px;
}
.hero-card h2 { margin: 0 0 8px; color: var(--duam-blue); font-size: 26px; }
.hero-card p { margin: 0; color: var(--muted); max-width: 920px; }
.compact-hero { padding: 18px 20px; }


/* EDP compact cards + modal */
.edp-summary{grid-template-columns:repeat(4,minmax(180px,1fr));align-items:stretch}
.matrix-cell{padding:8px;vertical-align:middle}
.cell-card-button{width:100%;border:0;cursor:pointer;text-align:center;transition:transform .12s ease, box-shadow .12s ease}
.cell-card-button:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 1px rgba(0,0,0,.06),0 8px 18px rgba(0,39,80,.10)}
.cell-card-button .cell-kicker{font-size:10px;font-weight:900;color:#203149;margin:0 0 2px;line-height:1.15}
.cell-card-button strong{margin:1px 0}
.cell-card-button span{line-height:1.2}
.cell-card-button .data-warning-text{margin-top:2px}
.edp-detail-modal{border:0;padding:0;background:transparent;max-width:min(760px,calc(100vw - 32px));width:100%}
.edp-detail-modal::backdrop{background:rgba(2,22,48,.46);backdrop-filter:blur(3px)}
.edp-detail-sheet{background:#fff;border-radius:22px;box-shadow:0 24px 70px rgba(0,39,80,.28);overflow:hidden}
.edp-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 20px;border-bottom:1px solid var(--line);background:#f8fbff}
.edp-detail-head small{display:block;color:var(--muted);font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.edp-detail-head h3{margin:4px 0 0;color:var(--duam-blue);font-size:22px}
.edp-modal-close{border:0;background:#eef4f8;color:var(--duam-blue);width:40px;height:40px;border-radius:12px;font-size:26px;line-height:1;font-weight:900;cursor:pointer}
.edp-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:18px 20px 20px}
.edp-detail-grid article{border:1px solid var(--line);border-radius:16px;background:#fff;padding:12px 14px;min-height:76px}
.edp-detail-grid article.wide{grid-column:1/-1}
.edp-detail-grid span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:900}
.edp-detail-grid strong{display:block;color:#0a315d;font-size:16px;margin-top:6px;overflow-wrap:anywhere}
.edp-detail-grid small{display:block;color:#b42318;font-size:12px;font-weight:900;margin-top:8px}
@media(max-width:1200px){.edp-summary{grid-template-columns:repeat(3,minmax(170px,1fr))}}
@media(max-width:900px){.edp-summary{grid-template-columns:repeat(2,minmax(160px,1fr))}.edp-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.edp-detail-grid{grid-template-columns:1fr}.edp-summary{grid-template-columns:1fr}}


/* EDP HES search + editable modal */
.edp-hes-search{display:grid;grid-template-columns:minmax(240px,360px) auto 1fr;gap:12px;align-items:end}
.edp-hes-search label{text-transform:uppercase;letter-spacing:.04em}
.edp-hes-search button{height:44px;border-radius:12px;background:var(--duam-blue);color:#fff;border:0;font-weight:900;cursor:pointer;padding:0 16px}
.edp-hes-search small{align-self:center;color:#66758a;font-weight:850}
.edp-modal-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0 20px 20px;padding:16px;background:#f8fafc;border:1px solid #d9e6f4;border-radius:18px}
.edp-modal-form label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:#475467;font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.edp-modal-form input,.edp-modal-form select{border:1px solid #d0d5dd;border-radius:10px;padding:10px 11px;font:inherit;background:#fff;color:#101828}
.edp-modal-form .edp-invoice-fields,.edp-modal-form .edp-payment-fields{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;padding:12px;border:1px dashed #cbd5e1;border-radius:14px;background:#fff}
.edp-modal-form .edp-payment-fields{grid-template-columns:minmax(0,1fr)}
.edp-modal-form .edp-invoice-fields small{align-self:end;color:#0a315d;font-weight:900;padding:10px 0}
.edp-modal-form button{justify-self:start;background:#c50013;color:#fff;border:0;border-radius:12px;padding:11px 15px;font-weight:900;cursor:pointer}
.edp-modal-edit-title{grid-column:1/-1;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;border-bottom:1px solid #d9e6f4;padding-bottom:10px;color:#0a315d}
.edp-modal-edit-title small{color:#66758a;font-weight:800;line-height:1.35}
@media(max-width:760px){.edp-hes-search{grid-template-columns:1fr}.edp-modal-form,.edp-modal-form .edp-invoice-fields{grid-template-columns:1fr}}

/* Dashboard financiero */
.dashboard-notice{align-items:flex-start}.page-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}.inline-meta{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border:1px solid var(--line);background:rgba(255,255,255,.92);border-radius:999px;color:#66758a;font-weight:800;box-shadow:var(--shadow-soft)}.dashboard-filters form{grid-template-columns:repeat(4,minmax(150px,1fr)) auto auto}.dashboard-summary-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:8px 0 16px;flex-wrap:wrap}.dashboard-summary-head h2{margin:0;color:var(--duam-blue);font-size:22px}.dashboard-summary-head p{display:none}.summary-chip{display:inline-flex;align-items:center;padding:10px 14px;border-radius:999px;background:linear-gradient(135deg,#f4f9fc 0%,#eef4f8 100%);border:1px solid #d6e3ee;color:#35506d;font-weight:900;box-shadow:0 8px 20px rgba(0,39,80,.06)}.dashboard-summary{grid-template-columns:repeat(4,minmax(210px,1fr));gap:16px}.dashboard-summary .dashboard-kpi{position:relative;overflow:hidden;padding:20px;min-height:132px;border-radius:22px;background:linear-gradient(180deg,#ffffff 0%,#f8fbfd 100%);border:1px solid #dce6ef;box-shadow:0 18px 36px rgba(0,39,80,.08)}.dashboard-summary .dashboard-kpi::before{content:"";position:absolute;left:0;right:0;top:0;height:5px;background:var(--kpi-accent,#002750)}.dashboard-summary .dashboard-kpi span{font-size:13px;font-weight:800;color:#66758a;text-transform:none;letter-spacing:0}.dashboard-summary .dashboard-kpi strong{margin-top:14px;font-size:28px;line-height:1.08;color:#0f2d57;letter-spacing:-.02em}.dashboard-summary .dashboard-kpi small{display:block;margin-top:8px;color:#5d6c80;font-size:12px;font-weight:800;line-height:1.35}.dashboard-summary article strong.positive,.positive{color:#067647!important}.dashboard-summary article strong.negative,.negative{color:#b42318!important}.dashboard-summary .income-card{--kpi-accent:#002750;background:linear-gradient(180deg,#ffffff 0%,#f5f9fd 100%)}.dashboard-summary .area-card{--kpi-accent:#c50013;background:linear-gradient(180deg,#ffffff 0%,#fff6f6 100%)}.dashboard-summary .general-card{--kpi-accent:#679bba;background:linear-gradient(180deg,#ffffff 0%,#f4f9fc 100%)}.dashboard-summary .profit-card{--kpi-accent:#12b76a;background:linear-gradient(180deg,#ffffff 0%,#f4fcf7 100%)}.dashboard-summary .expense-card{--kpi-accent:#5b6b84}.dashboard-summary .admin-expense-card{--kpi-accent:#35506d}.dashboard-summary .balance-card{--kpi-accent:#12b76a}.dashboard-summary .result-card{--kpi-accent:#0f9f5a;background:linear-gradient(135deg,#ffffff 0%,#f3fbf6 100%)}.dashboard-summary .result-card.featured{box-shadow:0 18px 40px rgba(18,183,106,.12)}.dashboard-grid-main{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);gap:18px;align-items:stretch}.dashboard-grid-single{grid-template-columns:1fr}.dashboard-chart{height:300px;display:flex;align-items:flex-end;gap:12px;overflow:auto;border-left:1px solid var(--line);border-bottom:1px solid var(--line);padding:14px 10px 44px;background:linear-gradient(180deg,#fff 0%,#fbfdff 100%);border-radius:14px}.dash-month{min-width:76px;text-align:center;position:relative;height:250px;display:flex;flex-direction:column;justify-content:flex-end;gap:7px}.dash-bars{height:210px;display:flex;align-items:flex-end;justify-content:center;gap:4px}.dash-bar{display:inline-block;width:12px;min-height:2px;border-radius:8px 8px 0 0}.dash-bar.income,.dash-income{background:#002750}.dash-bar.area,.dash-area{background:#c50013}.dash-bar.general,.dash-general{background:#679bba}.dash-bar.profit,.dash-profit{background:#12b76a}.dash-month strong{color:#344054;font-size:12px}.dash-month small{color:#66758a;font-size:11px;font-weight:900}.dashboard-legend .dot{display:inline-block;margin-right:6px;vertical-align:middle}.top-source-list{display:grid;gap:10px;max-height:360px;overflow:auto}.top-source-list article{display:grid;grid-template-columns:1fr auto;gap:4px 10px;border:1px solid var(--line);border-radius:14px;padding:11px 12px;background:#fbfdff}.top-source-list strong{color:var(--duam-blue)}.top-source-list span{display:block;color:#344054;font-weight:800;line-height:1.2}.top-source-list small{display:block;color:#66758a;font-weight:750}.top-source-list b{color:#002750;text-align:right;white-space:nowrap}.dashboard-area-table{min-width:1380px}.dashboard-area-table th,.dashboard-area-table td{white-space:nowrap;vertical-align:middle}.area-name-dot{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:8px}.area-mini-bar{height:7px;background:#eef4f8;border-radius:999px;margin-top:8px;overflow:hidden;max-width:180px}.area-mini-bar i{display:block;height:100%;background:#002750;border-radius:999px}.dashboard-cost-table{min-width:640px}.dashboard-cost-table td small{display:block;color:#66758a;margin-top:3px}.dashboard-area-wrap{max-height:70vh}@media(max-width:1200px){.dashboard-summary{grid-template-columns:repeat(2,minmax(170px,1fr))}.dashboard-grid-main{grid-template-columns:1fr}.dashboard-filters form{grid-template-columns:repeat(2,minmax(150px,1fr)) auto auto}}@media(max-width:700px){.dashboard-summary,.dashboard-filters form{grid-template-columns:1fr}.dashboard-chart{height:260px}.dash-month{min-width:66px}.page-actions,.dashboard-summary-head{align-items:flex-start}}


/* Dashboard executive layout v2 */
.dashboard-executive-grid{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr));gap:18px;margin:0 0 18px}
.dashboard-executive-grid .dashboard-kpi{position:relative;overflow:hidden;padding:24px 26px;min-height:156px;border-radius:24px;background:linear-gradient(180deg,#ffffff 0%,#f8fbfd 100%);border:1px solid #dce6ef;box-shadow:0 18px 36px rgba(0,39,80,.08)}
.dashboard-executive-grid .dashboard-kpi::before{content:"";position:absolute;left:0;right:0;top:0;height:6px;background:var(--kpi-accent,#002750)}
.dashboard-executive-grid .dashboard-kpi span{display:block;color:#66758a;font-size:14px;font-weight:900}
.dashboard-executive-grid .dashboard-kpi strong{display:block;margin-top:16px;color:#0f2d57;font-size:34px;line-height:1.05;letter-spacing:-.03em}
.dashboard-executive-grid .dashboard-kpi small{display:block;margin-top:10px;color:#5d6c80;font-size:13px;font-weight:850}
.dashboard-control-panels{display:grid;grid-template-columns:1fr;gap:16px;margin:0 0 18px}
.control-panel{border:1px solid #dce6ef;background:#fff;border-radius:24px;box-shadow:0 18px 36px rgba(0,39,80,.06);overflow:hidden;display:grid;grid-template-columns:230px 1fr;min-height:124px}
.control-title{padding:22px 24px;display:flex;flex-direction:column;justify-content:center;gap:8px;color:#fff}
.control-title span{font-weight:900;letter-spacing:.02em}
.control-title strong{font-size:38px;line-height:1;letter-spacing:-.03em}
.area-control .control-title{background:linear-gradient(135deg,#c50013 0%,#8f0010 100%)}
.general-control .control-title{background:linear-gradient(135deg,#679bba 0%,#355f7d 100%)}
.profit-control .control-title{background:linear-gradient(135deg,#12b76a 0%,#087443 100%)}
.control-flow{display:grid;grid-template-columns:repeat(3,1fr);gap:0;align-items:stretch}
.control-flow div{padding:22px 24px;border-left:1px solid #e7edf3;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(180deg,#fff 0%,#fbfdff 100%)}
.control-flow span{color:#66758a;font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.control-flow strong{margin-top:10px;color:#0f2d57;font-size:24px;line-height:1.12;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
@media(max-width:1100px){.dashboard-executive-grid{grid-template-columns:1fr}.control-panel{grid-template-columns:1fr}.control-flow{grid-template-columns:1fr}.control-flow div{border-left:0;border-top:1px solid #e7edf3}}

/* Dashboard real/proyectado v3 */
.dashboard-executive-grid-v3{grid-template-columns:repeat(4,minmax(220px,1fr))}
.control-panel-expanded{grid-template-columns:240px 1fr;min-height:0}
.control-content{display:grid;grid-template-rows:auto auto;background:#fff}
.control-panel-expanded .control-flow{display:grid;gap:0;align-items:stretch}
.control-flow-real{grid-template-columns:repeat(5,minmax(145px,1fr))}
.control-flow-projection{grid-template-columns:repeat(3,minmax(180px,1fr));border-top:1px solid #e7edf3;background:#fbfdff}
.control-flow-projection div{background:linear-gradient(180deg,#fbfdff 0%,#f7fafc 100%)}
.control-panel-expanded .control-flow div{min-height:116px}
.control-panel-expanded .control-flow strong{font-size:23px;line-height:1.12;font-variant-numeric:tabular-nums}
.control-panel-expanded .control-flow small{display:block;margin-top:6px;color:#5d6c80;font-size:12px;font-weight:800;line-height:1.25}
@media(max-width:1350px){.dashboard-executive-grid-v3{grid-template-columns:repeat(2,minmax(220px,1fr))}.control-flow-real{grid-template-columns:repeat(2,minmax(160px,1fr))}.control-flow-projection{grid-template-columns:repeat(3,minmax(160px,1fr))}}
@media(max-width:800px){.dashboard-executive-grid-v3{grid-template-columns:1fr}.control-panel-expanded{grid-template-columns:1fr}.control-flow-real,.control-flow-projection{grid-template-columns:1fr}.control-panel-expanded .control-flow div{border-left:0;border-top:1px solid #e7edf3}}

/* Dashboard 100 / 70 / 20 / 10 limpio */
.dashboard-total-card{padding:0;overflow:hidden;border-radius:24px;margin-bottom:18px;background:linear-gradient(180deg,#ffffff 0%,#f8fbfd 100%)}
.dashboard-total-title{display:flex;justify-content:space-between;gap:18px;align-items:flex-end;padding:22px 24px;border-bottom:1px solid #e7edf3;background:linear-gradient(135deg,#ffffff 0%,#f5f9fc 100%)}
.dashboard-total-title span{display:block;color:#66758a;font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.08em}
.dashboard-total-title h3{margin:6px 0 0;color:#002750;font-size:22px;line-height:1.05}
.dashboard-total-title small{max-width:420px;color:#5d6c80;font-weight:800;line-height:1.35;text-align:right}
.dashboard-total-metrics{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr));gap:0}
.dashboard-total-metrics article{padding:22px 24px;border-left:1px solid #e7edf3;min-height:126px;background:rgba(255,255,255,.86)}
.dashboard-total-metrics article:first-child{border-left:0}
.dashboard-total-metrics span{display:block;color:#66758a;font-size:13px;font-weight:900}
.dashboard-total-metrics strong{display:block;margin-top:12px;color:#0f2d57;font-size:24px;line-height:1.12;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.dashboard-total-metrics small{display:block;margin-top:6px;color:#5d6c80;font-size:12px;font-weight:800;line-height:1.3}
.dashboard-control-panels-clean .control-panel{box-shadow:0 14px 30px rgba(0,39,80,.055)}
.dashboard-control-panels-clean .control-flow-real{grid-template-columns:repeat(5,minmax(150px,1fr))}
.dashboard-control-panels-clean .control-flow-projection{grid-template-columns:repeat(3,minmax(180px,1fr))}
.dashboard-line-chart-wrap{position:relative;border:1px solid #dce6ef;border-radius:18px;background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%);padding:18px 16px 46px;overflow:auto}
.dashboard-line-chart{display:block;min-width:980px;width:100%;height:340px}
.chart-axis{stroke:#cfd8e3;stroke-width:2}.chart-grid{stroke:#e6edf4;stroke-width:1}
.chart-line{fill:none;stroke-width:4.5;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 4px 5px rgba(0,39,80,.09))}
.line-income{stroke:#002750}.line-area{stroke:#c50013}.line-general{stroke:#679bba}.line-profit{stroke:#12b76a}.line-cost{stroke:#7a5af8;stroke-dasharray:10 8}.chart-y-label{fill:#66758a;font-size:11px;font-weight:800}.chart-point{stroke:#fff;stroke-width:2;transition:r .15s ease,transform .15s ease;cursor:pointer}.chart-point:hover{r:6.5}.point-income{fill:#002750}.point-area{fill:#c50013}.point-general{fill:#679bba}.point-profit{fill:#12b76a}.point-cost{fill:#7a5af8}
.chart-scale-top{position:absolute;top:14px;right:18px;color:#66758a;font-size:12px;font-weight:900;background:rgba(255,255,255,.86);border:1px solid #e7edf3;border-radius:999px;padding:6px 10px}
.chart-month-labels{position:absolute;left:108px;right:22px;bottom:16px;display:flex;justify-content:space-between;gap:8px;min-width:860px;color:#66758a;font-size:11px;font-weight:900}
.dash-cost{background:#7a5af8}
@media(max-width:1450px){.dashboard-total-metrics{grid-template-columns:repeat(3,minmax(180px,1fr))}.dashboard-total-metrics article:nth-child(4){border-left:0}.dashboard-control-panels-clean .control-flow-real{grid-template-columns:repeat(2,minmax(170px,1fr))}}
@media(max-width:760px){.dashboard-total-title{align-items:flex-start;flex-direction:column}.dashboard-total-title small{text-align:left}.dashboard-total-metrics{grid-template-columns:1fr}.dashboard-total-metrics article{border-left:0;border-top:1px solid #e7edf3}.dashboard-control-panels-clean .control-flow-real,.dashboard-control-panels-clean .control-flow-projection{grid-template-columns:1fr}}
.area-total-wrapper{margin-bottom:14px}.selected-area-control .control-title{background:linear-gradient(135deg,#002750 0%,#0f416f 100%)}.control-flow-area100{grid-template-columns:repeat(5,minmax(150px,1fr))}.control-flow-area100 div{min-height:116px}@media(max-width:1450px){.control-flow-area100{grid-template-columns:repeat(2,minmax(170px,1fr))}}@media(max-width:760px){.control-flow-area100{grid-template-columns:1fr}.control-flow-area100 div{border-left:0;border-top:1px solid #e7edf3}}

/* Dashboard UI refinements: summary head placement, collapsible projections, interactive chart */
.dashboard-summary-head-top{margin-top:2px}
.dashboard-projection-toolbar{display:flex;justify-content:flex-end;align-items:center;margin:-4px 0 14px}
.projection-toggle-btn{display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-radius:999px;border:1px solid #d7e3ee;background:linear-gradient(135deg,#ffffff 0%,#f5f9fc 100%);color:#244363;font-weight:900;box-shadow:0 10px 24px rgba(0,39,80,.06);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;cursor:pointer}
.projection-toggle-btn:hover{transform:translateY(-1px);box-shadow:0 14px 26px rgba(0,39,80,.08);border-color:#bfd2e2}
.projection-toggle-btn i{display:inline-block;width:11px;height:11px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-1px);transition:transform .2s ease}
.projection-toggle-btn.is-open i{transform:rotate(225deg) translateY(-1px)}
.projection-drawer{display:grid;grid-template-rows:0fr;transition:grid-template-rows .28s ease,margin-top .2s ease}
.projection-drawer>.control-flow{overflow:hidden}
.has-collapsible-projection .projection-drawer{margin-top:0}
.has-collapsible-projection.show-projected .projection-drawer{grid-template-rows:1fr;margin-top:0}
.section-title-chart{align-items:flex-start}
.section-title-chart>div{display:grid;gap:4px}
.dashboard-line-chart-wrap{overflow-x:auto;overflow-y:hidden}
.chart-floating-tooltip{position:absolute;left:0;top:0;z-index:4;max-width:280px;padding:10px 12px;border-radius:12px;background:rgba(15,45,87,.96);color:#fff;font-size:12px;font-weight:800;line-height:1.3;box-shadow:0 14px 30px rgba(0,0,0,.18);pointer-events:none;opacity:0;transform:translateY(6px);transition:opacity .12s ease,transform .12s ease}
.chart-floating-tooltip.visible{opacity:1;transform:translateY(0)}
.dashboard-legend-toggle{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.legend-toggle{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border-radius:999px;border:1px solid #dce6ef;background:#fff;color:#35506d;font-weight:850;cursor:pointer;transition:all .16s ease;box-shadow:0 6px 16px rgba(0,39,80,.04)}
.legend-toggle:hover{border-color:#bfd2e2;transform:translateY(-1px)}
.legend-toggle.active{background:linear-gradient(135deg,#ffffff 0%,#f6faff 100%)}
.legend-toggle.muted{opacity:.45;background:#f7f9fb;color:#7b8798;box-shadow:none}
.legend-toggle .dot{width:12px;height:12px;border-radius:50%;margin-right:0}
.legend-toggle .dash-cost{border-radius:999px;width:16px;height:4px;display:inline-block;background:#7a5af8}
.dashboard-line-chart [data-series].series-hidden{opacity:0;pointer-events:none}
.dashboard-line-chart .chart-line.series-hidden{opacity:0}
.dashboard-line-chart .chart-point.series-hidden{opacity:0}
@media(max-width:760px){
  .dashboard-projection-toolbar{justify-content:flex-start}
  .dashboard-legend-toggle{gap:8px}
  .legend-toggle{width:100%;justify-content:flex-start}
}

/* EDP accumulated conciliation layer */
.edp-accum-help-card{margin-bottom:18px}
.edp-accum-help{display:grid;grid-template-columns:repeat(3,minmax(200px,1fr));gap:14px}
.edp-accum-help article{padding:16px;border:1px solid #dce6ef;border-radius:18px;background:linear-gradient(180deg,#fff 0%,#f8fbfd 100%)}
.edp-accum-help strong{display:block;color:#002750;margin-bottom:6px}
.edp-accum-help p{margin:0;color:#5d6c80;font-weight:750;line-height:1.35;font-size:13px}
.edp-accumulate-option{align-items:center;gap:8px;margin-top:6px;padding:8px 10px;border:1px dashed #bfd2e2;border-radius:12px;background:#f7fbff;color:#35506d;font-weight:850}
.edp-accum-note{display:block;margin-top:6px;color:#7a4b00!important;background:#fff7e6;border:1px solid #ffe0a3;border-radius:10px;padding:6px 8px;font-weight:850}
.edp-accum-badge{display:block;margin-top:6px;color:#7a4b00;background:#fff7e6;border:1px solid #ffe0a3;border-radius:999px;padding:4px 7px;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.03em}
.edp-accum-badge.receives{color:#175cd3;background:#eff8ff;border-color:#b2ddff}
.edp-accum-modal-note{display:block;margin-top:-4px;margin-bottom:8px;color:#66758a;font-weight:800;line-height:1.35}
.edp-detail-grid article.wide strong[data-field="accumulatedItems"]{font-size:13px;line-height:1.35;white-space:normal}
@media(max-width:900px){.edp-accum-help{grid-template-columns:1fr}}
.edp-accum-final{display:block;margin-top:4px;color:#35506d;background:#eef4f8;border:1px solid #d6e3ee;border-radius:999px;padding:4px 7px;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.03em}

/* Personal: vista compacta de liquidaciones */
.salary-cell{vertical-align:top!important;padding:8px 9px!important;}
.salary-cell .liquid-amount{font-size:14px;line-height:1.15;white-space:nowrap;color:#002750!important;}
.salary-detail-drawer{margin-top:6px;text-align:left;}
.salary-detail-drawer>summary{display:inline-flex;align-items:center;justify-content:center;gap:5px;cursor:pointer;list-style:none;border:1px solid #d9e6f4;background:#f7fafd;color:#002750;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:900;line-height:1;}
.salary-detail-drawer>summary::-webkit-details-marker{display:none;}
.salary-detail-drawer>summary::after{content:'+';font-weight:950;color:#c50013;}
.salary-detail-drawer[open]>summary{background:#002750;color:#fff;border-color:#002750;}
.salary-detail-drawer[open]>summary::after{content:'-';color:#fff;}
.salary-detail-body{margin-top:8px;padding:9px 10px;border:1px solid #d9e6f4;background:#fbfdff;border-radius:12px;box-shadow:0 8px 18px rgba(0,39,80,.06);min-width:150px;}
.salary-detail-body small{font-size:11px;line-height:1.25;margin-top:4px;}
.salary-detail-body small:first-child{margin-top:0;}
.projected-salary-cell .salary-detail-drawer>summary{border-color:#fecdd3;background:#fff1f1;color:#9f1239;}
.projected-salary-cell .salary-detail-drawer[open]>summary{background:#9f1239;color:#fff;border-color:#9f1239;}
.projected-salary-cell .salary-detail-body{border-color:#fecdd3;background:#fffafa;}

/* Personal: detalle por persona tipo abanico desde Total vista */
.person-summary-row.is-open td { border-bottom-color: #bfd7ea; }
.total-view-cell { vertical-align: top !important; }
.total-view-cell strong { display: block; color: #002750; font-size: 14px; }
.total-view-cell small { font-size: 11px; }
.person-expand-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 8px;
  border: 1px solid #cfe2ef;
  background: #eef6fb;
  color: #002750;
  border-radius: 999px;
  padding: 6px 11px;
  font-size: 11px;
  font-weight: 950;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0,39,80,.05);
}
.person-expand-btn::after { content: '+'; color: #c50013; font-weight: 950; }
.person-expand-btn[aria-expanded="true"] { background: #002750; color: #fff; border-color: #002750; }
.person-expand-btn[aria-expanded="true"]::after { content: '-'; color: #fff; }
.person-detail-row[hidden] { display: none !important; }
.person-detail-cell {
  padding: 0 !important;
  background: #f5f9fd !important;
  border-right: 0 !important;
}
.person-detail-panel {
  display: grid;
  grid-template-columns: 220px minmax(540px, 1fr);
  border: 1px solid #cfe0f2;
  border-radius: 20px;
  overflow: hidden;
  margin: 14px 12px 18px;
  background: #fff;
  box-shadow: 0 18px 40px rgba(0,39,80,.08);
}
.person-detail-hero {
  grid-row: span 2;
  background: #002750;
  color: #fff;
  padding: 22px 18px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 7px;
}
.person-detail-hero span {
  font-size: 11px;
  letter-spacing: .08em;
  text-transform: uppercase;
  font-weight: 950;
  opacity: .82;
}
.person-detail-hero strong { font-size: 21px; line-height: 1.15; }
.person-detail-hero small { color: rgba(255,255,255,.82); font-weight: 800; line-height: 1.35; }
.person-detail-summary-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(140px, 1fr));
  border-bottom: 1px solid #dce8f3;
}
.person-detail-summary-grid article {
  padding: 16px 18px;
  border-right: 1px solid #e3edf7;
  min-height: 100px;
}
.person-detail-summary-grid article:last-child { border-right: 0; }
.person-detail-summary-grid span,
.person-month-card .person-month-head span {
  display: block;
  color: #6b7b92;
  font-size: 10px;
  letter-spacing: .08em;
  text-transform: uppercase;
  font-weight: 950;
}
.person-detail-summary-grid strong {
  display: block;
  color: #002750;
  font-size: 18px;
  margin-top: 7px;
  white-space: nowrap;
}
.person-detail-summary-grid small { color: #5f7188; font-size: 10px; font-weight: 800; line-height: 1.25; }
.person-month-detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 10px;
  padding: 14px;
  background: #f8fbfe;
}
.person-month-card {
  border: 1px solid #d9e6f4;
  background: #fff;
  border-radius: 15px;
  padding: 12px;
  min-height: 138px;
  box-shadow: 0 8px 18px rgba(0,39,80,.04);
}
.person-month-card.is-projected { border-color: #fecdd3; background: #fffafa; }
.person-month-card.is-empty { background: #f7fafc; color: #94a3b8; }
.person-month-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; margin-bottom: 8px; }
.person-month-card .person-month-head strong { color: #002750; font-size: 14px; text-align: right; }
.person-month-card.is-projected .person-month-head strong { color: #9f1239; }
.person-month-card small { display: block; color: #697b91; font-size: 11px; line-height: 1.35; margin-top: 4px; }
.person-month-card small b { color: #34445a; }
.person-month-card .projection-editor form { min-width: 0; }
@media(max-width:1200px){
  .person-detail-panel { grid-template-columns: 1fr; }
  .person-detail-hero { grid-row: auto; }
  .person-detail-summary-grid { grid-template-columns: repeat(2, minmax(160px, 1fr)); }
}
@media(max-width:760px){
  .person-detail-summary-grid { grid-template-columns: 1fr; }
  .person-month-detail-grid { grid-template-columns: 1fr; }
}

/* CSV liquidations import and fixed 12-month person fan view */
.csv-format-help { margin-top: 10px; border: 1px solid #d9e6f4; border-radius: 12px; background: #f8fbfe; padding: 10px 12px; }
.csv-format-help summary { cursor: pointer; color: #002750; font-weight: 950; }
.csv-format-help code { display: block; margin-top: 8px; white-space: normal; overflow-wrap: anywhere; color: #344054; font-size: 12px; line-height: 1.45; }
.person-month-detail-grid { grid-template-columns: repeat(6, minmax(138px, 1fr)); align-items: stretch; }
.person-month-card { min-height: 124px; }
.person-detail-panel { grid-template-columns: 220px minmax(820px, 1fr); }
@media(max-width:1350px){ .person-month-detail-grid { grid-template-columns: repeat(4, minmax(150px, 1fr)); } }
@media(max-width:980px){ .person-month-detail-grid { grid-template-columns: repeat(2, minmax(150px, 1fr)); } }
@media(max-width:760px){ .person-month-detail-grid { grid-template-columns: 1fr; } }

/* Ajuste: abanico de persona fijo dentro de la vista visible, sin desplazamiento horizontal */
.personal-matrix-wrap { position: relative; }
.person-detail-cell {
  position: sticky;
  left: 0;
  z-index: 6;
  width: min(1360px, calc(100vw - 190px));
  max-width: min(1360px, calc(100vw - 190px));
  min-width: 0 !important;
}
.person-detail-panel {
  grid-template-columns: 180px minmax(0, 1fr) !important;
  width: 100%;
  max-width: 100%;
  min-width: 0 !important;
  margin: 12px 10px 16px;
}
.person-detail-summary-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  min-width: 0;
}
.person-detail-summary-grid article { padding: 12px 14px; min-width: 0; }
.person-detail-summary-grid strong { font-size: 16px; white-space: normal; }
.person-month-detail-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  gap: 8px;
  padding: 10px;
  min-width: 0;
}
.person-month-card {
  min-width: 0;
  min-height: 116px;
  padding: 9px 10px;
  border-radius: 13px;
}
.person-month-head { gap: 5px; margin-bottom: 6px; }
.person-month-card .person-month-head strong { font-size: 12px; }
.person-month-card small { font-size: 9px; line-height: 1.25; margin-top: 3px; }
.person-month-card .person-month-head span,
.person-detail-summary-grid span { font-size: 9px; letter-spacing: .06em; }
.person-detail-hero { padding: 18px 14px; }
.person-detail-hero strong { font-size: 16px; }
.person-detail-hero small { font-size: 10px; }
@media(max-width:1050px){
  .person-detail-cell { width: calc(100vw - 40px); max-width: calc(100vw - 40px); }
  .person-detail-panel { grid-template-columns: 1fr !important; }
  .person-detail-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .person-month-detail-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}
@media(max-width:760px){
  .person-detail-summary-grid { grid-template-columns: 1fr; }
  .person-month-detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media(max-width:520px){
  .person-month-detail-grid { grid-template-columns: 1fr !important; }
}

/* Correccion final: el abanico queda fuera del scroll horizontal de la matriz */
.person-detail-standalone-container {
  width: 100%;
  max-width: 100%;
  padding: 14px 0 0;
  background: #f5f9fd;
}
.person-detail-standalone[hidden] { display: none !important; }
.person-detail-panel.person-detail-standalone {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr) !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin: 0 0 18px !important;
  border: 1px solid #cfe0f2;
  border-radius: 20px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 18px 40px rgba(0,39,80,.08);
}
.person-detail-standalone .person-detail-hero {
  grid-row: span 2;
  min-height: 100%;
  padding: 24px 18px;
}
.person-detail-content { min-width: 0; }
.person-detail-standalone .person-detail-summary-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
}
.person-detail-standalone .person-detail-summary-grid article {
  min-height: 96px;
  padding: 14px 16px;
}
.person-detail-standalone .person-detail-summary-grid strong {
  font-size: 17px;
  white-space: normal;
}
.person-detail-standalone .person-month-detail-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  gap: 12px;
  padding: 14px;
  min-width: 0;
}
.person-detail-standalone .person-month-card {
  min-height: 148px;
  padding: 12px;
  border-radius: 14px;
}
.person-detail-standalone .person-month-card .person-month-head strong { font-size: 13px; }
.person-detail-standalone .person-month-card small { font-size: 10px; line-height: 1.32; }
@media(max-width:1180px){
  .person-detail-panel.person-detail-standalone { grid-template-columns: 1fr !important; }
  .person-detail-standalone .person-detail-hero { grid-row: auto; }
  .person-detail-standalone .person-detail-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .person-detail-standalone .person-month-detail-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}
@media(max-width:760px){
  .person-detail-standalone .person-detail-summary-grid { grid-template-columns: 1fr !important; }
  .person-detail-standalone .person-month-detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media(max-width:520px){
  .person-detail-standalone .person-month-detail-grid { grid-template-columns: 1fr !important; }
}

/* Modal de detalle de persona: reemplaza el abanico inferior por pop-up centrado */
.person-detail-modal-container { display: contents; }
.person-detail-modal {
  border: 0;
  padding: 0;
  background: transparent;
  width: min(1560px, calc(100vw - 36px));
  max-width: 1560px;
  max-height: calc(100vh - 34px);
  overflow: visible;
}
.person-detail-modal::backdrop { background: rgba(2, 22, 48, .48); backdrop-filter: blur(3px); }
.person-detail-modal-panel.person-detail-panel {
  display: grid;
  grid-template-columns: 230px minmax(0, 1fr) !important;
  width: 100% !important;
  max-width: 100% !important;
  max-height: calc(100vh - 34px);
  min-width: 0 !important;
  margin: 0 !important;
  border: 1px solid #cfe0f2;
  border-radius: 22px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 28px 70px rgba(0, 18, 45, .30);
}
.person-detail-modal-panel .person-detail-hero {
  grid-row: span 3;
  min-height: 100%;
  padding: 26px 20px;
}
.person-detail-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  padding: 16px 18px;
  border-bottom: 1px solid #d9e6f4;
  background: #f8fbfe;
}
.person-detail-modal-header span {
  display: block;
  color: #64748b;
  font-size: 10px;
  font-weight: 950;
  text-transform: uppercase;
  letter-spacing: .12em;
}
.person-detail-modal-header strong {
  display: block;
  color: #002750;
  font-size: 19px;
  line-height: 1.2;
  margin-top: 4px;
}
.person-modal-close {
  border: 0;
  background: #eef4f8;
  color: #002750;
  width: 40px;
  height: 40px;
  border-radius: 12px;
  font-size: 27px;
  line-height: 1;
  font-weight: 900;
  cursor: pointer;
}
.person-modal-close:hover { background: #dfeaf5; }
.person-detail-modal-panel .person-detail-content {
  min-width: 0;
  max-height: calc(100vh - 34px);
  overflow: auto;
}
.person-detail-modal-panel .person-detail-summary-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
}
.person-detail-modal-panel .person-detail-summary-grid article {
  min-height: 92px;
  padding: 14px 16px;
}
.person-detail-modal-panel .person-month-detail-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  gap: 12px;
  padding: 14px;
  min-width: 0;
}
.person-detail-modal-panel .person-month-card {
  min-height: 144px;
  padding: 12px;
  border-radius: 14px;
}
.person-detail-modal-panel .person-month-card .person-month-head strong { font-size: 13px; }
.person-detail-modal-panel .person-month-card small { font-size: 10px; line-height: 1.32; }
@media(max-width:1250px){
  .person-detail-modal-panel.person-detail-panel { grid-template-columns: 1fr !important; }
  .person-detail-modal-panel .person-detail-hero { grid-row: auto; }
  .person-detail-modal-panel .person-detail-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .person-detail-modal-panel .person-month-detail-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}
@media(max-width:760px){
  .person-detail-modal { width: calc(100vw - 20px); max-height: calc(100vh - 20px); }
  .person-detail-modal-panel.person-detail-panel { max-height: calc(100vh - 20px); }
  .person-detail-modal-panel .person-detail-content { max-height: calc(100vh - 20px); }
  .person-detail-modal-panel .person-detail-summary-grid { grid-template-columns: 1fr !important; }
  .person-detail-modal-panel .person-month-detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media(max-width:520px){
  .person-detail-modal-panel .person-month-detail-grid { grid-template-columns: 1fr !important; }
}


/* Ajustes Personal: centrado de secciones y modal más amplio */
.personal-upload-card,
.personal-filters,
.personal-summary,
.personal-matrix-card {
  width: min(100%, 1680px);
  margin-left: auto;
  margin-right: auto;
}
.person-detail-modal {
  width: min(1840px, calc(100vw - 42px));
  max-width: 1840px;
  max-height: calc(100vh - 30px);
}
.person-detail-modal-panel.person-detail-panel {
  grid-template-columns: 280px minmax(0, 1fr) !important;
  max-height: calc(100vh - 30px);
}
.person-detail-modal-panel .person-detail-hero {
  padding: 34px 26px;
}
.person-detail-modal-panel .person-detail-hero strong {
  font-size: 24px;
  line-height: 1.08;
}
.person-detail-modal-panel .person-detail-content {
  max-height: calc(100vh - 30px);
}
.person-detail-modal-header {
  padding: 20px 22px;
}
.person-detail-modal-header strong {
  font-size: 22px;
}
.person-detail-modal-panel .person-detail-summary-grid article {
  min-height: 108px;
  padding: 18px 20px;
}
.person-detail-modal-panel .person-month-detail-grid {
  gap: 14px;
  padding: 18px;
}
.person-detail-modal-panel .person-month-card {
  min-height: 170px;
  padding: 15px;
}
.person-detail-modal-panel .person-month-card .person-month-head strong { font-size: 15px; }
.person-detail-modal-panel .person-month-card small { font-size: 11px; line-height: 1.38; }
@media(max-width:1250px){
  .person-detail-modal { width: min(1120px, calc(100vw - 28px)); }
}

/* Honorarios: gráfico y detalle compacto */
.honorarios-chart-card { overflow: hidden; }
.honorarios-area-chart { display: grid; gap: 14px; }
.honorarios-area-row { display: grid; grid-template-columns: minmax(210px, 280px) minmax(0, 1fr); gap: 16px; align-items: center; padding: 12px 14px; border: 1px solid var(--line); border-radius: 16px; background: #fbfdff; }
.honorarios-area-meta strong { display:block; color: var(--duam-blue); font-size: 15px; }
.honorarios-area-meta small { display:block; color: var(--muted); font-weight: 800; margin-top: 4px; }
.honorarios-bar-track { height: 24px; border-radius: 999px; background: #edf4fa; border: 1px solid #dbe8f3; overflow: hidden; }
.honorarios-bar-track span { display:block; height:100%; border-radius: 999px; background: linear-gradient(90deg, var(--duam-blue), var(--duam-sky)); min-width: 8px; }
.honorarios-detail-accordion { border: 1px solid var(--line); border-radius: 16px; background: #fbfdff; overflow: hidden; }
.honorarios-detail-accordion summary { cursor: pointer; list-style: none; padding: 18px 20px; display:flex; justify-content:space-between; align-items:center; gap:14px; font-weight: 900; color: var(--duam-blue); }
.honorarios-detail-accordion summary::-webkit-details-marker { display:none; }
.honorarios-detail-accordion summary::before { content: '▸'; color: var(--duam-blue); font-size: 14px; transition: transform .15s ease; }
.honorarios-detail-accordion[open] summary::before { transform: rotate(90deg); }
.honorarios-detail-accordion summary span { margin-right:auto; }
.honorarios-detail-accordion summary small { color: var(--muted); font-weight: 700; }
.honorarios-detail-accordion .table-wrap { border-radius: 0; border-left: 0; border-right: 0; border-bottom: 0; box-shadow:none; }
@media(max-width:900px){.honorarios-area-row{grid-template-columns:1fr}.honorarios-detail-accordion summary{align-items:flex-start;flex-direction:column}.honorarios-detail-accordion summary::before{position:absolute}.honorarios-detail-accordion summary span{padding-left:20px}.honorarios-detail-accordion summary small{padding-left:20px}}

/* Dashboard: proyección por bloque con pestaña lateral */
.dashboard-control-cluster{display:grid;gap:16px;margin:0 0 18px}
.dashboard-general-first{margin-bottom:2px}
.dashboard-area-stack{display:grid;gap:14px;margin-bottom:18px}
.projection-card{position:relative;grid-template-columns:230px 1fr 46px;overflow:hidden}
.projection-card .control-content{min-width:0}
.projection-card .projection-drawer{display:grid;grid-template-rows:0fr;transition:grid-template-rows .28s ease}
.projection-card .projection-drawer>.control-flow{overflow:hidden}
.projection-card.show-projected .projection-drawer{grid-template-rows:1fr}
.projection-side-tab{border:0;border-left:1px solid rgba(0,39,80,.12);color:#fff;font-weight:950;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;display:flex;align-items:center;justify-content:center;min-width:46px;padding:0;transition:filter .18s ease,box-shadow .18s ease,transform .18s ease;background:#002750}
.projection-side-tab span{writing-mode:vertical-rl;transform:rotate(180deg);font-size:11px;line-height:1;white-space:nowrap}
.projection-side-tab:hover{filter:brightness(1.06);box-shadow:inset 5px 0 12px rgba(255,255,255,.12)}
.projection-side-tab.is-open span{letter-spacing:.03em}
.projection-side-tab-total{background:linear-gradient(180deg,#002750 0%,#0f416f 100%)}
.projection-side-tab-area{background:linear-gradient(180deg,#c50013 0%,#8f0010 100%)}
.projection-side-tab-general{background:linear-gradient(180deg,#679bba 0%,#355f7d 100%)}
.projection-side-tab-profit{background:linear-gradient(180deg,#12b76a 0%,#087443 100%)}
.dashboard-area-stack .selected-area-control{margin-bottom:0}
.dashboard-area-stack .area-control{margin-bottom:0}
@media(max-width:1100px){
  .projection-card{grid-template-columns:1fr}
  .projection-side-tab{min-height:42px;border-left:0;border-top:1px solid rgba(0,39,80,.12)}
  .projection-side-tab span{writing-mode:horizontal-tb;transform:none;font-size:12px}
}

/* Dashboard: ajuste de montos grandes para evitar corte del signo $ */
.main:has(.dashboard-total-card){max-width:1640px;}
.dashboard-total-metrics{grid-template-columns:repeat(6,minmax(170px,1fr));}
.dashboard-total-metrics article{padding:20px 18px;}
.dashboard-total-metrics strong,
.control-panel-expanded .control-flow strong{
  white-space:nowrap;
  word-break:keep-all;
  overflow-wrap:normal;
  letter-spacing:-.035em;
  font-variant-numeric:tabular-nums;
}
.dashboard-total-metrics strong{font-size:clamp(20px,1.25vw,24px);}
.control-panel-expanded .control-flow strong{font-size:clamp(18px,1.18vw,23px);}
.dashboard-control-panels-clean .control-flow-real,
.control-flow-area100{grid-template-columns:repeat(5,minmax(170px,1fr));}
.control-flow div{padding-left:20px;padding-right:20px;}
@media(max-width:1450px){
  .dashboard-total-metrics{grid-template-columns:repeat(3,minmax(220px,1fr));}
  .dashboard-control-panels-clean .control-flow-real,
  .control-flow-area100{grid-template-columns:repeat(2,minmax(220px,1fr));}
}
@media(max-width:760px){
  .dashboard-total-metrics strong,
  .control-panel-expanded .control-flow strong{white-space:normal;}
}

/* Dashboard Ejecutivo */
.main:has(.exec-kpi-grid){max-width:1640px;}
.executive-filters form{grid-template-columns:repeat(6,minmax(140px,1fr)) auto auto;}
.exec-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(160px,1fr));gap:14px;margin:18px 0;}
.exec-kpi{position:relative;overflow:hidden;border:1px solid #dce6ef;background:linear-gradient(180deg,#fff 0%,#f8fbfd 100%);border-radius:22px;padding:18px;box-shadow:0 14px 30px rgba(0,39,80,.06);min-height:126px;}
.exec-kpi:before{content:"";position:absolute;left:0;right:0;top:0;height:5px;background:var(--accent,#002750);}
.exec-kpi span{display:block;color:#66758a;font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.06em;}
.exec-kpi strong{display:block;margin-top:12px;color:#0f2d57;font-size:clamp(19px,1.25vw,26px);line-height:1.12;letter-spacing:-.03em;white-space:nowrap;font-variant-numeric:tabular-nums;}
.exec-kpi small{display:block;margin-top:7px;color:#5d6c80;font-size:12px;font-weight:800;line-height:1.3;}
.exec-kpi.income{--accent:#002750}.exec-kpi.cost{--accent:#7a5af8}.exec-kpi.result{--accent:#12b76a}.exec-kpi.general{--accent:#679bba}.exec-kpi.profit{--accent:#2ca25f}.exec-kpi.base{--accent:#35506d}
.exec-two-col{display:grid;grid-template-columns:minmax(360px,.9fr) minmax(420px,1.1fr);gap:18px;align-items:stretch;}
.exec-two-col-strong{grid-template-columns:minmax(360px,.85fr) minmax(500px,1.15fr);}
.exec-card{overflow:hidden;}
.exec-total-pill{display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border:1px solid #dce6ef;border-radius:999px;background:#f8fbfd;color:#002750;font-size:13px;font-weight:950;white-space:nowrap;}
.exec-donut-layout{display:grid;grid-template-columns:220px 1fr;gap:22px;align-items:center;}
.exec-donut{width:210px;height:210px;border-radius:50%;display:grid;place-items:center;text-align:center;box-shadow:inset 0 0 0 18px rgba(255,255,255,.82),0 18px 38px rgba(0,39,80,.10);}
.exec-donut span{display:block;color:#002750;font-size:18px;font-weight:950;background:rgba(255,255,255,.86);border-radius:999px;padding:7px 10px;}
.exec-donut small{display:block;color:#66758a;font-size:11px;font-weight:900;margin-top:4px;}
.exec-legend-list,.exec-bar-list{display:grid;gap:12px;}
.exec-legend-list article{position:relative;border:1px solid #dce6ef;border-radius:16px;padding:12px 12px 16px;display:grid;grid-template-columns:14px 1fr;gap:10px;background:#fbfdff;overflow:hidden;}
.exec-legend-list i{width:12px;height:12px;border-radius:50%;margin-top:4px;}
.exec-legend-list strong,.exec-bar-list strong{display:block;color:#002750;font-weight:950;line-height:1.2;}
.exec-legend-list span,.exec-bar-list span{display:block;color:#66758a;font-size:12px;font-weight:850;margin-top:3px;}
.exec-legend-list b{position:absolute;left:0;bottom:0;height:5px;background:linear-gradient(90deg,#002750,#679bba);border-radius:0 999px 999px 0;}
.exec-bar-list article{border:1px solid #dce6ef;border-radius:16px;background:#fbfdff;padding:12px;display:grid;gap:10px;}
.exec-bar-list strong i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;}
.exec-bar-list b{display:block;height:14px;border-radius:999px;background:#eef4f8;overflow:hidden;}
.exec-bar-list b i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#002750,#679bba);min-width:4px;}
.exec-table-wrap{max-height:520px;}
.exec-area-table{min-width:760px;}
.exec-profit-table{min-width:1320px;}
.exec-profit-table th,.exec-profit-table td{white-space:nowrap;vertical-align:middle;}
.exec-profit-table td:first-child{white-space:normal;min-width:260px;}
.exec-profit-table strong{color:#002750;}
@media(max-width:1350px){.exec-kpi-grid{grid-template-columns:repeat(3,minmax(180px,1fr));}.exec-two-col,.exec-two-col-strong{grid-template-columns:1fr;}.executive-filters form{grid-template-columns:repeat(3,minmax(145px,1fr));}}
@media(max-width:780px){.exec-kpi-grid,.executive-filters form{grid-template-columns:1fr;}.exec-donut-layout{grid-template-columns:1fr;}.exec-donut{margin:auto}.exec-kpi strong{white-space:normal;}}

/* Dashboard ejecutivo: visualizaciones limpias de costos, bolsa 70% y rentabilidad */
.exec-donut-clean span{display:none;}
.exec-donut-clean{position:relative;background-color:#eef4f8;}
.exec-donut-clean::after{content:"";position:absolute;inset:34px;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 1px #e2ebf3;}
.exec-donut-clean small{position:relative;z-index:2;color:#002750;font-size:18px;font-weight:950;letter-spacing:.02em;text-transform:uppercase;background:transparent;margin:0;}
.exec-donut-area small{font-size:30px;color:#002750;}
.exec-legend-list em{display:block;color:#7d8ea4;font-style:normal;font-size:11px;font-weight:800;margin-top:2px;}
.exec-legend-area article b{background:var(--bar-color,#002750);}
.exec-heatmap-grid{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:14px;margin-top:8px;}
.exec-heat-tile{position:relative;overflow:hidden;border:1px solid #dce6ef;border-radius:18px;padding:16px;background:linear-gradient(135deg,rgba(18,183,106,calc(var(--heat)/160)) 0%,#ffffff 66%);box-shadow:0 12px 26px rgba(0,39,80,.06);min-height:190px;}
.exec-heat-tile.negative{background:linear-gradient(135deg,rgba(199,0,30,.16) 0%,#ffffff 68%);}
.exec-heat-tile::before{content:"";position:absolute;left:0;right:0;top:0;height:5px;background:linear-gradient(90deg,#12b76a,#002750);opacity:calc(.25 + var(--heat)/140);}
.exec-heat-tile.negative::before{background:#c7001e;opacity:.85;}
.heat-rank{position:absolute;right:12px;top:12px;color:#7d8ea4;font-size:12px;font-weight:950;}
.exec-heat-tile h3{margin:6px 32px 5px 0;color:#002750;font-size:16px;line-height:1.18;}
.exec-heat-tile p{margin:0 0 12px;color:#66758a;font-size:12px;font-weight:850;}
.heat-main{font-size:20px;font-weight:950;margin:6px 0 2px;letter-spacing:-.02em;}
.exec-heat-tile small{display:block;color:#5d6c80;font-size:12px;font-weight:850;margin-bottom:12px;}
.heat-bars{display:grid;gap:8px;margin-top:12px;}
.heat-bars span{display:grid;gap:4px;}
.heat-bars span::before{content:"";display:block;height:8px;border-radius:999px;background:#eef4f8;grid-row:1;}
.heat-bars b{display:block;height:8px;border-radius:999px;background:linear-gradient(90deg,#002750,#679bba);margin-top:-12px;min-width:4px;}
.heat-bars span:nth-child(2) b{background:linear-gradient(90deg,#12b76a,#6fcf97);}
.heat-bars em{color:#7d8ea4;font-size:10px;font-weight:850;font-style:normal;}
.exec-profit-details{margin-top:16px;border:1px solid #dce6ef;border-radius:16px;background:#fbfdff;overflow:hidden;}
.exec-profit-details summary{cursor:pointer;padding:12px 14px;color:#002750;font-weight:950;}
.exec-profit-details .table-wrap{border:0;border-top:1px solid #dce6ef;border-radius:0;}
@media(max-width:1450px){.exec-heatmap-grid{grid-template-columns:repeat(3,minmax(220px,1fr));}}
@media(max-width:980px){.exec-heatmap-grid{grid-template-columns:repeat(2,minmax(220px,1fr));}}
@media(max-width:640px){.exec-heatmap-grid{grid-template-columns:1fr;}}
/* Dashboard ejecutivo: utilidad por area y gastos generales mensuales */
.exec-utility-list{display:grid;gap:14px;}
.exec-utility-list article{border:1px solid #dce6ef;border-radius:18px;background:linear-gradient(180deg,#fff 0%,#f8fbfd 100%);padding:16px;box-shadow:0 12px 24px rgba(0,39,80,.05);overflow:hidden;}
.exec-utility-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:10px;}
.exec-utility-head span{display:flex;align-items:center;gap:9px;color:#002750;font-size:17px;font-weight:950;line-height:1.2;}
.exec-utility-head i{width:12px;height:12px;border-radius:50%;flex:0 0 12px;}
.exec-utility-head strong{font-size:20px;letter-spacing:-.025em;white-space:nowrap;}
.exec-utility-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;color:#5d6c80;font-size:12px;font-weight:900;}
.exec-utility-detail{margin-top:10px;color:#7d8ea4;font-size:12px;font-weight:850;line-height:1.35;}
.exec-utility-list article>b{display:block;height:12px;border-radius:999px;background:#eef4f8;overflow:hidden;margin-top:12px;}
.exec-utility-list article>b em{display:block;height:100%;border-radius:999px;min-width:4px;}
.exec-general-month-grid{display:grid;grid-template-columns:repeat(12,minmax(90px,1fr));gap:10px;align-items:end;}
.exec-general-month-grid article{border:1px solid #dce6ef;border-radius:16px;background:#fbfdff;padding:12px 10px;display:grid;grid-template-rows:auto 150px auto auto;gap:8px;min-height:260px;text-align:center;}
.exec-general-month-grid strong{color:#002750;font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.06em;}
.exec-general-bar{height:150px;border-radius:999px;background:#eef4f8;display:flex;align-items:flex-end;justify-content:center;overflow:hidden;}
.exec-general-bar i{display:block;width:100%;min-height:3px;border-radius:999px 999px 0 0;background:linear-gradient(180deg,#679bba,#002750);}
.exec-general-month-grid b{color:#002750;font-size:13px;line-height:1.15;white-space:nowrap;}
.exec-general-month-grid small{color:#66758a;font-size:10px;font-weight:800;line-height:1.25;text-align:left;}
@media(max-width:1450px){.exec-general-month-grid{grid-template-columns:repeat(6,minmax(120px,1fr));}.exec-general-month-grid article{grid-template-rows:auto 120px auto auto;min-height:230px}.exec-general-bar{height:120px;}}
@media(max-width:780px){.exec-utility-meta{grid-template-columns:1fr}.exec-general-month-grid{grid-template-columns:repeat(2,minmax(130px,1fr));}}

.exec-ranking-list{display:grid;gap:12px;margin-top:8px;}
.exec-ranking-list article{display:grid;grid-template-columns:58px 1fr 270px;gap:14px;align-items:center;border:1px solid #dce6ef;border-radius:18px;padding:14px 16px;background:linear-gradient(180deg,#fff 0%,#f8fbfd 100%);box-shadow:0 10px 24px rgba(0,39,80,.05);}
.exec-ranking-rank{width:42px;height:42px;border-radius:14px;background:#002750;color:#fff;display:grid;place-items:center;font-weight:950;font-size:15px;}
.exec-ranking-main strong{display:block;color:#002750;font-size:15px;line-height:1.2;}
.exec-ranking-main small{display:block;color:#6a7890;font-size:12px;font-weight:850;margin-top:4px;}
.exec-ranking-main b{display:block;height:10px;border-radius:999px;background:#eaf0f6;margin-top:10px;overflow:hidden;}
.exec-ranking-main b i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#12b76a,#002750);}
.exec-ranking-metrics{text-align:right;}
.exec-ranking-metrics span{display:block;font-size:24px;font-weight:950;letter-spacing:-.02em;}
.exec-ranking-metrics small{display:block;color:#5d6c80;font-size:12px;font-weight:850;line-height:1.35;margin-top:6px;}

.exec-bubble-panel{display:grid;gap:12px;}
.exec-bubble-map{position:relative;height:430px;border:1px solid #dce6ef;border-radius:24px;background:
linear-gradient(90deg,rgba(0,39,80,.05) 0,rgba(0,39,80,.05) 1px,transparent 1px,transparent 50%),
linear-gradient(rgba(0,39,80,.05) 0,rgba(0,39,80,.05) 1px,transparent 1px,transparent 50%),
linear-gradient(180deg,#fbfdff 0%,#f5f9fc 100%);
background-size:25% 100%,100% 25%,100% 100%;overflow:hidden;}
.bubble-axis{position:absolute;background:#adc0d1;z-index:1;}
.bubble-axis-x{left:8%;right:8%;top:50%;height:1px;}
.bubble-axis-y{top:8%;bottom:10%;left:50%;width:1px;}
.bubble-quadrant{position:absolute;color:#7c8da5;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;pointer-events:none;background:rgba(255,255,255,.78);padding:4px 8px;border-radius:999px;backdrop-filter:blur(1px);line-height:1.1;z-index:1;}
.bubble-quadrant.q1{top:14px;right:14px;}
.bubble-quadrant.q2{top:14px;left:48px;}
.bubble-quadrant.q3{bottom:38px;left:48px;}
.bubble-quadrant.q4{bottom:38px;right:14px;}
.bubble-label{position:absolute;color:#6a7890;font-size:11px;font-weight:850;pointer-events:none;background:rgba(255,255,255,.9);padding:2px 6px;border-radius:999px;z-index:1;}
.bubble-label-x-left{left:14px;bottom:10px;}.bubble-label-x-right{right:14px;bottom:10px;}
.bubble-label-y-top{left:8px;top:62px;writing-mode:vertical-rl;transform:rotate(180deg);}
.bubble-label-y-bottom{left:8px;bottom:60px;writing-mode:vertical-rl;transform:rotate(180deg);}
.exec-bubble{position:absolute;transform:translate(-50%,-50%);border:3px solid rgba(255,255,255,.95);border-radius:999px;color:#fff;display:grid;place-items:center;font-size:11px;font-weight:950;box-shadow:0 14px 24px rgba(0,39,80,.18);cursor:default;z-index:2;padding:0;}
.exec-bubble span{padding:0 6px;text-align:center;line-height:1.1;mix-blend-mode:normal;}
.exec-bubble-legend{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center;border:1px solid #dce6ef;border-radius:16px;background:#fbfdff;padding:12px 14px;}
.exec-bubble-legend article{display:flex;align-items:center;gap:8px;color:#002750;font-weight:900;}
.exec-bubble-legend i{width:14px;height:14px;border-radius:999px;display:inline-block;}
.exec-bubble-legend p{margin:0;color:#66758a;font-size:12px;font-weight:850;}

@media(max-width:1250px){.exec-ranking-list article{grid-template-columns:52px 1fr;}.exec-ranking-metrics{grid-column:1 / -1;text-align:left;}}
@media(max-width:900px){.exec-bubble-map{height:360px;}.bubble-quadrant,.bubble-label{display:none;}}

/* Ajuste ejecutivo 70/20/10: operación directa + distribución institucional */
.exec-section-label{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;margin:18px 0 10px;}
.exec-section-label h2{margin:0;color:#002750;font-size:20px;line-height:1.15;}
.exec-section-label p{margin:4px 0 0;color:#66758a;font-size:13px;font-weight:800;line-height:1.35;max-width:920px;}
.exec-kpi-grid-operational{grid-template-columns:repeat(4,minmax(190px,1fr));margin-top:10px;}
.exec-institutional-panels{margin:10px 0 18px;}
.exec-institutional-panels .control-flow-real{grid-template-columns:repeat(3,minmax(180px,1fr));}
.exec-institutional-panels .control-flow div{min-height:118px;}
.exec-institutional-panels .control-title strong{font-size:42px;}
@media(max-width:1100px){.exec-kpi-grid-operational{grid-template-columns:repeat(2,minmax(190px,1fr));}.exec-institutional-panels .control-flow-real{grid-template-columns:1fr;}}
@media(max-width:720px){.exec-kpi-grid-operational{grid-template-columns:1fr;}.exec-section-label{align-items:flex-start;}}

/* Menu agrupado y control de acceso */
.grouped-nav{gap:8px;}
.nav-group-title{display:block;margin:18px 12px 6px;color:#7d8ea4;font-size:11px;font-weight:950;letter-spacing:.13em;text-transform:uppercase;}
.side-nav .sub-nav-link{padding-left:28px;font-size:14px;opacity:.95;}
.sidebar-foot a{color:#002750;text-decoration:none;font-weight:900;}
.sidebar-foot a:hover{text-decoration:underline;}
.login-body{min-height:100vh;background:linear-gradient(135deg,#f8fbfd 0%,#eef5fa 100%);display:grid;place-items:center;padding:24px;}
.login-shell{width:min(520px,100%);}
.login-card{background:#fff;border:1px solid #dce6ef;border-radius:28px;padding:28px;box-shadow:0 24px 60px rgba(0,39,80,.12);}
.login-brand{display:flex;align-items:center;gap:16px;margin-bottom:22px;}
.login-brand h1{margin:2px 0 0;color:#002750;font-size:28px;line-height:1.05;}
.login-brand p{margin:4px 0 0;color:#66758a;font-weight:800;}
.stack-form{display:grid;gap:14px;}
.stack-form label{display:grid;gap:7px;color:#4e5e76;font-weight:900;font-size:13px;letter-spacing:.02em;}
.stack-form input,.stack-form select{border:1px solid #d5e0ea;border-radius:14px;padding:12px 14px;font:inherit;color:#002750;background:#fff;font-weight:800;}
.stack-form input:focus,.stack-form select:focus{outline:2px solid rgba(62,171,185,.25);border-color:#3eabb9;}
.inline-check{display:flex!important;align-items:center;gap:10px;}
.inline-check input{width:auto;}
.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:14px;padding:12px 18px;font-weight:950;text-decoration:none;cursor:pointer;}
.btn.primary{background:#002750;color:#fff;}
.alert{border-radius:14px;padding:12px 14px;margin:12px 0;font-weight:850;}
.alert-error{background:#fff1f2;color:#b42318;border:1px solid #fecdd3;}
.alert-ok{background:#ecfdf3;color:#067647;border:1px solid #abefc6;}
.small{font-size:12px;}.muted{color:#66758a;}.role-card{border:1px solid #dce6ef;border-radius:16px;background:#fbfdff;padding:14px;margin:10px 0;}.role-card strong{color:#002750;}.role-card p{margin:6px 0 0;color:#66758a;font-weight:800;line-height:1.35;}.pill.ok{background:#ecfdf3;color:#067647}.pill.muted{background:#eef4f8;color:#66758a}
@media(max-width:1100px){.nav-group-title{margin-top:14px;}}

/* Autocomplete de personas en creación ODS */
.person-autocomplete{position:relative;display:grid;gap:0;}
.person-autocomplete input.person-search{width:100%;}
.person-suggestions{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:30;display:grid;gap:4px;background:#fff;border:1px solid #d5e0ea;border-radius:16px;padding:8px;box-shadow:0 18px 40px rgba(0,39,80,.14);max-height:260px;overflow:auto;}
.person-suggestion-item{appearance:none;border:0;background:#fff;color:#002750;text-align:left;border-radius:12px;padding:10px 12px;font:inherit;font-size:13px;font-weight:850;line-height:1.25;cursor:pointer;}
.person-suggestion-item:hover,.person-suggestion-item:focus{background:#eef7fa;outline:none;}

/* Login estilo VT Flash / DUAM */
.login-body-vt {
  min-height: 100vh;
  margin: 0;
  background:
    radial-gradient(circle at center, rgba(255,255,255,.10) 0%, rgba(255,255,255,0) 34%),
    linear-gradient(135deg, #4f6f8f 0%, #557492 55%, #536f8a 100%);
  display: grid;
  place-items: center;
  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.login-shell-vt {
  width: 100%;
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
  box-sizing: border-box;
}

.login-card-vt {
  width: min(100%, 390px);
  background: rgba(255, 255, 255, .98);
  border: 1px solid rgba(255, 255, 255, .65);
  border-radius: 28px;
  padding: 34px 34px 30px;
  box-shadow: 0 34px 90px rgba(17, 43, 70, .30);
  text-align: center;
}

.login-logo-vt {
  width: 74px;
  height: 74px;
  margin: 0 auto 18px;
  border-radius: 18px;
  background: #fff;
  border: 1px solid #edf1f5;
  display: grid;
  place-items: center;
  box-shadow: 0 10px 24px rgba(15, 35, 60, .08);
}

.login-logo-vt img {
  width: 54px;
  height: 54px;
  object-fit: contain;
}

.login-copy-vt {
  margin-bottom: 22px;
}

.login-eyebrow-vt {
  display: block;
  color: #4c9ac1;
  text-transform: uppercase;
  letter-spacing: .22em;
  font-size: 10px;
  font-weight: 900;
  margin-bottom: 12px;
}

.login-copy-vt h1 {
  margin: 0 0 14px;
  font-size: 26px;
  line-height: 1.1;
  color: #1d2c42;
  letter-spacing: -.04em;
}

.login-copy-vt p {
  margin: 0 auto;
  max-width: 290px;
  color: #71819a;
  font-size: 15px;
  line-height: 1.45;
  font-weight: 600;
}

.google-login-btn-vt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  width: 100%;
  min-height: 52px;
  padding: 8px 12px;
  border: 1px solid #dfe7ef;
  border-radius: 999px;
  background: #fff;
  color: #1f2f46;
  text-decoration: none;
  box-sizing: border-box;
  box-shadow: 0 8px 18px rgba(17, 43, 70, .08);
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}

.google-login-btn-vt:hover {
  transform: translateY(-1px);
  border-color: #b9d4e6;
  box-shadow: 0 14px 28px rgba(17, 43, 70, .13);
}

.google-user-vt {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  text-align: left;
}

.google-avatar-vt {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: linear-gradient(135deg, #e9eef5, #ffffff);
  color: #1d2c42;
  display: grid;
  place-items: center;
  font-size: 13px;
  font-weight: 900;
  border: 1px solid #dbe4ee;
  flex: 0 0 auto;
}

.google-user-vt strong {
  display: block;
  font-size: 12px;
  line-height: 1.1;
  color: #1f2f46;
}

.google-user-vt small {
  display: block;
  margin-top: 2px;
  font-size: 11px;
  line-height: 1.1;
  color: #708196;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 230px;
}

.google-g-vt {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-weight: 900;
  font-size: 18px;
  color: #4285f4;
  flex: 0 0 auto;
}

.login-help-vt {
  margin: 14px 0 0;
  color: #7d8ca2;
  font-size: 12px;
  font-weight: 700;
}

.login-error-vt {
  margin: 0 0 16px;
  padding: 11px 12px;
  border-radius: 14px;
  background: #fff2f2;
  border: 1px solid #ffd2d2;
  color: #a33333;
  font-size: 12px;
  font-weight: 800;
  text-align: left;
}

.local-login-vt {
  margin-top: 18px;
  text-align: left;
}

.local-login-vt summary {
  cursor: pointer;
  color: #7d8ca2;
  font-size: 12px;
  font-weight: 800;
  text-align: center;
  list-style: none;
}

.local-login-vt summary::-webkit-details-marker {
  display: none;
}

.local-form-vt {
  margin-top: 16px;
}

@media (max-width: 520px) {
  .login-card-vt {
    padding: 28px 22px 24px;
    border-radius: 24px;
  }

  .login-copy-vt h1 {
    font-size: 23px;
  }

  .google-user-vt small {
    max-width: 180px;
  }
}
