:root{--tod-ease-spring:cubic-bezier(.16,1,.3,1);--tod-shadow-sm:0 2px 4px #00000005,0 1px 2px #00000003;--tod-shadow-md:0 8px 16px -4px #0000000a,0 4px 8px -2px #00000005;--tod-shadow-float:0 20px 40px -8px #0000001f,0 8px 16px -4px #0000000a}.tod-root{animation:todFadeIn .4s var(--tod-ease-spring);flex-direction:column;width:100%;height:100%;margin:0 auto;display:flex}.tod-content-island{background:var(--wh-surface,#fff);border:1px solid var(--wh-border-light,#0000000f);border-radius:14px;flex-direction:column;flex:1;gap:8px;min-height:0;margin:10px 14px 14px;padding:8px;display:flex;overflow:hidden;box-shadow:0 2px 12px #00000012}.tod-inner-island{background:var(--wh-surface,#fff);border:1px solid #00000017;border-radius:10px;flex-shrink:0;box-shadow:0 1px 3px #0000000a}.tod-subbar{flex-flow:wrap;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.tod-subbar-left,.tod-subbar-right{flex-wrap:wrap;align-items:center;gap:8px;display:flex}[data-theme=dark] .tod-content-island,[data-theme=dark] .tod-inner-island{background:color-mix(in srgb,var(--wh-surface,#1e293b),var(--wh-indigo,#4338ca));border-color:#ffffff14}@keyframes todFadeIn{0%{opacity:0;transform:translateY(8px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.tod-header{flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:6px;margin-bottom:6px;display:flex}.tod-eyebrow{color:var(--wh-indigo,#2563eb);font-size:10px;font-weight:700;font-family:var(--wh-font);text-transform:uppercase;letter-spacing:1.2px}.tod-main-tabs{gap:2px;margin-top:2px;display:flex}.tod-main-tab{color:var(--wh-text-muted,#94a3b8);font-size:13px;font-weight:600;font-family:var(--wh-font);cursor:pointer;border-radius:var(--wh-radius-sm,8px);background:0 0;border:none;padding:4px 8px;transition:all .15s;position:relative}.tod-main-tab:hover{color:var(--wh-text,#0f172a);background:var(--wh-surface-hover,#0f172a08)}.tod-main-tab--active{color:var(--wh-indigo,#2563eb);background:color-mix(in srgb,var(--wh-indigo,#2563eb)6%,transparent)}.tod-main-tab--active:after{content:"";background:var(--wh-indigo,#2563eb);border-radius:1px;height:2px;position:absolute;bottom:-1px;left:12px;right:12px}.tod-header-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.tod-toolbar{flex-direction:column;flex-shrink:0;gap:4px;margin-bottom:4px;padding:6px 10px;display:flex}.tod-toolbar-top{align-items:center;gap:8px;display:flex}.tod-search-wrap{border:1px solid var(--wh-border,#0f172a14);background:var(--wh-bg,#f8fafc);border-radius:6px;flex:0 320px;align-items:center;gap:5px;min-width:220px;max-width:360px;height:32px;padding:0 10px;display:flex}.tod-search-input{font-size:13px;font-family:var(--wh-font);color:var(--wh-text,#0f172a);background:0 0;border:none;outline:none;flex:1}.tod-search-input::placeholder{color:var(--wh-text-muted,#94a3b8)}.tod-search-clear{cursor:pointer;background:0 0;border:none;padding:2px;display:flex}.tod-toolbar-actions{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}.tod-filter-btn{border:1px solid var(--wh-border,#0f172a14);background:var(--wh-surface,#fff);font-size:13px;font-weight:600;font-family:var(--wh-font);color:var(--wh-text,#0f172a);cursor:pointer;border-radius:6px;align-items:center;gap:6px;height:32px;padding:0 12px;transition:all .15s;display:flex}.tod-filter-btn:hover{border-color:var(--wh-border-strong,#0f172a1f)}.tod-filter-btn--active{border-color:var(--wh-indigo,#2563eb);color:var(--wh-indigo,#2563eb);background:color-mix(in srgb,var(--wh-indigo,#2563eb)5%,transparent)}.tod-view-toggle{border-radius:var(--wh-radius-sm,8px);border:1px solid var(--wh-border,#0f172a14);background:var(--wh-bg,#f8fafc);gap:2px;padding:3px;display:flex;overflow:hidden}.tod-view-btn{cursor:pointer;color:var(--wh-text-muted,#94a3b8);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;transition:all .12s;display:flex}.tod-view-btn:hover{color:var(--wh-text,#0f172a)}.tod-view-btn--active{background:var(--wh-surface,#fff);color:var(--wh-text,#0f172a);box-shadow:0 1px 2px #0000000f}.tod-status-tabs{flex-wrap:wrap;align-items:center;gap:3px;display:flex}.tod-status-divider{background:var(--wh-border,#0f172a14);flex-shrink:0;width:1px;height:16px;margin:0 4px}.tod-status-tab{font-size:12px;font-weight:600;font-family:var(--wh-font);color:var(--wh-text-muted,#94a3b8);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:20px;align-items:center;gap:4px;padding:3px 8px;transition:all .12s;display:flex}.tod-status-tab:hover{background:var(--wh-surface-hover,#0f172a08);color:var(--wh-text,#0f172a)}.tod-status-tab--active{background:var(--wh-indigo,#2563eb);color:#fff}.tod-status-count{background:#00000014;border-radius:10px;padding:1px 5px;font-size:10px;font-weight:700}.tod-status-tab--active .tod-status-count{color:#fff;background:#ffffff40}.tod-chip-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tod-clear-all{color:var(--wh-text-muted,#94a3b8);cursor:pointer;font-size:12px;font-weight:600;font-family:var(--wh-font);background:0 0;border:none;text-decoration:underline}.tod-policy-chips{flex-wrap:wrap;gap:6px;display:flex}.tod-policy-chip{border:1px solid var(--wh-border,#0f172a14);background:var(--wh-bg,#f8fafc);font-size:12px;font-weight:600;font-family:var(--wh-font);color:var(--wh-text,#0f172a);cursor:pointer;border-radius:20px;padding:5px 12px;transition:all .12s}.tod-policy-chip:hover{border-color:var(--wh-border-strong)}.tod-policy-chip--active{border-color:var(--wh-indigo,#2563eb);background:color-mix(in srgb,var(--wh-indigo,#2563eb)7%,transparent);color:var(--wh-indigo,#2563eb)}.tod-year-nav{align-items:center;gap:6px;display:flex}.tod-year-btn{border-radius:var(--wh-radius-sm,8px);border:1px solid var(--wh-border,#0f172a14);background:var(--wh-bg,#f8fafc);cursor:pointer;color:var(--wh-text,#0f172a);justify-content:center;align-items:center;width:30px;height:30px;transition:background .12s;display:flex}.tod-year-btn:hover{background:var(--wh-surface-hover,#0f172a0a)}.tod-year-label{color:var(--wh-text,#0f172a);font-size:14px;font-weight:700;font-family:var(--wh-font);text-align:center;min-width:44px}.tod-content{flex:1;min-height:0;overflow-y:auto}.tod-request-list{flex-direction:column;gap:10px;display:flex}.tod-card{border:1px solid var(--wh-border-light,#0000000f);background:var(--wh-surface,#fff);cursor:pointer;box-shadow:var(--tod-shadow-sm);transition:transform .2s var(--tod-ease-spring),box-shadow .2s ease,border-color .2s ease;animation:todFadeIn .25s var(--tod-ease-spring);border-radius:12px;flex-direction:column;gap:10px;padding:14px 16px;display:flex}.tod-card:hover{box-shadow:var(--tod-shadow-md);border-color:var(--wh-border-strong,#0f172a1f);transform:translateY(-2px)}.tod-card-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.tod-card-left{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.tod-card-info{flex:1;min-width:0}.tod-card-name{color:var(--wh-text,#0f172a);font-size:13px;font-weight:700;font-family:var(--wh-font);display:block}.tod-card-date{color:var(--wh-text-muted,#94a3b8);font-size:11px;font-family:var(--wh-font);margin-top:1px;display:block}.tod-card-hours{color:var(--wh-text-secondary,#475569);font-weight:600}.tod-card-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.tod-card-reason{color:var(--wh-text-secondary,#475569);font-size:12px;font-family:var(--wh-font);white-space:nowrap;text-overflow:ellipsis;margin:0;line-height:1.45;overflow:hidden}.tod-card-actions{border-top:1px solid var(--wh-divider,#0f172a0f);justify-content:flex-end;gap:6px;padding-top:4px;display:flex}.tod-avatar{object-fit:cover;border-radius:12px;flex-shrink:0;width:24px;height:24px}.tod-avatar--fallback{background:color-mix(in srgb,var(--wh-indigo,#2563eb)10%,transparent);color:var(--wh-indigo,#2563eb);font-size:10px;font-weight:700;font-family:var(--wh-font);justify-content:center;align-items:center;display:inline-flex}.tod-kind-chip{font-size:11px;font-weight:600;font-family:var(--wh-font);white-space:nowrap;border-radius:12px;padding:2px 8px;display:inline-flex}.tod-table-wrap{border:1px solid var(--wh-border-light,#0000000f);background:var(--wh-surface,#fff);box-shadow:var(--tod-shadow-sm);border-radius:12px;flex:1;min-height:0;overflow:auto}.tod-table{border-collapse:collapse;font-family:var(--wh-font);width:100%}.tod-table th{text-align:left;color:var(--wh-text,#0f172a);text-transform:uppercase;letter-spacing:.4px;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--wh-border-light,#0000000f);z-index:2;background:#ffffffd9;padding:6px 10px;font-size:10px;font-weight:700;position:sticky;top:0}.tod-table td{color:var(--wh-text,#0f172a);border-bottom:1px solid var(--wh-divider,#0000000a);font-variant-numeric:tabular-nums;padding:4px 10px;font-size:12px}.tod-table-row{cursor:pointer;transition:background .15s}.tod-table-row:hover{background:var(--wh-surface-hover,#0f172a05)}.tod-table-row:last-child td{border-bottom:none}.tod-table-employee{align-items:center;gap:8px;font-weight:600;display:flex}.tod-unlimited{color:var(--wh-indigo,#2563eb);font-weight:700}.tod-stat-cards{flex-shrink:0;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:6px;display:grid}.tod-stat-card{border:1px solid var(--wh-border-light,#0000000f);background:var(--wh-surface,#fff);box-shadow:var(--tod-shadow-sm);border-radius:10px;flex-direction:row;align-items:center;gap:8px;padding:6px 10px;display:flex}.tod-stat-icon{border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.tod-stat-value{color:var(--wh-text,#0f172a);font-size:16px;font-weight:800;font-family:var(--wh-font);letter-spacing:-.3px;font-variant-numeric:tabular-nums;line-height:1}.tod-stat-label{color:var(--wh-text-muted,#94a3b8);font-size:9px;font-family:var(--wh-font);line-height:1.1}.tod-table-emp-info{flex-direction:column;gap:1px;min-width:0;display:flex}.tod-table-emp-name{color:var(--wh-text,#0f172a);font-size:12px;font-weight:600;font-family:var(--wh-font)}.tod-table-emp-dept{color:var(--wh-text-muted,#94a3b8);font-size:11px;font-family:var(--wh-font)}.tod-date-primary{color:var(--wh-text,#0f172a);font-size:11px;font-family:var(--wh-font);white-space:nowrap;font-variant-numeric:tabular-nums;display:block}.tod-date-duration{color:var(--wh-text-muted,#94a3b8);font-size:10px;font-family:var(--wh-font);margin-top:0;display:block}.tod-table-page-btns{align-items:center;gap:2px;display:flex}.tod-table-page-btn{border-radius:var(--wh-radius-sm,8px);border:1px solid var(--wh-border,#0f172a14);background:var(--wh-surface,#fff);font-size:12px;font-weight:600;font-family:var(--wh-font);color:var(--wh-text,#0f172a);cursor:pointer;justify-content:center;align-items:center;min-width:30px;height:30px;transition:all .12s;display:flex}.tod-table-page-btn:hover:not(:disabled){border-color:var(--wh-border-strong);background:var(--wh-surface-hover,#0f172a08)}.tod-table-page-btn--active:hover:not(:disabled){background:var(--wh-indigo-hover,#1d4ed8)}.tod-page-ellipsis{color:var(--wh-text-muted,#94a3b8);padding:0 4px;font-size:12px}.tod-gantt{flex-direction:column;gap:14px;display:flex}.tod-gantt-nav{justify-content:space-between;align-items:center;display:flex}.tod-gantt-nav-left{align-items:center;gap:8px;display:flex}.tod-gantt-title{color:var(--wh-text,#0f172a);font-size:14px;font-weight:600;font-family:var(--wh-font)}.tod-gantt-period{color:var(--wh-text-muted,#94a3b8);font-size:12px;font-weight:600;font-family:var(--wh-font);border:1px solid var(--wh-border,#0f172a14);border-radius:6px;padding:4px 10px}.tod-gantt-wrap{border:1px solid var(--wh-border-light,#0000000f);background:var(--wh-surface,#fff);box-shadow:var(--tod-shadow-sm);border-radius:12px;overflow-x:auto}.tod-gantt-table{border-collapse:collapse;font-family:var(--wh-font);width:100%;min-width:800px}.tod-gantt-emp-header{text-align:left;color:var(--wh-text-muted,#94a3b8);text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--wh-border,#0f172a14);background:var(--wh-surface,#fff);z-index:2;min-width:200px;padding:8px 14px;font-size:11px;font-weight:700;position:sticky;left:0}.tod-gantt-day-header{text-align:center;color:var(--wh-text-muted,#94a3b8);font-size:12px;font-weight:600;font-family:var(--wh-font);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--wh-border-light,#0000000f);font-variant-numeric:tabular-nums;background:#ffffffd9;min-width:38px;padding:8px 0}.tod-gantt-day-header--today{color:var(--wh-indigo,#2563eb);position:relative}.tod-gantt-day-header--today:after{content:"";border:2px solid var(--wh-indigo,#2563eb);pointer-events:none;border-radius:50%;width:22px;height:22px;margin-top:-11px;position:absolute;top:50%;bottom:-1px;left:50%;transform:translate(-50%)}.tod-gantt-row{border-bottom:1px solid var(--wh-divider,#0f172a0a)}.tod-gantt-row:last-child{border-bottom:none}.tod-gantt-emp-cell{background:var(--wh-surface,#fff);z-index:1;border-right:1px solid var(--wh-border,#0f172a14);padding:8px 14px;position:sticky;left:0}.tod-gantt-cell{text-align:center;vertical-align:middle;border-right:1px solid var(--wh-divider,#0f172a08);min-height:44px;padding:4px 2px}.tod-gantt-cell:last-child{border-right:none}.tod-gantt-cell--today{background:color-mix(in srgb,var(--wh-indigo,#2563eb)4%,transparent)}.tod-gantt-cell--filled{cursor:pointer}.tod-gantt-cell--filled:hover{background:color-mix(in srgb,var(--wh-indigo,#2563eb)8%,transparent)}.tod-gantt-dot{border:2px solid;border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.tod-gantt-dot .tod-avatar{border-radius:10px;width:20px;height:20px;font-size:8px}.tod-gantt-empty{text-align:center;color:var(--wh-text-muted,#94a3b8);font-size:13px;font-family:var(--wh-font);padding:32px}.tod-req-table{table-layout:fixed}.tod-th-check,.tod-td-check{text-align:center;width:40px;padding-left:12px!important;padding-right:4px!important}.tod-th-actions{width:80px}.tod-td-date{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--wh-text-secondary,#475569);font-size:12px}.tod-td-reason{max-width:240px}.tod-reason-text{-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;color:var(--wh-text-secondary,#475569);-webkit-box-orient:vertical;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.tod-td-actions{padding-right:12px!important}.tod-table-row--selected{background:color-mix(in srgb,var(--wh-indigo,#2563eb)4%,transparent)}.tod-table-row--selected:hover{background:color-mix(in srgb,var(--wh-indigo,#2563eb)6%,transparent)}.tod-inline-actions{opacity:0;justify-content:flex-end;gap:4px;transition:opacity .15s;display:flex}.tod-table-row:hover .tod-inline-actions{opacity:1}.tod-inline-action{border:1.5px solid var(--wh-border,#0f172a14);background:var(--wh-surface,#fff);cursor:pointer;color:var(--wh-text-muted,#94a3b8);border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;transition:all .15s;display:flex}.tod-inline-action:hover{transform:scale(1.1)}.tod-inline-action--approve{color:var(--wh-success,#16a34a);border-color:color-mix(in srgb,var(--wh-success,#16a34a)30%,transparent)}.tod-inline-action--approve:hover{background:var(--wh-success,#16a34a);border-color:var(--wh-success,#16a34a);color:#fff;box-shadow:0 2px 8px #16a34a4d}.tod-inline-action--reject{color:var(--wh-error,#dc2626);border-color:color-mix(in srgb,var(--wh-error,#dc2626)30%,transparent)}.tod-inline-action--reject:hover{background:var(--wh-error,#dc2626);border-color:var(--wh-error,#dc2626);color:#fff;box-shadow:0 2px 8px #dc26264d}.tod-table-footer{border-top:1px solid var(--wh-divider,#0f172a0f);background:var(--wh-surface,#fff);flex-shrink:0;justify-content:space-between;align-items:center;padding:4px 10px;display:flex;position:sticky;bottom:0}.tod-insights-section{margin-bottom:20px}.tod-insights-year-nav{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.tod-section-title{color:var(--wh-text,#0f172a);font-size:16px;font-weight:700;font-family:var(--wh-font);margin:0}.tod-insights-desc{color:var(--wh-text-secondary,#475569);font-size:13px;font-family:var(--wh-font);margin:0 0 16px;line-height:1.5}.tod-insights-stats{margin-bottom:12px}.tod-hours-card{align-items:center;gap:12px;padding:16px 20px;display:flex}.tod-hours-value{color:var(--wh-text,#0f172a);font-size:20px;font-weight:700;font-family:var(--wh-font);display:block}.tod-hours-label{color:var(--wh-text-muted,#94a3b8);font-size:12px;font-family:var(--wh-font);display:block}.tod-cal{flex-direction:column;gap:14px;display:flex}.tod-cal-nav{justify-content:space-between;align-items:center;display:flex}.tod-cal-nav-btn{border-radius:var(--wh-radius-sm,8px);border:1px solid var(--wh-border,#0f172a14);background:var(--wh-surface,#fff);cursor:pointer;color:var(--wh-text,#0f172a);justify-content:center;align-items:center;width:32px;height:32px;transition:background .12s;display:flex}.tod-cal-nav-btn:hover{background:var(--wh-surface-hover,#0f172a08)}.tod-cal-month{color:var(--wh-text,#0f172a);font-size:15px;font-weight:700;font-family:var(--wh-font)}.tod-cal-legend{gap:16px;display:flex}.tod-cal-legend-item{color:var(--wh-text-muted,#94a3b8);font-size:11px;font-weight:600;font-family:var(--wh-font);align-items:center;gap:5px;display:flex}.tod-cal-grid{overflow:hidden}.tod-cal-header-row{border-bottom:1px solid var(--wh-border,#0f172a14);grid-template-columns:repeat(7,1fr);display:grid}.tod-cal-day-label{text-align:center;color:var(--wh-text-muted,#94a3b8);font-size:11px;font-weight:700;font-family:var(--wh-font);padding:8px 0}.tod-cal-week{border-bottom:1px solid var(--wh-divider,#0f172a0a);grid-template-columns:repeat(7,1fr);display:grid}.tod-cal-week:last-child{border-bottom:none}.tod-cal-cell{border-right:1px solid var(--wh-divider,#0f172a0a);min-height:60px;padding:5px;transition:background .12s;position:relative}.tod-cal-cell:last-child{border-right:none}.tod-cal-day-num{color:var(--wh-text,#0f172a);font-size:11px;font-weight:500;font-family:var(--wh-font);border-radius:11px;justify-content:center;align-items:center;width:22px;height:22px;margin-bottom:3px;display:inline-flex}.tod-cal-day-num--today{background:var(--wh-indigo,#2563eb);color:#fff;font-weight:700}.tod-cal-dots{flex-wrap:wrap;gap:2px;display:flex}.tod-cal-dot{border-radius:4px;flex-shrink:0;width:7px;height:7px}.tod-cal-overflow{color:var(--wh-text-muted,#94a3b8);font-size:9px;line-height:7px}.tod-cal-month-title{color:var(--wh-text,#0f172a);font-size:14px;font-weight:700;font-family:var(--wh-font);margin:0}.tod-cal-empty{text-align:center;color:var(--wh-text-muted,#94a3b8);font-size:13px;font-family:var(--wh-font);border:1px solid var(--wh-border,#0f172a14);border-radius:var(--wh-radius-lg,16px);background:var(--wh-surface,#fff);padding:24px}.tod-cal-list{flex-direction:column;gap:6px;display:flex}.tod-cal-item{border-radius:var(--wh-radius-md,12px);border:1px solid var(--wh-border,#0f172a14);background:var(--wh-surface,#fff);cursor:pointer;text-align:left;align-items:center;gap:10px;width:100%;padding:10px 14px;transition:all .12s;display:flex}.tod-cal-item:hover{box-shadow:0 4px 12px #0000000d}.tod-cal-item-info{flex:1;min-width:0}.tod-cal-item-name{color:var(--wh-text,#0f172a);font-size:13px;font-weight:700;font-family:var(--wh-font);display:block}.tod-cal-item-meta{align-items:center;gap:6px;margin-top:2px;display:flex}.tod-detail-overlay{z-index:100;background:#0000004d;justify-content:flex-end;animation:.2s todFadeIn;display:flex;position:fixed;inset:0}.tod-detail-panel{background:var(--wh-surface,#fff);flex-direction:column;width:420px;max-width:90vw;animation:.25s cubic-bezier(.16,1,.3,1) todSlideIn;display:flex;overflow-y:auto;box-shadow:-4px 0 24px #0000001a}@keyframes todSlideIn{0%{transform:translate(100%)}to{transform:translate(0)}}.tod-detail-header{border-bottom:1px solid var(--wh-border,#0f172a14);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.tod-detail-header h3{color:var(--wh-text,#0f172a);font-size:16px;font-weight:700;font-family:var(--wh-font);margin:0}.tod-detail-close{cursor:pointer;color:var(--wh-text-muted,#94a3b8);background:0 0;border:none;border-radius:6px;padding:4px;transition:background .12s}.tod-detail-close:hover{background:var(--wh-surface-hover,#0f172a0a)}.tod-modal{flex-direction:column;gap:0;display:flex}.tod-modal-status-bar{font-size:12px;font-weight:700;font-family:var(--wh-font);color:#fff;letter-spacing:.2px;text-transform:uppercase;border-radius:999px;align-self:flex-start;align-items:center;gap:6px;margin-bottom:16px;padding:6px 12px;display:inline-flex;box-shadow:0 1px 2px #00000014}.tod-modal-status-bar--pending{background:var(--wh-warning,#ea580c)}.tod-modal-status-bar--approved{background:var(--wh-success,#16a34a)}.tod-modal-status-bar--rejected{background:var(--wh-error,#dc2626)}.tod-modal-emp{background:var(--wh-bg,#f8fafc);border-radius:var(--wh-radius-md,12px);border:1px solid var(--wh-border,#0f172a14);align-items:center;gap:14px;margin-bottom:8px;padding:14px 16px;display:flex}.tod-modal-avatar-wrap{flex-shrink:0}.tod-modal-avatar-wrap .tod-avatar{border-radius:22px;width:44px;height:44px;font-size:15px}.tod-modal-emp-info{flex-direction:column;gap:5px;display:flex}.tod-modal-emp-name{color:var(--wh-text,#0f172a);font-size:16px;font-weight:700;font-family:var(--wh-font)}.tod-modal-fields{flex-direction:column;display:flex}.tod-modal-row{border-bottom:1px solid var(--wh-divider,#0f172a0f);align-items:flex-start;gap:12px;padding:12px 0;display:flex}.tod-modal-row:last-child{border-bottom:none}.tod-modal-row-icon{border-radius:var(--wh-radius-sm,8px);background:color-mix(in srgb,var(--wh-indigo,#2563eb)6%,transparent);flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;margin-top:1px;display:flex}.tod-modal-row-content{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.tod-modal-row-label{color:var(--wh-text-muted,#94a3b8);font-size:11px;font-weight:600;font-family:var(--wh-font);text-transform:uppercase;letter-spacing:.3px}.tod-modal-row-value{color:var(--wh-text,#0f172a);font-size:14px;font-weight:600;font-family:var(--wh-font)}.tod-modal-row-sub{color:var(--wh-text-muted,#94a3b8);font-size:12px;font-family:var(--wh-font)}.tod-modal-row-reason{color:var(--wh-text,#0f172a);font-size:13px;font-family:var(--wh-font);margin:0;line-height:1.5}.tod-modal-file-link{color:var(--wh-indigo,#2563eb);font-size:13px;font-weight:600;font-family:var(--wh-font);align-items:center;gap:5px;text-decoration:none;transition:opacity .12s;display:inline-flex}.tod-modal-file-link:hover{opacity:.8}.tod-modal-timeline{border-top:1px solid var(--wh-divider,#0f172a0f);margin-top:12px;padding-top:14px}.tod-modal-timeline-title{color:var(--wh-text-secondary,#475569);font-size:12px;font-weight:700;font-family:var(--wh-font);text-transform:uppercase;letter-spacing:.4px;margin:0 0 12px}.tod-modal-tl-item{border-left:2px solid var(--wh-border,#0f172a14);align-items:flex-start;gap:10px;margin-left:10px;padding-bottom:14px;padding-left:2px;display:flex;position:relative}.tod-modal-tl-item:last-child{border-left-color:#0000;padding-bottom:0}.tod-modal-tl-dot{border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;margin-left:-13px;display:flex}.tod-modal-tl-dot--approved{background:var(--wh-success,#16a34a);box-shadow:0 0 0 3px color-mix(in srgb,var(--wh-success,#16a34a)15%,transparent)}.tod-modal-tl-dot--rejected{background:var(--wh-error,#dc2626);box-shadow:0 0 0 3px color-mix(in srgb,var(--wh-error,#dc2626)15%,transparent)}.tod-modal-tl-dot--submitted{background:var(--wh-indigo,#2563eb);box-shadow:0 0 0 3px color-mix(in srgb,var(--wh-indigo,#2563eb)15%,transparent)}.tod-modal-tl-content{flex-direction:column;gap:2px;padding-top:1px;display:flex}.tod-modal-tl-event{color:var(--wh-text,#0f172a);font-size:13px;font-family:var(--wh-font)}.tod-modal-tl-event strong{font-weight:700}.tod-modal-tl-date{color:var(--wh-text-muted,#94a3b8);font-size:11px;font-family:var(--wh-font)}.tod-modal-pending-box{border-radius:var(--wh-radius-md,12px);background:color-mix(in srgb,var(--wh-warning,#ea580c)5%,transparent);border:1px solid color-mix(in srgb,var(--wh-warning,#ea580c)12%,transparent);align-items:flex-start;gap:12px;margin-top:12px;padding:14px 16px;display:flex}.tod-modal-pending-title{color:var(--wh-warning,#ea580c);font-size:13px;font-weight:700;font-family:var(--wh-font);display:block}.tod-modal-pending-sub{color:var(--wh-text-secondary,#475569);font-size:12px;font-family:var(--wh-font);margin-top:2px;display:block}.tod-modal-actions{gap:12px;width:100%;margin-top:16px;display:flex}.tod-modal-btn{border-radius:var(--wh-radius-md,12px);font-size:14px;font-weight:700;font-family:var(--wh-font);cursor:pointer;border:none;flex:1;justify-content:center;align-items:center;gap:8px;height:44px;padding:0 16px;transition:background .15s,box-shadow .15s,transform .15s,opacity .15s;display:flex}.tod-modal-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none!important;transform:none!important}.tod-modal-btn--approve{background:var(--wh-success,#16a34a);color:#fff;box-shadow:0 2px 8px #16a34a40}.tod-modal-btn--approve:hover:not(:disabled){background:#15803d;transform:translateY(-1px);box-shadow:0 4px 14px #16a34a59}.tod-modal-btn--approve:active:not(:disabled){transform:translateY(0)}.tod-modal-btn--reject{background:var(--wh-surface,#fff);color:var(--wh-error,#dc2626);border:1.5px solid var(--wh-error,#dc2626)}.tod-modal-btn--reject:hover:not(:disabled){background:color-mix(in srgb,var(--wh-error,#dc2626)6%,transparent);transform:translateY(-1px)}.tod-modal-btn--reject:active:not(:disabled){transform:translateY(0)}@keyframes tod-spin-kf{to{transform:rotate(360deg)}}.tod-spin{transform-origin:50%;animation:.9s linear infinite tod-spin-kf}.tod-pending-banner{border-radius:var(--wh-radius-md,12px);background:color-mix(in srgb,var(--wh-warning,#ea580c)6%,transparent);border:1px solid color-mix(in srgb,var(--wh-warning,#ea580c)15%,transparent);font-size:13px;font-family:var(--wh-font);color:var(--wh-text,#0f172a);align-items:center;gap:10px;margin-bottom:14px;padding:10px 16px;animation:.25s todFadeIn;display:flex}.tod-pending-banner strong{font-weight:650}.tod-pending-banner-link{color:var(--wh-warning,#ea580c);cursor:pointer;font-size:12px;font-weight:600;font-family:var(--wh-font);background:0 0;border:none;flex-shrink:0;margin-left:auto;text-decoration:underline}.tod-sort-select{border:1px solid var(--wh-border,#0f172a14);background:var(--wh-surface,#fff);font-size:13px;font-weight:600;font-family:var(--wh-font);color:var(--wh-text,#0f172a);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2394a3b8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;border-radius:6px;height:32px;padding:0 28px 0 12px;transition:border-color .12s}.tod-sort-select:hover{border-color:var(--wh-border-strong,#0f172a1f)}.tod-sort-select:focus{border-color:var(--wh-indigo,#2563eb);outline:none}.tod-date-presets{align-items:center;gap:4px;display:flex}.tod-date-preset{border:1px solid var(--wh-border,#0f172a14);font-size:11px;font-weight:600;font-family:var(--wh-font);color:var(--wh-text-secondary,#475569);cursor:pointer;background:0 0;border-radius:12px;padding:2px 8px;transition:all .12s}.tod-date-preset:hover{border-color:var(--wh-border-strong);background:var(--wh-surface-hover,#0f172a05)}.tod-date-preset--active{border-color:var(--wh-indigo,#2563eb);background:color-mix(in srgb,var(--wh-indigo,#2563eb)7%,transparent);color:var(--wh-indigo,#2563eb)}.tod-date-preset-clear{font-size:11px;font-weight:600;font-family:var(--wh-font);color:var(--wh-text-muted,#94a3b8);cursor:pointer;background:0 0;border:none;border-radius:14px;align-items:center;gap:3px;padding:3px 8px;display:flex}.tod-date-preset-clear:hover{color:var(--wh-text,#0f172a)}.tod-select-all-row{justify-content:space-between;align-items:center;padding:6px 0;display:flex}.tod-select-all-btn{cursor:pointer;font-size:12px;font-weight:600;font-family:var(--wh-font);color:var(--wh-text-secondary,#475569);background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;padding:4px 8px;transition:background .12s;display:flex}.tod-select-all-btn:hover{background:var(--wh-surface-hover,#0f172a08)}.tod-results-count{color:var(--wh-text-muted,#94a3b8);font-size:11px;font-family:var(--wh-font)}.tod-card-checkbox{cursor:pointer;background:0 0;border:none;flex-shrink:0;align-items:center;padding:2px;display:flex}.tod-card--selected{border-color:var(--wh-indigo,#2563eb);background:color-mix(in srgb,var(--wh-indigo,#2563eb)3%,transparent)}.tod-bulk-bar{background:var(--wh-text,#18181b);color:#fff;box-shadow:var(--tod-shadow-float);z-index:50;animation:todSlideUp .3s var(--tod-ease-spring)forwards;border-radius:999px;align-items:center;gap:16px;padding:10px 16px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}@keyframes todSlideUp{0%{opacity:0;transform:translate(-50%)translateY(16px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.tod-bulk-count{font-size:13px;font-weight:600;font-family:var(--wh-font);white-space:nowrap;font-variant-numeric:tabular-nums;align-items:center;gap:6px;display:flex}.tod-bulk-actions{gap:6px;display:flex}.tod-bulk-dismiss{cursor:pointer;color:#fff9;background:#ffffff1a;border:none;border-radius:8px;padding:4px;transition:all .12s;display:flex}.tod-bulk-dismiss:hover{color:#fff;background:#fff3}.tod-cal-cell--overlap{background:color-mix(in srgb,var(--wh-warning,#ea580c)4%,transparent);position:relative}.tod-cal-overlap-badge{background:var(--wh-warning,#ea580c);color:#fff;font-size:9px;font-weight:700;font-family:var(--wh-font);border-radius:8px;justify-content:center;align-items:center;width:16px;height:16px;display:flex;position:absolute;top:3px;right:3px}.tod-skeleton-list{flex-direction:column;gap:10px;display:flex}.tod-skel-card{border-radius:var(--wh-radius-lg,16px);height:80px}@media (width<=640px){.tod-root{padding:2px 4px 4px}.tod-content-island{padding:8px 8px 12px}.tod-header{flex-direction:column}.tod-toolbar-top{flex-direction:column;align-items:stretch}.tod-toolbar-actions{justify-content:space-between}.tod-card-top{flex-direction:column;align-items:flex-start}.tod-card-right{margin-top:4px}.tod-detail-grid{grid-template-columns:1fr}.tod-stat-cards{grid-template-columns:repeat(2,1fr);gap:6px}.tod-stat-value{font-size:16px}.tod-table th,.tod-table td{padding:6px 8px}.tod-req-table{table-layout:auto}.tod-bulk-bar{bottom:16px;left:16px;right:16px;transform:none}@keyframes todSlideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.tod-date-presets{flex-wrap:wrap}.tod-sort-select{width:100%}}@keyframes todCardEntrance{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.tod-card{animation:.3s cubic-bezier(.16,1,.3,1) both todCardEntrance;animation-delay:var(--tod-card-delay,0s)}@keyframes todRowReveal{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}.tod-table-row{animation:.25s cubic-bezier(.16,1,.3,1) both todRowReveal;animation-delay:var(--tod-row-delay,0s)}.tod-cal-item{animation:.25s cubic-bezier(.16,1,.3,1) both todCardEntrance;animation-delay:var(--tod-card-delay,0s)}.tod-cal-cell:hover{background:var(--wh-surface-hover,#0f172a05)}.tod-cal-cell--has-items{cursor:pointer}.tod-cal-cell--has-items:hover{background:color-mix(in srgb,var(--wh-indigo,#2563eb)3%,transparent)}.tod-table th.tod-th-sortable{cursor:pointer;user-select:none;transition:background .12s}.tod-table th.tod-th-sortable:hover{background:var(--wh-surface-hover,#0f172a08)}.tod-th-sort-icon{opacity:.5;margin-left:3px;transition:opacity .12s;display:inline-flex}.tod-th-sortable:hover .tod-th-sort-icon{opacity:1}.tod-th-sort-icon--active{opacity:1;color:var(--wh-indigo,#2563eb)}.tod-table-hours{font-variant-numeric:tabular-nums;font-weight:600}.tod-table-pending-count{font-variant-numeric:tabular-nums;border-radius:10px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 5px;font-size:11px;font-weight:700;display:inline-flex}.tod-table-pending-count--warning{background:color-mix(in srgb,var(--wh-warning,#ea580c)10%,transparent);color:var(--wh-warning,#ea580c)}.tod-table-pending-count--zero{color:var(--wh-text-muted,#94a3b8)}.tod-table-pagination{border-top:1px solid var(--wh-divider,#0f172a0f);justify-content:space-between;align-items:center;padding:6px 12px;display:flex}.tod-table-pagination-info{color:var(--wh-text-muted,#94a3b8);font-size:12px;font-family:var(--wh-font)}.tod-table-pagination-info strong{color:var(--wh-text,#0f172a);font-weight:700}.tod-table-page-btns{gap:4px;display:flex}.tod-table-page-btn{border:1px solid var(--wh-border,#0f172a14);cursor:pointer;font-size:12px;font-family:var(--wh-font);color:var(--wh-text-secondary,#475569);background:0 0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-weight:600;transition:all .12s;display:flex}.tod-table-page-btn:hover:not(:disabled){background:var(--wh-surface-hover,#0f172a08)}.tod-table-page-btn:disabled{opacity:.35;cursor:not-allowed}.tod-table-page-btn--active{background:var(--wh-indigo,#2563eb);border-color:var(--wh-indigo,#2563eb);color:#fff}.tod-root button:focus-visible,.tod-root a:focus-visible,.tod-root select:focus-visible,.tod-root input:focus-visible{outline:2px solid var(--wh-indigo,#2563eb);outline-offset:2px;border-radius:4px}.tod-root .tod-cal-nav-btn:focus-visible,.tod-root .tod-year-btn:focus-visible,.tod-root .tod-view-btn:focus-visible{outline-offset:-1px}[data-theme=dark] .tod-content-island{border-color:#ffffff14}[data-theme=dark] .tod-table th,[data-theme=dark] .tod-gantt-day-header{background:#18181bd9}[data-theme=dark] .tod-card{box-shadow:0 1px 3px #00000026}[data-theme=dark] .tod-card:hover{box-shadow:0 12px 32px -8px #0006,0 4px 8px -2px #0003}[data-theme=dark] .tod-detail-overlay{background:#00000080}[data-theme=dark] .tod-detail-panel{box-shadow:-4px 0 24px #0000004d}[data-theme=dark] .tod-table-wrap{box-shadow:0 1px 3px #00000026}[data-theme=dark] .tod-bulk-bar{color:#0f172a;background:#e2e8f0;box-shadow:0 12px 32px #0006}[data-theme=dark] .tod-bulk-dismiss{color:#0006;background:#00000014}[data-theme=dark] .tod-bulk-dismiss:hover{color:#000000b3;background:#00000026}[data-theme=dark] .tod-cal-cell:hover{background:var(--wh-surface-hover,#ffffff08)}[data-theme=dark] .tod-cal-cell--overlap{background:color-mix(in srgb,var(--wh-warning,#ea580c)6%,var(--wh-surface,#1e293b))}[data-theme=dark] .tod-sort-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}[data-theme=dark] .tod-pending-banner{background:color-mix(in srgb,var(--wh-warning,#ea580c)8%,var(--wh-surface,#1e293b));border-color:color-mix(in srgb,var(--wh-warning,#ea580c)20%,transparent)}@media (width<=640px){.tod-cal-cell{min-height:42px;padding:3px}.tod-cal-day-num{width:18px;height:18px;font-size:10px}.tod-cal-dot{width:5px;height:5px}.tod-cal-overlap-badge{width:14px;height:14px;font-size:8px}.tod-cal-legend{flex-wrap:wrap;gap:8px}}@media (prefers-reduced-motion:reduce){.tod-root,.tod-card,.tod-table-row,.tod-cal-item,.tod-bulk-bar,.tod-detail-panel{transition-duration:.01ms!important;animation:none!important}}