*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--rojo:#D22B2B;--rojo-l:#FAECE7;--rojo-b:#F09595;--verde:#3B6D11;--verde-l:#EAF3DE;--verde-b:#C0DD97;--amber:#854F0B;--amber-l:#FAEEDA;--amber-b:#FAC775;--blue:#185FA5;--blue-l:#E6F1FB;--g50:#F7F7F5;--g100:#EFEFEC;--g200:#DDDDD8;--g400:#9A9A94;--text:#1C1C1A;--text2:#666660;--border:#E0E0DA;--white:#FFFFFF;--r:10px;--rsm:6px;--shadow:0 1px 3px rgba(0,0,0,0.07);--shadow-md:0 4px 16px rgba(0,0,0,0.10)}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;background:var(--g50);color:var(--text);font-size:14px;line-height:1.6;min-height:100vh}

/* AUTH / ACCESS DENIED */
.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center}
.auth-card{background:var(--white);border:1px solid var(--border);border-radius:var(--r);padding:2.5rem;text-align:center;max-width:380px;width:100%;margin:1rem;box-shadow:var(--shadow)}
.auth-logo{width:48px;height:48px;background:var(--rojo);border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;font-weight:700;margin:0 auto 1.25rem}
.auth-card h1{font-size:20px;font-weight:700;margin-bottom:6px}
.auth-card p{font-size:13px;color:var(--text2);margin-bottom:1.5rem;line-height:1.5}
.auth-btn{width:100%;background:var(--rojo);color:#fff;border:none;border-radius:var(--rsm);padding:12px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:opacity .15s;display:flex;align-items:center;justify-content:center;gap:8px}
.auth-btn:hover{opacity:.9}.auth-btn:disabled{opacity:.5;cursor:not-allowed}
.auth-error{background:var(--rojo-l);color:var(--rojo);border-radius:var(--rsm);padding:10px;font-size:12px;margin-top:12px;display:none}

/* NAV */
.nav{background:var(--white);border-bottom:1px solid var(--border);padding:0 2rem;display:flex;align-items:center;gap:14px;height:52px;position:sticky;top:0;z-index:200;box-shadow:var(--shadow)}
.nav-icon{width:28px;height:28px;background:var(--rojo);border-radius:6px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700}
.nav-title{font-size:14px;font-weight:600}
.nav-badge{font-size:10px;font-weight:600;background:var(--rojo-l);color:var(--rojo);padding:2px 9px;border-radius:10px}
.nav-right{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:12px}
.nav-user{font-weight:500}
.nav-period{color:var(--text2)}
.nav-reload{background:var(--g100);border:none;border-radius:var(--rsm);padding:5px 12px;font-size:12px;cursor:pointer;font-family:inherit;transition:background .15s}
.nav-reload:hover{background:var(--g200)}
.nav-logout{color:var(--text2);cursor:pointer;text-decoration:underline}

/* LAYOUT */
.layout{display:flex;min-height:calc(100vh - 52px)}

/* SIDEBAR */
.sidebar{width:200px;flex-shrink:0;background:var(--white);border-right:1px solid var(--border);padding:1.25rem 0;position:sticky;top:52px;height:calc(100vh - 52px);overflow-y:auto}
.sb-section{font-size:10px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.08em;padding:0 1.25rem;margin:1rem 0 .5rem}
.sb-item{display:flex;align-items:center;gap:8px;padding:7px 1.25rem;font-size:13px;font-weight:500;color:var(--text2);cursor:pointer;border-left:2px solid transparent;transition:all .12s;border:none;background:none;width:100%;text-align:left}
.sb-item:hover{background:var(--g50);color:var(--text)}
.sb-item.active{color:var(--rojo);border-left:2px solid var(--rojo);background:var(--rojo-l);font-weight:600}
.sb-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}

/* CONTENT */
.content{flex:1;padding:2rem;overflow-x:hidden;max-width:1060px}

/* VIEWS */
.view{display:none}.view.active{display:block}
.view-head{margin-bottom:1.5rem}
.view-head h2{font-size:18px;font-weight:700;margin-bottom:3px}
.view-head p{font-size:13px;color:var(--text2)}

