:root{--ink:#162033;--muted:#687386;--line:#e2e7ef;--primary:#315ee7;--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:#2857ad;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),#6f8df2);color:#fff;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:#edf2ff;color:#2348bd}.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:#fff}.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:#e8efff;color:#2857ad;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:#edf2ff;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}
