:root{
 --red:#d71927;--red-dark:#b80f1c;--red-soft:#fdecee;
 --navy:#0d1728;--navy-2:#111d31;--navy-3:#1b2739;
 --ink:#152033;--muted:#718099;--bg:#f4f6f9;--line:#e6eaf0;--white:#fff;
 --green:#1c8a57;--amber:#a56b05;--danger:#bd1825;--blue:#516fda;--violet:#8257d8;
 --shadow:0 14px 36px rgba(25,39,61,.07);--shadow-lg:0 18px 48px rgba(25,39,61,.10);
 font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink)
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);font-size:14px}body{color:var(--ink)}a{color:var(--red);text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}img{max-width:100%}svg{display:block}
.app-shell{min-height:100vh;display:flex}.sidebar{width:286px;background:linear-gradient(180deg,#101a2c 0%,#0a1424 100%);color:#fff;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:40;border-right:1px solid rgba(255,255,255,.04)}
.brand{display:flex;align-items:center;gap:12px;padding:24px 22px 18px;color:#fff}.brand img{width:58px;height:58px;object-fit:contain;border-radius:50%;background:#fff;padding:2px;box-shadow:0 5px 18px rgba(0,0,0,.18)}.brand strong{display:block;font-size:17px;font-weight:800;letter-spacing:-.02em}.brand span{display:block;font-size:12px;color:#aeb8c9;margin-top:3px}.sidebar-divider{height:1px;background:rgba(255,255,255,.07);margin:0 22px 15px}
.sidebar-user{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.065);border:1px solid rgba(255,255,255,.08);border-radius:16px;margin:0 22px 14px;padding:14px}.sidebar-avatar{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:linear-gradient(135deg,#ef3c49,#c81120);font-weight:800;font-size:17px;box-shadow:0 7px 18px rgba(210,22,36,.24)}.sidebar-user strong{display:block;font-size:12.5px;line-height:1.3;color:#fff}.sidebar-user span{display:block;font-size:10.5px;color:#aeb8c9;margin-top:3px}
.sidebar nav{padding:0 22px;overflow:auto;scrollbar-width:thin;scrollbar-color:#344056 transparent}.sidebar nav a,.logout-link{display:flex;align-items:center;gap:13px;color:#b9c3d3;padding:12px 13px;border-radius:11px;margin:3px 0;font-weight:700;font-size:13px;transition:.16s ease}.sidebar nav a:hover,.logout-link:hover{background:rgba(255,255,255,.055);color:#fff}.sidebar nav a.active{background:linear-gradient(135deg,#e51f2e,#c70f1d);color:#fff;box-shadow:0 8px 20px rgba(213,21,35,.22)}.sidebar nav a b{margin-left:auto;background:#fff;color:var(--red);min-width:20px;height:20px;display:grid;place-items:center;padding:0 5px;border-radius:20px;font-size:9px}.nav-icon{width:18px;height:18px;display:inline-grid;place-items:center;flex:0 0 18px}.nav-icon svg,.notif svg,.global-search svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.sidebar-spacer{flex:1}.logout-link{margin:5px 22px 0;color:#c8d0dd}.sidebar-foot{margin:10px 22px 18px;padding:16px 8px 0;border-top:1px solid rgba(255,255,255,.07);font-size:10.5px;line-height:1.55;color:#8895aa;text-align:center}
.main{margin-left:286px;min-width:0;flex:1}.topbar{min-height:120px;background:#fff;border-bottom:1px solid #e7ebf1;display:flex;align-items:center;gap:24px;padding:22px 32px;position:sticky;top:0;z-index:30}.menu-btn{display:none;border:0;background:transparent;color:var(--ink);font-size:22px;padding:6px}.page-heading{min-width:280px}.page-heading>span{display:block;font-size:11px;font-weight:900;letter-spacing:.11em;color:var(--red);text-transform:uppercase;margin-bottom:4px}.page-heading h1{margin:0;font-size:31px;line-height:1.05;letter-spacing:-.035em;font-weight:800}.page-heading p{margin:7px 0 0;color:#7a879d;font-size:13px}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px}.global-search{position:relative;width:240px}.global-search>span{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:#92a0b3}.global-search input{width:100%;height:43px;border:1px solid var(--line);background:#f8fafc;border-radius:12px;padding:0 13px 0 40px;outline:none}.global-search input:focus{border-color:#d9a0a5;box-shadow:0 0 0 4px rgba(215,25,39,.07);background:#fff}.notif{width:43px;height:43px;border:1px solid var(--line);border-radius:12px;display:grid;place-items:center;color:#5f6d83;background:#fff;position:relative}.notif span{position:absolute;right:-5px;top:-5px;min-width:18px;height:18px;display:grid;place-items:center;background:var(--red);color:#fff;border:2px solid #fff;border-radius:20px;font-size:8px;font-weight:800}.top-primary{display:inline-flex;align-items:center;height:43px;padding:0 18px;border-radius:12px;background:linear-gradient(135deg,#dd1d2b,#c70f1d);color:#fff;font-weight:800;font-size:12px;box-shadow:0 10px 22px rgba(207,16,29,.20);white-space:nowrap}.top-primary:hover{background:var(--red-dark)}
.content{padding:30px 32px 42px;max-width:1650px;margin:0 auto}.eyebrow{font-size:9.5px;font-weight:900;letter-spacing:.15em;color:var(--red);text-transform:uppercase}.hero{position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:20px;padding:25px 28px;display:flex;align-items:center;justify-content:space-between;gap:20px;box-shadow:var(--shadow);margin-bottom:20px}.hero:after{content:"";position:absolute;width:190px;height:190px;border-radius:50%;right:-75px;bottom:-125px;background:var(--red-soft)}.hero>*{position:relative;z-index:1}.hero.small{padding:20px 24px}.hero h2{font-size:25px;margin:4px 0 6px;letter-spacing:-.025em}.hero p{margin:0;color:var(--muted);line-height:1.5}
.kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin-bottom:20px}.kpi-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi{position:relative;overflow:hidden;min-height:132px;background:#fff;border:1px solid #edf0f4;border-radius:20px;padding:23px 18px 18px;box-shadow:var(--shadow)}.kpi:after{content:"";position:absolute;width:84px;height:84px;border-radius:50%;right:-25px;bottom:-30px;background:rgba(215,25,39,.08)}.kpi:nth-child(2):after{background:rgba(81,111,218,.09)}.kpi:nth-child(3):after{background:rgba(130,87,216,.10)}.kpi:nth-child(4):after{background:rgba(28,138,87,.10)}.kpi:nth-child(5):after{background:rgba(165,107,5,.10)}.kpi span,.kpi small{display:block;position:relative;z-index:1}.kpi span{color:#5f6e85;font-size:11px;font-weight:700}.kpi strong{display:block;position:relative;z-index:1;font-size:30px;line-height:1;margin:13px 0 7px;letter-spacing:-.03em}.kpi small{font-size:10px;color:#8290a4}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.card{background:#fff;border:1px solid #ebeff4;border-radius:20px;padding:20px;box-shadow:var(--shadow)}.card h3{margin:0 0 15px;font-size:16px;letter-spacing:-.02em}.card p{line-height:1.55}.card-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:-2px 0 14px;padding-bottom:13px;border-bottom:1px solid #edf0f4}.card-head h3{margin:0}.card-head>a{font-size:10.5px;font-weight:800;color:#617189}.card-head>a:hover{color:var(--red)}.card-head span{font-size:10px;color:var(--muted)}.narrow-card{max-width:980px;margin:0 auto}.top-gap{margin-top:18px}
.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:10px;padding:10px 14px;font-weight:800;font-size:11px;line-height:1.2;transition:.15s ease}.btn-primary{background:var(--red);color:#fff;box-shadow:0 8px 18px rgba(215,25,39,.13)}.btn-primary:hover{background:var(--red-dark)}.btn-light{background:#fff;border-color:#dfe4eb;color:#425067}.btn-light:hover{background:#f7f9fb}.btn-success{background:var(--green);color:#fff}.btn-danger{background:var(--danger);color:#fff}.btn-block{width:100%;margin-top:10px}.button-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.toolbar form,.inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.toolbar input,.inline-form input{min-width:220px}.filter-links{display:flex;gap:6px;flex-wrap:wrap}.filter-links a{padding:7px 11px;border-radius:8px;color:var(--muted);font-size:10.5px;font-weight:700}.filter-links a.active{background:var(--red-soft);color:var(--red)}
.table-wrap{overflow:auto;border-radius:12px}.table-wrap table{width:100%;border-collapse:collapse;min-width:650px}.table-wrap th{font-size:8.5px;text-transform:uppercase;letter-spacing:.07em;color:#8490a2;text-align:left;padding:10px 11px;border-bottom:1px solid var(--line);background:#f9fafc;white-space:nowrap}.table-wrap td{padding:12px 11px;border-bottom:1px solid #edf0f4;font-size:10.8px;vertical-align:middle}.table-wrap tbody tr:hover{background:#fbfcfe}.table-wrap tr:last-child td{border-bottom:0}.table-wrap td>a,.table-link{font-weight:800}.wrap-cell{max-width:400px;white-space:normal}.table-sub{display:block;color:#8995a7;font-size:8.7px;margin-top:2px}.empty,.empty-box{color:#8c98a9;text-align:center;padding:25px}
.badge{display:inline-flex;align-items:center;border-radius:20px;padding:5px 9px;font-size:8.5px;font-weight:900;background:#eef1f5;color:#5a6679}.badge-aprobada,.badge-activo,.badge-finalizada{background:#e3f4eb;color:#176740}.badge-enviada,.badge-en-revision,.badge-planificada,.badge-asignado{background:#fff1cc;color:#7b5600}.badge-rechazada,.badge-anulada,.badge-cancelada,.badge-inactivo{background:#fae1e4;color:#971b27}.badge-admin{background:#e9e5fb;color:#5d42a3}.badge-employee{background:#e7effa;color:#3d628e}
.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.form-grid.compact{gap:11px}.form-grid label,.login-card label,.install-card label{display:flex;flex-direction:column;gap:6px;font-size:10px;font-weight:800;color:#56647a}.form-grid input,.form-grid select,.form-grid textarea,.login-card input,.install-card input,.toolbar input,.inline-form input,.inline-form select{width:100%;border:1px solid #dce2ea;border-radius:10px;padding:10px 11px;background:#fff;color:var(--ink);outline:none;transition:.15s}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.login-card input:focus,.toolbar input:focus,.inline-form input:focus{border-color:#e29aa0;box-shadow:0 0 0 4px rgba(215,25,39,.065)}.form-grid textarea{resize:vertical;min-height:82px}.form-grid small{font-weight:500;color:#8b97a8}.span-2{grid-column:span 2}.span-3{grid-column:span 3}.check{flex-direction:row!important;align-items:center!important}.check input{width:auto!important}.muted{color:var(--muted);font-size:10.5px}.hidden{display:none!important}.calculation{background:#f8fafc;border:1px dashed #ced6e0;border-radius:11px;padding:13px;font-size:10.5px}.calculation strong{color:var(--red)}
.alert{padding:12px 14px;border-radius:11px;margin-bottom:15px;font-size:10.8px}.alert-danger{background:#fbe3e6;color:#8e1621;border:1px solid #f2c3c8}.alert-success{background:#e6f5ed;color:#14643f;border:1px solid #c0e5d1}
.profile-head{display:flex;align-items:center;gap:15px;background:#fff;border:1px solid var(--line);padding:18px 20px;border-radius:18px;margin-bottom:14px;box-shadow:var(--shadow)}.avatar{width:54px;height:54px;display:grid;place-items:center;background:var(--red-soft);color:var(--red);font-weight:900;border-radius:15px;font-size:19px}.profile-head h2{margin:2px 0;font-size:20px}.profile-head p{margin:0;color:var(--muted);font-size:10.5px}.balance-card{margin-left:auto;text-align:right}.balance-card span,.balance-card small{display:block;color:var(--muted);font-size:9px}.balance-card strong{display:block;font-size:26px;margin:2px 0}
.tabs{display:flex;gap:5px;margin:13px 0}.tabs button{background:transparent;border:0;border-bottom:2px solid transparent;padding:9px 12px;color:var(--muted);font-weight:800;font-size:10.5px}.tabs button.active{color:var(--red);border-color:var(--red)}.tab-pane{display:none}.tab-pane.active{display:block}.summary-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #edf0f2;gap:10px}.summary-row:last-child{border-bottom:0}.summary-row span{font-size:10.5px;color:var(--muted)}.summary-row span small{display:block}.summary-row strong{font-size:11.5px}.neg{color:#a61b28;font-weight:800}.pos{color:#18794e;font-weight:800}
.document-list>a,.training-list>a,.search-row,.document-row{display:flex;gap:11px;padding:11px 2px;border-bottom:1px solid #edf0f2;color:var(--ink);align-items:center}.document-list>a:last-child,.training-list>a:last-child,.search-row:last-child,.document-row:last-child{border-bottom:0}.document-list strong,.training-list strong,.search-row b,.document-row strong{display:block;font-size:10.8px}.document-list small,.training-list small,.search-row small,.document-row small{display:block;font-size:8.7px;color:var(--muted);margin-top:2px}.document-row>form{margin-left:auto}.birthday-list>div{display:flex;gap:10px;align-items:center;padding:11px;border-bottom:1px solid var(--line)}.birthday-list span{font-size:22px}.birthday-list strong,.birthday-list small{display:block}.birthday-list small{font-size:9px;color:var(--muted)}
.request-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.request-head h2{margin:3px 0}.request-head p{margin:0;color:var(--muted)}.detail-grid,.verify-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.detail-grid span,.verify-grid span{font-size:8.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.detail-grid b,.verify-grid b{display:block;font-size:10.8px;color:var(--ink);text-transform:none;margin-top:3px}.document-actions{display:flex;gap:8px;margin:15px 0}.review-card{margin-top:15px}.danger-zone{margin-top:18px;border-color:#efc7cb;background:#fffafa}.danger-zone h3{color:#a61926}.icon-danger{display:inline-flex;gap:7px;align-items:center}.icon-danger svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.7}
.training-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.training-card{display:flex;gap:14px;padding:16px;background:#fff;border:1px solid var(--line);border-radius:15px;color:var(--ink);box-shadow:0 5px 15px rgba(25,39,61,.03)}.training-card:hover{border-color:#e1a4aa;box-shadow:var(--shadow)}.training-card h3{margin:3px 0 5px}.training-card p{margin:0 0 7px;color:var(--muted);font-size:9.8px}.training-card small{color:#818d9e}.date-box{min-width:54px;height:60px;border-radius:11px;background:var(--red-soft);color:var(--red);display:flex;flex-direction:column;align-items:center;justify-content:center}.date-box b{font-size:20px}.date-box span{font-size:8px;font-weight:900}.employee-picker{max-height:330px;overflow:auto;border:1px solid var(--line);border-radius:11px;margin:9px 0 12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.employee-picker label{display:flex;align-items:flex-start;gap:8px;padding:10px;border-bottom:1px solid #edf0f2}.employee-picker input{margin-top:3px}.employee-picker b,.employee-picker small{display:block}.employee-picker small{color:var(--muted);font-size:8.8px}.picker-search{width:100%;padding:10px;border:1px solid var(--line);border-radius:10px}.assignment-list details{border:1px solid var(--line);border-radius:11px;margin:7px 0}.assignment-list summary{padding:11px 12px;display:flex;justify-content:space-between;cursor:pointer}.assignment-list summary strong,.assignment-list summary small{display:block}.assignment-list summary small{color:var(--muted);font-size:8.7px}.assignment-list form{padding:12px;border-top:1px solid var(--line)}
.birthday-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.birthday-card{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px;color:var(--ink);box-shadow:0 4px 14px rgba(25,39,61,.03)}.birthday-card.today{border-color:#e4959c;background:#fff8f9}.birthday-card>span{font-size:24px}.birthday-card b,.birthday-card strong,.birthday-card small{display:block}.birthday-card b{color:var(--red);font-size:9px}.birthday-card small{color:var(--muted);font-size:8.7px}
.timeline>a{display:grid;grid-template-columns:90px 15px 1fr;gap:8px;color:var(--ink);padding:10px 0}.timeline time{font-size:9.7px;color:var(--muted);text-align:right}.timeline .dot{width:9px;height:9px;border-radius:50%;background:var(--red);margin-top:3px}.timeline strong,.timeline small{display:block}.timeline small{font-size:8px;color:var(--red);text-transform:uppercase}.report-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.holiday-list>div{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line)}.holiday-list b,.holiday-list small{display:block}.holiday-list small{color:var(--muted);font-size:8.7px}.link-danger{border:0;background:none;color:var(--danger);font-size:9.5px;font-weight:800}.code-block{display:block;background:var(--navy);color:#e7edf5;border-radius:9px;padding:11px;overflow:auto;font-size:8.8px}.notification-item{border-bottom:1px solid var(--line)}.notification-item button{width:100%;border:0;background:#fff;padding:12px;display:flex;justify-content:space-between;text-align:left}.notification-item.unread button{background:#fff7f8}.notification-item b,.notification-item small{display:block}.notification-item small{color:var(--muted);margin-top:3px}.notification-item em{font-size:8px;color:#8b929b}.mini-list{display:grid;gap:8px}.stat-pill{padding:8px 10px;border-radius:10px;background:#f7f9fc;color:#5e6b7e;font-size:9px}.user-actions{display:flex;gap:6px;flex-wrap:wrap}.overlay{display:none}

/* Acceso / instalación */
.login-body{min-height:100vh;background:#f2f5f9;display:grid;place-items:center}.login-grid{width:100%;min-height:100vh;display:grid;grid-template-columns:minmax(420px,42%) 1fr}.login-panel{display:grid;place-items:center;background:#fff;padding:32px}.login-card,.install-card{width:min(410px,100%)}.login-logo{width:84px;height:84px;object-fit:contain;border-radius:50%;margin-bottom:13px}.login-card h1,.install-card h1{font-size:29px;letter-spacing:-.035em;margin:6px 0}.login-card>p,.install-card>p{color:var(--muted);margin:0 0 22px}.login-card form,.install-card form{display:grid;gap:11px}.login-help{display:block;text-align:center;color:#9aa3b1;margin-top:16px;font-size:9px}.login-visual{background:linear-gradient(140deg,#111d31,#08111e);color:#fff;display:flex;align-items:flex-end;padding:70px;position:relative;overflow:hidden}.login-visual:before{content:"";position:absolute;width:520px;height:520px;border:90px solid rgba(215,25,39,.15);border-radius:50%;right:-120px;top:-110px}.login-visual:after{content:"";position:absolute;width:250px;height:250px;background:rgba(255,255,255,.025);border-radius:50%;left:-90px;bottom:-70px}.login-visual div{max-width:590px;position:relative}.login-visual span{color:#ff6570;font-weight:900;letter-spacing:.17em}.login-visual h2{font-size:44px;line-height:1.07;margin:9px 0 14px;letter-spacing:-.035em}.login-visual p{color:#bdc7d5;font-size:15px;line-height:1.55}.install-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:27px;box-shadow:var(--shadow-lg);margin:25px}.install-list{border:1px solid var(--line);border-radius:11px;padding:13px;margin:13px 0}.install-list ul{padding-left:20px;margin:9px 0}.install-list li{margin:5px 0;font-size:10.5px}.install-list li.ok{color:#18794e}.install-list li.bad{color:#a61b28}.credential-box{background:var(--navy);color:#fff;padding:15px;border-radius:11px;display:grid;gap:3px;margin:12px 0}.credential-box span,.credential-box small{font-size:8.8px;color:#aab5c7}.credential-box strong{font-size:12px;margin-bottom:5px}
.verify-body{min-height:100vh;background:#f2f5f9;display:grid;place-items:center;padding:20px}.verify-card{width:min(650px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:var(--shadow-lg)}.verify-card h1{margin:3px 0 18px}.verification-status{padding:14px;border-radius:11px;margin:13px 0}.verification-status strong,.verification-status span{display:block}.verification-status span{font-size:9.5px;margin-top:2px}.verification-status.valid{background:#e3f3ea;color:#14613e}.verification-status.invalid{background:#f9dfe2;color:#8d1722}.verify-grid{margin:16px 0}

/* Comprobante de permiso A4 - dos copias idénticas */
.print-body{background:#e5e8ed}.print-toolbar{position:sticky;top:0;background:var(--navy);padding:10px;text-align:center;z-index:50}.print-toolbar a,.print-toolbar button{display:inline-block;border:0;background:#fff;color:#222;border-radius:7px;padding:8px 12px;margin:0 3px;font-size:11px;font-weight:700}.permit-sheet{width:210mm;height:297mm;background:#fff;margin:15px auto;padding:5mm;box-shadow:0 10px 35px rgba(0,0,0,.16);overflow:hidden}.official-permit{height:132.8mm;border:.35mm solid #1a1a1a;position:relative;font-family:Arial,sans-serif;font-size:6.5pt;color:#111;overflow:hidden}.op-head{height:17mm;background:#f0f0f0;border-bottom:.3mm solid #111;display:flex;align-items:center;justify-content:space-between;padding:1mm 3mm}.op-head img{width:13mm;height:13mm;object-fit:contain}.op-head div{text-align:center;line-height:1.35}.op-head strong,.op-head span,.op-head b{display:block}.op-head strong{font-size:8.2pt}.op-head span{font-size:7.2pt;font-weight:600}.op-head b{font-size:8pt}.op-row{height:7.7mm;display:grid;grid-template-columns:39mm 1fr;align-items:center;border-bottom:.25mm solid #111}.op-row label{padding-left:1.3mm;font-size:5.8pt;font-weight:700}.op-row strong{height:5.4mm;border:.25mm solid #111;margin-right:2mm;display:flex;align-items:center;padding:0 2mm;font-size:6.8pt}.op-main{height:31.5mm;display:grid;grid-template-columns:1fr 1.08fr;border-bottom:.25mm solid #111}.op-left{border-right:.25mm solid #111;padding:1.3mm}.op-line{display:grid;grid-template-columns:39mm 1fr;align-items:center;margin-bottom:2mm}.op-line label,.op-pair span{font-weight:700;font-size:5.7pt}.op-line strong,.op-pair b{border:.25mm solid #111;height:5.2mm;display:flex;align-items:center;justify-content:center;font-size:6pt}.op-pair{display:grid;grid-template-columns:18mm 23mm 18mm 23mm;align-items:center;gap:1mm;margin-top:2mm}.op-right{padding:1mm 1.3mm}.op-right>div{height:7.2mm;display:flex;align-items:center;justify-content:space-between;gap:2mm}.op-right span{font-size:5.35pt;font-weight:700;white-space:nowrap}.box-check{width:7mm;height:5mm;border:.25mm solid #111;display:flex;align-items:center;justify-content:center;font-size:7pt}.op-official{height:5.2mm;background:#f0f0f0;border-bottom:.25mm solid #111;display:flex;align-items:center;justify-content:center;font-size:5.8pt;font-weight:800}.op-motive{height:10mm;display:grid;grid-template-columns:19mm 1fr;border-bottom:.25mm solid #111}.op-motive label{padding:2mm 0 0 1.3mm;font-size:5.7pt}.op-motive span{border-left:.25mm solid #111;padding:1.6mm;font-size:6.2pt}.op-sign-head{height:5mm;background:#f0f0f0;border-bottom:.25mm solid #111;display:grid;grid-template-columns:1fr 1.1fr 1fr;text-align:center;align-items:center}.op-sign-head>*{height:100%;display:flex;align-items:center;justify-content:center;border-right:.25mm solid #111;font-size:5.6pt}.op-sign-head>*:last-child{border-right:0}.op-sign{height:21mm;display:grid;grid-template-columns:1fr 1.1fr 1fr;border-bottom:.25mm solid #111}.op-sign span{display:flex;align-items:flex-end;justify-content:center;text-align:center;padding:0 1mm 1.5mm;border-right:.25mm solid #111;font-size:5.4pt;font-weight:700}.op-sign span:last-child{border-right:0}.op-uath{height:3.5mm;text-align:center;font-size:4.8pt;padding-top:.6mm}.op-bottom{height:13.1mm;display:grid;grid-template-columns:1.62fr 1fr;border-top:.25mm solid #111}.op-reception{padding:.7mm 1.2mm;border-right:.25mm solid #111}.op-reception>div{display:grid;grid-template-columns:25mm 1fr;align-items:center;margin-bottom:.5mm}.op-reception label{font-size:5pt}.op-reception strong{height:4mm;border:.2mm solid #111;padding:.7mm 1mm;font-size:5.2pt;overflow:hidden}.op-reception small{display:block;font-size:4.5pt;font-weight:700;margin-top:.5mm;white-space:nowrap}.op-validation{display:flex;align-items:center;gap:1.5mm;padding:.6mm}.op-validation img{width:10.5mm;height:10.5mm}.op-validation b,.op-validation span{display:block}.op-validation b{font-size:5.3pt}.op-validation span{font-size:4.6pt;margin-top:.35mm}.cutline{height:11.4mm;display:flex;align-items:center;justify-content:center;font-size:6.4pt;color:#646464;border-top:.25mm dashed #777;border-bottom:.25mm dashed #777;margin:1mm 0}

@media(max-width:1250px){.kpi-grid{grid-template-columns:repeat(3,1fr)}.global-search{display:none}.topbar{padding-inline:24px}.content{padding-inline:24px}}
@media(max-width:900px){.sidebar{transform:translateX(-100%);transition:.22s}.sidebar.open{transform:none}.main{margin-left:0}.menu-btn{display:block}.overlay.show{display:block;position:fixed;inset:0;background:rgba(5,12,22,.45);z-index:35}.topbar{min-height:92px;padding:15px 16px}.page-heading>span{font-size:9px}.page-heading h1{font-size:24px}.page-heading p{font-size:10px}.top-primary{display:none}.content{padding:18px 16px}.grid-2,.grid-3,.training-cards,.report-grid,.birthday-grid{grid-template-columns:1fr}.kpi-grid,.kpi-grid.three{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.span-2,.span-3{grid-column:auto}.hero{align-items:flex-start;flex-direction:column}.employee-picker{grid-template-columns:1fr}.login-grid{grid-template-columns:1fr}.login-visual{display:none}.login-panel{min-height:100vh}.toolbar{align-items:flex-start;flex-direction:column}.document-actions{flex-wrap:wrap}.profile-head{align-items:flex-start;flex-wrap:wrap}.balance-card{margin-left:0;text-align:left;width:100%}}
@media(max-width:520px){.kpi-grid,.kpi-grid.three{grid-template-columns:1fr}.topbar-right .notif{display:none}.card{padding:15px}.content{padding:12px}.hero{padding:18px}.hero h2{font-size:21px}.page-heading p{display:none}.sidebar{width:278px}.birthday-grid{grid-template-columns:1fr}}
@media print{.print-toolbar{display:none!important}.print-body{background:#fff}.permit-sheet{margin:0!important;box-shadow:none!important;width:210mm;height:297mm;padding:5mm}.official-permit{break-inside:avoid}@page{size:A4;margin:0}}

/* v2.1 · Carga histórica restringida */
.historical-options,.vacation-history-box{display:grid;gap:8px;background:#f8fafc;border:1px solid #e5eaf1;border-radius:12px;padding:12px}.manual-history-box{background:#fff9f0;border:1px solid #f2dfbf;border-radius:12px;padding:12px}.info-box{background:#f5f8fc;border:1px solid #dfe7f1;border-left:4px solid var(--navy);border-radius:12px;padding:12px 14px;color:#536176}.info-box strong{display:block;color:var(--ink);font-size:11px;margin-bottom:4px}.info-box p{margin:0;font-size:10px;line-height:1.5}.historical-hour{display:none}.vacation-history-box .check,.historical-options .check{font-size:9.5px;font-weight:700;color:#59677a}

/* v2.2 · saldos acumulados y asignación directa de capacitaciones */
.training-assignment-box{border:1px solid var(--line,#e6eaf0);border-radius:18px;padding:18px;background:#fafbfc}
.carryover-card{margin-bottom:18px}
@media(max-width:760px){.training-assignment-box{padding:14px}}


/* v2.3 · Control de atrasos */
.lateness-preview{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f7f9fc;border:1px solid #dfe5ee;border-left:4px solid var(--red);border-radius:12px;padding:13px 15px;color:#5d6a7e}.lateness-preview b{font-size:13px;color:var(--ink)}.lateness-preview span{font-size:11px}.quick-employee-list{display:grid;gap:6px;max-height:520px;overflow:auto;margin-top:12px}.quick-employee-list>a{display:flex;align-items:center;gap:11px;padding:10px 9px;border:1px solid transparent;border-radius:12px;color:var(--ink);transition:.15s}.quick-employee-list>a:hover{background:#f7f9fc;border-color:var(--line)}.quick-avatar{width:35px;height:35px;display:grid;place-items:center;border-radius:10px;background:var(--red-soft);color:var(--red);font-weight:900;flex:0 0 35px}.quick-employee-list strong,.quick-employee-list small{display:block}.quick-employee-list small{font-size:9px;color:var(--muted);margin-top:2px}.quick-employee-list em{margin-left:auto;font-style:normal;font-size:9px;color:#66748a;white-space:nowrap}.table-sub{display:block;color:var(--muted);font-size:8.5px;margin-top:2px}.neg{color:var(--danger);font-weight:800}
@media(max-width:900px){.lateness-preview{align-items:flex-start;flex-direction:column}.quick-employee-list em{display:none}}