/* LOADING */
.loading-state{text-align:center;padding:4rem;color:var(--text2);font-size:13px}
.loading-spinner{width:32px;height:32px;border:3px solid var(--g200);border-top-color:var(--rojo);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 1rem}
@keyframes spin{to{transform:rotate(360deg)}}
.error-state{background:var(--rojo-l);border-left:3px solid var(--rojo);border-radius:var(--rsm);padding:14px;font-size:13px;color:var(--rojo);margin-bottom:1.5rem;display:none}

/* KPI */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:1.5rem}
.kpi{background:var(--white);border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;box-shadow:var(--shadow)}
.kpi-lbl{font-size:11px;color:var(--text2);margin-bottom:3px}
.kpi-val{font-size:26px;font-weight:700;line-height:1}
.kpi-sub{font-size:11px;color:var(--text2);margin-top:3px}
.kpi-delta{font-size:11px;font-weight:600;margin-top:4px}
.up{color:var(--verde)}.down{color:var(--rojo)}.warn{color:var(--amber)}

/* CARD */
.card{background:var(--white);border:1px solid var(--border);border-radius:var(--r);padding:18px 20px;box-shadow:var(--shadow);margin-bottom:14px}
.card-title{font-size:13px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}
.card-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;background:var(--g100);color:var(--text2)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* DISTRIB */
.distrib{display:flex;flex-direction:column;gap:9px}
.distrib-row{display:flex;flex-direction:column;gap:3px}
.distrib-lbl{display:flex;justify-content:space-between;font-size:12px}
.distrib-bar-wrap{height:10px;background:var(--g100);border-radius:5px;overflow:hidden}
.distrib-bar{height:100%;border-radius:5px;transition:width .5s ease}

/* FRICTION MAP */
.fmap{display:flex;flex-direction:column;gap:7px}
.fmap-row{display:flex;align-items:center;gap:10px}
.fmap-lbl{width:180px;flex-shrink:0;font-size:12px;font-weight:500}
.fmap-bar-wrap{flex:1;height:18px;background:var(--g100);border-radius:4px;overflow:hidden}
.fmap-bar{height:100%;border-radius:4px;transition:width .5s ease}
.fmap-bar.bad{background:var(--rojo-l);border:1px solid var(--rojo-b)}
.fmap-bar.warn{background:var(--amber-l);border:1px solid var(--amber-b)}
.fmap-bar.ok{background:var(--verde-l);border:1px solid var(--verde-b)}
.fmap-pct{font-size:11px;font-weight:700;min-width:32px;text-align:right}
.pct-bad{color:var(--rojo)}.pct-warn{color:var(--amber)}.pct-ok{color:var(--verde)}

/* COMP RANK */
.crank{display:flex;flex-direction:column;gap:7px}
.crank-row{display:flex;align-items:center;gap:8px}
.crank-name{flex:1;font-size:12px}
.crank-bar-wrap{width:100px;height:7px;background:var(--g100);border-radius:4px;overflow:hidden}
.crank-bar{height:100%;border-radius:4px;transition:width .5s ease}
.crank-bar.fort{background:var(--verde)}.crank-bar.mej{background:var(--rojo)}
.crank-n{font-size:11px;font-weight:700;min-width:24px;text-align:right}

/* ALERT */
.alert{border-radius:var(--rsm);padding:10px 14px;font-size:12px;line-height:1.6;margin-top:12px}
.alert-warn{background:var(--amber-l);color:var(--amber);border-left:3px solid var(--amber)}
.alert-info{background:var(--blue-l);color:var(--blue);border-left:3px solid var(--blue)}

/* LEGEND */
.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px}
.legend-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text2)}
.legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}

