:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#19363c;background:#f4f7f6;font-synthesis:none;text-rendering:optimizeLegibility;--ink:#19363c;--muted:#6a7d80;--line:#e1e9e7;--teal:#176a67;--teal-dark:#123b46;--mint:#e5f3ef;--amber:#fff5df;--red:#a33835;--shadow:0 12px 32px #153d3d0c}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:grid;grid-template-columns:250px minmax(0,1fr)}.sidebar{background:var(--teal-dark);color:#f2f8f7;padding:26px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;font-weight:700;letter-spacing:.01em;padding:0 7px 30px}.brand small{display:block;color:#a9c6c4;font-size:11px;font-weight:400;margin-top:4px}.brand-mark{width:42px;height:42px;border-radius:14px;background:#ccece3;color:#13514f;display:grid;place-items:center;font-weight:800;font-size:14px;letter-spacing:-.04em}.sidebar nav{display:grid;gap:5px}.nav-item{background:transparent;border:0;border-radius:9px;color:#c2d7d5;text-align:left;padding:12px 14px;font-size:14px}.nav-item:hover,.nav-item.active{background:#ffffff18;color:white}.sidebar-foot{margin-top:auto;border-top:1px solid #ffffff20;padding:20px 6px 0;color:#d5e5e3;font-size:12px;line-height:1.9}.sidebar-foot small{color:#93b1b0}.secure-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#70d3ad;margin-right:8px}.workspace{min-width:0;padding:0 38px 24px}.topbar{min-height:122px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:18px}.topbar h1{font-size:28px;line-height:1.15;margin:7px 0 0;letter-spacing:-.035em}.eyebrow{font-size:10px;letter-spacing:.13em;color:var(--teal);font-weight:750;margin:0}.user-menu{display:flex;align-items:center;gap:16px;color:#425b60;font-size:13px}.content{padding:28px 0 36px;max-width:1440px;margin:auto}.workspace footer{border-top:1px solid var(--line);padding-top:18px;color:#869496;font-size:11px}.page-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}.page-intro h2{font-size:22px;margin:0 0 5px;letter-spacing:-.03em}.muted{color:var(--muted);font-size:13px;margin:0;line-height:1.6}.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.primary,.secondary,.quiet,.danger{border:0;border-radius:8px;padding:10px 15px;font-weight:650;font-size:13px}.primary{background:var(--teal);color:white}.primary:hover{background:#105653}.secondary{background:#e6f2ef;color:#145a56}.quiet{background:transparent;color:#496267;padding:8px 10px}.quiet:hover{background:#edf3f2}.danger{background:#fff0ee;color:var(--red)}.card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:22px}.card,.panel{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.metric{padding:18px 19px}.metric-label{font-size:12px;color:var(--muted);margin-bottom:15px}.metric-value{font-size:29px;font-weight:730;letter-spacing:-.05em}.metric-note{font-size:11px;color:#7f9091;margin-top:5px}.panel{padding:21px;margin-bottom:16px}.panel h2,.panel h3{margin:0 0 16px;font-size:16px;letter-spacing:-.02em}.section-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:15px}.section-heading h2{margin:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:#758689;font-size:11px;font-weight:650;padding:11px 12px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:13px 12px;border-bottom:1px solid #edf1f0;vertical-align:middle}tbody tr:last-child td{border-bottom:0}.person-name{font-weight:650;color:#233e43}.subtext{font-size:11px;color:#7e8e90;margin-top:3px}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;background:#edf3f2;color:#4c6466;font-size:11px}.pill.good{background:#e5f4ed;color:#26704f}.pill.warn{background:var(--amber);color:#89651f}.pill.off{background:#f1f2f1;color:#778282}.filter-row{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.filter-row input,.filter-row select{width:auto;min-width:150px}.field{display:grid;gap:6px;margin:0 0 14px}.field label,form label{font-size:12px;color:#52696c;font-weight:600}.field input,.field select,.field textarea,form input,form select,form textarea{display:block;width:100%;border:1px solid #d6e1df;border-radius:7px;background:white;color:var(--ink);padding:10px 11px;outline:none;margin-top:6px}.field input:focus,.field select:focus,.field textarea:focus,form input:focus{border-color:#5a9b91;box-shadow:0 0 0 3px #5a9b911c}.field textarea{min-height:90px;resize:vertical}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}.form-grid .wide{grid-column:1/-1}.empty{padding:34px 15px;text-align:center;color:#7a8b8d;font-size:13px}.notice{margin:20px auto 0;max-width:1440px;background:#e9f5ee;color:#286342;padding:12px 15px;border-radius:8px;font-size:13px}.notice.error{background:#fff0ee;color:#913a36}.login-shell{min-height:100vh;background:radial-gradient(ellipse at 15% 15%,#e3f2ed,transparent 42%),#f4f7f6;display:grid;place-items:center;padding:24px}.login-card{background:white;border:1px solid var(--line);box-shadow:0 20px 60px #153d3d10;border-radius:16px;padding:35px;width:min(100%,420px)}.login-card .brand-mark{margin-bottom:25px}.login-card h1{font-size:27px;margin:8px 0}.login-card .muted{margin-bottom:23px}.login-card form label{display:block;margin:0 0 15px}.login-card form .primary{width:100%;margin-top:5px}.error{color:var(--red);font-size:12px;min-height:16px}dialog{border:0;border-radius:13px;padding:0;width:min(610px,calc(100% - 28px));box-shadow:0 25px 90px #102b2d55;color:var(--ink)}dialog::backdrop{background:#102b2d65;backdrop-filter:blur(2px)}.dialog-head{padding:20px 24px 15px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.dialog-head h2{font-size:18px;margin:0}.icon-button{border:0;background:transparent;font-size:24px;color:#738588}.dialog-body{padding:18px 24px;max-height:65vh;overflow:auto}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding:15px 24px;border-top:1px solid var(--line)}.dialog-actions .primary{min-width:100px}.two-col{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}.credit-line{padding:12px;border:1px solid var(--line);border-radius:8px;display:flex;justify-content:space-between;gap:15px;margin:8px 0;font-size:12px}.trend{display:grid;gap:10px}.bar-row{display:grid;grid-template-columns:74px minmax(50px,1fr) 55px;align-items:center;gap:10px;font-size:12px}.bar-track{height:9px;background:#eef3f2;border-radius:99px;overflow:hidden}.bar-fill{height:100%;background:#56a99a;border-radius:99px}.kpi-hours{color:#176a67;font-weight:700}.kpi-credits{color:#8b6a26;font-weight:700}.admin-only[hidden]{display:none!important}@media(max-width:1050px){.app-shell{grid-template-columns:210px minmax(0,1fr)}.workspace{padding:0 24px 24px}.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.app-shell{display:block}.sidebar{position:static;height:auto;padding:13px 13px 9px}.brand{padding:0 4px 12px}.brand-mark{width:36px;height:36px}.sidebar nav{display:flex;overflow:auto;gap:4px;padding-bottom:3px}.nav-item{white-space:nowrap;padding:9px 11px;font-size:12px}.sidebar-foot{display:none}.workspace{padding:0 15px 20px}.topbar{min-height:95px}.topbar h1{font-size:23px}.topbar .eyebrow{font-size:9px}.user-menu{gap:3px;flex-direction:column;align-items:flex-end;font-size:11px}.user-menu .quiet{font-size:11px}.content{padding-top:20px}.page-intro{align-items:flex-start;flex-direction:column}.card-grid{gap:9px}.metric{padding:14px}.metric-value{font-size:24px}.metric-label{font-size:11px;margin-bottom:10px}.panel{padding:15px}.form-grid,.two-col{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}table{min-width:680px}.filter-row>*{flex:1}.filter-row input,.filter-row select{min-width:120px}.login-card{padding:27px}.dialog-body{padding:15px 18px}}

[hidden] { display: none !important; }
.field input:disabled{background:#f4f8f7;color:var(--ink);-webkit-text-fill-color:var(--ink);cursor:default;opacity:1}
.group-sep td{background:#f4f8f7;color:#52696c;font-size:12px;font-weight:700;letter-spacing:.02em;padding:9px 12px}
.group-sep.inactive td{background:#fbf6ef;color:#8a6a3d}
input.upper{text-transform:uppercase}

/* Crédito de horas en el formulario de informes */
.credit-section{border:1px solid var(--line);border-radius:10px;padding:10px 14px 4px;margin:4px 0 0}
.credit-section legend{font-weight:600;padding:0 6px}
.credit-section ul{margin:6px 0 10px;padding-left:18px}
