:root{
  --bg:#eef2f7;
  --panel:#ffffff;
  --panel-2:#f7f9fc;
  --ink:#11162c;
  --text:#263248;
  --muted:#6b778c;
  --line:#dbe3ed;
  --navy:#11162c;
  --primary:#253e7f;
  --teal:#3991a6;
  --orange:#ed6a22;
  --danger:#c73939;
  --danger-soft:#fff0f0;
  --success:#27784d;
  --success-soft:#eaf7ef;
  --warning:#b56b11;
  --warning-soft:#fff5e6;
  --shadow:0 8px 24px rgba(17,22,44,.06);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
body{min-width:320px}
button,input,select,textarea{font:inherit}
.topbar{
  height:62px;background:var(--navy);color:#fff;display:flex;align-items:center;gap:20px;
  padding:0 22px;position:sticky;top:0;z-index:20;border-bottom:2px solid rgba(237,106,34,.75)
}
.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;min-width:248px}
.brand-mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--teal));display:grid;place-items:center;font-weight:900}
.brand-copy{display:flex;flex-direction:column;line-height:1.05}.brand-copy strong{font-size:13px;letter-spacing:.01em}.brand-copy small{font-size:9px;color:#aab6cc;text-transform:uppercase;letter-spacing:.12em;margin-top:4px}
.topbar nav{display:flex;align-items:center;gap:4px;flex:1;min-width:0;overflow:hidden}
.nav-link{color:#cfd8e9;text-decoration:none;padding:8px 10px;border-radius:8px;font-size:12px;white-space:nowrap;transition:.18s}
.nav-link:hover{background:rgba(255,255,255,.08);color:#fff}
.topbar-right{display:flex;align-items:center;gap:10px;white-space:nowrap}
.clock-block{display:flex;flex-direction:column;align-items:flex-end;line-height:1}.clock-block strong{font-size:14px;letter-spacing:.04em}.clock-block small{font-size:9px;color:#8fa0bb;margin-top:4px}
.live-pill{font-size:10px;font-weight:800;letter-spacing:.06em;border:1px solid rgba(92,211,148,.35);background:rgba(92,211,148,.10);padding:7px 9px;border-radius:999px}
.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#5cd394;margin-right:5px;box-shadow:0 0 0 4px rgba(92,211,148,.09)}
.present-btn{border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);color:#e9eef8;border-radius:9px;padding:7px 10px;cursor:pointer;font-size:11px}
.present-btn:hover{background:rgba(255,255,255,.1)}
.container{max-width:1800px;margin:0 auto;padding:22px 24px 28px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:18px}
.compact-head{margin-bottom:12px}
.eyebrow{font-size:10px;letter-spacing:.16em;color:var(--teal);font-weight:900;margin:0 0 5px;text-transform:uppercase}
.page-head h1{font-size:27px;line-height:1.1;margin:0 0 5px;color:var(--ink);letter-spacing:-.02em}
.muted,.page-head p.muted{color:var(--muted);margin:0;font-size:12px}
.head-meta{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:11px;color:var(--muted)}.head-meta strong{font-size:12px;color:var(--text)}
.head-tools{display:flex;align-items:center;gap:12px}
.kpi-grid{display:grid;gap:10px;margin-bottom:12px}
.executive-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
.kpi-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px 14px;box-shadow:var(--shadow);position:relative;overflow:hidden;min-width:0}
.kpi::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:#cbd5e2}
.kpi.danger::before{background:var(--danger)}.kpi.success::before{background:var(--success)}.kpi.warning::before{background:var(--warning)}.kpi.decision::before{background:var(--primary)}
.kpi span{display:block;color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi strong{display:block;font-size:25px;color:var(--ink);margin-top:4px;line-height:1}.kpi small{display:block;color:var(--muted);font-size:10px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;min-width:0;min-height:0}
.panel-head{height:55px;padding:10px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px;background:linear-gradient(180deg,#fff,#fbfcfe)}
.panel-head h2{margin:0;color:var(--ink);font-size:14px;line-height:1.15}.panel-head p{margin:3px 0 0;color:var(--muted);font-size:10px}
.pager-dot{color:#738096;font-size:10px;font-weight:800;white-space:nowrap}
.executive-stage{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:10px;min-height:0;flex:1}
.stage-panel{display:flex;flex-direction:column}.stage-panel .stack-list{flex:1;min-height:0}
.stack-list{padding:0 14px}
.stack-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #edf1f6;min-height:54px}.stack-item:last-child{border-bottom:0}
.stack-item strong,.stack-item small{display:block}.stack-item strong{font-size:12px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.stack-item small{font-size:10px;color:var(--muted);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stack-main{min-width:0;flex:1}.stack-metrics{display:flex;align-items:center;gap:8px;flex:none}.metric-chip{font-size:10px;font-weight:800;color:var(--text);background:#f0f4f8;padding:5px 7px;border-radius:8px;white-space:nowrap}
.traffic{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}.traffic.red{background:var(--danger)}.traffic.amber{background:#d9902f}.traffic.green{background:#319565}
.risk{font-size:9px;font-weight:900;border-radius:999px;padding:5px 7px;white-space:nowrap}.risk-ALTO{background:#fdecec;color:#b42d2d}.risk-MEDIO{background:#fff3df;color:#9b5b0d}.risk-BAJO{background:#e9f6ee;color:#247a4a}
.decision-card{padding:9px 0;border-bottom:1px solid #edf1f6;min-height:54px}.decision-card:last-child{border-bottom:0}.decision-card strong{font-size:12px;color:var(--ink)}.decision-card p{font-size:10px;margin:3px 0;color:#3d4960;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.decision-card small{font-size:9px;color:var(--muted)}
.card-row{display:flex;justify-content:space-between;gap:10px;align-items:center;min-width:0}.card-row>*{min-width:0}
.board-score{display:grid;grid-template-columns:auto 1.4fr repeat(4,minmax(100px,.5fr));align-items:center;gap:16px;background:var(--navy);color:#fff;border-radius:16px;padding:12px 18px;margin-bottom:10px;min-height:108px;box-shadow:0 12px 28px rgba(17,22,44,.14)}
.score-ring{width:72px;height:72px;border:6px solid var(--teal);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column}.score-ring strong{font-size:23px;line-height:1}.score-ring span{font-size:9px;color:#cbd4e5}.board-score h2{margin:0 0 3px;font-size:20px}.board-score p{margin:0;color:#c7d1e2;font-size:10px}.board-metric{border-left:1px solid rgba(255,255,255,.12);padding-left:14px}.board-metric span{display:block;font-size:9px;color:#9eabc0;text-transform:uppercase}.board-metric strong{display:block;font-size:20px;margin-top:3px}
.board-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;min-height:0;flex:1}.tv-board-grid{grid-template-rows:1fr .78fr}.full-span{grid-column:1/-1}.board-area-panel{display:flex;flex-direction:column}.board-area-panel .board-areas{flex:1}
.board-areas{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:10px 12px;min-height:0}.area-card{border:1px solid var(--line);border-radius:10px;padding:9px 10px;min-width:0}.area-card strong{font-size:11px;color:var(--ink)}.area-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:8px}.area-metrics span{font-size:8px;color:var(--muted)}.area-metrics b{display:block;color:var(--ink);font-size:14px}
.tower-kpis{margin-bottom:10px}.tower-panel{display:flex;flex-direction:column;flex:1;min-height:0}.tower-panel .table-wrap{flex:1;min-height:0}
.table-wrap{overflow:auto}.table-wrap.no-scroll{overflow:hidden}
table{width:100%;border-collapse:collapse;min-width:1020px}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid #edf1f6;vertical-align:middle}th{font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:#718097;background:#f8fafc;position:sticky;top:0;z-index:1}td{font-size:11px}.tower-table td{padding:9px 11px}.tower-table tbody tr{height:61px}
.activity-title{font-weight:800;color:var(--ink);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.activity-sub{font-size:9px;color:var(--muted);margin-top:3px}
.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 7px;font-size:9px;font-weight:800}.status-EN_PROGRESO{background:#e6f5f8;color:#176a7a}.status-PENDIENTE{background:#eef1f5;color:#516074}.status-PAUSADA{background:#fff1e8;color:#a74912}.status-COMPLETADA{background:#e9f6ee;color:#247a4a}
.priority-BAJA{color:#586777}.priority-MEDIA{color:#176a7a}.priority-ALTA{color:#a95d16}.priority-CRITICA{color:#b42d2d;font-weight:900}.critical-tag{font-size:8px;color:#b42d2d;background:#fdecec;padding:3px 5px;border-radius:999px;font-weight:900}.delay{color:var(--danger);font-weight:800}.on-time{color:var(--success);font-weight:700}
.progress-block{min-width:110px}.progress-label{display:flex;align-items:center;justify-content:space-between;gap:7px;font-size:8px;color:var(--muted);margin-bottom:3px}.progress-label b{font-size:9px;color:var(--text)}
.progress{height:6px;background:#e8edf4;border-radius:999px;overflow:hidden;position:relative}.progress i{display:block;height:100%;border-radius:999px;background:var(--teal)}.progress.actual i{background:var(--primary)}.progress.delay-track{background:#f7dede}.progress.delay-track i{background:var(--danger)}
.progress-mini{width:95px}.delay-block{min-width:118px}.delay-block .delay-caption{font-size:8px;color:var(--muted);margin-top:3px;display:flex;justify-content:space-between}.delay-block .delay-caption strong{color:var(--danger)}
.exception-text{max-width:320px;font-size:9px;line-height:1.35;color:#49566c}.exception-text b{color:var(--ink)}
.filters,.table-tools{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.search{max-width:300px}
select,input,textarea{width:100%;border:1px solid #ccd6e3;border-radius:9px;padding:9px 10px;background:#fff;color:var(--ink);outline:none}select:focus,input:focus,textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(57,145,166,.11)}select{min-width:150px}.head-tools select{width:auto;font-size:11px;padding:7px 9px}
.btn{border:1px solid #cbd5e1;background:#fff;color:var(--ink);border-radius:9px;padding:9px 13px;font-weight:800;font-size:11px;cursor:pointer}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.danger{color:#b42d2d}.btn:disabled{opacity:.55}.actions{display:flex;gap:6px}.icon-btn{border:0;background:transparent;font-size:24px;cursor:pointer;color:var(--muted)}
dialog{width:min(820px,calc(100% - 28px));border:0;border-radius:16px;padding:0;box-shadow:0 24px 70px rgba(17,22,44,.25)}dialog::backdrop{background:rgba(17,22,44,.56)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:20px}.form-grid label{font-size:11px;font-weight:800;color:#536178;display:grid;gap:5px}.field-help{font-size:9px;color:var(--muted);font-weight:500}.full{grid-column:1/-1}.checkline{display:flex!important;grid-auto-flow:column;justify-content:start;align-items:center;gap:7px!important}.checkline input{width:auto}.dialog-head{grid-column:1/-1;display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:12px}.dialog-head h2{margin:0;color:var(--ink)}.form-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:6px}
.toast{position:fixed;right:16px;bottom:16px;background:var(--navy);color:white;padding:10px 14px;border-radius:10px;box-shadow:var(--shadow);opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s;z-index:50;font-size:11px}.toast.show{opacity:1;transform:translateY(0)}.empty{color:var(--muted);padding:20px;text-align:center;font-size:11px}
.kanban-board{display:grid;grid-template-columns:repeat(4,minmax(245px,1fr));gap:10px;overflow:auto;padding-bottom:4px}.kanban-column{background:#e8edf4;border:1px solid #d4dde8;border-radius:14px;min-height:calc(100vh - 150px);padding:10px}.kanban-column.dragover{outline:2px dashed var(--teal)}.kanban-column header{display:flex;justify-content:space-between;align-items:center;padding:3px 3px 9px}.kanban-column header h2{font-size:12px;margin:0;color:var(--ink)}.kanban-column header span{background:#fff;border:1px solid #dbe3ed;border-radius:999px;padding:3px 7px;font-size:9px}.kanban-drop{display:grid;gap:8px}.kanban-card{background:#fff;border:1px solid #dce4ee;border-radius:11px;padding:10px;box-shadow:0 3px 10px rgba(17,22,44,.045);cursor:grab;min-width:0}.kanban-card.late{border-left:4px solid var(--danger)}.kanban-card h3{font-size:11px;margin:7px 0 4px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kanban-card p{font-size:9px;color:var(--muted);margin:0 0 8px}.kanban-meta{display:flex;justify-content:space-between;gap:7px;font-size:8px;color:var(--muted);margin-top:7px}.mini-alert{font-size:8px;background:#fff3df;color:#855114;padding:6px;border-radius:7px;margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kanban-page-note{font-size:8px;color:var(--muted);text-align:center;padding-top:8px}
.gantt-legend{padding:10px 14px;border-bottom:1px solid var(--line);display:flex;gap:16px;font-size:9px;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:4px}.dot.planned{background:#9dc8d2}.dot.actual{background:var(--primary)}.dot.delayed{background:var(--danger)}.dot.complete{background:var(--success)}
.gantt-wrap{padding:12px 14px;min-width:900px;overflow:hidden}.gantt-scale{margin-left:250px;display:flex;justify-content:space-between;color:var(--muted);font-size:9px;margin-bottom:8px}.gantt-row{display:grid;grid-template-columns:240px 1fr;gap:10px;align-items:center;min-height:48px;border-top:1px solid #edf1f6}.gantt-label{min-width:0}.gantt-label strong,.gantt-label small{display:block}.gantt-label strong{font-size:10px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-label small{font-size:8px;color:var(--muted);margin-top:3px}.gantt-track{height:26px;background:repeating-linear-gradient(90deg,#f8fafc,#f8fafc 24.6%,#e4eaf1 25%,#f8fafc 25.4%);border-radius:6px;position:relative;overflow:visible}.gantt-plan{height:12px;top:7px;position:absolute;border-radius:4px;background:#9dc8d2;opacity:.75}.gantt-actual{height:6px;top:10px;position:absolute;border-radius:3px;background:var(--primary);z-index:2}.gantt-delay{height:12px;top:7px;position:absolute;border-radius:0 4px 4px 0;background:var(--danger);z-index:2;min-width:2px}.gantt-complete{height:6px;top:10px;position:absolute;border-radius:3px;background:var(--success);z-index:3}.today-marker{position:absolute;top:-4px;bottom:-4px;border-left:2px solid var(--navy);opacity:.36;z-index:4}
.workspace-page .container{max-width:1760px}.workspace-page .page-head{margin-top:2px}
.tv-dashboard{height:100vh;overflow:hidden}.tv-dashboard .topbar{position:relative}.tv-dashboard .screen-fit{height:calc(100vh - 62px);display:flex;flex-direction:column;padding-top:14px;padding-bottom:14px;overflow:hidden}
.presentation-mode .topbar nav{display:none}.presentation-mode .brand{min-width:auto}.presentation-mode .brand-copy small{display:none}.presentation-mode .present-btn span{display:none}.presentation-mode .topbar{height:52px}.presentation-mode.tv-dashboard .screen-fit{height:calc(100vh - 52px)}
body:fullscreen .topbar nav{display:none}body:fullscreen .topbar{height:52px}body:fullscreen.tv-dashboard .screen-fit{height:calc(100vh - 52px)}
@media(max-height:820px){.tv-dashboard .screen-fit{padding-top:10px;padding-bottom:10px}.compact-head{margin-bottom:8px}.page-head h1{font-size:23px}.kpi{padding:9px 11px}.kpi strong{font-size:21px}.panel-head{height:48px;padding:8px 11px}.stack-item{padding:7px 0;min-height:46px}.decision-card{padding:7px 0;min-height:46px}.board-score{min-height:86px;padding:9px 14px}.score-ring{width:60px;height:60px}.score-ring strong{font-size:20px}.tower-table tbody tr{height:52px}.tower-table td{padding:7px 9px}}
@media(max-width:1280px){.executive-kpis{grid-template-columns:repeat(3,1fr)}.tv-dashboard{overflow:auto;height:auto}.tv-dashboard .screen-fit{height:auto;overflow:visible}.executive-stage{grid-template-rows:auto;}.board-score{grid-template-columns:auto 1fr repeat(2,minmax(100px,.5fr))}.board-areas{grid-template-columns:repeat(2,1fr)}.kanban-board{grid-template-columns:repeat(4,280px)}}
@media(max-width:900px){.topbar{height:auto;min-height:62px;flex-wrap:wrap;padding:9px 14px}.brand{min-width:auto}.topbar nav{order:3;width:100%;overflow:auto}.topbar-right{margin-left:auto}.clock-block{display:none}.container{padding:16px}.page-head{align-items:flex-start;flex-direction:column}.executive-stage,.board-grid{grid-template-columns:1fr}.executive-kpis,.kpi-grid.four{grid-template-columns:repeat(2,1fr)}.board-score{grid-template-columns:auto 1fr}.board-metric{display:none}.full-span{grid-column:auto}.board-areas{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.full{grid-column:auto}.head-tools{width:100%;justify-content:space-between}.tv-dashboard{overflow:auto;height:auto}.tv-dashboard .screen-fit{height:auto}}
@media(max-width:520px){.executive-kpis,.kpi-grid.four{grid-template-columns:1fr}.present-btn{display:none}.live-pill{display:none}.page-head h1{font-size:23px}.board-score{grid-template-columns:1fr}.score-ring{display:none}}

/* V3.1 atraso ejecutivo */
.delay-kpi{position:relative}.kpi-delay-meter{height:7px;background:#f7dede;border-radius:999px;overflow:hidden;margin:5px 0 3px}.kpi-delay-meter i{display:block;height:100%;background:var(--danger);border-radius:999px;transition:width .35s ease}.delay-kpi small+small{margin-top:1px}.executive-risk-item{align-items:flex-start}.executive-risk-item .stack-main{flex:1;min-width:0}.stack-delay{margin-top:6px;max-width:260px}.stack-delay .delay-block{min-width:0}.stack-delay .progress-label,.stack-delay .delay-caption{font-size:7px}.stack-delay .progress{height:5px}.board-metric small{display:block;font-size:8px;color:var(--muted);margin-top:2px}.kanban-card .delay-block{margin-top:2px}

/* V3.3 hitos temporales completos */
.timing-cell{display:grid;gap:3px;min-width:210px}.timing-cell>div{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.timing-cell b{font-size:8px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);white-space:nowrap}.timing-cell span{font-size:9px;color:var(--ink);font-weight:700;text-align:right;white-space:nowrap}.executive-risk-item .stack-main small,.decision-card small{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.3}.kanban-card .activity-sub{line-height:1.35}.gantt-label small{line-height:1.3}.tower-table .activity-sub{line-height:1.25}
@media(max-height:820px){.timing-cell{gap:2px}.timing-cell b{font-size:7px}.timing-cell span{font-size:8px}.executive-risk-item .stack-main small,.decision-card small{font-size:8px;line-height:1.2}}