/* AREA TABS */
.area-tabs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:1.25rem}
.area-tab{border:1px solid var(--border);border-radius:20px;padding:5px 14px;font-size:12px;font-weight:500;cursor:pointer;background:var(--white);color:var(--text2);transition:all .12s;font-family:inherit}
.area-tab:hover{border-color:var(--g400);color:var(--text)}
.area-tab.active{background:var(--rojo);border-color:var(--rojo);color:#fff}

/* TABLA PERSONAS */
.ptable-wrap{overflow-x:auto}
.ptable{width:100%;border-collapse:collapse;font-size:13px;min-width:700px}
.ptable th{text-align:left;font-size:11px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.06em;padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap}
.ptable td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
.ptable tr:last-child td{border-bottom:none}
.ptable tbody tr{cursor:pointer;transition:background .1s}
.ptable tbody tr:hover{background:var(--g50)}
.ptable tbody tr.selected{background:var(--rojo-l)}

/* FILTER BAR */
.filter-bar{display:flex;gap:8px;align-items:center;margin-bottom:1.25rem;flex-wrap:wrap}
.filter-bar select,.filter-bar input{border:1px solid var(--border);border-radius:var(--rsm);padding:6px 10px;font-size:13px;color:var(--text);background:var(--white);outline:none;font-family:inherit}
.filter-bar select:focus,.filter-bar input:focus{border-color:var(--rojo)}
.filter-lbl{font-size:12px;color:var(--text2);font-weight:500}
.filter-count{font-size:12px;color:var(--text2);margin-left:auto}

/* PILLS */
.pill{display:inline-block;font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;white-space:nowrap}
.pill-dev{background:var(--rojo-l);color:var(--rojo)}
.pill-cumple{background:var(--amber-l);color:var(--amber)}
.pill-destaca{background:var(--verde-l);color:var(--verde)}
.pill-alta{background:var(--rojo-l);color:var(--rojo)}
.pill-media{background:var(--amber-l);color:var(--amber)}
.pill-sin{background:var(--g100);color:var(--text2)}
.pill-null{background:var(--g100);color:var(--g400)}
.score-chip{font-size:15px;font-weight:700}
.score-high{color:var(--verde)}.score-mid{color:var(--amber)}.score-low{color:var(--rojo)}

/* DETAIL PANEL */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,0.18);z-index:300;display:none}
.overlay.open{display:block}
.detail-panel{position:fixed;right:0;top:52px;bottom:0;width:420px;background:var(--white);border-left:1px solid var(--border);box-shadow:var(--shadow-md);z-index:310;transform:translateX(100%);transition:transform .25s ease;overflow-y:auto;display:flex;flex-direction:column}
.detail-panel.open{transform:translateX(0)}
.dp-header{padding:18px 20px 14px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.dp-name{font-size:16px;font-weight:700;margin-bottom:3px}
.dp-meta{font-size:12px;color:var(--text2)}
.dp-close{border:none;background:none;cursor:pointer;font-size:18px;color:var(--text2);padding:4px;line-height:1;flex-shrink:0}
.dp-close:hover{color:var(--text)}
.dp-body{padding:18px 20px;flex:1}
.dp-section{font-size:10px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.08em;margin:1.25rem 0 .625rem}
.dp-section:first-child{margin-top:0}
.dp-levels{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.dp-level-box{border-radius:var(--rsm);padding:10px 12px}
.dp-level-lbl{font-size:10px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}
.dp-level-val{font-size:13px;font-weight:600}
.dp-score{font-size:42px;font-weight:700;line-height:1}
.dp-tags{display:flex;flex-wrap:wrap;gap:5px}
.dp-tag{font-size:11px;padding:3px 9px;border-radius:10px}
.dp-tag-fort{background:var(--verde-l);color:var(--verde)}
.dp-tag-mej{background:var(--rojo-l);color:var(--rojo)}
.dp-comment{background:var(--g50);border:1px solid var(--border);border-radius:var(--rsm);padding:12px 14px;font-size:13px;color:var(--text2);line-height:1.6;font-style:italic}
.dp-necesidad{background:var(--blue-l);color:var(--blue);font-size:12px;padding:8px 12px;border-radius:var(--rsm)}
.dp-friction-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;padding:5px 10px;border-radius:var(--rsm)}
.fr-ok{background:var(--verde-l);color:var(--verde)}
.fr-med{background:var(--amber-l);color:var(--amber)}
.fr-bad{background:var(--rojo-l);color:var(--rojo)}

@media(max-width:900px){.sidebar{display:none}.kpi-grid{grid-template-columns:1fr 1fr}.grid2{grid-template-columns:1fr}.detail-panel{width:100%}}
