*{box-sizing:border-box}.market-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 768px){.market-grid{grid-template-columns:1fr}}.market-card{padding:16px}.market-title{font-size:14px;font-weight:700;color:#1e293b;margin-bottom:12px;display:flex;align-items:center;gap:6px}.market-unit{font-size:11px;color:#9ca3af;font-weight:400}.market-search{width:100%;padding:7px 10px;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;margin-bottom:8px;outline:none;transition:border-color .15s}.market-search:focus{border-color:#3b82f6}.market-scroll{max-height:260px;overflow-y:auto;margin:-4px;padding:4px}.market-scroll::-webkit-scrollbar{width:6px}.market-scroll::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.market-scroll::-webkit-scrollbar-thumb:hover{background:#9ca3af}.market-table{width:100%;font-size:13px;border-collapse:collapse}.market-table thead th{position:sticky;top:0;background:#fff;z-index:1}.market-table th{color:#6b7280;font-weight:500;padding:6px 4px;border-bottom:1px solid #e5e7eb;font-size:12px;text-align:left}.market-table td{padding:8px 4px;border-bottom:1px solid #f3f4f6}.market-table tr:last-child td{border-bottom:none}.market-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #f3f4f6}.market-row:last-child{border-bottom:none}.market-label{color:#6b7280;font-size:13px}.market-value{font-weight:700;color:#1e293b;font-size:14px;display:flex;align-items:center;gap:8px}.market-change{font-size:11px;padding:2px 6px;border-radius:4px;font-weight:600}.market-change.up{color:#16a34a;background:#dcfce7}.market-change.down{color:#dc2626;background:#fee2e2}:root{--primary: #2563eb;--primary-soft: #eff4ff;--navy: #172b4d;--navy-2: #1e3a6b;--bg: #f5f7fc;--surface: #ffffff;--success: #16a34a;--warning: #f59e0b;--danger: #ef4444;--text: #172b4d;--text-2: #64748b;--border: #e8edf5;--radius-card: 16px;--radius-btn: 8px;--shadow-sm: 0 1px 2px rgba(23, 43, 77, .04), 0 2px 8px rgba(23, 43, 77, .05);--shadow-md: 0 8px 24px rgba(23, 43, 77, .1);--sidebar-w: 256px;--sidebar-w-collapsed: 76px;--topbar-h: 68px}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:#1f2937;-webkit-font-smoothing:antialiased}a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}.container{max-width:960px;margin:0 auto;padding:24px 16px}.card{background:var(--surface);border-radius:var(--radius-card);border:1px solid var(--border);box-shadow:var(--shadow-sm);padding:24px;margin-bottom:20px}h1{font-size:24px;margin:0 0 16px;display:flex;align-items:center;gap:8px}h2{font-size:18px;margin:0 0 12px;display:flex;align-items:center;gap:6px}.btn{display:inline-flex;align-items:center;gap:6px;background:#2563eb;color:#fff;border:none;padding:10px 18px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;transition:background .15s}.btn:hover{background:#1d4ed8}.btn:disabled{background:#94a3b8;cursor:not-allowed}.btn.danger{background:#dc2626}.btn.danger:hover{background:#b91c1c}.btn.danger-outline{background:#fff;color:#dc2626;border:1px solid #fca5a5}.btn.danger-outline:hover{background:#fef2f2;border-color:#dc2626}.btn.sm{padding:4px 10px;font-size:12px}.btn.success{background:#16a34a}.btn.success:hover{background:#15803d}.btn.ghost{background:#e5e7eb;color:#1f2937}.btn.ghost:hover{background:#d1d5db}.btn.sm{padding:6px 12px;font-size:12px}.form{display:flex;flex-direction:column;gap:14px;max-width:420px}.form label{font-size:13px;font-weight:500}.form input,.form select{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px}.leave-form{display:flex;flex-direction:column;gap:18px}.leave-form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 540px){.leave-form-row{grid-template-columns:1fr}}.leave-form-field{display:flex;flex-direction:column;gap:6px}.leave-form-field label{font-size:13px;font-weight:600;color:#374151}.leave-form-field .required{color:#dc2626}.leave-form-field input,.leave-form-field select,.leave-form-field textarea{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;font-family:inherit;transition:border-color .15s}.leave-form-field input:focus,.leave-form-field select:focus,.leave-form-field textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.leave-form-field textarea{resize:vertical;min-height:72px}.leave-form-field select:disabled{background:#f3f4f6;color:#9ca3af;cursor:not-allowed}.field-hint{font-size:11px;color:#9ca3af;margin-top:2px}.leave-form-footer{display:flex;align-items:center;gap:16px;padding-top:6px}.leave-summary{display:flex;align-items:baseline;gap:8px;flex:1}.leave-summary-days{font-size:32px;font-weight:800;color:#2563eb;line-height:1}.leave-summary-label{font-size:13px;color:#6b7280}.half-day-tag{display:inline-block;margin-left:4px;padding:1px 6px;background:#ede9fe;color:#6d28d9;border-radius:4px;font-size:10px;font-weight:600;vertical-align:middle}.reason-cell{max-width:180px;font-size:13px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}table{width:100%;border-collapse:collapse;font-size:14px}th,td{padding:10px 12px;text-align:left;border-bottom:1px solid #e5e7eb}.sticky-left{position:sticky;left:0;z-index:2;background:#fff}.sticky-left:after{content:"";position:absolute;top:0;right:-6px;bottom:0;width:6px;background:linear-gradient(to right,rgba(0,0,0,.06),transparent)}thead .sticky-left{background:#f9fafb;z-index:3}tbody tr:hover .sticky-left{background:#f8fafc}.sticky-right{position:sticky;right:0;z-index:2;background:#fff}.sticky-right:before{content:"";position:absolute;top:0;left:-6px;bottom:0;width:6px;background:linear-gradient(to left,rgba(0,0,0,.06),transparent)}thead .sticky-right{background:#f9fafb;z-index:3}tbody tr:hover .sticky-right{background:#f8fafc}tfoot .sticky-left,tfoot .sticky-right{background:#fff}th{background:#f9fafb;font-weight:600;font-size:12px;text-transform:uppercase;color:#6b7280}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:600;text-transform:uppercase}.badge.approved{background:#d1fae5;color:#065f46}.badge.rejected{background:#fee2e2;color:#991b1b}.badge.cancelled{background:#e5e7eb;color:#374151}.alert{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;font-size:14px;margin-bottom:16px}.alert.ok{background:#d1fae5;color:#065f46}.alert.err{background:#fee2e2;color:#991b1b}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.stat{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 3px #00000014;transition:transform .15s,box-shadow .15s}.stat.stat-link:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001f}.stat .label{font-size:12px;color:#6b7280;text-transform:uppercase;display:flex;align-items:center;gap:5px}.stat .value{font-size:28px;font-weight:700;margin-top:6px}.ts-missing{color:#f59e0b;font-size:12px;font-style:italic}.ts-icon-ok{color:#16a34a}.ts-icon-fail{color:#dc2626}.cal-header{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}.cal-nav{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid #d1d5db;border-radius:8px;background:#fff;font-size:18px;cursor:pointer;color:#374151;transition:background .12s}.cal-nav:hover:not(:disabled){background:#f3f4f6}.cal-nav:disabled{opacity:.3;cursor:not-allowed}.cal-month-select{padding:6px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:15px;font-weight:600;color:#1f2937;background:#fff}.cal-stats{display:flex;gap:16px;margin-left:auto}.cal-stat{display:flex;align-items:center;gap:4px;font-size:13px;color:#374151}.cal-stat-muted{color:#9ca3af}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#e5e7eb;border:1px solid #e5e7eb;border-radius:10px;overflow:hidden}.cal-dow{padding:8px 4px;text-align:center;font-size:11px;font-weight:700;text-transform:uppercase;color:#6b7280;background:#f9fafb;letter-spacing:.5px}.cal-dow-we{color:#dc2626}.cal-cell{background:#fff;min-height:72px;padding:6px 8px;display:flex;flex-direction:column;align-items:flex-start;gap:2px;cursor:default;position:relative;transition:background .1s}.cal-cell:not(.cal-empty):not(.cal-future):hover{background:#f8fafc}.cal-empty{background:#fafafa}.cal-we{background:#fefce8}.cal-today{box-shadow:inset 0 0 0 2px #3b82f6}.cal-future{opacity:.4}.cal-selected{background:#eff6ff!important;box-shadow:inset 0 0 0 2px #2563eb}.cal-s-ok{border-left:3px solid #16a34a}.cal-s-half{border-left:3px solid #f59e0b}.cal-s-miss{border-left:3px solid #dc2626}.cal-s-nocheck{border-left:3px solid #e5e7eb}.cal-s-leave{border-left:3px solid #8b5cf6;background:#f5f3ff}.cal-s-leave-pending{border-left:3px solid #a78bfa;background:#faf5ff;border-style:dashed}.cal-day{font-size:13px;font-weight:600;color:#374151;line-height:1}.cal-we .cal-day{color:#dc2626}.cal-today .cal-day{background:#3b82f6;color:#fff;width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px}.cal-icon{position:absolute;top:6px;right:6px}.cal-icon-ok{color:#16a34a}.cal-icon-half{font-size:12px;font-weight:800;color:#f59e0b}.cal-icon-miss{color:#dc2626}.cal-icon-absent{font-size:14px;color:#d1d5db;font-weight:600}.cal-icon-leave{font-size:12px}.cal-leave-label{color:#7c3aed!important;font-weight:600;font-size:10px!important}.cal-time{font-size:10px;color:#6b7280;font-variant-numeric:tabular-nums;font-family:SF Mono,Menlo,monospace,sans-serif;margin-top:auto}.cal-legend{display:flex;gap:18px;margin-top:12px;font-size:12px;color:#6b7280;flex-wrap:wrap}.cal-leg-dot{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:middle}.cal-leg-ok{background:#16a34a}.cal-leg-half{background:#f59e0b}.cal-leg-absent{background:#e5e7eb}.cal-leg-leave{background:#8b5cf6}.cal-leg-we{background:#fef3c7}.cal-detail-leave{background:#f5f3ff;border:1px solid #e9d5ff;border-radius:10px;padding:12px 14px;margin-bottom:12px}.cal-detail-leave-badge{font-weight:700;color:#6d28d9;font-size:14px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cal-leave-status{font-size:11px;padding:2px 8px;border-radius:999px;font-weight:600}.cal-leave-approved{background:#d1fae5;color:#065f46}.cal-leave-pending{background:#fef3c7;color:#92400e}.cal-detail-leave-range{font-size:13px;color:#64748b;margin-top:4px}.cal-detail-leave-reason{font-size:13px;color:#475569;margin-top:4px;font-style:italic}.cal-detail{margin-top:16px;padding:16px;background:#f8fafc;border-radius:10px;border:1px solid #e2e8f0}.cal-detail-title{display:flex;align-items:center;gap:6px;font-weight:600;font-size:14px;margin-bottom:12px;color:#1e293b}.cal-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.cal-detail-item{display:flex;flex-direction:column;gap:2px}.cal-detail-label{font-size:11px;color:#94a3b8;text-transform:uppercase;font-weight:600}.cal-detail-value{font-size:18px;font-weight:700;color:#1e293b;font-variant-numeric:tabular-nums;font-family:SF Mono,Menlo,monospace,sans-serif}.cal-worked{color:#2563eb}.emp-picker{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#eef2ff;border:1px solid #c7d2fe;border-radius:10px;margin-bottom:16px}.emp-picker select{flex:1;padding:7px 12px;border:1px solid #c7d2fe;border-radius:8px;font-size:14px;font-weight:500;background:#fff}@media (max-width: 600px){.cal-cell{min-height:56px;padding:4px 5px}.cal-day{font-size:12px}.cal-time{font-size:9px}.cal-icon{top:4px;right:4px}.cal-stats{margin-left:0;width:100%;margin-top:8px}}.emp-form{margin-bottom:20px;border:1px solid #e0e7ff;background:#f8faff}.emp-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 600px){.emp-form-grid{grid-template-columns:1fr}}.leave-hist-filters{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:14px}.leave-hist-range{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:4px 12px;transition:border-color .2s,box-shadow .2s}.leave-hist-range:focus-within{border-color:#818cf8;box-shadow:0 0 0 3px #818cf826;background:#fff}.leave-hist-range svg{color:#94a3b8;flex-shrink:0}.leave-hist-range input[type=date]{border:none;background:none;outline:none;font-size:13px;font-weight:500;padding:5px 2px;color:#1e293b}.leave-hist-sep{color:#cbd5e1;font-size:14px;font-weight:600}.leave-hist-presets{display:flex;gap:4px;flex-wrap:wrap}.leave-hist-presets .btn.sm.ghost{font-size:12px;padding:5px 10px;border-radius:8px}.leave-hist-status{font-size:13px;padding:7px 10px;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc;color:#1e293b;outline:none;cursor:pointer}.leave-hist-status:focus{border-color:#818cf8;box-shadow:0 0 0 3px #818cf826}.leave-hist-summary{display:flex;gap:8px;align-items:center;font-size:13px;color:#64748b;margin-bottom:12px;padding:6px 0;border-bottom:1px solid #f1f5f9}.leave-hist-summary b{color:#1e293b}@media (max-width: 600px){.leave-hist-filters{flex-direction:column;align-items:stretch}.leave-hist-range{width:100%}.leave-hist-presets{overflow-x:auto;flex-wrap:nowrap}}.ot-admin-tabs{display:flex;gap:4px;margin-bottom:14px;border-bottom:2px solid #f1f5f9;padding-bottom:0}.ot-admin-tab{background:none;border:none;padding:8px 16px;font-size:13px;font-weight:500;color:#64748b;cursor:pointer;border-radius:8px 8px 0 0;margin-bottom:-2px;border-bottom:2px solid transparent;display:flex;align-items:center;gap:6px;transition:color .15s,border-color .15s}.ot-admin-tab:hover{color:#1e293b;background:#f8fafc}.ot-admin-tab.active{color:#2563eb;border-bottom-color:#2563eb;font-weight:600}.ot-tab-count{background:#e2e8f0;color:#475569;border-radius:20px;padding:1px 7px;font-size:11px;font-weight:700}.ot-admin-tab.active .ot-tab-count{background:#dbeafe;color:#1d4ed8}.ot-search-wrap{position:relative;display:flex;align-items:center;flex:1 1 180px;min-width:160px;max-width:260px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:0 10px;gap:6px;transition:border-color .2s,box-shadow .2s}.ot-search-wrap:focus-within{border-color:#818cf8;box-shadow:0 0 0 3px #818cf826;background:#fff}.ot-search-icon{color:#94a3b8;flex-shrink:0}.ot-search-input{border:none;background:none;outline:none;font-size:13px;font-weight:500;padding:7px 0;color:#1e293b;flex:1;min-width:0}.ot-search-input::placeholder{color:#94a3b8;font-weight:400}.ot-search-clear{background:none;border:none;padding:2px;cursor:pointer;color:#94a3b8;display:flex;align-items:center;border-radius:4px}.ot-search-clear:hover{color:#475569;background:#e2e8f0}.att-admin-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:16px}.att-admin-date{display:flex;align-items:center;gap:8px}.att-admin-date input[type=date]{font-weight:600;font-size:14px;padding:6px 10px;border-radius:8px;border:1px solid #e2e8f0}.att-admin-stats{display:flex;gap:14px;flex-wrap:wrap}.att-stat{display:flex;align-items:center;gap:4px;font-size:13px;color:#64748b}.att-stat b{font-size:15px}.att-stat-ok b{color:#16a34a}.att-stat-late b{color:#f59e0b}.att-stat-absent b{color:#dc2626}.att-stat-leave b{color:#7c3aed}.att-search-wrap{position:relative;display:flex;align-items:center;max-width:280px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:0 12px;transition:border-color .2s,box-shadow .2s}.att-search-wrap:focus-within{border-color:#818cf8;box-shadow:0 0 0 3px #818cf826;background:#fff}.att-search-wrap svg{color:#94a3b8;flex-shrink:0}.att-search-wrap input{border:none;background:none;outline:none;padding:9px 8px;font-size:13px;width:100%;color:#1e293b}.att-search-wrap input::placeholder{color:#b0b8c4}.att-search-clear{background:none;border:none;cursor:pointer;padding:4px;border-radius:50%;color:#94a3b8;display:flex;align-items:center;transition:background .15s,color .15s}.att-search-clear:hover{background:#e2e8f0;color:#475569}@media (max-width: 600px){.att-admin-header{flex-direction:column;align-items:stretch}.att-admin-stats{justify-content:space-around}.att-search-wrap{max-width:100%}}.manual-checkin-form{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:12px;padding:18px 20px;margin-bottom:16px}.manual-checkin-title{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:600;color:#15803d;margin-bottom:14px}.manual-checkin-actions{display:flex;gap:8px;margin-top:14px}.manual-checkin-note{margin:10px 0 0;font-size:12px;color:#92400e;background:#fef3c7;border:1px solid #fde68a;border-radius:8px;padding:6px 12px}input[type=date]:not(:focus):invalid,input[type=date].is-empty{color:#9ca3af}input[type=date]:not(:focus):invalid::-webkit-datetime-edit,input[type=date].is-empty::-webkit-datetime-edit{color:#9ca3af}input[type=date]::-webkit-datetime-edit-text,input[type=date]::-webkit-datetime-edit-month-field,input[type=date]::-webkit-datetime-edit-day-field,input[type=date]::-webkit-datetime-edit-year-field{color:inherit}.confirm-modal{background:#fff;border-radius:16px;padding:32px 36px 28px;text-align:center;max-width:400px;width:calc(100% - 32px);box-shadow:0 20px 60px #00000040;animation:popBounce .3s cubic-bezier(.34,1.56,.64,1)}.confirm-icon{font-size:52px;margin-bottom:8px;animation:emojiPop .5s ease}.confirm-title{font-size:20px;font-weight:700;color:#111827;margin-bottom:8px}.confirm-time{color:#6b7280;font-size:14px;margin-bottom:20px}.confirm-time b{color:#111827;font-size:16px;font-variant-numeric:tabular-nums}.checkin-popup-info{background:#eff6ff;border:1px solid #dbeafe;color:#1e40af;border-radius:10px;padding:8px 12px;font-size:13px;margin:8px 0 12px}.captcha-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:12px 16px;margin:4px 0 16px;text-align:center}.captcha-label{font-size:13px;color:#64748b;margin-bottom:10px}.captcha-row{display:flex;align-items:center;justify-content:center;gap:10px}.captcha-img{border-radius:8px;border:1px solid #bfdbfe;-webkit-user-select:none;user-select:none;pointer-events:none}.captcha-input{width:70px;font-size:20px;font-weight:700;text-align:center;border:2px solid #e2e8f0;border-radius:8px;padding:4px 8px;outline:none;transition:border-color .2s}.captcha-input:focus{border-color:#3b82f6}.captcha-input::-webkit-inner-spin-button,.captcha-input::-webkit-outer-spin-button{-webkit-appearance:none}.captcha-input[type=number]{-moz-appearance:textfield}.confirm-warn{background:#fef3c7;border:1px solid #fde68a;color:#92400e;border-radius:10px;padding:12px 14px;font-size:13.5px;line-height:1.5;text-align:left;margin:4px 0 18px}.confirm-actions{display:flex;gap:10px;justify-content:center}.confirm-actions .btn{min-width:110px;justify-content:center}.checkin-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:9000;animation:fadeIn .25s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.checkin-popup{background:#fff;border-radius:20px;padding:40px 36px 32px;text-align:center;max-width:380px;width:90%;position:relative;overflow:hidden;animation:popBounce .5s cubic-bezier(.34,1.56,.64,1);box-shadow:0 20px 60px #0003}.checkin-popup.checkin{border-top:5px solid #10b981}.checkin-popup.checkout{border-top:5px solid #8b5cf6}.checkin-confetti{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:2}.checkin-popup-emoji{font-size:56px;line-height:1;margin-bottom:16px;animation:emojiPop .6s .2s cubic-bezier(.34,1.56,.64,1) both}.checkin-popup-title{font-size:22px;font-weight:800;color:#1e293b;margin-bottom:6px;animation:slideUp .4s .15s ease both}.checkin-popup.checkin .checkin-popup-title{color:#059669}.checkin-popup.checkout .checkin-popup-title{color:#7c3aed}.checkin-popup-time{display:inline-block;background:#f1f5f9;color:#475569;font-size:15px;font-weight:700;font-family:SF Mono,Fira Code,monospace;padding:6px 16px;border-radius:20px;margin-bottom:14px;letter-spacing:.5px;animation:slideUp .4s .25s ease both}.checkin-popup-quote{font-size:15px;color:#64748b;line-height:1.6;margin-bottom:24px;animation:slideUp .4s .35s ease both}.checkin-popup-btn{animation:slideUp .4s .45s ease both;font-size:15px;padding:10px 28px;border-radius:10px}.checkin-popup.checkin .checkin-popup-btn{background:linear-gradient(135deg,#10b981,#059669)}.checkin-popup.checkout .checkin-popup-btn{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}.checkin-popup-btn:hover{transform:scale(1.04)}@keyframes popBounce{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}@keyframes emojiPop{0%{transform:scale(0) rotate(-20deg);opacity:0}60%{transform:scale(1.3) rotate(5deg)}to{transform:scale(1) rotate(0);opacity:1}}@keyframes slideUp{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.chat-fab{position:fixed;bottom:24px;right:24px;z-index:900;width:56px;height:56px;border-radius:50%;border:none;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #2563eb66;transition:transform .2s,box-shadow .2s}.chat-fab:hover{transform:scale(1.1);box-shadow:0 6px 24px #2563eb80}.chat-window{position:fixed;bottom:24px;right:24px;z-index:1000;width:380px;max-height:520px;background:#fff;border-radius:16px;box-shadow:0 8px 40px #0000002e;display:flex;flex-direction:column;overflow:hidden;animation:chat-slide-up .25s ease-out}@keyframes chat-slide-up{0%{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.chat-header{background:linear-gradient(135deg,#1e293b,#334155);color:#fff;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.chat-avatar{width:34px;height:34px;border-radius:50%;background:#ffffff26;display:flex;align-items:center;justify-content:center}.chat-close{background:#ffffff1a;border:none;color:#fff;width:30px;height:30px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.chat-close:hover{background:#fff3}.chat-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;background:#f8fafc;min-height:280px;max-height:340px}.chat-msg{display:flex}.chat-msg.user{justify-content:flex-end}.chat-msg.bot{justify-content:flex-start}.chat-bubble{max-width:80%;padding:10px 14px;border-radius:14px;font-size:13px;line-height:1.5;word-break:break-word}.chat-bubble.bot{background:#fff;color:#1e293b;border:1px solid #e2e8f0;border-bottom-left-radius:4px}.chat-bubble.user{background:#2563eb;color:#fff;border-bottom-right-radius:4px}.chat-typing{display:flex;align-items:center;gap:4px;padding:12px 18px}.chat-typing span{width:7px;height:7px;border-radius:50%;background:#94a3b8;animation:chat-dot 1.2s infinite}.chat-typing span:nth-child(2){animation-delay:.2s}.chat-typing span:nth-child(3){animation-delay:.4s}@keyframes chat-dot{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.chat-input{padding:12px;border-top:1px solid #e2e8f0;display:flex;gap:8px;background:#fff;flex-shrink:0}.chat-input input{flex:1;padding:10px 14px;border:1.5px solid #e2e8f0;border-radius:10px;font-size:13px;outline:none;transition:border-color .15s}.chat-input input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb14}.chat-send{width:40px;height:40px;border-radius:10px;border:none;background:#2563eb;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;flex-shrink:0}.chat-send:hover{background:#1d4ed8}.chat-send:disabled{background:#94a3b8;cursor:not-allowed}@media (max-width: 440px){.chat-window{width:calc(100vw - 16px);right:8px;bottom:8px;max-height:calc(100vh - 16px)}.chat-fab{bottom:16px;right:16px}}.modal-panel{background:#fff;border-radius:16px;width:calc(100% - 32px);max-width:820px;max-height:calc(100vh - 48px);overflow:auto;box-shadow:0 20px 60px #00000040;animation:popBounce .3s cubic-bezier(.34,1.56,.64,1)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 24px;border-bottom:1px solid #e5e7eb;position:sticky;top:0;background:#fff;z-index:1}.modal-head h2{margin:0;font-size:18px;display:flex;align-items:center;gap:8px}.modal-head .sub{font-size:13px;color:#64748b;font-weight:400}.modal-body{padding:20px 24px}.modal-section-title{font-size:13px;font-weight:700;color:#374151;margin:20px 0 10px;text-transform:uppercase;letter-spacing:.5px}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}.stat-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:10px 14px}.stat-box .label{font-size:12px;color:#64748b}.stat-box .val{font-size:18px;font-weight:700;color:#1e293b;font-variant-numeric:tabular-nums}.stat-box .hint{font-size:11px;color:#94a3b8;margin-top:2px}.badge.upcoming{background:#ede9fe;color:#5b21b6}.delta-up{color:#16a34a;font-weight:600}.delta-down{color:#dc2626;font-weight:600}.spacer{flex:1}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);background:linear-gradient(180deg,#1c3461 0%,var(--navy) 55%,#13223f 100%);color:#cbd5e1;display:flex;flex-direction:column;z-index:950;transition:width .22s ease,transform .25s ease;overflow:hidden}.sb-brand{display:flex;align-items:center;gap:12px;padding:20px 20px 18px;min-height:var(--topbar-h)}.sb-brand svg{box-shadow:0 6px 16px #2563eb66;border-radius:13px}.sb-brand-name{font-size:22px;font-weight:800;color:#fff;letter-spacing:.2px;line-height:1.1}.sb-brand-tag{font-size:11px;color:#94a3b8;white-space:nowrap;margin-top:2px}.sb-nav{flex:1;overflow-y:auto;padding:8px 14px 16px;display:flex;flex-direction:column;gap:4px;position:relative;z-index:1}.sb-nav::-webkit-scrollbar{width:4px}.sb-nav::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}.sb-section{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#64748b;padding:16px 12px 6px;white-space:nowrap}.sb-link{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;color:#cbd5e1;font-size:14.5px;font-weight:500;white-space:nowrap;text-decoration:none!important;transition:background .15s,color .15s}.sb-link:hover{background:#ffffff12;color:#fff}.sb-link.active{background:linear-gradient(90deg,#2563eb,#3b82f6);color:#fff;font-weight:600;box-shadow:0 6px 16px #2563eb59}.sb-collapse{display:flex;align-items:center;gap:12px;margin:8px 14px 16px;padding:10px 14px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:#94a3b8;border-radius:10px;font-size:13px;font-family:inherit;cursor:pointer;position:relative;z-index:1;transition:background .15s,color .15s}.sb-collapse:hover{background:#ffffff17;color:#fff}.sb-collapse svg{transition:transform .2s}.app-main{margin-left:var(--sidebar-w);min-height:100vh;transition:margin-left .22s ease;display:flex;flex-direction:column;min-width:0}.app-content{flex:1;min-width:0}.app-shell.sb-collapsed .sidebar{width:var(--sidebar-w-collapsed)}.app-shell.sb-collapsed .app-main{margin-left:var(--sidebar-w-collapsed)}.app-shell.sb-collapsed .sb-label,.app-shell.sb-collapsed .sb-brand-text{display:none}.app-shell.sb-collapsed .sb-brand,.app-shell.sb-collapsed .sb-link,.app-shell.sb-collapsed .sb-collapse{justify-content:center;padding-left:0;padding-right:0}.app-shell.sb-collapsed .sb-section{font-size:0;padding:0;height:1px;background:#ffffff14;margin:10px 8px}.app-shell.sb-collapsed .sb-collapse svg{transform:rotate(180deg)}.sb-backdrop{display:none}.topbar{position:sticky;top:0;z-index:800;height:var(--topbar-h);background:#ffffffeb;-webkit-backdrop-filter:saturate(180%) blur(8px);backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;padding:0 24px}.tb-title{font-size:20px;font-weight:700;color:var(--text);margin-left:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tb-icon-btn{position:relative;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:#475569;border-radius:10px;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.tb-icon-btn:hover{background:#f1f5f9;color:var(--text)}.tb-dot{position:absolute;top:8px;right:9px;width:9px;height:9px;background:var(--danger);border:2px solid #fff;border-radius:50%}.tb-divider{width:1px;height:28px;background:var(--border);margin:0 8px}.tb-dropdown{position:relative}.tb-user{display:flex;align-items:center;gap:10px;border:none;background:transparent;padding:6px 8px 6px 6px;border-radius:12px;cursor:pointer;color:#475569;font-family:inherit;transition:background .15s}.tb-user:hover{background:#f1f5f9}.tb-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#60a5fa,#2563eb);color:#fff;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.tb-user-name{font-size:15px;font-weight:600;color:var(--text);white-space:nowrap}.tb-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:220px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-md);padding:6px;z-index:900;animation:fadeIn .15s ease}.tb-menu-wide{min-width:300px}.tb-menu-head{padding:10px 12px;border-bottom:1px solid var(--border);margin-bottom:4px;font-size:13px;font-weight:700;color:var(--text)}.tb-menu-name{font-size:14px;font-weight:700;color:var(--text)}.tb-menu-sub{font-size:12px;font-weight:400;color:var(--text-2);margin-top:2px;word-break:break-all}.tb-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:none;background:transparent;border-radius:8px;font-size:14px;font-family:inherit;color:#334155;cursor:pointer;text-align:left}.tb-menu-item:hover{background:#f1f5f9}.tb-menu-item.danger{color:#dc2626}.tb-menu-item.danger:hover{background:#fef2f2}.tb-empty{padding:16px 12px;font-size:13px;color:var(--text-2);text-align:center}.tb-notif-icon{width:32px;height:32px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.tb-notif-icon.tone-amber{background:#fef3c7;color:#b45309}.tb-notif-icon.tone-blue{background:#dbeafe;color:#1d4ed8}.tb-notif-icon.tone-purple{background:#ede9fe;color:#6d28d9}.app-content .container{padding:28px 28px 40px}@media (max-width: 900px){.sidebar{transform:translate(-100%);width:var(--sidebar-w)!important}.app-shell.sb-drawer-open .sidebar{transform:translate(0);box-shadow:0 0 40px #0000004d}.app-shell .app-main{margin-left:0!important}.app-shell.sb-collapsed .sb-label{display:inline}.app-shell.sb-collapsed .sb-brand-text{display:block}.app-shell.sb-collapsed .sb-link{justify-content:flex-start;padding:11px 14px}.app-shell.sb-collapsed .sb-brand{justify-content:flex-start;padding:20px 20px 18px}.app-shell.sb-collapsed .sb-section{font-size:11px;padding:16px 12px 6px;height:auto;background:none;margin:0}.sb-collapse{display:none}.app-shell.sb-drawer-open .sb-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:940;animation:fadeIn .2s ease}.topbar{padding:0 12px}.app-content .container{padding:20px 16px 32px}}@media (max-width: 600px){.tb-user-name,.tb-user>svg,.tb-divider{display:none}.tb-title{font-size:17px}.tb-menu-wide{min-width:0;width:calc(100vw - 24px);right:-52px}}.dash-page{max-width:1240px}.dash-hero{position:relative;display:flex;align-items:center;min-height:168px;border-radius:20px;overflow:hidden;background:linear-gradient(100deg,#fff8ef,#fdeedf 38%,#eef4fc);border:1px solid #f3e5d3;box-shadow:var(--shadow-sm);margin-bottom:16px}.dash-hero-content{position:relative;z-index:1;padding:28px 32px 28px 44px;max-width:60%}.dash-hero-content:before{content:"";position:absolute;left:26px;top:30px;bottom:30px;width:4px;border-radius:4px;background:var(--primary)}.dash-hero-title{font-size:28px;font-weight:800;color:var(--text);line-height:1.25;letter-spacing:-.3px}.dash-wave{display:inline-block;animation:dashWave 2.4s ease-in-out 1;transform-origin:70% 70%}@keyframes dashWave{0%,60%,to{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%,40%{transform:rotate(-8deg)}}.dash-hero-quote{font-size:16px;color:#475569;margin-top:8px}.dash-hero-weather{display:inline-flex;align-items:center;gap:8px;margin-top:14px;padding:6px 12px;background:#ffffffbf;border:1px solid rgba(23,43,77,.06);border-radius:999px;font-size:13px;color:#475569}.dash-hero-weather b{color:var(--text)}.dash-hero-art{position:absolute;right:0;bottom:0;height:100%;width:66%;pointer-events:none}.dash-market{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.dash-market-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--surface);border:1px solid var(--border);border-radius:999px;font-size:13px;color:var(--text-2)}.dash-market-pill b{color:var(--text);font-variant-numeric:tabular-nums}.dash-market-change{font-size:11px;font-weight:700}.dash-market-change.up{color:var(--success)}.dash-market-change.down{color:var(--danger)}.dash-section-title{font-size:20px;font-weight:700;color:var(--text);margin:24px 0 14px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:20px}.kpi-card{--tone: #2563eb;--tone-soft: #eaf1ff;--tone-border: #c7d8fb;position:relative;display:flex;align-items:center;gap:16px;min-height:112px;padding:20px 22px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-sm);cursor:pointer;overflow:hidden;outline:none;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.kpi-card:after{content:"";position:absolute;right:-30px;bottom:-50px;width:170px;height:110px;border-radius:50%;background:var(--tone-soft);pointer-events:none}.kpi-card:hover,.kpi-card:focus-visible{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--tone-border)}.kpi-card.highlight{border-color:var(--tone-border)}.kpi-icon{width:52px;height:52px;border-radius:50%;background:var(--tone-soft);color:var(--tone);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:1}.kpi-body{flex:1;min-width:0;position:relative;z-index:1}.kpi-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;line-height:1.35;color:#334155;display:flex;align-items:center;gap:6px}.kpi-value{font-size:32px;font-weight:800;color:var(--text);margin-top:4px;line-height:1.1;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kpi-card.highlight .kpi-value{color:var(--tone)}.kpi-sub{font-size:16px;font-weight:500;color:var(--text-2)}.kpi-decor{color:var(--tone);opacity:.85;position:relative;z-index:1;flex-shrink:0}.kpi-eye{border:none;background:none;padding:0 2px;color:#94a3b8;cursor:pointer;display:inline-flex;align-items:center}.kpi-eye:hover{color:var(--text)}.kpi-card.tone-blue{--tone: #2563eb;--tone-soft: #eaf1ff;--tone-border: #c7d8fb}.kpi-card.tone-green{--tone: #16a34a;--tone-soft: #e8f7ee;--tone-border: #bfe8cd}.kpi-card.tone-teal{--tone: #0d9488;--tone-soft: #e3f6f3;--tone-border: #b5e6df}.kpi-card.tone-purple{--tone: #7c3aed;--tone-soft: #f1ebff;--tone-border: #d9c9fb}.kpi-card.tone-amber{--tone: #d97706;--tone-soft: #fff4e0;--tone-border: #fadcaa}.kpi-card.tone-red{--tone: #dc2626;--tone-soft: #fdecec;--tone-border: #f7c4c4}.kpi-card.tone-green .kpi-value{color:var(--success)}.kpi-card.tone-red .kpi-value{color:var(--danger)}@media (max-width: 900px){.dash-hero-content{max-width:70%}.dash-hero-art{width:80%;opacity:.85}}@media (max-width: 600px){.dash-hero{min-height:200px;align-items:flex-start}.dash-hero-content{max-width:100%;padding:22px 20px 96px 34px}.dash-hero-content:before{left:18px;top:24px;bottom:auto;height:56px}.dash-hero-title{font-size:21px}.dash-hero-quote{font-size:14px}.dash-hero-art{width:100%;height:60%}.kpi-grid{grid-template-columns:1fr;gap:12px}.kpi-card{min-height:92px;padding:16px 18px}.kpi-value{font-size:26px}.kpi-decor svg{width:32px;height:32px}}.app-content .container,.dash-page{max-width:1360px}.app-content h1{font-size:22px;font-weight:700;color:var(--text);letter-spacing:-.2px;margin:0 0 20px;gap:12px}.app-content h1>svg:first-child{width:40px;height:40px;padding:9px;border-radius:12px;background:var(--primary-soft);color:var(--primary)}.app-content .card h2{font-size:17px;font-weight:700;color:var(--text)}.btn{font-family:inherit;font-weight:600;border-radius:var(--radius-btn);background:var(--primary);box-shadow:0 1px 2px #2563eb33;transition:background .15s,box-shadow .15s,border-color .15s,transform .05s}.btn:hover{background:#1d4ed8;box-shadow:0 4px 12px #2563eb40}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{background:#cbd5e1;color:#fff;box-shadow:none}.btn.success{background:var(--success);box-shadow:0 1px 2px #16a34a33}.btn.success:hover{background:#15803d;box-shadow:0 4px 12px #16a34a40}.btn.danger{background:#dc2626;box-shadow:0 1px 2px #dc262633}.btn.danger:hover{background:#b91c1c;box-shadow:0 4px 12px #dc262640}.btn.danger-outline{box-shadow:none}.btn.ghost{background:var(--surface);color:#334155;border:1px solid var(--border);box-shadow:0 1px 2px #172b4d0a}.btn.ghost:hover{background:#f8fafc;border-color:#d3dceb;color:var(--text);box-shadow:0 1px 2px #172b4d0f}.btn.ghost:disabled{background:#f8fafc;color:#94a3b8}.btn.sm{border-radius:7px}.app-content th{background:#f8fafc;color:#64748b;font-size:11.5px;font-weight:600;letter-spacing:.4px;white-space:nowrap;padding:12px 14px;border-bottom:1px solid var(--border)}.app-content thead th:first-child{border-top-left-radius:10px}.app-content thead th:last-child{border-top-right-radius:10px}.app-content td{padding:12px 14px;border-bottom:1px solid #eef2f7}.app-content tbody tr>td{transition:background .12s}.app-content tbody tr:hover>td{background:#f8fafc}.app-content tfoot td{background:#f8fafc}.badge{white-space:nowrap;padding:3px 10px;font-size:11px;letter-spacing:.3px;line-height:1.5}.badge.pending{background:#fef3c7;color:#92400e}.badge.approved{background:#dcfce7;color:#166534}.badge.rejected{background:#fee2e2;color:#b91c1c}.badge.cancelled{background:#f1f5f9;color:#475569}.alert{border-radius:10px;border:1px solid transparent}.alert.ok{background:#f0fdf4;border-color:#bbf7d0;color:#166534}.alert.err{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.leave-form-field label{color:#334155}.leave-form-field input,.leave-form-field select,.leave-form-field textarea{border-color:#d8e0ec;background:#fff;color:var(--text)}.leave-form-field input:hover,.leave-form-field select:hover,.leave-form-field textarea:hover{border-color:#c3cede}.leave-form-field input:focus,.leave-form-field select:focus,.leave-form-field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.leave-form-field input:disabled{background:#f8fafc;color:#64748b}.emp-form{border:1px solid #dbe6fb;background:#f8faff}.emp-picker{display:flex;width:fit-content;min-width:min(340px,100%);max-width:100%;padding:6px 6px 6px 14px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-sm);color:var(--primary)}.emp-picker select{border:none;background:transparent;color:var(--text);font-family:inherit;font-weight:600;cursor:pointer;outline:none}.emp-picker:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.app-content td input[type=number],.app-content td input[type=text]{border:1px solid #d8e0ec;border-radius:6px;font-family:inherit;color:var(--text)}.app-content td input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.emp-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}.emp-search{display:flex;align-items:center;gap:8px;flex:1 1 280px;max-width:380px;height:40px;padding:0 10px 0 12px;background:#fff;border:1px solid #d8e0ec;border-radius:10px;color:#94a3b8;transition:border-color .15s,box-shadow .15s}.emp-search:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;color:var(--primary)}.emp-search input{flex:1;min-width:0;border:none;outline:none;font:inherit;font-size:14px;color:var(--text);background:transparent}.emp-search button{border:none;background:#f1f5f9;color:#64748b;border-radius:6px;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.emp-filter{height:40px;padding:0 32px 0 12px;border:1px solid #d8e0ec;border-radius:10px;background:#fff;font:inherit;font-size:14px;color:var(--text);cursor:pointer}.emp-filter:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.emp-table td{vertical-align:middle}.emp-table .sticky-left{min-width:260px}.emp-person{display:flex;align-items:center;gap:12px}.emp-avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#dbeafe,#c7d2fe);color:#1e40af;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.emp-name{font-weight:600;color:var(--text);white-space:nowrap;display:flex;align-items:center;gap:6px}.emp-role{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#6d28d9;background:#ede9fe;padding:1px 6px;border-radius:4px}.emp-sub{font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}.emp-bar{width:80px;height:4px;background:#e8edf5;border-radius:2px;margin-top:6px;overflow:hidden}.emp-bar span{display:block;height:100%;background:var(--success);border-radius:2px}.emp-badges{display:flex;flex-wrap:wrap;gap:4px;max-width:220px}.emp-actions{display:flex;gap:6px;justify-content:flex-end}.emp-more{padding:6px 8px}.emp-resigned td:not(.sticky-right){opacity:.55}.emp-menu{min-width:210px;z-index:9500}.emp-menu .tb-menu-item{white-space:nowrap}.emp-menu-divider{height:1px;background:var(--border);margin:4px 6px}.emp-count{font-size:12px;color:var(--text-2);margin-top:12px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 24px;border-top:1px solid var(--border);position:sticky;bottom:0;background:#fff}@media (max-width: 600px){.emp-search{max-width:none;flex-basis:100%}.emp-toolbar .spacer{display:none}.emp-table .sticky-left{min-width:200px}.emp-sub{max-width:170px}}.rpt-unit{font-size:13px;font-weight:500;color:var(--text-2)}.rpt-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin:8px 0 16px}.rpt-tab{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;background:none;font:inherit;font-size:14px;font-weight:600;color:var(--text-2);cursor:pointer}.rpt-tab:hover{color:var(--text)}.rpt-tab.active{color:var(--primary);border-bottom-color:var(--primary)}.rpt-tab-count{font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px;background:#f1f5f9;color:#475569}.rpt-tab.active .rpt-tab-count{background:var(--primary-soft);color:var(--primary)}.rpt-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:36px 0;color:var(--success);font-size:14px}.rpt-empty div{color:var(--text-2)}.app-content tbody tr.rpt-detail>td,.app-content tbody tr.rpt-detail:hover>td{background:#f8fafc}.rpt-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:8px}.rpt-day{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 12px;background:#fff;border:1px solid var(--border);border-radius:10px;font-size:13px;color:#475569}.rpt-day b{color:var(--text);min-width:64px}.badge.maternity{background:#fce7f3;color:#9d174d}.lg-page{min-height:100vh;display:grid;grid-template-columns:55fr 45fr;background:#eef4fd;overflow-x:hidden}.lg-visual{position:relative;overflow:hidden;background:#0f2a4a}.lg-visual-img{position:absolute;top:0;right:0;bottom:0;left:0;background:url(/login-bg.jpg) center / cover no-repeat;animation:lgDrift 40s ease-in-out infinite alternate}.lg-visual:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#172b4d0d,#172b4d1f 60%,#172b4d47);pointer-events:none}.lg-waves{position:absolute;left:0;right:0;bottom:0;width:100%;height:22%;z-index:1}@keyframes lgDrift{0%{transform:scale(1.02) translate(0)}to{transform:scale(1.08) translate(-1.5%,-1%)}}@media (prefers-reduced-motion: reduce){.lg-visual-img{animation:none}}.lg-panel{position:relative;display:flex;align-items:center;justify-content:center;padding:48px 48px 32px;background:linear-gradient(180deg,#fff,#eef4fd);z-index:1}.lg-curve{position:absolute;top:0;bottom:0;right:100%;width:180px;height:100%;margin-right:-1px;pointer-events:none}.lg-form-wrap{width:100%;max-width:460px}.lg-brand{display:flex;align-items:center;gap:16px;margin-bottom:36px}.lg-brand svg{box-shadow:0 10px 24px #2563eb4d;border-radius:15px}.lg-brand-name{font-size:30px;font-weight:800;color:var(--text);letter-spacing:-.5px;line-height:1.1}.lg-brand-sub{font-size:15px;color:var(--text-2);margin-top:4px}.lg-title{font-size:32px;font-weight:800;color:var(--text);letter-spacing:-.6px;margin:0 0 8px;display:block}.lg-desc{font-size:16px;color:var(--text-2);margin:0 0 28px}.lg-form{display:flex;flex-direction:column;gap:18px}.lg-field label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#334155;margin-bottom:8px}.lg-field label svg{color:#64748b}.lg-field input{width:100%;height:52px;padding:0 16px;border:1px solid #d5dfee;border-radius:10px;background:#fff;font:inherit;font-size:15px;color:var(--text);transition:border-color .15s,box-shadow .15s}.lg-field input::placeholder{color:#a8b4c6}.lg-field input:hover{border-color:#bccbe1}.lg-field input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px #2563eb24}.lg-field input[aria-invalid=true]{border-color:#f87171}.lg-field input[aria-invalid=true]:focus{box-shadow:0 0 0 4px #ef444424}.lg-field-err{font-size:13px;color:#dc2626;margin-top:6px}.lg-pwd{position:relative}.lg-pwd input{padding-right:52px}.lg-pwd-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border:none;background:none;border-radius:8px;color:#64748b;cursor:pointer}.lg-pwd-toggle:hover{background:#f1f5f9;color:var(--text)}.lg-pwd-toggle:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.lg-options{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px}.lg-check{display:inline-flex;align-items:center;gap:10px;font-size:14px;color:#334155;cursor:pointer;-webkit-user-select:none;user-select:none}.lg-check input{width:18px;height:18px;accent-color:var(--primary);cursor:pointer;margin:0}.lg-link{border:none;background:none;padding:0;font:inherit;font-size:14px;font-weight:500;color:var(--primary);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.lg-link:hover{color:#1d4ed8}.lg-back{display:inline-flex;align-items:center;gap:4px;margin-top:18px;text-decoration:none}.lg-btn{height:56px;margin-top:6px;display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;border:none;border-radius:12px;background:linear-gradient(90deg,#2563eb,#1d4ed8);color:#fff;font:inherit;font-size:17px;font-weight:700;cursor:pointer;box-shadow:0 8px 20px #2563eb47;transition:box-shadow .15s,transform .1s,filter .15s}.lg-btn:hover:not(:disabled){filter:brightness(1.06);box-shadow:0 10px 26px #2563eb5c}.lg-btn:active:not(:disabled){transform:translateY(1px)}.lg-btn:disabled{opacity:.75;cursor:not-allowed;box-shadow:none}.lg-btn:focus-visible{outline:3px solid rgba(37,99,235,.35);outline-offset:2px}.lg-page .alert{margin-bottom:18px}.lg-footer{margin-top:36px;text-align:center;font-size:13px;color:#94a3b8}.lg-lineart{display:block;width:100%;max-width:460px;height:auto;margin:0 auto 14px}.login-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:login-spin .6s linear infinite}@keyframes login-spin{to{transform:rotate(360deg)}}@media (max-width: 1100px){.lg-page{grid-template-columns:1fr 1fr}.lg-panel{padding:40px 32px 28px}.lg-curve{width:120px}.lg-title{font-size:28px}}@media (max-width: 760px){.lg-page{grid-template-columns:1fr;grid-template-rows:200px auto}.lg-visual-img{animation:none}.lg-waves{height:35%}.lg-curve{display:none}.lg-panel{align-items:flex-start;padding:28px 20px 24px;margin-top:-24px;border-radius:20px 20px 0 0;box-shadow:0 -6px 20px #172b4d14}.lg-brand{margin-bottom:24px}.lg-brand-name{font-size:26px}.lg-title{font-size:24px}.lg-desc{font-size:15px;margin-bottom:22px}.lg-options{flex-wrap:wrap}}
