:root{--ink:#162033;--muted:#687386;--line:#e2e7ef;--primary:#315ee7;--primary-soft:#eef2ff;--primary-contrast:#fff;--table-head-bg:#f7f9fc;--table-head-text:#66748b;--surface:#fff;--bg:#f4f6fa;--danger:#c43d45;--success:#16804a;--shadow:0 8px 30px rgba(32,47,80,.07);--radius:14px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 Inter,system-ui,-apple-system,"Segoe UI",sans-serif}a{color:var(--primary);text-decoration:none}.topbar{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--line);background:rgba(255,255,255,.97)}.topbar-inner{width:min(1240px,calc(100% - 40px));min-height:72px;margin:auto;display:flex;align-items:center;gap:24px}.brand{min-width:220px;display:flex;align-items:center;gap:10px;color:var(--ink)}.brand span{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:linear-gradient(135deg,var(--primary),var(--primary-light,#7892ee));color:var(--primary-contrast);font-weight:800}.brand img{max-width:48px;height:40px;object-fit:contain}nav{display:flex;gap:5px}nav a{padding:9px 13px;border-radius:9px;color:#536078;font-weight:650}nav a:hover,nav a.active{background:var(--primary-soft);color:var(--primary)}.top-actions{margin-left:auto;display:flex;gap:8px}.top-actions .button{margin:0}main{width:min(1240px,calc(100% - 40px));margin:34px auto 60px}h1,h2,h3{line-height:1.2;letter-spacing:-.02em}h1{margin:5px 0 8px;font-size:clamp(28px,3vw,38px)}h2{margin:0 0 17px;font-size:19px}p{color:var(--muted)}.eyebrow{margin:0!important;color:var(--primary)!important;font-size:11px;font-weight:800;letter-spacing:.13em}.hero,.profile,.panel-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:24px}.hero p,.profile p{margin:0}.report-links,.filters{display:flex;align-items:end;gap:8px;flex-wrap:wrap}.report-links form{margin:0}.button,button{display:inline-flex;justify-content:center;align-items:center;min-height:40px;padding:9px 15px;border:1px solid #d7deea;border-radius:10px;background:#fff;color:var(--ink);font:inherit;font-weight:700;cursor:pointer}.button.primary,button.primary{border-color:var(--primary);background:var(--primary);color:var(--primary-contrast)}.button.danger{color:var(--danger)}.panel,.stat{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.panel{padding:22px;margin-bottom:20px}.narrow{max-width:760px;margin:auto}.login{max-width:440px;margin:10vh auto}.install{margin-top:5vh}.stack{display:grid;gap:15px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.full{grid-column:1/-1}label{color:#39445a;font-weight:700}label>input,label>select,label>textarea{display:block;margin-top:6px;font-weight:400}input,select,textarea{width:100%;padding:10px 11px;border:1px solid #ccd5e2;border-radius:9px;background:#fff;color:var(--ink);font:inherit}textarea{resize:vertical}.flash{margin-bottom:16px;padding:13px 16px;border:1px solid #bfe5ce;border-radius:10px;background:#ebf9f1;color:#12663d}.flash.error{border-color:#f2cac7;background:#fff0ef;color:#9d3434}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}.cards.four{grid-template-columns:repeat(4,1fr)}.dashboard-stats{max-width:830px;grid-template-columns:repeat(2,1fr);gap:14px}.dashboard-stats .stat{min-height:124px;padding:24px 20px}.stat{padding:18px;border-top:4px solid #8490a5}.stat.blue{border-top-color:var(--primary)}.stat.worked{border-top-color:#20a66a}.stat.remaining{border-top-color:#875bd8}.stat small{display:block;color:var(--muted);font-weight:650}.stat strong{display:block;margin-top:4px;font-size:29px}.table-wrap,.planning-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th{color:var(--muted);font-size:11px;text-align:left;text-transform:uppercase}td,th{padding:12px 10px;border-top:1px solid var(--line)}.employee-list-panel{padding:22px 26px}.employee-list-panel .panel-head{margin-bottom:16px}.employee-list-panel .panel-head h2{margin:0}.employee-list-panel .filters select{width:auto;min-width:150px}.employee-list-panel .filters .year-filter{width:115px}.employee-table td{height:68px}.employee-table tbody tr:hover{background:#fafbfe}.person{display:flex;align-items:center;gap:11px;color:var(--ink)}.avatar{width:38px;height:38px;flex:none;display:inline-grid;place-items:center;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-weight:800}.avatar.large{width:58px;height:58px;font-size:18px}.company-tag,.status{display:inline-block;padding:5px 9px;border-radius:20px;background:#edf1f7;font-size:12px}.status.on{background:#e8f7ef;color:var(--success)}.status.off{background:#fbeaec;color:#9b3740}.profile-person{display:flex;align-items:center;gap:14px}.profile-person h1{font-size:30px}.two-col{display:grid;grid-template-columns:minmax(0,2fr) minmax(290px,1fr);gap:20px}.weekdays,.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.weekdays span{padding:8px;color:var(--muted);font-size:12px;text-align:center}.day{min-height:78px;padding:8px;display:flex;flex-direction:column;justify-content:space-between;border-radius:9px}.day.blank{background:transparent}.day small{font-size:10px}.pre{white-space:pre-wrap}.vacaciones{background:#dfe9ff!important;color:#194fae}.fin_de_semana{background:#eef1f5!important;color:#566174}.baja_con_justificante{background:#fff0cc!important;color:#845c00}.baja_sin_justificante{background:#ffd9b8!important;color:#8a3f00}.festivo_nacional,.festivo_local{background:#e5f6ec!important;color:#176a40}.festivo_autonomico{background:#d9f1f4!important;color:#136373}.otro{background:#efe7fa!important;color:#6c3a9a}.laboral{background:#fff!important}.legend{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0 15px}.legend span{padding:5px 9px;border-radius:16px;font-size:11px;font-weight:650}.annual-calendar{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.annual-calendar.compact{grid-template-columns:repeat(4,1fr);gap:8px}.year-month{margin:0;padding:12px}.year-month h2{text-align:center}.mini-week,.mini-days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.mini-week span{color:var(--muted);font-size:9px;text-align:center}.mini-day{min-height:38px;padding:3px;border:1px solid var(--line);border-radius:4px;overflow:hidden}.mini-day b{font-size:9px}.mini-day small{display:block;font-size:7px}.annual-calendar.compact .year-month{padding:6px}.annual-calendar.compact .year-month h2{margin-bottom:4px;font-size:12px}.annual-calendar.compact .mini-week,.annual-calendar.compact .mini-days{gap:1px}.annual-calendar.compact .mini-day{min-height:19px;height:19px;padding:1px;display:grid;place-items:center}.annual-calendar.compact .mini-day small{display:none}.planning{white-space:nowrap;font-size:12px}.planning th:not(:first-child),.planning td:not(:first-child){min-width:29px;padding:8px 4px;text-align:center}.planning td:first-child{position:sticky;left:0;z-index:2;min-width:190px;background:#fff}.planning td:first-child small{display:block;color:var(--muted)}.department-group td{padding:5px 10px;border-left:5px solid var(--primary);background:var(--primary-soft);font-size:11px;font-weight:800}.planning-view.compact{padding:10px}.planning-view.compact .planning{font-size:9px}.planning-view.compact .planning th:not(:first-child),.planning-view.compact .planning td:not(:first-child){min-width:18px;padding:4px 1px}.planning-view.compact .planning td:first-child{min-width:140px;padding:5px}.planning-view.compact .planning td:first-child small{font-size:7px}.empty{padding:50px 20px;text-align:center;color:var(--muted)}.ranking-chart{display:grid;gap:6px}.ranking-row{display:grid;grid-template-columns:1fr 2fr 100px;align-items:center;gap:18px;padding:12px;border-top:1px solid var(--line)}.ranking-row>span small{display:block;color:var(--muted)}.ranking-track{height:14px;border-radius:20px;background:#edf1f7;overflow:hidden}.ranking-track i{display:block;height:100%;background:var(--primary)}.print-only{display:none}.back-link{display:inline-block;margin-bottom:14px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:800px){.topbar-inner{width:calc(100% - 22px);flex-wrap:wrap;padding:10px 0}.brand{min-width:auto}.brand strong{display:none}nav{order:3;width:100%;overflow:auto}.top-actions{margin-left:auto}.top-actions .primary{display:none}main{width:calc(100% - 24px);margin-top:24px}.hero,.profile,.panel-head,.filters{align-items:stretch;flex-direction:column}.profile-person{align-items:flex-start}.cards,.cards.four,.dashboard-stats,.two-col,.form-grid,.annual-calendar{grid-template-columns:1fr}.annual-calendar.compact{grid-template-columns:repeat(2,1fr)}.employee-list-panel .filters select,.employee-list-panel .filters .year-filter{width:100%}.full{grid-column:auto}}
@media print{@page{size:A4 landscape;margin:5mm}header,.no-print,.flash,.employee-sidebar{display:none!important}body,main{width:100%;max-width:none;margin:0;padding:0;background:#fff}.print-only{display:block}.print-title{margin-bottom:4px;font-size:13px;font-weight:800}.panel,.stat{box-shadow:none}.two-col{display:block}.two-col>section{width:100%}.profile{margin-bottom:6px}.cards.four{grid-template-columns:repeat(4,1fr);gap:5px}.cards.four .stat{padding:8px}.cards.four .stat strong{font-size:20px}.annual-calendar,.annual-calendar.compact{grid-template-columns:repeat(4,1fr);gap:3px}.year-month,.annual-calendar.compact .year-month{padding:3px;break-inside:avoid}.mini-day,.annual-calendar.compact .mini-day{min-height:19px;height:19px}.planning-wrap{overflow:visible}.planning-view{padding:3px}.planning{table-layout:fixed;font-size:6px}.planning td:first-child{position:static;min-width:0;width:28mm;padding:2px}.planning th:not(:first-child),.planning td:not(:first-child){min-width:0;width:auto;padding:2px 0}.department-group td{padding:2px 3px;font-size:6px}.legend{margin:3px 0;gap:3px}.legend span{padding:2px 4px;font-size:7px}}
.vacaciones_anterior{background:#dff3ff!important;color:#126487}.vacaciones_extra{background:#eadfff!important;color:#6536a3}.actions{display:flex;justify-content:flex-end;align-items:center;gap:20px}.year-selector{display:flex;align-items:center;gap:6px}.year-selector input{width:100px}.filter-row{display:flex;align-items:end;gap:10px}.filter-row>label{flex:1}.report-filter{display:grid;gap:18px}.month-filter{margin:0;padding:0;border:0}.month-filter legend{margin-bottom:8px;color:#39445a;font-weight:700}.month-options{display:grid;grid-template-columns:repeat(12,1fr);gap:6px}.month-options label{cursor:pointer}.month-options input{position:absolute;opacity:0;pointer-events:none}.month-options span{display:block;padding:8px 4px;border:1px solid var(--line);border-radius:8px;background:#fff;text-align:center;font-size:12px}.month-options input:checked+span{border-color:var(--primary);background:#edf2ff;color:#2348bd}.month-actions{margin-top:6px}.text-button{min-height:0;padding:2px 5px;border:0;color:var(--primary);background:transparent;font-size:13px}.warning{border-top-color:#e65d58}.clean-list{margin:0;padding:0;list-style:none}.clean-list li{padding:11px 0;display:flex;flex-direction:column;border-top:1px solid var(--line)}.clean-list span{color:var(--muted);font-size:13px}.bars{height:230px;display:flex;align-items:flex-end;gap:10px}.bar-item{height:100%;flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}.bar-track{width:100%;height:170px;display:flex;align-items:flex-end;overflow:hidden;border-radius:6px;background:#f1f4f8}.bar-track i{width:100%;min-height:2px;background:var(--primary)}.monthly-chart{height:230px;display:grid;grid-template-columns:repeat(12,1fr);align-items:end;gap:8px;padding-top:15px;border-bottom:1px solid var(--line)}.monthly-chart-group{height:100%;display:grid;grid-template-rows:1fr auto;gap:5px;text-align:center}.monthly-bars{display:flex;align-items:end;justify-content:center;gap:2px}.monthly-bars i{width:27%;min-height:2px;border-radius:4px 4px 0 0}.chart-vacation{background:#315ee7}.chart-justified{background:#d29a22}.chart-unjustified{background:#e27729}.chart-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:11px}.chart-legend span{display:inline-flex;align-items:center;gap:6px}.chart-legend span:before{content:"";width:10px;height:10px;border-radius:2px;background:currentColor}.department-legend{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.department-legend span{padding:5px 10px;border-left:5px solid var(--primary);border-radius:6px;background:#edf2ff;font-size:12px;font-weight:700}.annual-report{display:grid;gap:20px}.annual-report-month{padding:14px}.report-day{min-height:70px;padding:3px;overflow:hidden;border:1px solid var(--line)}.report-day div{display:grid;gap:2px}.report-day small{padding:2px;overflow:hidden;border-radius:3px;font-size:7px;text-overflow:ellipsis;white-space:nowrap}
.annual-footer{margin-top:12px;display:grid;grid-template-columns:minmax(0,1fr) minmax(480px,1fr);align-items:stretch;gap:12px}.annual-observations{padding:12px 14px;border:1px solid var(--line);border-radius:9px;background:#fff}.annual-observations strong{font-size:12px}.annual-observations p{margin:4px 0 0;color:var(--muted);font-size:11px;white-space:pre-wrap}.annual-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.annual-summary .stat{min-height:76px;padding:10px 12px}.annual-summary .stat strong{margin-top:5px;font-size:25px}@media(max-width:800px){.annual-footer{grid-template-columns:1fr}}@media print{.annual-footer{grid-template-columns:1fr 1fr;gap:4px}.annual-summary{grid-template-columns:repeat(2,1fr)}}
.day.selectable{width:100%;border:0;text-align:left;font-weight:400;transition:.15s ease}.day.selectable:hover{box-shadow:0 0 0 2px rgba(49,94,231,.3)}.day.selectable.selected{outline:3px solid var(--ink);outline-offset:-2px;box-shadow:0 4px 12px rgba(22,32,51,.2);transform:translateY(-1px)}.calendar-help{margin:12px 0 0;font-size:12px}.selected-days-note{padding:9px 10px;border-radius:8px;background:#edf2ff;color:#2348bd;font-size:12px}
.user-menu{display:flex;flex-direction:column;justify-content:center;min-width:115px;padding:4px 8px;color:var(--ink);line-height:1.2}.user-menu small{margin-top:3px;color:var(--muted);font-size:10px}.users-table td:first-child small{display:block;color:var(--muted)}.role-badge{display:inline-block;padding:5px 9px;border-radius:20px;background:#edf1f7;font-size:12px;font-weight:700}.role-badge.admin{background:#e7edff;color:#2348bd}.role-badge.manager{background:#e8f7ef;color:#16804a}.role-badge.viewer{background:#f1f3f6;color:#596579}.password-warning{color:#9a6200;font-weight:700}.field-help{display:block;margin-top:5px;color:var(--muted);font-weight:400}.check-label{display:flex;align-items:center;gap:8px}.check-label input{width:auto;margin:0}.role-cards .stat strong{font-size:20px}.role-cards .stat p{margin-bottom:0;font-size:12px}.role-viewer .employee-sidebar,.role-viewer .management-only{display:none}.role-viewer .day.selectable{pointer-events:none}.role-viewer .calendar-help{display:none}
.vacaciones_extra{background:#dfe9ff!important;color:#194fae}.role-badge.employee{background:#efe7fa;color:#6c3a9a}.monthly-breakdown td.nonzero{font-weight:800}.monthly-breakdown td.nonzero:after{content:"";display:block;width:var(--bar-width,100%);height:3px;margin-top:3px;border-radius:3px;background:currentColor;transition:width .2s ease}.monthly-breakdown td.metric-1{color:#16804a}.monthly-breakdown td.metric-2{color:#315ee7}.monthly-breakdown td.metric-3{color:#a06d00}.monthly-breakdown td.metric-4{color:#c35b16}.monthly-breakdown td.metric-5{color:#16804a}.monthly-breakdown td.metric-6{color:#6c3a9a}
.annual-footer.employee-access{grid-template-columns:1fr}.annual-footer.employee-access .annual-summary{grid-template-columns:repeat(4,1fr)}
.dashboard-stats{max-width:1000px;grid-template-columns:repeat(3,1fr)}.employee-list-panel .filters .employee-search{width:210px}.last-access{display:block;margin-top:6px;color:var(--muted);font-size:12px}.calendar-navigation,.month-selector{display:flex;align-items:center;gap:6px}.month-selector select{width:130px}.month-selector input{width:86px}.chart-legend{gap:8px}.chart-legend span{padding:7px 10px;border:1px solid;border-radius:8px;background:#fff!important;font-size:12px;font-weight:800}.chart-legend .chart-vacation{border-color:#9eb3f5;color:#244fc9}.chart-legend .chart-justified{border-color:#e7c66f;color:#8a6000}.chart-legend .chart-unjustified{border-color:#efad7d;color:#a84b10}.department-color-0{--dept:#315ee7;--dept-bg:#edf2ff}.department-color-1{--dept:#16804a;--dept-bg:#e8f7ef}.department-color-2{--dept:#875bd8;--dept-bg:#f1ebfc}.department-color-3{--dept:#d17a18;--dept-bg:#fff2df}.department-color-4{--dept:#13808d;--dept-bg:#e3f6f7}.department-color-5{--dept:#c04469;--dept-bg:#fdebf1}.department-color-6{--dept:#687386;--dept-bg:#eef1f5}.department-color-7{--dept:#8a6811;--dept-bg:#f9f1d8}.department-legend span[class*="department-color-"]{border-left-color:var(--dept);background:var(--dept-bg);color:var(--dept)}.department-group[class*="department-color-"] td{border-left-color:var(--dept);background:var(--dept-bg);color:var(--dept)}
@media(max-width:800px){.dashboard-stats{grid-template-columns:1fr}.calendar-navigation,.month-selector{align-items:stretch;flex-wrap:wrap}.month-selector select{width:140px}.employee-list-panel .filters .employee-search{width:100%}}
.en_revision{background:#fff0bd!important;color:#805800!important}.request_selected{background:#ffe0a3!important;color:#7a4100!important}.request-button{border-color:#e55b16!important;background:linear-gradient(135deg,#f47b20,#e45017)!important;color:#fff!important;box-shadow:0 7px 18px rgba(228,80,23,.22)}.request-button:hover{filter:brightness(.96)}.request-button:disabled{cursor:not-allowed;filter:grayscale(.6);opacity:.55;box-shadow:none}.request-calendar{grid-template-columns:repeat(3,1fr)}.request-calendar .mini-day{min-height:43px;text-align:left}.request-calendar button.mini-day{width:100%;font:inherit;display:block;border:1px solid var(--line);cursor:pointer}.request-calendar .request-day:hover{outline:2px solid #f47b20;outline-offset:-2px}.request-calendar .request-day.selected{outline:3px solid #e45017;outline-offset:-3px;background:#ffe0a3!important;color:#7a4100!important}.request-submit{position:sticky;bottom:12px;z-index:10;margin-top:18px;display:grid;grid-template-columns:1fr minmax(320px,1fr) auto;align-items:end;gap:20px;border-top:4px solid #f47b20}.request-submit h2{margin:4px 0}.request-submit p{margin:0}.request-submit textarea{min-height:88px}.request-status{display:inline-block;padding:6px 10px;border-radius:20px;font-size:12px;font-weight:800}.request-status.pending{background:#fff0bd;color:#805800}.request-status.approved{background:#dff5e9;color:#12663d}.request-status.rejected{background:#fde5e7;color:#9b3039}.request-status.large{padding:10px 16px;font-size:14px}.stat.review{border-top-color:#e7a418}.stat.rejected{border-top-color:#d14b55}.request-detail{display:grid;grid-template-columns:1fr 1fr 2fr;gap:20px}.request-detail small{display:block;color:var(--muted);font-weight:700}.request-detail strong{display:block;margin-top:4px;font-size:18px}.request-detail p{margin:4px 0;white-space:pre-wrap}.request-year-title{margin-top:30px}.request-decision{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:22px}.request-decision form{padding:4px 12px}.button.success{border-color:var(--success);background:var(--success);color:#fff}.request-notifications{margin-bottom:22px;padding:18px;border:1px solid #d7deea;border-radius:var(--radius);background:#fff;box-shadow:var(--shadow)}.notification-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.notification-head h2{margin:3px 0 12px}.request-notification{margin-top:8px;padding:12px 14px;border-left:5px solid;border-radius:8px}.request-notification.approved{border-color:#20a66a;background:#eaf8f1}.request-notification.rejected{border-color:#d14b55;background:#fff0f1}.request-notification span{display:block;color:var(--muted);font-size:12px}.request-notification p{margin:7px 0 0;color:var(--ink)}table td>small{display:block;color:var(--muted)}
@media(max-width:900px){.request-calendar{grid-template-columns:repeat(2,1fr)}.request-submit{position:static;grid-template-columns:1fr}.request-detail,.request-decision{grid-template-columns:1fr}}
@media(max-width:600px){.request-calendar{grid-template-columns:1fr}.notification-head{align-items:flex-start;flex-direction:column}}
@media print{.request-submit,.request-decision,.request-notifications{display:none!important}.request-calendar{grid-template-columns:repeat(4,1fr)}}
.request-status.partial{background:#e9e1fb;color:#68409d}.stat.partial{border-top-color:#875bd8}.request-notification.partial{border-color:#875bd8;background:#f3effc}.partial-decision{margin-top:24px;border-top:4px solid #875bd8}.partial-decision-head,.partial-decision-footer{display:flex;justify-content:space-between;align-items:center;gap:20px}.partial-decision-head h2{margin:4px 0}.partial-decision-head p,.partial-decision-footer p{margin:0}.decision-date-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:9px;margin:20px 0}.decision-date{cursor:pointer}.decision-date input{position:absolute;opacity:0;pointer-events:none}.decision-date span{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:11px 12px;border:2px solid var(--line);border-radius:9px;background:#fff}.decision-date small{color:#9b3039}.decision-date.accepted span{border-color:#20a66a;background:#eaf8f1}.decision-date.accepted small{color:#12663d}.decision-date.accepted small:before{content:"✓ "}.partial-decision-footer>div{min-width:210px}.partial-decision-footer>label{flex:1}.partial-decision-footer textarea{min-height:82px}.request-days{margin-top:20px}
@media(max-width:850px){.partial-decision-head,.partial-decision-footer{align-items:stretch;flex-direction:column}.partial-decision-footer>div,.partial-decision-footer>label{width:100%}}
@media print{.partial-decision{display:none!important}}
.mail-status{display:inline-block;padding:5px 9px;border-radius:20px;font-size:12px;font-weight:800}.mail-status.pending{background:#fff0bd;color:#805800}.mail-status.sending{background:#e7edff;color:#2348bd}.mail-status.sent{background:#dff5e9;color:#12663d}.mail-status.failed{background:#fde5e7;color:#9b3039}
.sortable{display:inline-flex;align-items:center;gap:5px;color:var(--muted);white-space:nowrap}.sortable:hover{color:var(--primary)}.muted{color:var(--muted);font-size:12px}.users-table .report-links{min-width:330px}
.pagination{display:flex;justify-content:center;gap:6px;margin-top:18px;overflow-x:auto}.pagination a{min-width:38px;padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:#fff;text-align:center;font-weight:700}.pagination a.active{border-color:var(--primary);background:var(--primary);color:#fff}.chart-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
@media(max-width:800px){
body{overflow-x:hidden;font-size:14px}.topbar-inner{gap:10px}.brand{max-width:150px}.brand strong{display:block;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-actions{gap:4px}.top-actions .user-menu{min-width:0;max-width:105px;padding:4px}.top-actions .user-menu b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-actions .user-menu small{display:none}.top-actions>.button{padding:8px 10px}nav{padding-bottom:2px;scrollbar-width:thin;white-space:nowrap}nav a{flex:none;padding:8px 10px}
main{width:calc(100% - 20px);margin:18px auto 40px}h1{font-size:28px}.panel{max-width:100%;padding:15px;border-radius:11px}.stat{padding:14px}.stat strong{font-size:25px}.hero,.profile,.panel-head{gap:12px;margin-bottom:18px}.report-links{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.report-links>*{width:100%;min-width:0}.report-links form{display:block}.report-links .button,.report-links button{width:100%;padding:8px}
.filters,.filter-row{width:100%;display:grid;grid-template-columns:1fr;gap:10px}.filters>*,.filter-row>*,.report-filter>*,.year-selector>*{min-width:0;max-width:100%}.filters button,.filter-row button,.report-filter>button{width:100%}.actions{align-items:stretch;flex-direction:column-reverse;gap:10px}.actions>*{width:100%;text-align:center}.form-grid{gap:14px}.form-grid label,.stack label{min-width:0}input,select,textarea{max-width:100%;font-size:16px}
.employee-list-panel{padding:14px 0}.employee-list-panel>.panel-head{padding:0 14px}.table-wrap,.planning-wrap{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;border-bottom:1px solid var(--line)}.table-wrap>table{min-width:680px}.table-wrap>.employee-table{min-width:820px}.table-wrap>.users-table{min-width:1080px}.table-wrap>.activity-table{min-width:620px}td,th{padding:10px 8px}.users-table .report-links{display:flex;width:auto;min-width:330px}.planning-wrap{position:relative}.planning td:first-child{min-width:145px}.planning th:not(:first-child),.planning td:not(:first-child){min-width:27px}
.calendar-heading{align-items:stretch}.calendar-navigation,.month-selector{width:100%}.month-selector{display:grid;grid-template-columns:minmax(105px,1fr) 82px auto}.month-selector select,.month-selector input{width:100%}.calendar-navigation>.button{flex:1}.weekdays,.calendar{gap:3px}.weekdays span{padding:5px}.day{min-height:62px;padding:5px;overflow:hidden}.day b{font-size:12px}.day small{font-size:8px;line-height:1.1;overflow-wrap:anywhere}.annual-calendar.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.year-month{min-width:0}.mini-days,.mini-week{gap:2px}.mini-day{min-width:0}.annual-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.annual-summary .stat{min-width:0}.annual-summary .stat small{font-size:10px}
.month-options{grid-template-columns:repeat(4,1fr)}.legend,.department-legend{overflow-x:auto;flex-wrap:nowrap;padding-bottom:5px}.legend span,.department-legend span{flex:none}.chart-scroll{margin:0 -4px;padding-bottom:6px}.chart-scroll .bars,.chart-scroll .monthly-chart{min-width:680px}.ranking-row{grid-template-columns:1fr;gap:8px}.request-detail,.request-decision,.partial-decision-footer{min-width:0}.request-submit textarea{width:100%}.request-calendar .mini-day{min-height:40px}.notification-head{align-items:stretch;flex-direction:column}
}
@media(max-width:520px){
.brand strong{display:none}.top-actions .user-menu{max-width:80px}.top-actions>.button{font-size:12px}.report-links{grid-template-columns:1fr}.cards,.cards.four,.dashboard-stats{gap:9px}.annual-calendar.compact{grid-template-columns:1fr}.annual-summary{grid-template-columns:1fr}.calendar .day{min-height:50px}.calendar .day small{display:none}.weekdays span{font-size:10px}.month-options{grid-template-columns:repeat(3,1fr)}.decision-date-grid{grid-template-columns:1fr}.pagination{justify-content:flex-start}.pagination a{flex:none}.request-calendar{grid-template-columns:1fr}.report-day{min-height:48px}.annual-report-month{padding:9px}
}
.forgot-link{text-align:center;font-weight:700}.password-note{padding:12px 14px;border-radius:9px;background:#edf2ff;color:#2348bd;font-size:13px}.password-success{text-align:center}.password-success .button{margin-top:8px}
/* Control Laboral: ajustes específicos sobre la identidad visual heredada de Gestor de Vacaciones v2.5.0 */
.role-employee .brand span,.role-manager .brand span,.role-admin .brand span{font-size:12px;letter-spacing:-.03em}

.company-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}.company-checks .check-label{padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}@media(max-width:700px){.company-checks{grid-template-columns:1fr}}

/* v0.3.0 - navegación compacta con submenús */
.main-nav{display:flex;align-items:center;gap:4px;min-width:0}.nav-group{position:relative}.nav-group>summary{list-style:none;cursor:pointer;padding:9px 12px;border-radius:9px;color:#536078;font-weight:650;white-space:nowrap}.nav-group>summary::-webkit-details-marker{display:none}.nav-group>summary:hover,.nav-group>summary.active{background:#edf2ff;color:#2348bd}.nav-caret{margin-left:6px;font-size:10px}.nav-submenu{position:absolute;top:calc(100% + 8px);left:0;z-index:60;display:grid;min-width:205px;padding:7px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 16px 40px rgba(32,47,80,.16)}.nav-submenu a{display:block;padding:9px 11px}.nav-toggle{display:none;min-height:38px;padding:7px 10px}.schedule-days{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.calendar-day-form label{min-width:170px}.calendar-day-form button{align-self:end}
@media(max-width:1050px){.topbar-inner{flex-wrap:wrap;padding:10px 0}.nav-toggle{display:inline-flex;margin-left:auto}.main-nav{display:none;order:4;width:100%;flex-direction:column;align-items:stretch;border-top:1px solid var(--line);padding-top:8px}.nav-open .main-nav{display:flex}.main-nav>a,.nav-group>summary{width:100%}.nav-group{width:100%}.nav-submenu{position:static;margin:5px 0 3px;box-shadow:none;border-radius:9px;background:#f8faff}.top-actions{margin-left:0}.brand{min-width:0}.schedule-days{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.schedule-days{grid-template-columns:1fr}.calendar-day-form{display:grid;grid-template-columns:1fr}.calendar-day-form label{min-width:0}}

/* v0.4.0 - motor de fichaje */
.my-day-wrap{max-width:860px;margin:0 auto}.my-day-heading{margin-bottom:18px}.my-day-heading h1{margin:2px 0 6px}.punch-card{padding:26px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow);border-top:5px solid #9aa7bd}.punch-card.state-working{border-top-color:#20a66a}.punch-card.state-break{border-top-color:#e0a21a}.punch-card.state-closed{border-top-color:#4e6fd5}.punch-status{text-align:center;margin-bottom:22px}.punch-status small{display:block;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.08em}.punch-status strong{display:block;margin-top:6px;font-size:30px;letter-spacing:.02em}.state-working .punch-status strong{color:#137a49}.state-break .punch-status strong{color:#9a6a00}.state-closed .punch-status strong{color:#3156bd}.punch-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:22px}.punch-metrics>div,.day-result>div{padding:12px;border:1px solid var(--line);border-radius:11px;background:#f8faff;text-align:center}.punch-metrics small,.day-result small{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.punch-metrics b{font-size:17px}.punch-actions{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}.punch-actions.two{grid-template-columns:1fr 1fr}.punch-actions form{margin:0}.punch-actions .button{width:100%;min-height:48px}.punch-primary{font-size:16px}.punch-break{background:#fff7dc;border-color:#e8c75f;color:#7d5c00}.timeline{display:grid;gap:8px;margin-top:12px}.timeline-row{display:grid;grid-template-columns:90px 1fr;gap:14px;padding:10px 12px;border-left:4px solid #6c86d8;background:#f8faff;border-radius:7px}.timeline-row span{font-variant-numeric:tabular-nums;color:var(--muted)}.day-result{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:18px}.day-result strong{font-size:21px}.employee-access-note{margin-top:10px}
@media(max-width:760px){.punch-card{padding:18px}.punch-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.punch-actions,.punch-actions.two{grid-template-columns:1fr}.day-result{grid-template-columns:repeat(2,minmax(0,1fr))}.punch-status strong{font-size:26px}}
@media(max-width:420px){.punch-metrics,.day-result{grid-template-columns:1fr}.timeline-row{grid-template-columns:74px 1fr}}


/* v0.5.0 - histórico y resumen personal */
.hero.compact{align-items:flex-end}.hero-actions{display:flex;gap:8px;flex-wrap:wrap}.my-entry-filters{grid-template-columns:minmax(180px,1fr) 130px auto;align-items:end}.summary-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 20px}.summary-card{padding:17px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.summary-card small{display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}.summary-card strong{font-size:24px;font-variant-numeric:tabular-nums}.positive{color:#137a49}.negative{color:#b43a48}.neutral{color:#536078}.difference{font-weight:800;white-space:nowrap}.work-status{display:inline-flex;align-items:center;padding:5px 9px;border-radius:20px;font-size:12px;font-weight:800;white-space:nowrap}.status-open{background:#dff5e9;color:#12663d}.status-on_break{background:#fff0bd;color:#805800}.status-closed{background:#e7edff;color:#2348bd}.my-entries-table td:first-child small{display:block;margin-top:3px;color:var(--muted)}.row-action{text-align:right}.button.small{padding:7px 10px;font-size:12px}.detail-status{margin:-8px 0 12px}.timeline.detailed .timeline-row{grid-template-columns:90px minmax(130px,1fr) auto;align-items:center}.timeline.detailed .timeline-row small{color:var(--muted)}.info-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.info-grid>div,.presence-cards>div{padding:13px;border:1px solid var(--line);border-radius:10px;background:#f8faff}.info-grid small,.presence-cards small{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.summary-section{margin-bottom:26px}.section-title{display:flex;justify-content:space-between;align-items:flex-end;gap:15px}.section-title h2{margin:2px 0 0}.section-title>span{color:var(--muted);font-size:13px}.presence-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:-6px}.presence-cards strong{font-size:22px}.empty-state{text-align:center;padding:34px 18px}.empty-state .button{margin-top:10px}
@media(max-width:800px){.hero.compact{align-items:stretch}.hero-actions{width:100%}.hero-actions .button{flex:1;text-align:center}.my-entry-filters{grid-template-columns:1fr}.summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.timeline.detailed .timeline-row{grid-template-columns:74px 1fr}.timeline.detailed .timeline-row small{grid-column:2}.section-title{align-items:flex-start;flex-direction:column}.presence-cards{grid-template-columns:1fr}.my-entries-table{min-width:0!important}.my-entries-table thead{display:none}.my-entries-table,.my-entries-table tbody,.my-entries-table tr,.my-entries-table td{display:block;width:100%}.my-entries-table tr{margin:0 10px 12px;padding:12px;border:1px solid var(--line);border-radius:11px;background:#fff}.my-entries-table td{display:grid;grid-template-columns:105px 1fr;gap:10px;padding:6px 0;border:0;text-align:right}.my-entries-table td::before{content:attr(data-label);text-align:left;color:var(--muted);font-size:12px;font-weight:700}.my-entries-table td:first-child{display:block;text-align:left;border-bottom:1px solid var(--line);padding-bottom:9px;margin-bottom:4px}.my-entries-table td:first-child::before,.my-entries-table .row-action::before{display:none}.my-entries-table .row-action{display:block;text-align:right;padding-top:10px}.my-entries-table .row-action .button{width:100%;text-align:center}.summary-history{min-width:560px}}
@media(max-width:480px){.summary-cards,.info-grid{grid-template-columns:1fr}.summary-card strong{font-size:22px}}

/* v0.6 Ausencias */
.absence-badge{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:700;background:#eef2f1;color:#35524a;white-space:nowrap}
.absence-vacation{background:#e8f4ff;color:#245f88}.absence-sick_leave{background:#fff0f0;color:#983b3b}.absence-permission{background:#fff7df;color:#82610d}.absence-justified_absence{background:#f0ecff;color:#5c4694}
.absence-duration{display:grid;grid-template-columns:140px 140px 1fr;gap:14px;align-items:end}.absence-duration p{margin:0 0 10px;color:#6b7d84;font-size:13px}
.absence-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid #e1e8e5;border-top:1px solid #e1e8e5}.cal-head{padding:9px;text-align:center;font-size:12px;font-weight:800;color:#64756f;background:#f5f8f7;border-right:1px solid #e1e8e5;border-bottom:1px solid #e1e8e5}.cal-day{min-height:105px;padding:8px;border-right:1px solid #e1e8e5;border-bottom:1px solid #e1e8e5;background:#fff;overflow:hidden}.cal-day.empty{background:#fafcfc}.cal-day>strong{display:block;margin-bottom:6px}.cal-event{display:block;margin:4px 0;padding:4px 6px;border-radius:6px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#edf4f2;color:#31584f}.danger-zone{margin-top:18px;padding-top:18px;border-top:1px solid #ecd7d7}.button.danger{background:#fff1f1;color:#a53434;border-color:#e7bcbc}
@media(max-width:760px){.absence-duration{grid-template-columns:1fr 1fr}.absence-duration p{grid-column:1/-1}.absence-calendar{grid-template-columns:repeat(7,minmax(44px,1fr));overflow-x:auto}.cal-day{min-height:82px;padding:5px}.cal-event{font-size:9px;padding:3px}.cal-head{font-size:10px;padding:6px 2px}}
.cards.five{grid-template-columns:repeat(5,1fr)}.absence-stat{border-top-color:#d49a25}
@media(max-width:1000px){.cards.five{grid-template-columns:repeat(3,1fr)}}
@media(max-width:800px){.cards.five{grid-template-columns:1fr}}

/* v0.7.0 - Incidencias automáticas */
.incident-type{display:inline-flex;padding:5px 9px;border-radius:999px;background:#fff2dc;color:#805900;font-size:12px;font-weight:800;white-space:nowrap}.incident-status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.incident-status.status-pending{background:#fff0f0;color:#9b3030}.incident-status.status-reviewed{background:#fff5d7;color:#7c5a00}.incident-status.status-in-review{background:#e7edff;color:#2649a8}.incident-status.status-resolved{background:#e5f6ed;color:#17663f}.incident-actions{display:flex;gap:6px;align-items:center;min-width:350px}.incident-actions input{min-width:150px}.incidents-table{min-width:1050px}@media(max-width:800px){.incident-actions{min-width:280px;flex-wrap:wrap}.incident-actions input{width:100%}.incidents-table{min-width:900px}}

/* v0.8 - Solicitudes de corrección */
.correction-review{display:grid;gap:.45rem;min-width:230px}.correction-review input{min-width:220px}.block-note{display:block;margin-top:.4rem;color:#667}.status-approved{background:#e8f7ef;color:#176b45}.status-rejected{background:#fff0f0;color:#9b2c2c}.status-cancelled{background:#f1f3f5;color:#5f6770}
@media(max-width:760px){.correction-review{min-width:0}.correction-review input{min-width:0;width:100%}}

/* Dashboard v0.9 */
.dashboard-live-cards{grid-template-columns:repeat(6,minmax(0,1fr))}.dashboard-stat-link{display:block;color:var(--ink);text-decoration:none;transition:transform .15s ease,box-shadow .15s ease}.dashboard-stat-link:hover{transform:translateY(-2px);box-shadow:0 12px 32px rgba(32,47,80,.12)}.pause-stat{border-top-color:#d5a11e}.correction-stat{border-top-color:#2d86ba}.dashboard-filters label{min-width:135px;font-size:12px}.dashboard-filters input,.dashboard-filters select{min-width:135px}.dashboard-filters label:last-of-type{min-width:180px}.dashboard-roster-table{min-width:980px}.dashboard-state{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.dashboard-state.state-working{background:#dff5e9;color:#12663d}.dashboard-state.state-break{background:#fff0bd;color:#805800}.dashboard-state.state-missing{background:#fff0f0;color:#9b3030}.dashboard-state.state-closed{background:#e7edff;color:#2348bd}.dashboard-state.state-absent{background:#f0e8ff;color:#6742a6}.dashboard-state.state-off{background:#f1f3f5;color:#66707a}.dashboard-attention-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.attention-list{display:grid}.attention-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-top:1px solid var(--line);color:var(--ink)}.attention-row:first-child{border-top:0}.attention-row span:first-child{min-width:0}.attention-row strong{display:block}.attention-row small{display:block;color:var(--muted);margin-top:2px}.empty-state.compact{padding:18px 0}
@media(max-width:1100px){.dashboard-live-cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:800px){.dashboard-live-cards{grid-template-columns:repeat(2,1fr)}.dashboard-attention-grid{grid-template-columns:1fr}.dashboard-filters label,.dashboard-filters label:last-of-type,.dashboard-filters input,.dashboard-filters select{width:100%;min-width:0}.dashboard-filters .button{width:100%}.dashboard-roster-table{min-width:850px}}

/* v0.10 - administración de fichajes */
.entry-admin-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.inline-void-form{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.inline-void-form input[type=text]{min-width:190px;max-width:260px}.button.danger{background:#fff1f2;border-color:#fecdd3;color:#9f1239}.button.danger:hover{background:#ffe4e6}.status-superseded{background:#fff7ed;color:#9a3412}.status-void{background:#f3f4f6;color:#4b5563}@media(max-width:760px){.entry-admin-actions,.inline-void-form{align-items:stretch}.inline-void-form input[type=text]{min-width:100%;max-width:100%}}

/* v0.10.1 - navegación y correcciones simplificadas */
.incident-action-stack{display:grid;gap:8px;min-width:290px}.incident-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.incident-actions input{min-width:190px}.correction-timeline-row{grid-template-columns:90px 1fr auto auto;align-items:center}.correction-timeline-row .button{justify-self:end}.correction-quick-actions{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.correction-context{display:grid;gap:5px;margin:0 0 18px;padding:14px 16px;border-radius:12px;background:#f5f7fb}.correction-context small{color:var(--muted)}.correction-context strong{font-size:18px}.correction-picker{padding:4px 0 8px}.correction-picker .actions{margin-top:16px}
@media(max-width:760px){.incident-action-stack{min-width:0}.incident-actions{display:grid}.incident-actions input{min-width:0;width:100%}.correction-timeline-row{grid-template-columns:72px 1fr auto}.correction-timeline-row small{grid-column:2}.correction-timeline-row .button{grid-column:3;grid-row:1 / span 2}.correction-quick-actions .button{width:100%}}

/* v0.11 - Informes */
.report-tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:18px}.report-tabs a{padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font-weight:700}.report-tabs a.active{background:#edf2ff;border-color:#c8d5ff;color:#2348bd}.report-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.report-table{min-width:900px}.report-output .panel-head{margin-bottom:12px}.report-filters label{min-width:135px}.report-hero .hero-actions{display:flex;gap:8px}
@media(max-width:800px){.report-cards{grid-template-columns:repeat(2,1fr)}.report-tabs{display:grid;grid-template-columns:1fr 1fr}.report-filters label,.report-filters input,.report-filters select,.report-filters .button{width:100%;min-width:0}}
@media(max-width:480px){.report-cards,.report-tabs{grid-template-columns:1fr}}
@media print{.topbar,.no-print,.flash{display:none!important}body{background:#fff}main{width:100%;margin:0}.panel,.stat{box-shadow:none}.report-output{border:0;padding:0}.table-wrap{overflow:visible}.report-table{min-width:0;font-size:10px}.report-table th,.report-table td{padding:6px 4px}.report-cards{grid-template-columns:repeat(4,1fr)}}
.auto-entry{display:inline-flex;padding:3px 7px;border-radius:999px;background:#eef2ff;color:#374bb5;font-size:11px;font-weight:800}

/* v0.13 - Notificaciones internas */
.notification-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--line);border-radius:10px;background:#fff;text-decoration:none;font-size:18px}.notification-bell:hover{background:#f6f8ff}.notification-bell b{position:absolute;top:-6px;right:-7px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:#ef4444;color:#fff;font-size:11px;line-height:20px;text-align:center;box-shadow:0 0 0 2px #fff}.notification-bell.has-unread{border-color:#cbd8ff;background:#f5f7ff}.notification-panel{padding:0;overflow:hidden}.notification-list{display:grid}.notification-row{display:flex;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;align-items:flex-start}.notification-row:last-child{border-bottom:0}.notification-row:hover{background:#f8faff}.notification-row.is-unread{background:#f4f7ff}.notification-dot{width:9px;height:9px;border-radius:50%;background:#cbd5e1;margin-top:7px;flex:0 0 auto}.notification-row.is-unread .notification-dot{background:#315fe8}.notification-copy{display:grid;gap:4px;min-width:0}.notification-copy strong{font-size:15px}.notification-copy span{color:#526079}.notification-copy small{color:#8792a7}.top-actions{display:flex;align-items:center;gap:10px}
@media(max-width:1050px){.notification-bell{width:38px;height:38px}.top-actions{width:100%;justify-content:flex-end}}

/* v0.13.1 - cabecera sin solapes */
.topbar-inner{width:min(1440px,calc(100% - 24px));gap:12px}
.brand{min-width:180px;flex:0 0 auto}.main-nav{flex:1 1 auto;justify-content:center;min-width:0}.top-actions{flex:0 0 auto;white-space:nowrap}.notification-bell{flex:0 0 auto}.user-menu{flex:0 0 auto}
@media(max-width:1280px){.topbar-inner{flex-wrap:wrap;padding:10px 0}.nav-toggle{display:inline-flex;margin-left:auto}.main-nav{display:none;order:4;width:100%;flex-direction:column;align-items:stretch;border-top:1px solid var(--line);padding-top:8px}.nav-open .main-nav{display:flex}.main-nav>a,.nav-group>summary{width:100%}.nav-group{width:100%}.nav-submenu{position:static;margin:5px 0 3px;box-shadow:none;border-radius:9px;background:#f8faff}.top-actions{margin-left:0}.brand{min-width:0}}
.my-incidents-actions{white-space:nowrap}

/* v0.14 - actividad y auditoría */
.activity-tabs{margin-bottom:16px}.activity-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.activity-filters{align-items:end}.activity-table td:nth-child(2) small{display:block;margin-top:3px;color:var(--muted);font-size:11px}.activity-table td{vertical-align:top}.activity-table a:not(.button){font-weight:700;text-decoration:none}.activity-table a:not(.button):hover{text-decoration:underline}.audit-meta{grid-template-columns:repeat(3,minmax(0,1fr))}.audit-meta .stat strong{font-size:17px}.audit-changes td{vertical-align:top;white-space:normal}.pagination{display:flex;gap:6px;flex-wrap:wrap;margin-top:20px}.pagination a{display:inline-flex;min-width:36px;height:36px;padding:0 10px;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:9px;text-decoration:none;font-weight:700;background:#fff}.pagination a.active{background:var(--primary);border-color:var(--primary);color:#fff}.pagination .pagination-arrow{font-size:18px;padding:0 12px}.pagination-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:24px;color:var(--muted);font-weight:700}.button.small{padding:7px 10px;font-size:12px}
@media(max-width:900px){.activity-cards,.audit-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.activity-table{min-width:900px}}
@media(max-width:600px){.activity-cards,.audit-meta{grid-template-columns:1fr}}

/* v0.14.7 - movimientos automáticos activos */
.timeline-row.timeline-auto{border-left-color:#d64040;background:#fff1f1}.timeline-row.timeline-auto>span,.timeline-row.timeline-auto>strong{color:#9b2525}.auto-entry-badge{display:inline-flex;margin-left:7px;padding:3px 7px;border-radius:999px;background:#d64040;color:#fff;font-size:10px;font-style:normal;font-weight:800;vertical-align:middle}
.correction-preview{margin:0 0 10px;padding:10px 12px;border-radius:10px;font-size:12px;line-height:1.4}.correction-preview.ok{background:#eaf8f0;border:1px solid #bfe7cf;color:#12663d}.correction-preview.warning{background:#fff5df;border:1px solid #f1d591;color:#765200}.correction-preview-metrics{display:flex;gap:10px;flex-wrap:wrap;margin-top:5px}.correction-preview ul{margin:6px 0 0;padding-left:18px}

/* v0.14.10 - corrección directa desde la jornada */
.correction-quick-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
@media(max-width:760px){.correction-quick-actions{display:grid}.correction-quick-actions .button{width:100%}}


/* v0.14.14 - incidencias justificadas */
.my-incidents-actions{display:flex;gap:7px;flex-wrap:wrap}.incident-justify-form{margin-top:8px;min-width:280px}.incident-justify-form textarea{width:100%;min-height:78px;resize:vertical}.incident-justify-form .actions{display:flex;gap:7px;justify-content:flex-end;margin-top:7px}.justification-pending{display:inline-flex;padding:6px 9px;border-radius:999px;background:#fff5df;color:#765200;font-size:12px;font-weight:800}.incident-justification-review{padding:10px 12px;border:1px solid #f1d591;border-radius:10px;background:#fffaf0}.incident-justification-review small{display:block;font-weight:800;color:#765200}.incident-justification-review p{margin:5px 0 9px;white-space:pre-wrap}
@media(max-width:760px){.my-incidents-actions,.incident-justify-form .actions{display:grid}.my-incidents-actions .button,.incident-justify-form .button{width:100%}.incident-justify-form{min-width:0}}


/* v0.14.15 - tabla de incidencias admin más compacta */
.admin-incidents-table{width:100%;min-width:1120px;table-layout:fixed}.admin-incidents-table .col-date{width:8%}.admin-incidents-table .col-worker{width:10%}.admin-incidents-table .col-company{width:8%}.admin-incidents-table .col-type{width:12%}.admin-incidents-table .col-detail{width:20%}.admin-incidents-table .col-status{width:14%}.admin-incidents-table .col-actions{width:28%}.admin-incidents-table th,.admin-incidents-table td{vertical-align:middle;white-space:normal;overflow-wrap:anywhere}.admin-incidents-table .incident-type{white-space:normal;line-height:1.25;text-align:left}.admin-incidents-table .incident-status{white-space:normal;line-height:1.2;max-width:100%}.incident-status.status-stacked{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px}.incident-status.status-stacked span{display:block}.incident-detail-cell{line-height:1.45}.incident-status-cell{padding-right:12px}.incident-actions-cell{padding-left:10px}.admin-incidents-table .incident-action-stack{min-width:0;width:100%}.admin-incidents-table .incident-action-stack>.button{width:100%;white-space:normal;text-align:center}.admin-incidents-table .incident-justification-review{width:100%;box-sizing:border-box}.admin-incidents-table .incident-actions{min-width:0;width:100%}.admin-incidents-table .incident-actions input{flex:1 1 150px;min-width:120px}.admin-incidents-table .incident-actions .button{flex:1 1 auto;white-space:normal}.admin-incidents-table .incident-justification-review p{overflow-wrap:anywhere}
@media(max-width:1200px){.admin-incidents-table{min-width:1040px}.admin-incidents-table .col-date{width:9%}.admin-incidents-table .col-worker{width:10%}.admin-incidents-table .col-company{width:8%}.admin-incidents-table .col-type{width:12%}.admin-incidents-table .col-detail{width:19%}.admin-incidents-table .col-status{width:14%}.admin-incidents-table .col-actions{width:28%}}
@media(max-width:800px){.admin-incidents-table{min-width:980px}.admin-incidents-table .incident-actions{display:grid;grid-template-columns:1fr}.admin-incidents-table .incident-actions input,.admin-incidents-table .incident-actions .button{width:100%}}


/* v0.14.16 - incidencias, notificaciones y márgenes */
.admin-incidents-table td:first-child,.admin-incidents-table th:first-child{white-space:nowrap;overflow-wrap:normal;word-break:normal;text-align:center}
.admin-incidents-table th:nth-child(4),.admin-incidents-table td:nth-child(4),
.admin-incidents-table th:nth-child(6),.admin-incidents-table td:nth-child(6),
.admin-incidents-table th:nth-child(7),.admin-incidents-table td:nth-child(7){text-align:center}
.admin-incidents-table td:nth-child(4) .incident-type,.admin-incidents-table td:nth-child(6) .incident-status{display:inline-flex;text-align:center;justify-content:center;align-items:center}
.admin-incidents-table .incident-status.status-stacked{align-items:center}
.admin-incidents-table .incident-action-stack{align-items:center}
.notification-row{position:relative;border-left:5px solid transparent}
.notification-row.notification-danger{border-left-color:#dc3f4b;background:#fff5f5}
.notification-row.notification-warning{border-left-color:#d8a21b;background:#fff9e8}
.notification-row.notification-orange{border-left-color:#e4771d;background:#fff4e9}
.notification-row.notification-justified{border-left-color:#176b45;background:#eef8f2}
.notification-row.notification-success{border-left-color:#23925b;background:#effaf4}
.notification-row.notification-info{border-left-color:#315ee7;background:#f4f7ff}
.notification-row.notification-danger .notification-dot{background:#dc3f4b}
.notification-row.notification-warning .notification-dot{background:#d8a21b}
.notification-row.notification-orange .notification-dot{background:#e4771d}
.notification-row.notification-justified .notification-dot{background:#176b45}
.notification-row.notification-success .notification-dot{background:#23925b}
.notification-row.notification-info .notification-dot{background:#315ee7}
.notification-row.is-read{filter:saturate(.75);background:#fff}
.notification-row.is-read:hover{background:#f8faff}

/* v0.14.17 - Informes simplificados */
.report-table-summary,.report-table-balance{min-width:760px}
.report-table-entries{min-width:1050px}
.report-table-incidents{min-width:1100px}
.report-table-audit{min-width:1150px}
.positive-cell{color:#147a4c;font-weight:800}
.negative-cell{color:#bd3743;font-weight:800}
.incident-stat{border-top-color:#dc3f4b}
.report-table th{white-space:nowrap}
.report-table td{vertical-align:top}
@media(max-width:800px){.report-table-summary,.report-table-balance,.report-table-entries,.report-table-incidents,.report-table-audit{min-width:900px}}

/* v0.16.0 - revisión responsive / móvil */
:root{--mobile-pad:12px}
html{-webkit-text-size-adjust:100%}
body{min-width:0}
img,svg,canvas{max-width:100%}
button,.button,input,select,textarea{touch-action:manipulation}
.table-wrap{position:relative}
.table-wrap::after{content:"";pointer-events:none;position:sticky;right:0;display:block;width:0;height:0}

@media(max-width:1050px){
  .topbar{position:sticky;top:0}
  .topbar-inner{width:calc(100% - 20px);min-height:auto;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px 10px}
  .brand{grid-column:1;grid-row:1;max-width:none;min-width:0}
  .brand strong{max-width:none}
  .nav-toggle{grid-column:2;grid-row:1;margin:0;min-width:42px;min-height:42px}
  .top-actions{grid-column:3;grid-row:1;width:auto;min-width:0;margin:0;justify-content:flex-end;gap:6px}
  .main-nav{grid-column:1/-1;grid-row:2;order:initial;margin-top:2px;max-height:calc(100vh - 92px);overflow-y:auto;overscroll-behavior:contain}
  .nav-group>summary,.main-nav>a{min-height:44px;display:flex;align-items:center}
  .nav-submenu a{min-height:42px;display:flex;align-items:center}
}

@media(max-width:800px){
  main{width:calc(100% - 16px);margin:14px auto 34px}
  .panel{padding:14px;margin-bottom:14px}
  .panel-head,.hero,.profile{margin-bottom:14px}
  h1{font-size:24px;overflow-wrap:anywhere}
  h2{font-size:17px}
  .eyebrow{font-size:10px}
  .button,button{min-height:44px}
  .button.small{min-height:38px}
  .cards,.cards.four,.dashboard-stats,.summary-cards,.activity-cards,.audit-meta{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stat,.summary-card{min-width:0}
  .stat strong,.summary-card strong{font-size:21px;overflow-wrap:anywhere}
  .two-col{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
  .filters,.filter-row,.report-filter,.my-entry-filters{display:grid!important;grid-template-columns:1fr 1fr;align-items:end;gap:9px}
  .filters>label,.filter-row>label,.report-filter>label,.my-entry-filters>label{min-width:0}
  .filters>button,.filters>.button,.filter-row>button,.filter-row>.button,.report-filter>button,.report-filter>.button,.my-entry-filters>button,.my-entry-filters>.button{width:100%}
  .report-links,.hero-actions,.correction-quick-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:8px}
  .report-links .button,.hero-actions .button,.correction-quick-actions .button{width:100%;white-space:normal}
  .table-wrap{margin-left:-14px;margin-right:-14px;padding:0 14px;scrollbar-width:thin}
  .table-wrap:focus-within{outline:2px solid #dbe4ff;outline-offset:-2px}
  .table-wrap table{font-size:13px}
  .table-wrap th{font-size:10px}
  .table-wrap td,.table-wrap th{padding:9px 8px}
  .employee-table,.users-table,.activity-table,.report-table,.admin-incidents-table{min-width:760px!important}
  .admin-incidents-table{table-layout:auto}
  .admin-incidents-table .col-date{min-width:92px}
  .admin-incidents-table .col-worker{min-width:110px}
  .admin-incidents-table .col-company{min-width:95px}
  .admin-incidents-table .col-type{min-width:140px}
  .admin-incidents-table .col-detail{min-width:210px}
  .admin-incidents-table .col-status{min-width:140px}
  .admin-incidents-table .col-actions{min-width:245px}
  .incident-justification-review{min-width:0}
  .incident-actions,.entry-admin-actions{display:grid!important;grid-template-columns:1fr;gap:7px}
  .incident-actions input,.entry-admin-actions input,.incident-actions .button,.entry-admin-actions .button{width:100%!important;min-width:0!important}
  .notification-row{padding:13px 12px;gap:9px}
  .notification-copy strong{font-size:14px}
  .notification-copy span{font-size:13px}
  .punch-card{padding:15px}
  .punch-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .punch-actions,.punch-actions.two{grid-template-columns:1fr}
  .timeline-row{grid-template-columns:68px minmax(0,1fr);gap:9px;padding:9px}
  .day-result{grid-template-columns:repeat(2,minmax(0,1fr))}
  .annual-calendar,.annual-calendar.compact{grid-template-columns:repeat(2,minmax(0,1fr))}
  .calendar{min-width:560px}
  .calendar-heading{overflow:hidden}
  .calendar-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .schedule-days{grid-template-columns:1fr 1fr}
  .planning td:first-child{min-width:125px}
  .planning th:not(:first-child),.planning td:not(:first-child){min-width:26px}
  .pagination{justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;padding-bottom:5px}
  .pagination a{flex:0 0 auto}
}

@media(max-width:560px){
  .topbar-inner{width:calc(100% - 14px);grid-template-columns:minmax(0,1fr) 42px auto}
  .brand{min-width:0}.brand img{max-width:38px;height:34px}.brand span{width:34px;height:34px}.brand strong{display:none}
  .top-actions{gap:4px}.notification-bell{width:40px;height:40px}.top-actions .user-menu{max-width:92px;min-width:0}.top-actions .user-menu b{font-size:12px}.top-actions>.button{min-width:40px;padding:8px;font-size:0}.top-actions>.button::first-letter{font-size:14px}
  main{width:calc(100% - 12px);margin-top:10px}
  .panel{padding:12px;border-radius:10px}
  .cards,.cards.four,.dashboard-stats,.summary-cards,.activity-cards,.audit-meta{grid-template-columns:1fr 1fr;gap:8px}
  .stat,.summary-card{padding:12px}.stat strong,.summary-card strong{font-size:19px}
  .filters,.filter-row,.report-filter,.my-entry-filters{grid-template-columns:1fr}
  .report-links,.hero-actions,.correction-quick-actions{grid-template-columns:1fr}
  .table-wrap{margin-left:-12px;margin-right:-12px;padding:0 12px}
  .employee-table,.users-table,.activity-table,.report-table,.admin-incidents-table{min-width:700px!important}
  .punch-metrics,.day-result{grid-template-columns:1fr 1fr}
  .annual-calendar,.annual-calendar.compact{grid-template-columns:1fr}
  .schedule-days{grid-template-columns:1fr}
  .month-selector{grid-template-columns:1fr 84px}
  .month-selector .button{grid-column:1/-1}
  .calendar-navigation{display:grid;grid-template-columns:1fr 1fr}
  .calendar-navigation>*{width:100%}
  .calendar{min-width:500px}
  .legend,.department-legend{margin-left:-4px;margin-right:-4px;padding-left:4px;padding-right:4px}
  .login{margin:4vh auto}.login .panel{padding:18px 14px}
}

@media(max-width:390px){
  .cards,.cards.four,.dashboard-stats,.summary-cards,.activity-cards,.audit-meta{grid-template-columns:1fr}
  .punch-metrics,.day-result{grid-template-columns:1fr}
  .top-actions .user-menu{display:none}
  .topbar-inner{grid-template-columns:minmax(0,1fr) 42px auto}
}

/* v0.16.1 · Kiosco / tablet */
.kiosk-body{background:#eef4f2;min-height:100vh;overflow-x:hidden}.kiosk-main{min-height:100vh;display:grid;place-items:center;padding:24px}.kiosk-card{width:min(760px,100%);background:#fff;border:1px solid #dce7e3;border-radius:28px;padding:36px;box-shadow:0 20px 60px rgba(28,65,58,.12);text-align:center}.kiosk-brand{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:30px}.kiosk-brand>span{display:grid;place-items:center;width:54px;height:54px;border-radius:16px;background:var(--primary);color:var(--primary-contrast,#fff);font-weight:800}.kiosk-brand>img{width:76px;height:54px;object-fit:contain}.kiosk-brand div{display:flex;flex-direction:column;text-align:left}.kiosk-brand strong{font-size:20px}.kiosk-brand small{color:#687a76}.kiosk-card h1{font-size:clamp(32px,5vw,54px);margin:8px 0}.kiosk-help,.kiosk-person{font-size:20px;color:#667873}.kiosk-pin-form{max-width:520px;margin:24px auto 0}.kiosk-pin-form>input[name=pin]{width:100%;font-size:44px;letter-spacing:.28em;text-align:center;padding:18px;border:2px solid #ccdcd7;border-radius:18px;margin-bottom:20px}.kiosk-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.kiosk-keypad button{min-height:84px;border:0;border-radius:18px;background:#f0f5f3;font-size:32px;font-weight:750;color:#263a35;cursor:pointer}.kiosk-keypad button:active{transform:scale(.98)}.kiosk-keypad .kiosk-ok{background:#257766;color:#fff}.kiosk-state{margin:26px auto;max-width:460px;background:#f3f7f5;border-radius:18px;padding:18px;display:flex;flex-direction:column}.kiosk-state small{color:#70817c}.kiosk-state strong{font-size:28px}.kiosk-actions{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:620px;margin:20px auto}.kiosk-action{min-height:100px;border:0;border-radius:20px;font-size:24px;font-weight:800;cursor:pointer}.kiosk-action.primary{background:var(--primary);color:var(--primary-contrast,#fff)}.kiosk-action.pause{background:#f0b429;color:#332900}.kiosk-action.danger{background:#c94747;color:#fff}.kiosk-cancel{grid-column:1/-1;padding:16px;color:#52645f}.kiosk-message{padding:14px 18px;border-radius:14px;margin:0 0 18px}.kiosk-message.error{background:#fff0f0;color:#922}.kiosk-message.success{background:#edf8f4;color:#17624f}.kiosk-success .kiosk-check{width:100px;height:100px;display:grid;place-items:center;margin:0 auto 20px;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-size:62px;font-weight:800}.kiosk-success>strong{display:block;font-size:44px;margin:14px 0}.kiosk-success>small{display:block;color:#667873}.kiosk-url-box{background:#f4f8f6;border:1px solid #dce8e4;border-radius:14px;padding:16px}.kiosk-url-box input{margin-top:10px}.kiosk-generated-pin{text-align:center}.kiosk-generated-pin strong{display:block;font-size:56px;letter-spacing:.16em;margin:8px 0}
@media(max-width:640px){.kiosk-main{padding:10px}.kiosk-card{padding:22px 14px;border-radius:20px}.kiosk-keypad{gap:9px}.kiosk-keypad button{min-height:68px}.kiosk-actions{grid-template-columns:1fr}.kiosk-cancel{grid-column:auto}}


/* v0.17.0 · gestión inteligente de incidencias */
.kiosk-live-time{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0 18px}.kiosk-live-time.single{grid-template-columns:minmax(0,340px);justify-content:center}.kiosk-live-time span{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border:1px solid #dbe4f0;border-radius:14px;background:#f7f9fc}.kiosk-live-time small{color:#667085;font-weight:700}.kiosk-live-time strong{font-size:26px;color:#0f2343}.smart-banner{display:flex;gap:14px;align-items:flex-start;padding:16px 18px;border-radius:14px;background:#eef6ff;border:1px solid #cfe1ff;margin:0 0 18px}.smart-banner strong{display:block;margin-bottom:3px}.incident-attention{display:inline-flex;flex-direction:column;gap:2px;padding:7px 10px;border-radius:12px;font-size:12px;font-weight:800}.incident-attention.worker{background:#fff7df;color:#8b5d00}.incident-attention.manager{background:#ffe7e7;color:#a02626}.severity-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}.severity-low{background:#e7f6ec;color:#217a43}.severity-medium{background:#fff2d8;color:#8b5d00}.severity-high{background:#ffe2e2;color:#a02626}.incident-reason-select{min-width:220px}.incident-rule-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.incident-rule-grid label{display:flex;flex-direction:column;gap:6px;font-weight:700}.incident-rule-grid input{width:100%}.attention-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}.attention-summary .stat strong{font-size:28px}.auto-badge{display:inline-flex;padding:4px 8px;border-radius:999px;background:#e7f6ec;color:#217a43;font-size:11px;font-weight:800}.worker-review-note{display:block;margin-top:6px;color:#667085}.incidents-table td:nth-child(6),.incidents-table th:nth-child(6){text-align:center}@media(max-width:900px){.incident-rule-grid{grid-template-columns:1fr 1fr}.attention-summary{grid-template-columns:1fr}.kiosk-live-time{grid-template-columns:1fr}}@media(max-width:560px){.incident-rule-grid{grid-template-columns:1fr}}

/* v0.17.1 · correcciones diferenciadas */
.auto-correction-notice{margin:0 0 18px;padding:14px 16px;border:1px solid #9bd7b1;background:#effaf3;border-radius:12px;color:#14532d}.auto-correction-notice strong{display:block;margin-bottom:4px}.auto-correction-notice p{margin:0;color:#356447}.auto-correction-hint{display:block;max-width:260px;color:#276749;line-height:1.3}.my-incidents-actions{align-items:center;flex-wrap:wrap}

/* v0.17.2 - Ayuda y limpieza de avisos */
.help-button{width:38px;height:38px;display:grid;place-items:center;border:1px solid #d6deeb;border-radius:12px;background:#fff;color:var(--ink);font-weight:800;text-decoration:none;font-size:18px;flex:0 0 auto}.help-button:hover{border-color:#9fb4ee;background:#f4f7ff;color:#2348bd}.help-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.help-card{margin:0}.help-card h2{margin-top:0}.help-card p:last-child{margin-bottom:0}.help-card-wide{grid-column:1/-1}.help-definitions{display:grid;grid-template-columns:minmax(140px,.45fr) 1fr;gap:10px 16px;margin:0}.help-definitions dt{font-weight:800}.help-definitions dd{margin:0;color:var(--muted)}@media(max-width:800px){.help-grid{grid-template-columns:1fr}.help-card-wide{grid-column:auto}.help-definitions{grid-template-columns:1fr;gap:4px}.help-definitions dd{margin-bottom:10px}.help-button{width:42px;height:42px}}

/* v0.18.0 · usuarios y seguridad */
.account-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.account-grid>div{padding:14px;border:1px solid var(--line);border-radius:10px;background:#fafbfe}.account-grid small{display:block;color:var(--muted);font-weight:650;margin-bottom:4px}.account-grid strong{display:block}.field-help{color:var(--muted)}.row-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.row-actions form{margin:0}.inline-reset{position:relative}.inline-reset summary{cursor:pointer;font-weight:700;color:#2857ad}.inline-reset .inline-form{display:flex;gap:6px;margin-top:8px;min-width:300px}.inline-reset input{min-width:190px}@media(max-width:700px){.account-grid{grid-template-columns:1fr}.inline-reset .inline-form{min-width:0;flex-direction:column}.row-actions{align-items:stretch}.row-actions>*{width:100%}.row-actions .button{width:100%}}

/* v0.19.0 · diagnóstico y estabilización */
.health-summary{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}.health-summary .stat:nth-child(1){border-top-color:#2a9d67}.health-summary .stat:nth-child(2){border-top-color:#d69a16}.health-summary .stat:nth-child(3){border-top-color:#cf4c4c}.health-table td{vertical-align:top}.health-table td:nth-child(1){white-space:nowrap;color:var(--muted);font-weight:700}.health-badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.health-ok{background:#e5f6ed;color:#17663f}.health-warn{background:#fff3d5;color:#805900}.health-bad{background:#ffe7e7;color:#9b3030}.diagnostic-errors{display:grid;gap:10px}.diagnostic-errors>div{display:grid;grid-template-columns:minmax(170px,.5fr) minmax(180px,.6fr) 1fr;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.diagnostic-errors>div:first-child{border-top:0}.diagnostic-errors span,.diagnostic-errors small{color:var(--muted)}.checklist-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.checklist-grid>div{padding:14px;border:1px solid var(--line);border-radius:12px;background:#fafbfe}.checklist-grid p{margin:5px 0 0;color:var(--muted)}.settings-link{display:block;text-decoration:none;color:inherit;transition:transform .15s ease,box-shadow .15s ease}.settings-link:hover{transform:translateY(-2px);box-shadow:0 12px 32px rgba(32,47,80,.10)}.settings-link h2{margin-top:0}.settings-link p{margin-bottom:0;color:var(--muted)}
@media(max-width:900px){.checklist-grid{grid-template-columns:1fr 1fr}.diagnostic-errors>div{grid-template-columns:1fr}.health-table{min-width:760px}}
@media(max-width:560px){.health-summary,.checklist-grid{grid-template-columns:1fr}.health-summary{gap:8px}}


/* v0.19.1 · modalidad prevista y control de origen */
.schedule-days-modes{grid-template-columns:repeat(3,minmax(220px,1fr));gap:14px}.schedule-day-mode{border:1px solid var(--border);border-radius:14px;padding:12px;background:#fff;display:grid;grid-template-columns:1fr 1.25fr;gap:10px;align-items:end}.schedule-day-mode label{margin:0}.origin-exception-field{display:none;flex-direction:column}.origin-inline{display:flex;flex-direction:column;gap:5px;margin-bottom:8px;font-size:.82rem;color:var(--muted)}.origin-inline input{min-width:220px}.movement-meta,.movement-exception{display:block;font-weight:500;font-style:normal;margin-top:3px;font-size:.78rem;color:var(--muted)}.movement-exception{color:#9a5b00}.report-table-entries td:nth-child(4),.report-table-entries td:nth-child(6),.report-table-entries td:nth-child(7){white-space:nowrap}.report-table-entries td:nth-child(5){min-width:360px}
@media(max-width:900px){.schedule-days-modes{grid-template-columns:1fr 1fr}.schedule-day-mode{grid-template-columns:1fr}.origin-inline input{min-width:0;width:100%}}
@media(max-width:600px){.schedule-days-modes{grid-template-columns:1fr}}

/* v0.19.2 · coherencia modalidad y formulario Mi jornada */
.punch-mode-help{margin-top:-6px;color:var(--muted);font-size:.9rem}.punch-form>label{align-self:start}.punch-form>label select,.punch-form>label input{width:100%}.origin-exception-field{margin-top:0}


/* v0.19.3 · excepción única por jornada */
.origin-day-note{margin:0 0 14px;padding:10px 14px;border:1px solid #f1c86b;background:#fff8e5;border-radius:12px;font-size:.92rem;color:#7a5300}
.kiosk-exception{width:100%;padding:14px;border:1px solid #e3b341;background:#fff8e5;border-radius:14px;text-align:left;margin-bottom:10px}.kiosk-exception p{margin:6px 0 10px}.kiosk-exception textarea{width:100%;box-sizing:border-box;font:inherit;padding:12px;border:1px solid #cbd5e1;border-radius:10px;resize:vertical}.kiosk-exception.saved{border-color:#9bd3b3;background:#effaf4;color:#146c43}


/* v0.19.4 · motivos predefinidos y dispositivo recordado */
.origin-exception-field select,.origin-exception-field input,.kiosk-exception select,.kiosk-exception input{width:100%;box-sizing:border-box}
.origin-exception-field input,.kiosk-exception input{margin-top:8px;padding:12px;border:1px solid var(--border);border-radius:10px;font:inherit}
.remember-device-check{display:flex!important;align-items:center;gap:9px;font-weight:600}.remember-device-check input{width:auto!important;margin:0}.remember-device-help{margin-top:-10px}.remembered-devices{display:flex;flex-direction:column;gap:10px}.remembered-device{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid var(--border);border-radius:12px}.remembered-device div{display:flex;flex-direction:column;gap:4px}.remembered-device small{color:var(--muted)}.remembered-all{margin-top:14px}
.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.module-card{min-height:190px;padding:24px;display:flex;gap:18px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow);color:var(--ink);transition:transform .18s ease,box-shadow .18s ease}.module-card:hover{transform:translateY(-3px);box-shadow:0 16px 38px rgba(32,47,80,.12)}.module-card>span{width:42px;height:42px;flex:none;display:grid;place-items:center;border-radius:12px;background:#edf2ff;color:var(--primary);font-weight:850}.module-card small{font-size:11px;font-weight:850;letter-spacing:.1em;color:var(--muted)}.module-card h2{margin:6px 0 8px;font-size:24px}.module-card p{margin:0}.module-card.time{border-top:5px solid #315ee7}.module-card.leave{border-top:5px solid #16804a}.module-card.leave>span{background:#e8f7ef;color:#16804a}.module-card.organization{border-top:5px solid #875bd8}.module-card.organization>span{background:#f1ebfc;color:#6c3a9a}.stat .stat-text{font-size:18px;line-height:1.25}.number-small{min-width:82px;width:82px}.decision-date-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.decision-date{display:flex;align-items:center;gap:8px;padding:11px;border:1px solid var(--line);border-radius:10px;background:#fafbfe}.decision-date input{position:static;opacity:1;pointer-events:auto;width:auto;margin:0}.request-status.partial{background:#fff0cc;color:#845c00}.request-status.cancelled{background:#eef1f5;color:#566174}
@media(max-width:900px){.module-grid{grid-template-columns:1fr}.module-card{min-height:0}.decision-date-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Gestor RR. HH. 0.3.0 · Calendarios de vacaciones */
.vacation-balance-cards .stat{position:relative}.vacation-balance-cards .stat span{display:block;margin-top:4px;color:var(--muted);font-size:12px}.vacation-balance-cards .regular{border-top-color:#315ee7}.vacation-balance-cards .carried{border-top-color:#13808d}.vacation-balance-cards .extra{border-top-color:#875bd8}.vacation-balance-cards .total{border-top-color:#16804a}.request-builder{border-top:4px solid #e55b16}.request-builder-form{display:grid;grid-template-columns:minmax(190px,.7fr) minmax(260px,1.5fr) auto;gap:14px;align-items:end}.request-builder-form textarea{min-height:70px}.vacation-legend{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 16px}.vacation-legend span{padding:6px 10px;border:1px solid rgba(0,0,0,.07);border-radius:18px;font-size:11px;font-weight:750}.vacation-year{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.vacation-year.detailed{grid-template-columns:repeat(2,minmax(0,1fr))}.vacation-month{margin:0;padding:14px;break-inside:avoid}.vacation-month h2{margin:0 0 10px;text-align:center;font-size:15px}.vacation-week,.vacation-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.vacation-week span{padding:3px;color:var(--muted);font-size:10px;font-weight:750;text-align:center}.vacation-day{min-width:0;min-height:34px;padding:3px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;border:1px solid var(--line);border-radius:5px;background:#fff;color:var(--ink);font:inherit;overflow:hidden}.vacation-day b{font-size:10px}.vacation-day small{display:block;width:100%;margin-top:3px;overflow:hidden;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.vacation-year.detailed .vacation-day{min-height:54px}.vacation-day.blank{border-color:transparent;background:transparent}.vacation-day.workday[data-date]{cursor:pointer}.vacation-day.workday[data-date]:hover{border-color:#e55b16;background:#fff6ef}.vacation-day.selected{border-color:#e55b16!important;outline:2px solid #e55b16;outline-offset:-2px;background:#ffe0a3!important;color:#7a4100!important}.vacation-regular{background:#dfe9ff!important;color:#194fae!important}.vacation-carried{background:#d9f1f4!important;color:#136373!important}.vacation-extra{background:#eadfff!important;color:#6536a3!important}.vacation-pending{background:#fff0bd!important;color:#805800!important}.holiday{background:#e5f6ec!important;color:#176a40!important}.weekend{background:#eef1f5!important;color:#566174!important}.absence-sick{background:#ffd9b8!important;color:#8a3f00!important}.absence-permission,.absence-justified,.absence-other{background:#fff0cc!important;color:#845c00!important}.absence-badge.absence-vacation_carried{background:#d9f1f4;color:#136373}.absence-badge.absence-vacation_extra{background:#eadfff;color:#6536a3}.team-calendar-wrap{overflow:auto;padding:12px}.team-calendar{min-width:1050px;table-layout:fixed;font-size:10px}.team-calendar th,.team-calendar td{padding:5px 2px;text-align:center}.team-calendar th:first-child,.team-calendar td:first-child{position:sticky;left:0;z-index:2;width:210px;padding:7px 10px;background:#fff;text-align:left}.team-calendar thead th:first-child{z-index:3}.team-calendar td:first-child small{display:block;color:var(--muted);font-size:9px}.team-calendar .team-department td{position:static;padding:5px 10px;border-left:5px solid var(--primary);background:#edf2ff;text-align:left;font-weight:800}.team-calendar td.workday{background:#fff}.team-calendar td:not(.workday){font-weight:800}.number-small{min-width:78px;width:78px}
@media(max-width:1000px){.vacation-year,.vacation-year.detailed{grid-template-columns:repeat(2,minmax(0,1fr))}.request-builder-form{grid-template-columns:1fr 1fr}.request-builder-form button{grid-column:1/-1}}
@media(max-width:620px){.vacation-year,.vacation-year.detailed{grid-template-columns:1fr}.request-builder-form{grid-template-columns:1fr}.vacation-balance-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}.vacation-year.detailed .vacation-day{min-height:47px}.decision-date-grid{grid-template-columns:1fr}}
@media print{.vacation-year,.vacation-year.detailed{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.vacation-month{padding:5px}.vacation-month h2{margin-bottom:3px;font-size:10px}.vacation-week,.vacation-days{gap:1px}.vacation-day,.vacation-year.detailed .vacation-day{min-height:18px;height:18px;padding:1px}.vacation-day b{font-size:7px}.vacation-day small{display:none}.vacation-legend{margin:2px 0 5px;gap:3px}.vacation-legend span{padding:2px 4px;font-size:7px}.vacation-balance-cards .stat{padding:7px}.vacation-balance-cards .stat strong{font-size:18px}.vacation-balance-cards .stat span{font-size:7px}.team-calendar-wrap{overflow:visible;border:0;padding:0}.team-calendar{min-width:0;width:100%;font-size:6px}.team-calendar th,.team-calendar td{padding:2px 1px}.team-calendar th:first-child,.team-calendar td:first-child{position:static;width:25mm;padding:2px}}
@media(max-width:640px){.remembered-device{align-items:flex-start;flex-direction:column}.remembered-device form,.remembered-device .button{width:100%}}

/* Gestor RR. HH. 0.3.1 · Editor con barra lateral */
.vacation-editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:20px}.vacation-editor-calendar{min-width:0}.vacation-editor-calendar .vacation-legend{margin-top:0}.vacation-editor-calendar .vacation-year,.vacation-editor-calendar .vacation-year.detailed{grid-template-columns:repeat(2,minmax(0,1fr))}.vacation-editor-sidebar{min-width:0}.vacation-editor-tools{position:sticky;top:92px;border-top:4px solid #e55b16}.vacation-editor-tools h2{margin-top:5px}.vacation-editor-tools .selected-days-note{padding:10px 12px;border-radius:9px;background:#edf2ff;color:#2348bd;font-size:12px;font-weight:700}.vacation-editor-tools .button{width:100%}.vacation-editor-info p{margin:8px 0;font-size:13px}.calendar-selection-help{margin:14px 0 24px;padding:10px 13px;border:1px solid #d7e1f4;border-radius:9px;background:#f7f9fd;font-size:12px}
@media(max-width:1050px){.vacation-editor-layout{grid-template-columns:1fr}.vacation-editor-sidebar{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);gap:14px;order:-1}.vacation-editor-tools{position:static}.vacation-editor-sidebar .panel{margin-bottom:0}}
@media(max-width:700px){.vacation-editor-sidebar{grid-template-columns:1fr}.vacation-editor-calendar .vacation-year,.vacation-editor-calendar .vacation-year.detailed{grid-template-columns:1fr}}
@media print{.vacation-editor-layout{display:block}.vacation-editor-calendar .vacation-year,.vacation-editor-calendar .vacation-year.detailed{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* Gestor RR. HH. 0.3.2 · La columna completa acompaña el calendario */
@media(min-width:1051px){.vacation-editor-sidebar{position:sticky;top:92px;align-self:start}.vacation-editor-tools{position:static;top:auto}}

/* Gestor RR. HH. 0.4.0 · Corrección directa de días */
.vacation-day.editable-day{cursor:pointer;box-shadow:inset 0 0 0 1px rgba(22,32,51,.12)}.vacation-day.editable-day:hover{border-color:#315ee7;outline:2px solid rgba(49,94,231,.28);outline-offset:-2px}.vacation-day.editing{border-color:#162033!important;outline:3px solid #162033;outline-offset:-3px;box-shadow:0 5px 14px rgba(22,32,51,.2)}.direct-range-fields{display:grid;gap:15px}.direct-edit-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.direct-edit-actions[hidden]{display:none!important}.direct-edit-actions .button{width:100%}.vacation-editor-tools.is-editing{border-top-color:#315ee7}.vacation-editor-tools.is-editing .direct-range-fields{display:none}.vacation-editor-tools.is-editing .selected-days-note{text-transform:capitalize}
@media(max-width:520px){.direct-edit-actions{grid-template-columns:1fr}}

/* Gestor RR. HH. 0.5.0 · Resumen anual y acceso directo a calendarios */
.vacation-summary-cards .stat span{display:block;margin-top:4px;color:var(--muted);font-size:12px}.vacation-summary-cards .worked{border-top-color:#20a66a}.vacation-summary-cards .vacation-total{border-top-color:#315ee7}.vacation-summary-cards .remaining{border-top-color:#875bd8}.vacation-summary-cards .sick{border-top-color:#8490a5}.vacation-list-stats{max-width:1000px}.vacation-list-stats .vacation-total{border-top-color:#315ee7}.vacation-list-stats .remaining{border-top-color:#875bd8}.vacation-list-panel{padding:22px 26px}.vacation-list-panel .panel-head{margin-bottom:16px}.vacation-list-panel .panel-head h2{margin:0}.vacation-list-filters{margin-left:auto}.vacation-list-filters select{width:auto;min-width:150px}.vacation-list-filters .employee-search{width:210px}.vacation-list-filters .year-filter{width:105px}.vacation-list-table td{height:68px}.vacation-list-table tbody tr:hover{background:#fafbfe}.vacation-list-table td:nth-last-child(-n+3){white-space:nowrap}.vacation-open-link{font-weight:750;white-space:nowrap}
@media(max-width:1000px){.vacation-list-panel .panel-head{align-items:stretch;flex-direction:column}.vacation-list-filters{margin-left:0}.vacation-list-table{min-width:980px}}
@media(max-width:700px){.vacation-summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}.vacation-list-stats{grid-template-columns:1fr}.vacation-list-filters{display:grid;grid-template-columns:1fr 1fr}.vacation-list-filters select,.vacation-list-filters .employee-search,.vacation-list-filters .year-filter,.vacation-list-filters button{width:100%;min-width:0}}
@media(max-width:480px){.vacation-summary-cards,.vacation-list-filters{grid-template-columns:1fr!important}}

/* Gestor RR. HH. 0.6.0 · Correo y notificaciones */
.mail-preferences{border:1px solid var(--line);border-radius:12px;padding:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mail-preferences legend{padding:0 8px;font-weight:800}.mail-preferences .check-label{margin:0;padding:12px 14px;border:1px solid var(--line);border-radius:9px;background:#fafbfe}.mail-status{display:inline-block;padding:5px 9px;border-radius:20px;font-size:12px;font-weight:800}.mail-status.pending{background:#fff0bd;color:#805800}.mail-status.sending{background:#e7edff;color:#2348bd}.mail-status.sent{background:#dff5e9;color:#12663d}.mail-status.failed{background:#fde5e7;color:#9b3039}@media(max-width:700px){.mail-preferences{grid-template-columns:1fr;padding:12px}}

/* Gestor RR. HH. 0.6.1 · Solicitud integrada en el calendario anual */
.request-review-context{padding:15px 18px}.request-review-context p{margin:4px 0}.request-only-legend{margin-top:-10px}.request-review-calendar{margin-bottom:22px}.request-review-calendar .vacation-month{min-height:246px}.request-review-calendar .vacation-day{min-height:38px}.request-review-calendar .review-request-day{cursor:pointer;font-weight:750;transition:transform .12s ease,box-shadow .12s ease}.request-review-calendar .review-request-day:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(22,32,51,.15)}.request-review-calendar .review-request-day.accepted-choice{border-color:#d29a22!important;outline:2px solid #d29a22;outline-offset:-2px;background:#fff0bd!important;color:#805800!important}.request-review-calendar .review-request-day.rejected-choice,.vacation-rejected{border-color:#d14b55!important;background:#fde5e7!important;color:#9b3039!important}.vacation-cancelled{background:#eef1f5!important;color:#566174!important}.request-result-day{font-weight:750}.request-calendar-resolution{margin-top:4px;border-top:4px solid #875bd8}.resolution-bulk-actions{display:flex;gap:8px;flex-wrap:wrap}.button.success{border-color:#16804a;background:#16804a;color:#fff}.request-decision-list .decision-date:not(.accepted) span{border-color:#d14b55;background:#fde5e7}.request-decision-list .decision-date:not(.accepted) small{color:#9b3039}.request-calendar-resolution .partial-decision-footer{margin-top:18px}.request-calendar-resolution .partial-decision-footer button{align-self:end}.request-calendar-resolution textarea{min-height:82px}
@media(max-width:900px){.request-review-calendar{grid-template-columns:repeat(2,minmax(0,1fr))}.request-calendar-resolution .partial-decision-footer{display:grid;grid-template-columns:1fr}.request-calendar-resolution .partial-decision-footer button{width:100%}}
@media(max-width:620px){.request-review-calendar{grid-template-columns:1fr}.resolution-bulk-actions{width:100%}.resolution-bulk-actions .button{flex:1}.request-review-calendar .vacation-month{min-height:0}}

/* Gestor RR. HH. 0.7.0 · Solicitudes de ausencias y justificantes */
.leave-request-form{grid-template-columns:repeat(3,minmax(0,1fr))}.leave-request-form .request-observations{grid-column:1/3}.leave-request-form .request-observations textarea{min-height:78px}.leave-request-form>button{align-self:end}.request-review-context .button.small{margin-left:8px}.request-review-context p{line-height:1.55}.request-builder input[type=file]{padding:8px;background:#fafbfe}.request-builder .field-help{display:block;margin-top:5px;color:var(--muted);font-size:12px;font-weight:500}
@media(max-width:1000px){.leave-request-form{grid-template-columns:1fr 1fr}.leave-request-form .request-observations{grid-column:1/-1}.leave-request-form>button{grid-column:1/-1}}
@media(max-width:620px){.leave-request-form{grid-template-columns:1fr}.leave-request-form .request-observations,.leave-request-form>button{grid-column:auto}.request-review-context .button.small{margin:7px 0 0}}

/* Gestor RR. HH. 0.7.1 · Asignación automática y cambios auditables */
.leave-request-form{grid-template-columns:minmax(230px,.7fr) minmax(320px,1.3fr)}.leave-request-form .request-type-field{grid-column:1}.leave-request-form .vacation-order-note,.leave-request-form .request-attachment-card{grid-column:2}.leave-request-form .request-observations{grid-column:1}.leave-request-form>button{grid-column:2;width:100%}.vacation-order-note,.request-attachment-card{min-height:72px;box-sizing:border-box;padding:14px 16px;border:1px solid #cad8ff;border-radius:12px;background:linear-gradient(135deg,#f4f7ff,#edf2ff);display:flex;align-items:center;gap:12px}.vacation-order-note[hidden],.request-attachment-card[hidden],.change-detail[hidden],.approved-change-reason[hidden]{display:none!important}.vacation-order-note>span,.attachment-icon{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:10px;background:#315ee7;color:#fff;font-size:18px;font-weight:850}.vacation-order-note div,.attachment-copy div{display:flex;flex-direction:column;gap:4px}.vacation-order-note small,.attachment-copy small{color:var(--muted);font-size:12px;font-weight:550}.request-attachment-card{align-items:stretch;flex-direction:column;border-style:dashed;background:#fafbff}.attachment-copy{display:flex;align-items:center;gap:12px}.request-attachment-card input[type=file]{width:100%;box-sizing:border-box;padding:7px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--muted)}.request-attachment-card input[type=file]::file-selector-button{margin-right:10px;padding:8px 12px;border:0;border-radius:7px;background:#315ee7;color:#fff;font:inherit;font-weight:750;cursor:pointer}.approved-change-reason{padding:12px;border:1px solid #f0c46a;border-radius:10px;background:#fff8e5}.approved-change-reason textarea{min-height:76px}.pending-change-panel{border-top:4px solid #875bd8}.change-review-summary dl{display:grid;grid-template-columns:170px minmax(0,1fr);gap:10px 18px;margin:0}.change-review-summary dt{color:var(--muted);font-weight:750}.change-review-summary dd{margin:0;font-weight:650}.absence-change-form textarea{min-height:96px}
@media(max-width:1000px){.leave-request-form{grid-template-columns:1fr 1fr}.leave-request-form .request-observations{grid-column:1}.leave-request-form>button{grid-column:2}.vacation-order-note,.request-attachment-card{min-height:0}}
@media(max-width:700px){.leave-request-form{grid-template-columns:1fr}.leave-request-form .request-type-field,.leave-request-form .vacation-order-note,.leave-request-form .request-attachment-card,.leave-request-form .request-observations,.leave-request-form>button{grid-column:1}.change-review-summary dl{grid-template-columns:1fr;gap:3px}.change-review-summary dd{margin-bottom:10px}}

/* Gestor RR. HH. 0.8.0 · Importador CSV por perfiles */
.import-guide{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.import-guide>div{padding:15px;border:1px solid var(--line);border-radius:12px;background:#f8faff}.import-guide strong{display:block;color:var(--primary);font-size:16px}.import-guide p{margin:5px 0 0}.import-profile-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.import-profile-list article{padding:15px;border:1px solid #dbe3ef;border-radius:12px;background:#fafbfe}.import-profile-list p{margin:5px 0}.import-profile-list a{font-size:13px;font-weight:750}.import-status,.import-row-status{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;background:#eef1f6;color:#526077;font-size:12px;font-weight:800;white-space:nowrap}.import-status-completed,.import-status-preview,.row-valid,.row-imported{background:#e6f6ed;color:#176a40}.import-status-completed_with_errors,.row-skipped{background:#fff4d5;color:#8a6200}.import-status-failed,.row-error{background:#fde8e8;color:#a3353c}.import-status-rolled_back,.row-rolled_back_row{background:#eee9f8;color:#68419a}.import-batch .actions{margin:0 0 18px}.import-batch .actions form{margin:0}.import-stats{margin-top:8px}.danger-stat{border-top-color:var(--danger)}.import-preview-table td{vertical-align:top}.absence-unjustified,.absence-badge.absence-unjustified_absence,.absence-badge.absence-unexcused_non_work{background:#ffe3e3!important;color:#9d3434}.absence-training,.absence-badge.absence-training{background:#fff1bd!important;color:#7b5700}
@media(max-width:850px){.import-guide,.import-profile-list{grid-template-columns:1fr}.import-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.import-stats{grid-template-columns:1fr}.import-batch .actions{align-items:stretch}.import-batch .actions form,.import-batch .actions button{width:100%}}

/* Gestor RR. HH. 0.9.0 · Empresa principal y calidad de datos */
.quality-table td{vertical-align:top}.quality-table td:first-child small{display:block;margin-top:4px;color:var(--muted)}.quality-issues{margin:0;padding-left:18px}.quality-issues li+li{margin-top:5px}.quality-warn{color:#805800}.quality-bad{color:#9b3039}.quality-ok{color:#176a40;font-weight:700}

/* Gestor RR. HH. 0.9.1 · modalidad semanal por trabajador */
.work-settings{max-width:1080px;margin:auto}.work-setting-cards .stat strong{font-size:21px}.mode-summary{font-size:15px!important;line-height:1.45}.work-mode-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.work-mode-grid label{padding:12px;border:1px solid var(--line);border-radius:12px;background:#fafbfe}.work-settings .panel-head h2{margin-bottom:4px}.work-settings .panel-head p{margin:0}.work-settings .actions{justify-content:flex-end}
@media(max-width:900px){.work-mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.work-setting-cards{grid-template-columns:1fr}}
@media(max-width:560px){.work-mode-grid{grid-template-columns:1fr}.work-settings .report-links{display:grid}.work-settings .report-links .button{width:100%}}

/* Gestor RR. HH. 0.9.2 · ciclo de vida de maestros */
.inline-form{display:inline-flex;margin:0 0 0 .35rem}.actions .inline-form{vertical-align:middle}

/* v0.9.5 · flujo simplificado de "Marcar como correcto" */
.incident-justify-form.compact-justify{display:grid;gap:8px;max-width:430px;padding:10px 0 0}.incident-justify-label{display:grid;gap:5px;font-size:12px;font-weight:800;color:#344054}.incident-justify-form.compact-justify input[name="reason_other"]{width:100%}.incident-justify-form.compact-justify [hidden]{display:none!important}.worker-review-note.auto{color:#217a43}.worker-review-note.review{color:#8b5d00}

/* Gestor RR. HH. 0.9.6 · modal simple para "Marcar como correcto" */
body.modal-open{overflow:hidden}.incident-modal[hidden]{display:none!important}.incident-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px}.incident-modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.48);backdrop-filter:blur(2px)}.incident-modal-card{position:relative;z-index:1;width:min(520px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:26px;border-radius:18px;background:#fff;box-shadow:0 24px 70px rgba(15,23,42,.24)}.incident-modal-card h2{margin:3px 0 6px}.incident-modal-summary{margin:0 0 18px;color:var(--muted)}.incident-modal-close{position:absolute;top:14px;right:15px;width:36px;height:36px;border:0;border-radius:50%;background:#f1f4f8;color:#344054;font-size:24px;line-height:1;cursor:pointer}.incident-modal-form{display:grid;gap:14px}.incident-modal-form label{display:grid;gap:6px;font-weight:750}.incident-modal-form label[hidden]{display:none!important}.incident-modal-rule{padding:12px 14px;border-radius:11px;font-size:13px;font-weight:700}.incident-modal-rule.auto{background:#ebf8f0;color:#176a40}.incident-modal-rule.review{background:#fff7df;color:#805800}.incident-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:2px}.my-incidents-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.incidents-table td:last-child{min-width:250px}.incidents-table td{vertical-align:middle}
@media(max-width:700px){.incident-modal{padding:10px;align-items:end}.incident-modal-card{width:100%;max-height:86vh;border-radius:18px 18px 0 0;padding:22px}.incident-modal-actions{display:grid;grid-template-columns:1fr}.incident-modal-actions .button{width:100%}.my-incidents-actions{justify-content:flex-start}.incidents-table td:last-child{min-width:220px}}

/* Gestor RR. HH. 0.9.8 · motivo del trabajador visible para el gestor */
.incident-worker-reason{margin-top:8px;padding:8px 10px;border-left:3px solid #315ff4;background:#f5f8ff;border-radius:6px;display:flex;flex-direction:column;gap:2px;line-height:1.35}
.incident-worker-reason strong{font-size:.78rem;color:#17315f}
.incident-worker-reason span{font-size:.88rem;color:#172033}
.incident-worker-reason small{font-size:.72rem;color:#62708a}

/* Gestor RR. HH. 0.10.1 · revisión responsive y usabilidad general */
html,body{max-width:100%;overflow-x:hidden}
.panel,.stat,.module-card,.vacation-month{min-width:0}
.table-wrap{max-width:100%;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
.table-wrap.wide-table-wrap{border-radius:10px}
.table-wrap.wide-table-wrap:before{content:"Desliza horizontalmente para ver todos los datos";display:none;margin:0 0 7px;color:var(--muted);font-size:11px;font-weight:650}
.responsive-cards td{overflow-wrap:anywhere}

@media(max-width:800px){
  body{font-size:14px}
  main{padding-bottom:max(18px,env(safe-area-inset-bottom))}
  .hero,.profile,.panel-head{gap:10px}
  .hero>*,.profile>*,.panel-head>*{min-width:0}
  .panel-head .report-links,.hero .report-links,.profile .report-links{margin-top:2px}
  input,select,textarea{font-size:16px}
  textarea{min-height:92px}
  .filters label,.filter-row label,.report-filter label,.my-entry-filters label{width:100%}
  .filters input,.filters select,.filter-row input,.filter-row select,.report-filter input,.report-filter select,.my-entry-filters input,.my-entry-filters select{min-width:0;width:100%}
  .actions{gap:8px;flex-wrap:wrap}
  .actions form{max-width:100%}
  .table-wrap.wide-table-wrap:before{display:block;position:sticky;left:0;width:max-content;max-width:100%}
  .table-wrap.wide-table-wrap table{margin-bottom:2px}
  .module-card{padding:18px}
  .module-card>span{font-size:24px}
  .notification-row{min-width:0}
}

@media(max-width:620px){
  main{width:calc(100% - 10px)}
  .topbar-inner{width:calc(100% - 10px);padding:7px 0}
  .main-nav{padding-bottom:8px}
  .main-nav>a,.nav-group>summary{padding:10px 11px}
  .nav-submenu{padding:5px;margin-top:3px}
  .nav-submenu a{padding:10px 11px}
  .panel{padding:12px 10px}
  .panel-head,.hero,.profile{margin-bottom:12px}
  .panel-head>div,.hero>div,.profile>div{width:100%}
  h1{font-size:23px}
  .back-link{margin-bottom:8px}
  .cards,.cards.four,.dashboard-stats,.summary-cards,.activity-cards,.audit-meta,.vacation-summary-cards{grid-template-columns:1fr 1fr!important;gap:7px}
  .stat,.summary-card{padding:11px 10px}
  .stat small,.summary-card small{font-size:11px}
  .stat strong,.summary-card strong{font-size:18px;line-height:1.2}
  .stat .stat-text{font-size:15px}
  .report-links,.hero-actions,.correction-quick-actions{display:grid;grid-template-columns:1fr;width:100%}
  .report-links .button,.hero-actions .button,.correction-quick-actions .button{min-height:43px}
  .filters,.filter-row,.report-filter,.my-entry-filters,.inline-filter{display:grid!important;grid-template-columns:1fr!important;gap:8px;width:100%}
  .filters>*,.filter-row>*,.report-filter>*,.my-entry-filters>*,.inline-filter>*{min-width:0!important;width:100%!important}
  .filters button,.filter-row button,.report-filter button,.my-entry-filters button,.inline-filter button{width:100%}
  .actions{display:grid;grid-template-columns:1fr;width:100%}
  .actions>.button,.actions>button,.actions>form,.actions>form>.button,.actions>form>button{width:100%}
  .row-actions{display:grid!important;grid-template-columns:1fr}
  .row-actions>*{width:100%}
  .row-actions .button,.row-actions button{width:100%}
  .table-wrap{margin-left:-10px;margin-right:-10px;padding:0 10px}
  .table-wrap table.responsive-cards{min-width:0!important;width:100%;border-collapse:separate;border-spacing:0 9px}
  .table-wrap table.responsive-cards thead{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
  .table-wrap table.responsive-cards tbody,.table-wrap table.responsive-cards tr,.table-wrap table.responsive-cards td{display:block;width:100%}
  .table-wrap table.responsive-cards tr{padding:8px 11px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 3px 12px rgba(32,47,80,.04)}
  .table-wrap table.responsive-cards tr:hover{background:#fff}
  .table-wrap table.responsive-cards td{display:grid;grid-template-columns:minmax(92px,.42fr) minmax(0,1fr);gap:10px;padding:7px 0;border:0;text-align:left!important;min-height:0;height:auto}
  .table-wrap table.responsive-cards td+td{border-top:1px dashed #edf0f5}
  .table-wrap table.responsive-cards td:before{content:attr(data-label);color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.02em}
  .table-wrap table.responsive-cards td:empty{display:none}
  .table-wrap table.responsive-cards td[colspan]{display:block;text-align:center!important;color:var(--muted)}
  .table-wrap table.responsive-cards td[colspan]:before{display:none}
  .table-wrap table.responsive-cards .button,.table-wrap table.responsive-cards button{max-width:100%}
  .table-wrap.wide-table-wrap{padding-bottom:4px}
  .table-wrap.wide-table-wrap:before{font-size:10px}
  .annual-calendar,.annual-calendar.compact,.vacation-year,.vacation-year.detailed{grid-template-columns:1fr!important}
  .vacation-editor-sidebar{grid-template-columns:1fr!important}
  .vacation-editor-sidebar .panel{margin-bottom:10px}
  .calendar-navigation{gap:7px}
  .calendar-navigation .button{padding-left:8px;padding-right:8px}
  .planning-wrap{margin-left:-10px;margin-right:-10px;padding:0 10px}
  .planning td:first-child{min-width:118px}
  .planning-view.compact .planning td:first-child{min-width:112px}
  .incident-modal{padding:0;align-items:end}
  .incident-modal-card{max-height:90dvh;border-radius:18px 18px 0 0;padding:20px 14px max(18px,env(safe-area-inset-bottom))}
  .incident-modal-close{top:9px;right:9px}
  .kiosk-card{max-width:100%}
}

@media(max-width:390px){
  .cards,.cards.four,.dashboard-stats,.summary-cards,.activity-cards,.audit-meta,.vacation-summary-cards{grid-template-columns:1fr!important}
  .table-wrap table.responsive-cards td{grid-template-columns:1fr;gap:2px}
  .table-wrap table.responsive-cards td:before{margin-bottom:1px}
  .calendar-navigation{grid-template-columns:1fr}
  .month-selector{grid-template-columns:1fr}
  .month-selector .button{grid-column:auto}
}

/* 0.10.3 revision: herramientas de reparacion de modalidad semanal */
.quality-row-error{background:#fff7f7}.quality-row-error td{border-top-color:#f2caca}.quality-issues .button{margin-left:8px;min-height:30px;padding:4px 9px;font-size:12px}.work-settings #modalidad-historico .actions{display:flex;gap:6px;flex-wrap:wrap}.work-settings #modalidad-historico .inline-form{margin:0}

/* 0.10.3 fix: checkbox compacto en correccion de jornada */
.checkbox-row{display:flex;align-items:center;gap:8px;justify-self:start;width:auto}
.checkbox-row input[type="checkbox"]{width:auto;min-width:0;margin:0;flex:none}

/* 0.10.3 validation: absence change keeps the approved type unless explicitly changed. */
.change-type-toggle{align-items:flex-start}
.change-type-toggle>span{display:flex;align-items:center;gap:8px;font-weight:700}
.change-type-toggle input[type="checkbox"]{width:auto;min-width:0;margin:0;flex:none}

.incident-action-note{display:block;margin-top:6px;color:var(--muted);font-size:11px;line-height:1.35}.my-incidents-actions .incident-action-note{flex-basis:100%}
/* 0.10.3 revision: align worker escalation status under incident actions */
@media (min-width:701px){
  .my-incidents-actions .incident-action-note{
    width:100%;
    flex-basis:100%;
    text-align:right;
    padding-right:2px;
  }
}
@media (max-width:700px){
  .my-incidents-actions .incident-action-note{
    width:100%;
    text-align:left;
    margin-top:4px;
  }
}

/* v0.10.5 */
.kiosk-company-field{border:1px solid var(--line);border-radius:10px;padding:14px}.kiosk-company-field legend{font-weight:700;padding:0 6px}.kiosk-company-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;margin-top:10px}.kiosk-company-all{font-weight:700}.legal-note{margin-top:18px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}.legal-note p{margin:4px 0 0;color:var(--muted)}.legal-annex-title{margin-top:24px}.report-table-legal{min-width:1150px}@media(max-width:700px){.kiosk-company-grid{grid-template-columns:1fr}}


/* v0.11.0 - PWA trabajador */
.pwa-install-banner{position:fixed;left:50%;bottom:18px;z-index:1200;transform:translateX(-50%);width:min(620px,calc(100% - 24px));display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;border:1px solid #cbd8ff;border-radius:14px;background:#fff;box-shadow:0 18px 55px rgba(20,37,75,.18)}
.pwa-install-banner[hidden],.pwa-offline-notice[hidden]{display:none!important}.pwa-install-banner strong{display:block;margin-bottom:2px}.pwa-install-banner p{margin:0;color:var(--muted);font-size:13px}.pwa-install-actions{display:flex;gap:8px;flex:0 0 auto}.pwa-offline-notice{position:sticky;top:72px;z-index:19;margin:0 auto;width:min(900px,calc(100% - 24px));padding:9px 13px;border:1px solid #f0c77b;border-radius:0 0 10px 10px;background:#fff5d8;color:#765212;text-align:center;font-size:13px}.pwa-bottom-nav{display:none}
body.pwa-standalone{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.pwa-standalone .pwa-install-banner{display:none!important}.pwa-standalone .pwa-bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:1000;display:grid;grid-template-columns:repeat(4,1fr);padding:7px 8px max(7px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:rgba(255,255,255,.98);box-shadow:0 -8px 24px rgba(32,47,80,.08)}.pwa-bottom-nav a{display:grid;place-items:center;gap:1px;min-height:50px;border-radius:10px;color:#687386;font-weight:700}.pwa-bottom-nav a>span{font-size:20px;line-height:1}.pwa-bottom-nav a>small{font-size:10px}.pwa-bottom-nav a.active{background:var(--primary-soft);color:var(--primary)}.pwa-standalone .topbar{padding-top:env(safe-area-inset-top)}.pwa-standalone .brand strong{display:none}.pwa-offline .punch-actions button:disabled,.pwa-offline .punch-entry-form button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:700px){.pwa-install-banner{bottom:10px;align-items:flex-start;flex-direction:column;gap:10px}.pwa-install-actions{width:100%}.pwa-install-actions .button{flex:1}.pwa-offline-notice{top:64px}}
@media print{.pwa-install-banner,.pwa-offline-notice,.pwa-bottom-nav{display:none!important}}


/* v0.11.1 - geolocalización puntual de fichajes */
.geo-meta{display:block;margin-top:4px;font-size:11px;color:var(--muted);font-weight:600}.geo-meta a{font-weight:800}.geo-meta.geo-ok{color:#28724a}.geo-meta.geo-out{color:#a05b17}.geo-meta.geo-missing{color:#7c6c5b}.geo-punch-status{display:block;grid-column:1/-1;margin-top:2px;font-size:12px;color:var(--muted)}.geo-punch-status[data-kind="ok"]{color:#28724a}.geo-punch-status[data-kind="error"]{color:#a13d3d}.geo-punch-status[data-kind="warning"]{color:#a05b17}.geo-zone-form{margin-bottom:18px}.geo-zone-form .actions{align-items:center}

/* Google Maps · selector de zonas de geolocalización */
.geo-google-map{min-height:420px;border:1px solid var(--border,#d9e2ec);border-radius:14px;overflow:hidden;background:#eef2f6}.geo-place-search gmp-place-autocomplete{display:block;width:100%;min-height:46px}.geo-place-search{min-width:0}@media(max-width:720px){.geo-google-map{min-height:330px}}

/* 0.11.2 · Push PWA */
.push-panel{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}
.push-panel h2{margin:0 0 6px}.push-panel p{margin:0 0 5px}.push-panel small{color:var(--muted)}
@media(max-width:700px){.push-panel{align-items:stretch;flex-direction:column}.push-panel .actions{display:grid;grid-template-columns:1fr}.push-panel .button{width:100%}}

/* 0.11.3 · consolidación pre-1.0 */
.device-health-cards{grid-template-columns:repeat(4,1fr)}.device-health-cards .stat span{display:block;margin-top:7px;color:var(--muted);font-size:12px}.device-health-cards .stat strong{font-size:23px}@media(max-width:800px){.device-health-cards{grid-template-columns:1fr 1fr}}@media(max-width:520px){.device-health-cards{grid-template-columns:1fr}}


/* 0.11.5 · pulido UX pre-1.0 */
.push-device-settings{padding:0;overflow:hidden;margin-bottom:18px}.push-device-settings>summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:17px 20px;cursor:pointer;list-style:none}.push-device-settings>summary::-webkit-details-marker{display:none}.push-device-settings>summary span:first-child{display:grid;gap:3px}.push-device-settings>summary strong{font-size:15px}.push-device-settings>summary small{color:var(--muted);font-size:12px}.push-settings-caret{font-size:22px;color:var(--muted);transition:transform .18s ease}.push-device-settings[open] .push-settings-caret{transform:rotate(180deg)}.push-device-settings .push-panel{margin:0;padding:18px 20px;border-top:1px solid var(--line);box-shadow:none;border-radius:0;background:#fbfcff}
.account-logout{display:flex;justify-content:flex-end;margin-top:8px;margin-bottom:24px}.account-logout form{margin:0}.account-logout-link{appearance:none;border:0;background:none;cursor:pointer;color:var(--muted);font:inherit;font-size:13px;font-weight:700;text-decoration:none;padding:8px 2px}.account-logout-link:hover{color:#b42318;text-decoration:underline}
.users-admin-list{display:grid;gap:14px}.user-access-card{padding:0;overflow:hidden}.user-access-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--line)}.user-access-identity{display:flex;align-items:center;gap:12px;min-width:0}.user-access-identity h2{margin:0;font-size:17px}.user-access-identity p{margin:3px 0 0;color:var(--muted);font-size:12px;overflow-wrap:anywhere}.user-avatar{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px;border-radius:12px;background:#eef2ff;color:#315ee7;font-size:17px;font-weight:900}.user-access-badges{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.role-chip,.company-chip{display:inline-flex;align-items:center;border-radius:999px;font-weight:800}.role-chip{padding:5px 9px;font-size:11px;background:#eef2ff;color:#3446a8}.role-chip.role-admin{background:#f0ecff;color:#6840b5}.role-chip.role-manager{background:#eaf7f0;color:#176b45}.role-chip.role-employee{background:#eef4fb;color:#35536f}.company-chip{padding:4px 8px;font-size:11px;background:#f5f7fa;color:#4f5e70;border:1px solid var(--line)}.company-chip-list{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}.user-access-summary{display:grid;grid-template-columns:2fr 1fr 1fr;gap:14px;padding:15px 20px}.user-access-summary>div{min-width:0}.user-access-summary small{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.user-access-summary strong{display:block;margin-top:5px;font-size:13px}.permissions-editor,.security-editor{border-top:1px solid var(--line)}.permissions-editor>summary,.security-editor>summary{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 20px;cursor:pointer;list-style:none}.permissions-editor>summary::-webkit-details-marker,.security-editor>summary::-webkit-details-marker{display:none}.permissions-editor>summary span:first-child,.security-editor>summary span:first-child{display:grid;gap:2px}.permissions-editor>summary small,.security-editor>summary small{color:var(--muted);font-size:11px}.permissions-form{padding:18px 20px;background:#fbfcff;border-top:1px solid var(--line)}.role-selector{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(300px,1.2fr);gap:18px;align-items:start}.role-help{display:grid;grid-template-columns:auto 1fr;gap:4px 9px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:12px}.role-help span{color:var(--muted)}.manager-company-permissions{margin:16px 0 0;padding:14px;border:1px solid var(--line);border-radius:10px;background:#fff}.manager-company-permissions[hidden]{display:none}.company-permission-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px}.company-permission-option{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;font-weight:700}.company-permission-option input{width:auto;min-width:0}.company-permission-option small{color:var(--muted);font-weight:600}.permissions-actions{display:flex;justify-content:flex-end;margin-top:14px}.security-editor>div{border-top:1px solid var(--line)}.security-actions{display:grid;grid-template-columns:auto auto minmax(320px,1fr);gap:9px;padding:15px 20px;background:#fbfcff}.security-actions form{margin:0}.temp-password-form{display:grid;grid-template-columns:1fr auto;gap:8px}.own-account-note{padding:10px 20px;border-top:1px solid var(--line);background:#fbfcff;color:var(--muted);font-size:12px}.top-actions .user-menu{margin-left:2px}
@media(max-width:800px){.user-access-head{align-items:flex-start;flex-direction:column}.user-access-badges{justify-content:flex-start}.user-access-summary{grid-template-columns:1fr 1fr}.user-access-summary>div:first-child{grid-column:1/-1}.role-selector{grid-template-columns:1fr}.company-permission-grid{grid-template-columns:1fr 1fr}.security-actions{grid-template-columns:1fr}.temp-password-form{grid-template-columns:1fr}.permissions-actions .button,.security-actions .button{width:100%}}
@media(max-width:520px){.push-device-settings>summary{padding:14px 15px}.push-device-settings .push-panel{padding:15px}.user-access-head,.user-access-summary,.permissions-editor>summary,.security-editor>summary,.permissions-form,.security-actions,.own-account-note{padding-left:14px;padding-right:14px}.user-access-summary{grid-template-columns:1fr}.user-access-summary>div:first-child{grid-column:auto}.company-permission-grid{grid-template-columns:1fr}.user-access-identity{align-items:flex-start}.user-access-identity h2{font-size:16px}.role-help{grid-template-columns:1fr}.role-help span{margin-bottom:5px}.account-logout{justify-content:center}.hero.compact h1{font-size:clamp(27px,9vw,38px)}.panel{border-radius:13px}.button{min-height:42px}}

/* 0.11.6 · resumen de modalidad y tablas uniformes */
.data-table{border-collapse:separate;border-spacing:0;width:100%}.data-table thead th{padding:11px 12px;background:var(--table-head-bg);border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--table-head-text);font-size:10px;font-weight:800;letter-spacing:.045em}.data-table thead th:first-child{border-left:1px solid var(--line);border-radius:10px 0 0 10px}.data-table thead th:last-child{border-right:1px solid var(--line);border-radius:0 10px 10px 0}.data-table tbody td{padding:13px 12px;vertical-align:middle}.data-table tbody tr{transition:background .15s ease}.data-table tbody tr:hover{background:#fafbfe}.data-table tbody tr:last-child td{border-bottom:1px solid var(--line)}.data-table .button{min-height:36px;padding:7px 12px;border-radius:9px}.data-table td.actions,.data-table .row-actions{gap:6px;align-items:center}.state-badge{display:inline-flex;align-items:center;justify-content:center;min-height:26px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.state-active{background:#e8f7ef;color:#157044}.state-inactive,.state-disabled{background:#eef1f5;color:#5d6878}.state-warning{background:#fff3d6;color:#805d05}.presence-cards.four{grid-template-columns:repeat(4,minmax(0,1fr))}.presence-note{margin:9px 0 0;color:var(--muted);font-size:12px}.presence-cards.four>div:nth-child(3){background:#f6f2ff}.presence-cards.four>div:nth-child(3) strong{color:#6f45b5}@media(max-width:760px){.presence-cards.four{grid-template-columns:repeat(2,minmax(0,1fr))}.data-table.responsive-cards thead{display:none}.data-table.responsive-cards tbody tr{border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 4px 18px rgba(32,47,80,.04)}.data-table.responsive-cards tbody tr:hover{background:#fff}.data-table.responsive-cards tbody td{border-top:1px solid #edf0f5}}

/* 0.12.0 · bandeja unificada de pendientes */
.pending-review-cards{margin-bottom:18px}
.pending-proposal{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:700;background:#eef2f8;color:#536174}
.pending-proposal.blue{background:#edf3ff;color:#2451c6}.pending-proposal.success{background:#eaf8f0;color:#187344}.pending-proposal.warning{background:#fff5dc;color:#906500}
.pending-review-table td{vertical-align:middle}.pending-advanced{margin-top:16px}.pending-advanced summary{cursor:pointer}
@media(max-width:760px){.pending-review-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.pending-review-table .block-note{max-width:260px}}

/* 0.12.1 · revisión de casos por jornada */
.pending-case-problems{display:grid;gap:14px}.pending-case-issue{display:grid;grid-template-columns:minmax(210px,230px) 1fr;gap:22px;align-items:center;padding:18px 20px;border:1px solid var(--line);border-radius:16px;background:#fff}.pending-case-issue-type{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px}.pending-case-issue .incident-type{display:flex;justify-content:center;align-items:center;text-align:center;line-height:1.35;padding:8px 14px;min-height:44px;margin:0 auto}.pending-case-issue p{margin:8px 0 0;color:var(--muted);line-height:1.55}.pending-attention-help{display:block;margin-top:8px;color:#768196;line-height:1.45}.pending-attention-badge{display:inline-flex;align-items:center;justify-content:center;width:max-content;max-width:100%;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800;line-height:1.25;text-align:center;white-space:normal}.pending-attention-badge.manager{background:#e9efff;color:#244fc1;border:1px solid #ccd9ff}.pending-attention-badge.worker{background:#fff5dc;color:#8b6200;border:1px solid #f2dfad}.pending-attention-badge.mixed{background:#f2edff;color:#6741b8;border:1px solid #dcd0ff}.pending-proposal-stack{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px}.pending-proposal-stack .pending-proposal{margin:0}
.pending-case-summary{margin:0 0 18px}.pending-case-timeline{margin-top:6px}.pending-case-edit-actions{margin-top:18px}.pending-case-proposal{border:1px solid var(--line);border-radius:18px;padding:18px;margin-top:14px;background:#fff}.pending-case-proposal-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.pending-case-proposal-grid{display:grid;grid-template-columns:minmax(220px,.8fr) 1.2fr;gap:20px;margin-bottom:14px}.pending-case-proposal-grid small,.pending-case-worker-reason small{display:block;color:var(--muted);margin-bottom:5px}.pending-case-proposal-grid p,.pending-case-worker-reason p{margin:0}.pending-case-decision-form{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:end;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.pending-case-decision-form label{margin:0}.pending-case-decision-form .actions{margin:0}.pending-case-no-proposal{margin:10px 0 16px}.pending-case-no-proposal h3{margin:10px 0 6px}.pending-case-manual-resolution{display:grid;grid-template-columns:1fr minmax(220px,1fr) auto;gap:12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.pending-case-manual-resolution input{width:100%}.pending-case-trace{margin-top:18px}.pending-case-trace summary{cursor:pointer}
@media(max-width:760px){.pending-case-issue{grid-template-columns:1fr;gap:14px;padding:16px}.pending-case-issue-type{width:100%}.pending-case-issue .incident-type{width:100%;max-width:320px}.pending-attention-badge{max-width:320px}.pending-case-proposal-grid{grid-template-columns:1fr}.pending-case-decision-form{grid-template-columns:1fr}.pending-case-manual-resolution{grid-template-columns:1fr}.pending-case-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 0.12.3 · Pendientes como centro de revisión, reglas claras y paginación uniforme */
.pending-advanced-top{margin:-6px 0 18px;padding:0;overflow:hidden}.pending-advanced-top summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 18px;cursor:pointer}.pending-advanced-top summary span{color:var(--muted);font-size:13px;font-weight:500}.pending-advanced-top .actions{padding:0 18px 18px}.settings-location-note{display:flex;align-items:center;gap:12px;margin:0 0 18px;padding:13px 16px;border:1px solid #dbe4f4;border-radius:12px;background:#f8faff}.settings-location-note>span{font-size:20px}.settings-location-note div{display:flex;flex:1;flex-direction:column}.settings-location-note small{color:var(--muted)}
.pending-rules-form{display:grid;gap:16px}.rule-block{margin:0}.rule-block-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:18px}.rule-block-head h2{margin:1px 0 5px}.rule-block-head p{margin:0}.rule-step{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:50%;background:#e9efff;color:#2857d8;font-weight:850}.rule-field-row{max-width:560px}.rule-two-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.rule-two-cols label,.rule-field-row label{display:block;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fbfcfe}.rule-field-row input,.rule-two-cols input[type=number]{max-width:220px}.rule-number{max-width:220px}.rule-switch{display:flex!important;flex-direction:row!important;align-items:center;justify-content:space-between;gap:18px}.rule-switch>span{display:flex;flex-direction:column;gap:4px}.rule-switch small{color:var(--muted);font-weight:500}.rule-switch input{width:22px;height:22px;flex:none}.rule-summary{margin:0;border-color:#cfdcff;background:#f8faff}.rule-summary h2{margin-top:6px}.rule-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.rule-summary-grid>div{padding:14px;border:1px solid #dbe5ff;border-radius:11px;background:#fff}.rule-summary-grid strong,.rule-summary-grid span{display:block}.rule-summary-grid span{margin-top:3px;color:var(--muted);font-size:13px}.rule-margin-note{margin-top:16px;padding:14px 16px;border-left:4px solid #e2a400;border-radius:8px;background:#fff9e7}.rule-margin-note p{margin:5px 0 0}.sticky-form-actions{position:sticky;bottom:12px;z-index:6;display:flex;justify-content:flex-end;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:13px;background:rgba(255,255,255,.95);box-shadow:var(--shadow);backdrop-filter:blur(8px)}
.table-pagination{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:10px 0 2px;padding:10px 2px;color:var(--muted);font-size:13px}.table-page-size{display:flex;align-items:center;gap:7px}.table-page-size select{width:auto;min-width:70px;padding:7px 28px 7px 9px}.table-page-info{white-space:nowrap}.table-page-nav{display:flex;align-items:center;justify-content:flex-end;gap:4px;flex-wrap:wrap}.table-page-button{min-height:34px;padding:6px 10px;border-radius:8px;font-size:13px}.table-page-button.active{border-color:var(--primary);background:var(--primary);color:#fff}.table-page-button:disabled{opacity:.45;cursor:not-allowed}.table-page-ellipsis{padding:0 4px}.table-page-hidden{display:none!important}
@media(max-width:760px){.pending-rules-hero{align-items:flex-start}.rule-two-cols,.rule-summary-grid{grid-template-columns:1fr}.rule-switch{align-items:flex-start}.table-pagination{align-items:flex-start;flex-direction:column}.table-page-info{order:3}.table-page-nav{justify-content:flex-start}.pending-advanced-top summary{align-items:flex-start;flex-direction:column}}
@media print{.table-pagination{display:none!important}.table-page-hidden{display:table-row!important}.sticky-form-actions{display:none!important}}

/* 0.12.4 - ajuste visual de reglas y acciones de Revisar caso */
.rule-block .field-help{margin-top:8px;line-height:1.45}.rule-field-row label,.rule-two-cols label{box-shadow:0 1px 2px rgba(32,47,80,.03)}.pending-case-edit-actions{padding-top:2px}
@media(max-width:700px){.rule-field-row{max-width:none}.rule-field-row input,.rule-two-cols input[type=number]{max-width:none}.rule-two-cols{grid-template-columns:1fr}}


/* 0.12.5 - Avisos del trabajador y modal de validación en móvil */
.my-incidents-table{width:100%}
.my-incident-detail{overflow-wrap:anywhere}
@media(max-width:620px){
  .employee-list-panel .table-wrap{overflow:visible}
  .my-incidents-table td:last-child{min-width:0!important}
  .my-incidents-table .my-incident-action-cell{display:block!important;padding-top:10px!important}
  .my-incidents-table .my-incident-action-cell:before{display:none!important}
  .my-incidents-actions{display:grid!important;grid-template-columns:1fr!important;gap:8px;width:100%;justify-content:stretch}
  .my-incidents-actions .button,.my-incidents-actions button{display:flex;align-items:center;justify-content:center;width:100%;max-width:100%;min-width:0;min-height:42px;padding:10px 12px;white-space:normal;text-align:center;overflow-wrap:anywhere}
  .my-incidents-actions .incident-action-note{width:100%;margin:2px 0 0;padding:0;text-align:left;white-space:normal;overflow-wrap:anywhere}
  .justification-pending{display:inline-flex;max-width:100%;white-space:normal;text-align:center}
  body.modal-open .pwa-bottom-nav{display:none!important}
  .incident-modal{z-index:2200}
  .incident-modal-card{max-height:100dvh;padding-bottom:max(18px,env(safe-area-inset-bottom));overscroll-behavior:contain}
  .incident-modal-form{min-width:0}
  .incident-modal-form select,.incident-modal-form input{max-width:100%;min-width:0}
  .incident-modal-actions{position:sticky;bottom:calc(-1 * max(18px,env(safe-area-inset-bottom)));z-index:2;display:grid;grid-template-columns:1fr;gap:8px;margin:4px -14px calc(-1 * max(18px,env(safe-area-inset-bottom)));padding:12px 14px max(18px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#fff}
  .incident-modal-actions .button{width:100%;min-height:44px}
  .incident-modal-actions #incident-modal-submit{order:-1}
}

/* 0.12.7 - ajustes de revisión y validación de casos */
.pending-review-table th:nth-child(5),.pending-review-table th:nth-child(6),.pending-review-table td:nth-child(5),.pending-review-table td:nth-child(6){text-align:center}
.pending-review-table td:nth-child(5) .pending-proposal{justify-content:center}
.pending-case-edit-actions .button.primary{min-width:170px}
.pending-case-manual-tools{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.pending-case-manual-tools>summary{cursor:pointer;color:var(--muted);font-weight:750}
@media(max-width:620px){
  .my-incidents-table{max-width:560px;margin-left:auto;margin-right:auto}
  .table-wrap table.my-incidents-table tr{max-width:540px;margin-left:auto;margin-right:auto}
  .my-incidents-table td[data-label="Estado"]{justify-items:center;text-align:center!important}
  .my-incidents-table td[data-label="Estado"]:before{text-align:center}
  .my-incidents-table .justification-pending,.my-incidents-table .incident-status{justify-self:center;justify-content:center}
  .my-incidents-actions .incident-action-note{text-align:center}
}


/* 0.12.9 - decisión explícita del responsable para aceptar una jornada fuera de criterio */
.pending-case-manager-validation{margin:18px 0;padding:20px;border:1px solid #b9d9c9;border-radius:16px;background:#f3fbf7}.pending-case-manager-validation>div:first-child{display:flex;align-items:flex-start;gap:14px}.pending-manager-validation-icon{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border-radius:50%;background:var(--success);color:#fff;font-size:20px;font-weight:900}.pending-case-manager-validation h3{margin:2px 0 6px}.pending-case-manager-validation p{margin:0;color:var(--muted);line-height:1.5}.pending-case-manager-validation-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:end;margin-top:18px;padding-top:18px;border-top:1px solid #cfe5da}.pending-case-manager-validation-form label{margin:0}.pending-case-manager-validation-form textarea{min-height:78px}.pending-case-manager-validation-form .actions{margin:0;justify-content:flex-end;flex-wrap:wrap}
@media(max-width:760px){.pending-case-manager-validation{padding:16px}.pending-case-manager-validation-form{grid-template-columns:1fr}.pending-case-manager-validation-form .actions{display:grid;grid-template-columns:1fr}.pending-case-manager-validation-form .actions .button{width:100%;box-sizing:border-box;text-align:center}}

/* 0.13.1 - estados de revisión diferenciados */


/* 0.13.3 - PWA móvil más compacta y navegación sin duplicados */
.main-nav .worker-pwa-nav{display:none}
.pwa-standalone .main-nav .worker-full-nav{display:none!important}
.pwa-standalone .main-nav .worker-pwa-nav{display:flex!important}
.vacation-period{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.request-builder-summary{display:flex;align-items:center;justify-content:space-between;gap:18px;cursor:pointer;list-style:none}
.request-builder-summary::-webkit-details-marker{display:none}
.request-builder-summary h2{margin:4px 0 5px}.request-builder-summary p{margin:0}
.request-toggle-label{flex:none;padding:6px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:11px;font-weight:800}
.vacation-request-shell[open] .request-toggle-label{background:#eef1f5;color:#5d6878}
.my-incidents-filter-panel{padding-top:16px;padding-bottom:16px}
.my-incidents-filter{align-items:end}.my-incidents-filter label{min-width:190px}
@media(max-width:760px){
  .pwa-standalone .main-nav .worker-full-nav{display:none!important}
  .pwa-standalone .main-nav .worker-pwa-nav{display:flex!important}
  .pwa-standalone .main-nav{gap:4px}
  .pwa-standalone .main-nav .worker-pwa-nav{min-height:44px;align-items:center}
  .my-vacation-toolbar{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;width:100%}
  .my-vacation-toolbar .my-vacation-year-selector{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,.42fr) minmax(0,.58fr);gap:8px;width:100%}
  .my-vacation-toolbar .my-vacation-year-selector input,.my-vacation-toolbar .my-vacation-year-selector button,.my-vacation-toolbar>.button,.my-vacation-toolbar>button{width:100%;min-width:0}
  .request-builder-summary{padding:17px 18px;margin-bottom:12px}
  .request-builder-summary h2{font-size:18px}.request-builder-summary p{font-size:12px}
  .request-toggle-label{font-size:0;padding:0;width:32px;height:32px;display:grid;place-items:center}
  .request-toggle-label:after{content:"+";font-size:20px;line-height:1}
  .vacation-request-shell[open] .request-toggle-label:after{content:"−"}
  .vacation-request-shell:not([open]){margin-bottom:18px}
  .vacation-period{display:flex;flex-direction:column;align-items:flex-start;gap:1px;white-space:normal;line-height:1.35}
  .vacation-period-separator{display:none}
  .my-incidents-filter{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}
  .my-incidents-filter label{min-width:0}.my-incidents-filter button{min-width:92px}
}
/* 0.13.4 - el formulario se colapsa, el calendario permanece siempre visible */
.vacation-always-visible-calendar{margin-top:14px}
.vacation-always-visible-calendar>.panel-head{margin-bottom:4px}
@media print{
  .vacation-request-shell>summary,.vacation-request-shell>.request-builder{display:none!important}
  .vacation-always-visible-calendar>.panel-head{display:none!important}
}

/* 0.13.5 - personalización visual */
thead th{background:var(--table-head-bg);color:var(--table-head-text)}.team-calendar thead th:first-child{background:var(--table-head-bg)}.branding-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.7fr);gap:22px;align-items:start}.branding-form{margin:0}.branding-remove{display:flex;align-items:center;gap:8px;font-weight:650}.branding-remove input{width:auto;margin:0}.color-field{display:grid;grid-template-columns:58px 1fr;gap:8px;margin-top:6px}.color-field input[type=color]{height:43px;padding:3px;cursor:pointer}.color-field .color-code{margin:0;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;text-transform:uppercase}.branding-preview{position:sticky;top:92px;padding:18px;border:1px solid var(--line);border-radius:14px;background:#fbfcfe}.branding-preview-head{display:flex;align-items:center;gap:12px;margin:10px 0 18px}.branding-preview-head img{width:64px;height:46px;object-fit:contain}.branding-preview-head>span{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;background:var(--preview-primary);color:#fff;font-weight:800}.branding-preview-button{width:100%;border-color:var(--preview-primary)!important;background:var(--preview-primary)!important;color:#fff!important}.branding-preview-table{display:grid;grid-template-columns:1fr 1fr;margin-top:16px;border:1px solid var(--line);border-radius:10px;overflow:hidden}.branding-preview-table>div{padding:9px;background:var(--preview-table-bg);color:var(--preview-table-text);font-size:10px;font-weight:800}.branding-preview-table>span{padding:10px;background:#fff;border-top:1px solid var(--line)}.branding-reset{margin-top:16px}.branding-reset .button{width:100%}.print-brand{align-items:center;gap:10px;margin-bottom:4mm}.print-brand img{max-width:34mm;max-height:12mm;object-fit:contain}.print-brand strong{font-size:12px}@media print{.print-brand{display:flex!important}}@media(max-width:800px){.branding-layout{grid-template-columns:1fr}.branding-preview{position:static}}

.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:20px}.login-brand img{max-width:150px;max-height:58px;object-fit:contain}.login-brand>span{width:48px;height:48px;display:grid;place-items:center;border-radius:13px;background:var(--primary);color:var(--primary-contrast);font-weight:800}.login-brand strong{font-size:18px}

/* 0.14.0 - onboarding y acceso de trabajadores */
.onboarding-public{padding-top:28px;padding-bottom:36px}.onboarding-public .panel{padding:26px}.onboarding-success{border-top:5px solid var(--success)}.onboarding-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.install-app-brand{display:flex;align-items:center;gap:16px;margin-bottom:18px}.install-app-brand img{width:86px;height:64px;object-fit:contain}.install-app-brand>span{width:58px;height:58px;display:grid;place-items:center;border-radius:15px;background:var(--primary);color:var(--primary-contrast);font-weight:850;font-size:18px}.install-app-brand h1{margin:4px 0}.install-app-status{margin:16px 0;padding:12px 14px;border-radius:10px;background:var(--primary-soft);color:#25324a}.install-ios-help{margin:16px 0;padding:16px;border:1px solid var(--line);border-radius:12px;background:#fafbfe}.install-ios-help ol{margin:10px 0 0;padding-left:22px}.copy-access-link{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.copy-access-link input{margin:0;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.qr-access{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:20px}.qr-access svg{display:block;width:min(260px,100%);height:auto;border:1px solid var(--line);border-radius:12px;background:#fff;padding:8px}.qr-access small{color:var(--muted);text-align:center}.access-links-grid{display:grid;grid-template-columns:1fr 1fr minmax(230px,.65fr);gap:18px;align-items:start}.access-links-grid>div>small{display:block;margin-bottom:6px;color:var(--muted);font-weight:700}.access-links-grid .qr-access{margin-top:0}.bulk-access-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:14px 0;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#f8faff}.bulk-access-bar span{display:flex;flex-direction:column;gap:2px}.bulk-access-bar small{color:var(--muted)}.bulk-check{width:40px;text-align:center!important}.bulk-check input{width:17px;height:17px;margin:0}.access-manual{margin-top:16px}.access-manual>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;list-style:none}.access-manual>summary::-webkit-details-marker{display:none}.access-manual>summary span{font-size:12px;color:var(--muted)}.access-manual[open]>summary{margin-bottom:18px}.pwa-install-page .onboarding-public{max-width:720px}
@media(max-width:800px){.access-links-grid{grid-template-columns:1fr}.bulk-access-bar{align-items:stretch;flex-direction:column}.bulk-access-bar .button{width:100%}.copy-access-link{grid-template-columns:1fr}.copy-access-link .button{width:100%}.onboarding-actions{display:grid;grid-template-columns:1fr}.onboarding-actions .button{width:100%;text-align:center}.onboarding-public{padding-top:12px}.onboarding-public .panel{padding:20px}.install-app-brand{align-items:flex-start}}


/* 0.14.1 - casos de jornada del trabajador, contador seguro y acciones de acceso */
.access-actions{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);gap:10px;align-items:stretch}.access-actions form{display:flex;margin:0}.access-actions .button,.access-actions form .button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;margin:0}.punch-card.state-review{border-top-color:#d89a21}.punch-card.state-review .punch-status strong{color:#946200}.stale-workday-warning{margin:18px 0;padding:14px 16px;border:1px solid #efd28f;border-radius:12px;background:#fff8e7;color:#684b08}.stale-workday-warning strong{display:block;margin-bottom:5px}.stale-workday-warning p{margin:0;line-height:1.5;color:#7a621f}.worker-case-problem-cell{min-width:360px}.worker-case-count{display:inline-flex;margin:0 0 8px;padding:4px 8px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-weight:800}.worker-case-problems{display:grid;gap:9px}.worker-case-problem{display:grid;gap:2px;padding:9px 11px;border-left:3px solid var(--primary);border-radius:8px;background:#fafbfe}.worker-case-problem strong{font-size:13px}.worker-case-problem span{color:var(--muted);font-size:12px;line-height:1.45}.worker-case-table td[data-label="Estado"]{text-align:center}.worker-case-table .my-incident-action-cell{min-width:250px}
@media(max-width:760px){.access-actions{display:grid!important;grid-template-columns:1fr!important}.access-actions>*,.access-actions form,.access-actions .button,.access-actions form .button{width:100%!important}.worker-case-problem-cell{min-width:0!important}.worker-case-table td[data-label="Problemas"]{display:block!important}.worker-case-problems{margin-top:4px}.worker-case-problem{padding:10px 11px}.worker-case-table .my-incident-action-cell{min-width:0!important}.stale-workday-warning{text-align:left}}

/* 0.14.2 - avisos móviles, navegación Ausencias y diagnóstico de rendimiento */
.performance-table td small{display:block;margin-top:3px;color:var(--muted);font-size:11px}.performance-help .actions{margin-top:18px;justify-content:flex-end}
@media(max-width:760px){
  .table-wrap table.worker-case-table td.worker-case-problem-cell{display:block!important;width:100%!important;padding:12px 0!important}
  .table-wrap table.worker-case-table td.worker-case-problem-cell:before{display:block!important;margin:0 0 8px!important}
  .worker-case-problem-cell .worker-case-count{display:flex;width:100%;box-sizing:border-box;justify-content:center;margin:0 0 10px;padding:7px 10px;text-align:center}
  .worker-case-problem-cell .worker-case-problems{display:grid;width:100%;gap:10px;margin:0}
  .worker-case-problem-cell .worker-case-problem{display:block;width:100%;box-sizing:border-box;padding:12px 14px;border-left-width:4px}
  .worker-case-problem-cell .worker-case-problem strong{display:block;margin-bottom:4px;font-size:14px;line-height:1.35}
  .worker-case-problem-cell .worker-case-problem span{display:block;font-size:13px;line-height:1.5;overflow-wrap:anywhere}
}


/* 0.15.0 - tipos de ausencia configurables */
#typeForm .info-box{margin-top:4px}.settings-link h2{margin-bottom:6px}


/* 0.15.1 - solicitudes de ausencia por horas */
.leave-request-form .request-duration-kind{grid-column:2}.leave-request-form .partial-request-fields{grid-column:1/-1}.partial-request-fields{padding:16px;border:1px solid #cfdcff;border-radius:12px;background:#f8faff}.partial-request-fields[hidden]{display:none!important}.partial-request-fields>div:first-child{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.partial-request-fields>div:first-child small{color:var(--muted);font-size:12px;line-height:1.45}.partial-request-grid{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:12px}.partial-request-grid label{margin:0}.partial-request-review{border-top:4px solid var(--primary)}.partial-request-review h2{margin:4px 0 8px}.partial-request-review p{margin:0;color:var(--muted)}.partial-change-time{display:grid;grid-template-columns:1fr 1fr;gap:10px}.request-duration-kind[hidden]{display:none!important}.request-builder-form .full{grid-column:1/-1}.request-builder-form .request-attachment-card.full,.request-builder-form .vacation-order-note.full{grid-column:1/-1}.leave-request-form>button{grid-column:1/-1;justify-self:end;min-width:220px}.request-review-context .flash{margin:12px 0}
@media(max-width:800px){.partial-request-grid{grid-template-columns:1fr 1fr}.partial-request-grid label:first-child{grid-column:1/-1}.leave-request-form .request-duration-kind{grid-column:auto}.leave-request-form>button{width:100%;min-width:0}.partial-change-time{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.partial-request-grid,.partial-change-time{grid-template-columns:1fr}.partial-request-grid label:first-child{grid-column:auto}.partial-request-fields{padding:14px}}

/* 0.15.2 - solicitudes por horas mas visibles */
.hourly-request-hint{display:flex;align-items:flex-start;gap:12px;margin:0 0 16px;padding:13px 15px;border:1px solid #cfdcff;border-radius:12px;background:#f8faff}.hourly-request-hint>span{display:grid;place-items:center;flex:0 0 34px;height:34px;border-radius:50%;background:#e8efff;color:var(--primary);font-size:19px;font-weight:800}.hourly-request-hint>div{display:flex;flex-direction:column;gap:3px;min-width:0}.hourly-request-hint strong{font-size:14px}.hourly-request-hint small{color:var(--muted);font-size:12px;line-height:1.45}.request-duration-kind .field-help{max-width:330px}.request-duration-kind select option:disabled{color:#9aa2b1}
@media(max-width:620px){.hourly-request-hint{padding:12px}.request-duration-kind .field-help{max-width:none}}

/* 0.15.3 - resolución de solicitudes simplificada */
.flash.info{border-color:#cfdcff;background:#f4f7ff;color:#2b4f9f}
.request-review-summary{border-top:4px solid var(--primary)}
.request-review-summary-head,.request-resolution-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}
.request-review-summary-head h2,.request-resolution-heading h2{margin:4px 0 5px}
.request-review-summary-head p,.request-resolution-heading p{margin:0}
.request-review-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0}
.request-review-meta>div{min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:11px;background:#fafbfe}
.request-review-meta dt{margin:0 0 3px;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.request-review-meta dd{margin:0;color:var(--ink);font-weight:750;overflow-wrap:anywhere}
.request-review-summary .flash{margin:14px 0 0}
.inline-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.request-resolution-simple{border-top:4px solid #875bd8}
.request-resolution-result{border-top:4px solid var(--success)}
.resolution-quick-actions{display:flex;gap:7px;flex-wrap:wrap}
.resolution-quick-actions .button{min-height:34px;padding:6px 10px;font-size:12px}
.single-resolution-card{display:grid;grid-template-columns:minmax(210px,.8fr) minmax(0,1.4fr);gap:20px;align-items:start}
.single-resolution-request{display:flex;flex-direction:column;gap:4px;padding:16px;border:1px solid var(--line);border-radius:12px;background:#fafbfe}
.single-resolution-request strong{font-size:16px}.single-resolution-request span{font-weight:750}.single-resolution-request small{color:var(--muted)}
.resolution-choice-group{display:grid;gap:10px;margin:0;padding:0;border:0}
.resolution-choice-group legend{margin:0 0 8px;color:var(--ink);font-size:14px;font-weight:800}
.resolution-choice{display:flex;align-items:flex-start;gap:11px;padding:14px 15px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}
.resolution-choice:hover{border-color:#b9c6da;box-shadow:0 3px 12px rgba(32,47,80,.05)}
.resolution-choice input{width:18px;height:18px;flex:none;margin:2px 0 0}
.resolution-choice span{display:flex;flex-direction:column;gap:2px}.resolution-choice small{color:var(--muted);font-weight:500;line-height:1.4}
.resolution-choice:has(input:checked).accept-choice{border-color:#82caa2;background:#eef9f3}
.resolution-choice:has(input:checked).reject-choice{border-color:#e5a6aa;background:#fff3f3}
.resolution-choice.disabled{opacity:.55;cursor:not-allowed;background:#f4f5f7}
.multi-resolution-list{display:grid;gap:8px}
.multi-resolution-row{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:14px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:11px;background:#fff}
.multi-resolution-date{display:flex;flex-direction:column;gap:2px}.multi-resolution-date small{color:var(--muted)}
.multi-resolution-options{display:flex;gap:7px;flex-wrap:wrap}
.multi-resolution-options label{position:relative;margin:0;cursor:pointer}
.multi-resolution-options input{position:absolute;opacity:0;pointer-events:none}
.multi-resolution-options span{display:inline-flex;align-items:center;justify-content:center;min-width:88px;min-height:36px;padding:7px 12px;border:1px solid var(--line);border-radius:9px;background:#fafbfe;font-size:13px;font-weight:750}
.multi-resolution-options input[value="accept"]:checked+span{border-color:#79c69a;background:#eaf8f0;color:#11633b}
.multi-resolution-options input[value="reject"]:checked+span{border-color:#e0a2a7;background:#fff0f1;color:#9b3039}
.multi-resolution-options input:disabled+span{opacity:.45;cursor:not-allowed}
.resolution-footer{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(280px,1.2fr) auto;gap:16px;align-items:end;margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.resolution-state{display:flex;flex-direction:column;gap:3px}.resolution-state small{color:var(--muted)}
.resolution-reason{margin:0}.resolution-reason[hidden]{display:none!important}.resolution-reason textarea{min-height:78px}
.resolution-submit{min-width:220px}.resolution-submit:disabled{opacity:.5;cursor:not-allowed}
.resolved-request-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 16px;border:1px solid var(--line);border-radius:12px;background:#fafbfe}
.resolved-request-card>div{display:flex;flex-direction:column;gap:3px}.resolved-request-card>div span{color:var(--muted)}
.resolved-reason{margin:12px 0 0;padding:12px 14px;border-radius:10px;background:#fff4f4;color:#7f2f35}
.multi-resolution-list.resolved .multi-resolution-row{grid-template-columns:minmax(180px,1fr) auto;position:relative}.row-reason{grid-column:1/-1;color:var(--muted)}
.resolution-summary-text{margin:12px 0 0;font-weight:750;color:var(--ink)}
.request-history-collapsed{padding:0;overflow:hidden}
.request-history-collapsed>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px;cursor:pointer;list-style:none}
.request-history-collapsed>summary::-webkit-details-marker{display:none}
.request-history-collapsed>summary h2{margin:4px 0}.request-history-collapsed>summary p{margin:0}
.history-toggle-label{flex:none;padding:6px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:0;font-weight:800}.history-toggle-label:after{content:"Ver actividad";font-size:12px}
.request-history-collapsed[open] .history-toggle-label:after{content:"Ocultar actividad"}.request-history-collapsed:not([open])>.table-wrap{display:none}
.request-history-collapsed>.table-wrap{padding:0 18px 18px}
.request-pending-day{cursor:default!important}

@media(max-width:800px){
  .request-review-meta{grid-template-columns:repeat(2,minmax(0,1fr))}
  .single-resolution-card{grid-template-columns:1fr}
  .resolution-footer{grid-template-columns:1fr}.resolution-submit{width:100%;min-width:0}
  .request-resolution-heading{align-items:stretch;flex-direction:column}.resolution-quick-actions{width:100%}.resolution-quick-actions .button{flex:1}
}
@media(max-width:560px){
  .request-review-summary-head{align-items:stretch;flex-direction:column}.request-review-summary-head .button{width:100%}
  .request-review-meta{grid-template-columns:1fr}
  .multi-resolution-row{grid-template-columns:1fr}.multi-resolution-options{display:grid;grid-template-columns:1fr 1fr;width:100%}.multi-resolution-options span{width:100%}
  .resolved-request-card{align-items:flex-start;flex-direction:column}
  .request-history-collapsed>summary{align-items:flex-start;flex-direction:column}.history-toggle-label{align-self:flex-start}
}

/* 0.15.4 - motor de tiempo cubierto y lectura clara de jornada */
.coverage-metric,.coverage-stat,.summary-card.coverage{background:#fff;border-color:var(--line)}
.coverage-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
.coverage-result{grid-template-columns:repeat(3,minmax(0,1fr))}
.summary-cards.has-coverage{grid-template-columns:repeat(6,minmax(0,1fr))}
.coverage-report-cards{grid-template-columns:repeat(3,minmax(0,1fr))}
.coverage-case-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
.report-table-summary,.report-table-entries,.report-table-balance{min-width:1120px}
@media(max-width:900px){
  .summary-cards.has-coverage{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:760px){
  .coverage-metrics,.coverage-result,.coverage-report-cards,.coverage-case-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .summary-cards.has-coverage{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:480px){
  .coverage-metrics,.coverage-result,.coverage-report-cards,.coverage-case-summary,.summary-cards.has-coverage{grid-template-columns:1fr}
}

/* 0.15.6 - jornada compacta y selector rapido de ausencias en movil */
.punch-context-summary{display:contents}
.punch-context-summary>span{padding:12px;border:1px solid var(--line);border-radius:11px;background:#f8faff;text-align:center}
.punch-context-summary small{display:block;margin-bottom:5px;color:var(--muted);font-size:11px}
.punch-context-summary b{font-size:17px}
.mobile-date-picker{display:none}
.mobile-date-picker[hidden]{display:none!important}
.mobile-calendar-shell>summary{list-style:none;cursor:pointer}
.mobile-calendar-shell>summary::-webkit-details-marker{display:none}
.calendar-toggle-label{display:none}
.error-text{color:var(--danger)!important}

@media(max-width:760px){
  .my-day-heading{margin-bottom:10px}
  .my-day-heading>p:last-child{display:none}
  .punch-card{padding:12px}
  .punch-status{margin-bottom:12px}
  .punch-status small{font-size:10px}
  .punch-status strong{margin-top:2px;font-size:25px}
  .punch-metrics.coverage-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:14px}
  .punch-context-summary{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:0!important;overflow:hidden;border:1px solid var(--line)!important;border-radius:11px!important;background:#f8faff!important}
  .punch-context-summary>span{min-width:0;padding:8px 5px;border:0;border-right:1px solid var(--line);border-radius:0;background:transparent}
  .punch-context-summary>span:last-child{border-right:0}
  .punch-context-summary small{margin-bottom:2px;font-size:9px;line-height:1.2}
  .punch-context-summary b{display:block;overflow:hidden;font-size:13px;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}
  .punch-time-metric{padding:9px 8px!important}
  .punch-time-metric small{margin-bottom:2px;font-size:10px}
  .punch-time-metric b{font-size:20px}
  .punch-actions{gap:8px}
  .punch-actions .button{min-height:46px}

  .mobile-date-picker{display:block;padding:14px;border:1px solid #cfdcff;border-radius:12px;background:#f8faff}
  .mobile-date-picker>div:first-child{display:flex;flex-direction:column;gap:3px;margin-bottom:12px}
  .mobile-date-picker>div:first-child small{color:var(--muted);font-size:12px;line-height:1.4}
  .mobile-date-picker-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
  .mobile-date-picker-grid label{min-width:0}
  .mobile-date-picker-grid label>small{color:var(--muted);font-weight:500}
  .mobile-date-picker-grid .button{grid-column:1/-1;width:100%;margin-top:2px}
  .mobile-calendar-shell{margin:14px 0 20px}
  .mobile-calendar-shell>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 16px;margin:0;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow)}
  .mobile-calendar-shell[open]>summary{margin-bottom:14px}
  .mobile-calendar-shell>summary h2{margin:0 0 3px;font-size:17px}
  .mobile-calendar-shell>summary p{margin:0;font-size:12px}
  .calendar-toggle-label{display:grid;place-items:center;flex:0 0 32px;width:32px;height:32px;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-size:0}
  .calendar-toggle-label:after{content:"+";font-size:20px;line-height:1}
  .mobile-calendar-shell[open] .calendar-toggle-label:after{content:"−"}
}

@media(max-width:420px){
  .punch-metrics.coverage-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mobile-date-picker-grid{grid-template-columns:1fr}
  .mobile-date-picker-grid .button{grid-column:auto}
}

/* 0.15.7 - lectura simple de jornada y simetria de tarjetas moviles */
.worker-day-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}

@media(max-width:760px){
  .punch-metrics.coverage-metrics.worker-day-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .worker-day-metrics .punch-target-metric{grid-column:1/-1;padding:11px 8px!important;background:var(--primary-soft)}
  .worker-day-metrics .punch-target-metric small{color:var(--primary)}
  .worker-day-metrics .punch-target-metric b{font-size:23px}

  .request-builder-summary,.mobile-calendar-shell>summary{flex-direction:row!important;align-items:center!important;justify-content:space-between!important;gap:14px;padding:17px 18px}
  .request-builder-summary>div,.mobile-calendar-shell>summary>div{min-width:0}
  .mobile-calendar-shell>summary h2{margin:4px 0 5px;font-size:18px}
  .mobile-calendar-shell>summary p{margin:0}
  .mobile-calendar-shell>summary .eyebrow{margin:0!important;font-size:11px}
  .request-toggle-label,.calendar-toggle-label{flex:0 0 36px;width:36px;height:36px}

  .employee-list-panel .my-incidents-table-wrap{width:100%;margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important}
  .table-wrap.my-incidents-table-wrap table.my-incidents-table,.table-wrap.my-incidents-table-wrap table.my-incidents-table tr{width:100%;max-width:none;margin-left:0;margin-right:0;box-sizing:border-box}
}

@media(max-width:420px){
  .punch-metrics.coverage-metrics.worker-day-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* 0.15.10 - navegación por teclado y salto al contenido */
.skip-link{position:fixed;left:12px;top:8px;z-index:2000;padding:9px 13px;border-radius:8px;background:#162033;color:#fff;font-weight:800;transform:translateY(-150%);transition:transform .15s ease}
.skip-link:focus{transform:translateY(0)}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--primary,#315ee7);outline-offset:2px}
