/* Employee leave page, based on UranusHRM's LeaveLayout and HNBG's blue theme. */
.leave-dashboard { display:grid; gap:.9rem; color:var(--text); }
.leave-dashboard-grid { display:grid; grid-template-columns:minmax(0,7fr) minmax(340px,5fr); gap:.9rem; align-items:start; }
.leave-calendar-card, .leave-summary-card, .leave-recent-card {
  min-width:0; background:var(--surface); border:1px solid var(--rule);
  border-radius:.65rem; box-shadow:0 2px 9px rgba(11,49,96,.07);
}
.leave-calendar-card { padding:1rem; }
.leave-summary-card { padding:1rem; min-height:18.5rem; }
.leave-calendar-header { display:flex; align-items:start; justify-content:space-between; gap:.75rem; margin-bottom:.3rem; }
.leave-calendar-header > div { display:grid; gap:.15rem; }
.leave-section-title, .leave-summary-title { color:var(--brand-navy); font-size:.88rem; font-weight:800; }
.leave-calendar-header strong { color:var(--text); font-size:.79rem; font-weight:750; }
.leave-dashboard .leave-btn, .leave-request-modal .leave-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:.38rem;
  min-height:2rem; padding:.37rem .75rem; border:1px solid transparent;
  border-radius:.32rem; font-size:.74rem; font-weight:750; line-height:1.1;
}
.leave-dashboard .leave-btn.primary, .leave-request-modal .leave-btn.primary { background:var(--brand-navy); color:#fff; }
.leave-dashboard .leave-btn.primary:hover, .leave-request-modal .leave-btn.primary:hover { background:var(--accent-blue); }
.leave-request-modal .leave-btn.outline { border-color:#a8bbcf; background:var(--surface); color:var(--brand-navy); }
.leave-request-modal .leave-btn:disabled { opacity:.6; }
.leave-apply-button { white-space:nowrap; }
.leave-calendar-selectors { display:flex; gap:.6rem; padding:.15rem 0 .6rem; }
.leave-calendar-selectors .form-select { width:11.5rem; height:1.95rem; min-height:1.95rem; border-color:#b9c8d9; background:var(--surface); font-size:.74rem; }
.leave-month-grid { display:grid; grid-template-columns:repeat(7,minmax(70px,1fr)); overflow:auto; border-top:1px solid #d9e2ed; border-left:1px solid #d9e2ed; }
.leave-weekday { min-width:70px; min-height:2.5rem; display:grid; align-content:center; gap:.05rem; text-align:center; border-right:1px solid #d9e2ed; border-bottom:1px solid #d9e2ed; color:var(--brand-navy); font-size:.69rem; }
.leave-weekday strong { font-weight:800; }.leave-weekday span { font-size:.65rem; font-weight:700; }
.leave-weekday.weekend { color:var(--brand-red,#d12d2d); }
.leave-calendar-day { position:relative; display:flex; flex-direction:column; justify-content:space-between; min-width:70px; height:4.7rem; padding:.28rem .35rem; border:0; border-right:1px solid #d9e2ed; border-bottom:1px solid #d9e2ed; border-radius:0; background:var(--surface); color:var(--brand-navy); text-align:center; cursor:pointer; }
.leave-calendar-day.blank { background:var(--surface-2); cursor:default; }
.leave-calendar-day:not(.blank):hover { background:var(--accent-blue-soft); }
.leave-calendar-day:focus-visible { z-index:1; outline:2px solid var(--accent-blue); outline-offset:-2px; }
.leave-calendar-day.weekend { color:var(--brand-red,#d12d2d); }
.leave-calendar-day.today { background:var(--accent-blue); color:#fff; }
.leave-calendar-day.today > small, .leave-calendar-day.today .leave-calendar-request { color:#fff; }
.leave-calendar-day.selected-range:not(.today) { background:var(--accent-blue-soft); }
.leave-calendar-day.has-request:not(.today) { box-shadow:inset 0 3px 0 var(--accent-blue); }
.leave-calendar-day > strong { align-self:center; font-size:.81rem; line-height:1; }
.leave-calendar-day > small { align-self:flex-end; color:#536f8b; font-size:.59rem; line-height:1; }
.leave-calendar-day.weekend:not(.today) > small { color:var(--brand-red,#d12d2d); }
.leave-calendar-day em { position:absolute; left:.25rem; bottom:.22rem; color:var(--brand-navy); font-size:.57rem; font-style:normal; }
.leave-calendar-request { display:block; min-height:.7rem; max-width:100%; overflow:hidden; color:var(--brand-navy); font-size:.56rem; font-weight:750; text-align:left; text-overflow:ellipsis; white-space:nowrap; }
.leave-calendar-request.placeholder { visibility:hidden; }
.leave-calendar-loading { grid-column:1/-1; min-height:24rem; display:flex; align-items:center; justify-content:center; gap:.5rem; color:var(--text-muted); font-size:.76rem; }
.leave-calendar-note { padding-top:.35rem; color:var(--text); font-size:.72rem; }
.leave-calendar-note strong { color:var(--brand-red,#d12d2d); }
.leave-calendar-note ul { margin:.15rem 0 0; padding-left:1.2rem; }
.leave-calendar-note li { margin:.08rem 0; }
.leave-summary-title { margin:.15rem 0 .45rem; }
.leave-summary-table, .leave-recent-table { overflow-x:auto; }
.leave-summary-table table, .leave-recent-table table { width:100%; border-collapse:collapse; }
.leave-summary-table table { min-width:520px; box-shadow:0 3px 5px rgba(11,49,96,.13); }
.leave-summary-table th { padding:.42rem .46rem; background:var(--brand-navy); color:#fff; font-size:.66rem; font-weight:750; text-align:left; white-space:nowrap; }
.leave-summary-table td { padding:.43rem .46rem; border:1px solid #d4dce6; color:var(--text); font-size:.71rem; white-space:nowrap; }
.leave-summary-empty, .leave-recent-empty { padding:1.3rem!important; color:var(--text-muted)!important; text-align:center!important; }
.leave-summary-type { display:inline-flex; align-items:center; gap:.32rem; color:var(--text); font-weight:650; }
.leave-summary-type:before { width:.5rem; height:.5rem; flex:none; border-radius:50%; background:var(--leave-color,var(--accent-blue)); content:""; }
.leave-balance-note { margin:.6rem 0 0; color:var(--text-muted); font-size:.68rem; }
.leave-recent-card { overflow:hidden; }
.leave-request-tabs { display:flex; gap:.2rem; overflow-x:auto; padding:.55rem .7rem 0; border-bottom:1px solid var(--rule); }
.leave-request-tab { display:inline-flex; align-items:center; gap:.4rem; padding:.42rem .7rem; border:0; border-bottom:2px solid transparent; background:none; color:var(--text-muted); font-size:.75rem; font-weight:750; white-space:nowrap; }
.leave-request-tab.active { border-color:var(--accent-blue); color:var(--brand-navy); }
.leave-request-tab span { min-width:1.2rem; padding:.08rem .3rem; border-radius:999px; background:var(--accent-blue-soft); color:var(--brand-navy); font-size:.64rem; text-align:center; }
.leave-recent-table table { min-width:730px; }
.leave-recent-table th { padding:.55rem .72rem; background:var(--accent-blue-soft); color:var(--brand-navy); font-size:.69rem; font-weight:800; text-align:left; white-space:nowrap; }
.leave-recent-table td { padding:.57rem .72rem; border-top:1px solid var(--rule); color:var(--text); font-size:.73rem; }
.leave-reason-cell { max-width:300px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.leave-status { display:inline-flex; padding:.16rem .45rem; border-radius:999px; background:var(--accent-blue-soft); color:var(--brand-navy); font-size:.65rem; font-weight:750; }
.leave-status.approved { background:#dcf5e4; color:#187140; }.leave-status.rejected, .leave-status.cancelled { background:#fde8e8; color:#ad242b; }
.leave-request-backdrop { position:fixed; inset:0; z-index:1100; display:grid; place-items:center; padding:1rem; background:rgba(7,29,48,.48); }
.leave-request-modal { width:min(800px,100%); max-height:calc(100vh - 2rem); overflow:auto; border-radius:.65rem; background:var(--surface); box-shadow:0 1rem 3rem rgba(4,26,46,.3); }
.leave-request-modal > header { display:flex; align-items:center; justify-content:space-between; padding:.75rem 1rem; border-bottom:1px solid var(--rule); background:var(--surface); }
.leave-request-modal h2 { margin:0; color:var(--brand-navy); font-size:1rem; font-weight:800; }
.leave-request-close { display:grid; place-items:center; width:1.65rem; height:1.65rem; border:0; border-radius:.25rem; background:var(--brand-red,#d12d2d); color:#fff; font-size:.8rem; }
.leave-request-modal-body { padding:1rem; }
.leave-request-form-grid { display:grid; grid-template-columns:1.05fr 1fr 1fr .72fr; gap:.7rem 1rem; align-items:end; }
.leave-form-field { min-width:0; }.leave-form-field label, .leave-days-field label { display:block; margin:0 0 .28rem; color:var(--text); font-size:.72rem; font-weight:750; }
.leave-form-field label b, .leave-days-field label b { color:var(--brand-red,#d12d2d); }
.leave-form-field .form-select, .leave-form-field .form-control { height:2rem; min-height:2rem; border-color:#afbdca; background:var(--surface); color:var(--text); font-size:.74rem; }
.leave-form-field .cbs-dp { width:100%; }.leave-form-field .cbs-input { width:100%; height:2rem; min-height:2rem; border:1px solid #afbdca; border-radius:.32rem; background:var(--surface); color:var(--text); font-size:.74rem; text-align:left; }
.leave-days-field strong { display:flex; align-items:center; height:2rem; padding:0 .55rem; border:1px solid #afbdca; border-radius:.32rem; background:var(--surface-2); color:var(--text); font-size:.82rem; }
.leave-reason-field { grid-column:span 2; }.leave-reason-field .form-control { height:3.55rem; min-height:3.55rem; padding-top:.45rem; resize:vertical; }
.leave-document-field small { color:var(--muted); font-weight:500; }.leave-document-field .form-control { padding:.25rem .45rem; }.leave-document-name { display:block; margin-top:.22rem; color:var(--brand-navy); font-size:.7rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.leave-half-day { display:flex; align-items:center; gap:.4rem; min-height:2rem; margin:0; color:var(--text); font-size:.73rem; font-weight:700; }
.leave-request-message { margin-top:.75rem; padding:.55rem .65rem; border-radius:.35rem; background:#fff0f0; color:#ad242b; font-size:.74rem; }
.leave-request-modal footer { display:flex; justify-content:flex-end; gap:.55rem; padding:.75rem 1rem; border-top:1px solid var(--rule); }
@media(max-width:1050px) { .leave-dashboard-grid { grid-template-columns:1fr; }.leave-summary-card { min-height:0; } }
@media(max-width:700px) { .leave-calendar-header { flex-direction:column; }.leave-calendar-selectors .form-select { width:50%; }.leave-request-form-grid { grid-template-columns:1fr 1fr; }.leave-reason-field { grid-column:span 2; }.leave-request-backdrop { padding:.5rem; } }
@media(max-width:460px) { .leave-request-form-grid { grid-template-columns:1fr; }.leave-reason-field { grid-column:auto; }.leave-apply-button { width:100%; }.leave-month-grid { grid-template-columns:repeat(7,minmax(58px,1fr)); }.leave-weekday, .leave-calendar-day { min-width:58px; }.leave-calendar-day { height:4.1rem; } }
