*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--navy:#1a3a5c;--navy-light:#234d7a;--blue:#2563eb;--blue-light:#3b82f6;--accent:#f59e0b;--accent-light:#fbbf24;--success:#10b981;--danger:#ef4444;--warning:#f59e0b;--bg:#f0f4f8;--surface:#fff;--surface2:#f8fafc;--border:#e2e8f0;--text:#0f172a;--text-muted:#64748b;--text-light:#94a3b8;--sidebar-w:240px;--radius:12px;--radius-sm:8px;--shadow:0 1px 3px #00000014,0 4px 16px #0000000a;--shadow-lg:0 4px 6px #00000012,0 10px 40px #0000001a}body{-webkit-font-smoothing:antialiased;background:#f0f4f8;background:var(--bg);color:#0f172a;color:var(--text);font-family:DM Sans,sans-serif;font-size:15px;line-height:1.5}.app-shell{display:flex;min-height:100vh}.sidebar{background:#1a3a5c;background:var(--navy);bottom:0;display:flex;flex-direction:column;left:0;position:fixed;top:0;transition:transform .25s ease;width:240px;width:var(--sidebar-w);z-index:100}.sidebar-logo{border-bottom:1px solid #ffffff1a;padding:24px 20px 20px}.sidebar-logo h1{color:#fff;font-size:18px;font-weight:700;letter-spacing:-.3px}.sidebar-logo span{color:#f59e0b;color:var(--accent)}.sidebar-logo p{color:#ffffff80;font-size:12px;margin-top:2px}.sidebar-nav{flex:1 1;overflow-y:auto;padding:16px 12px}.nav-section-title{color:#ffffff59;font-size:10px;font-weight:600;letter-spacing:1px;padding:12px 8px 6px;text-transform:uppercase}.nav-item{align-items:center;background:none;border:none;border-radius:8px;border-radius:var(--radius-sm);color:#ffffffa6;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:10px;margin-bottom:2px;padding:10px 12px;text-align:left;text-decoration:none;transition:all .15s;width:100%}.nav-item:hover{background:#ffffff14;color:#fff}.nav-item.active{background:#2563eb;background:var(--blue);color:#fff}.nav-item svg{flex-shrink:0;height:18px;width:18px}.sidebar-footer{border-top:1px solid #ffffff1a;padding:16px 12px}.sidebar-user{gap:10px;padding:8px}.sidebar-avatar,.sidebar-user{align-items:center;display:flex}.sidebar-avatar{background:#2563eb;background:var(--blue);border-radius:50%;color:#fff;flex-shrink:0;font-size:14px;font-weight:700;height:36px;justify-content:center;width:36px}.sidebar-user-info{flex:1 1;min-width:0}.sidebar-user-name{color:#fff;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user-role{color:#fff6;font-size:11px;text-transform:capitalize}.main-content{flex:1 1;margin-left:240px;margin-left:var(--sidebar-w);min-width:0;padding:32px}.page-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:28px}.page-title{color:#0f172a;color:var(--text);font-size:26px;font-weight:700;letter-spacing:-.5px}.page-subtitle{color:#64748b;color:var(--text-muted);font-size:14px;margin-top:2px}.card{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);box-shadow:0 1px 3px #00000014,0 4px 16px #0000000a;box-shadow:var(--shadow);padding:24px}.card-title{color:#0f172a;color:var(--text);font-size:16px;font-weight:600;margin-bottom:16px}.stat-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:24px}.stat-card{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);box-shadow:0 1px 3px #00000014,0 4px 16px #0000000a;box-shadow:var(--shadow);padding:20px 24px}.stat-label{color:#64748b;color:var(--text-muted);font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.stat-value{color:#0f172a;color:var(--text);font-size:28px;font-weight:700;letter-spacing:-1px;margin-top:4px}.stat-sub{color:#64748b;color:var(--text-muted);font-size:12px;margin-top:4px}.stat-card.accent{background:#1a3a5c;background:var(--navy)}.stat-card.accent .stat-label{color:#ffffff80}.stat-card.accent .stat-value{color:#fff}.stat-card.accent .stat-sub{color:#fff6}.btn{align-items:center;border:none;border-radius:8px;border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;font-family:inherit;font-size:14px;font-weight:600;gap:8px;padding:9px 18px;text-decoration:none;transition:all .15s}.btn-primary{background:#2563eb;background:var(--blue);color:#fff}.btn-primary:hover{background:#3b82f6;background:var(--blue-light)}.btn-secondary{background:#f8fafc;background:var(--surface2);border:1px solid #e2e8f0;border:1px solid var(--border);color:#0f172a;color:var(--text)}.btn-secondary:hover{background:#e2e8f0;background:var(--border)}.btn-danger{background:#ef4444;background:var(--danger);color:#fff}.btn-danger:hover{opacity:.85}.btn-success{background:#10b981;background:var(--success);color:#fff}.btn-success:hover{opacity:.85}.btn-sm{font-size:13px;padding:6px 12px}.btn-ghost{background:none;color:#64748b;color:var(--text-muted);padding:6px 10px}.btn-ghost:hover{background:#f8fafc;background:var(--surface2);color:#0f172a;color:var(--text)}.btn:disabled{cursor:not-allowed;opacity:.5}.btn svg{height:16px;width:16px}.form-group{margin-bottom:16px}.form-label{color:#0f172a;color:var(--text);display:block;font-size:13px;font-weight:600;margin-bottom:6px}.form-input,.form-select,.form-textarea{-webkit-appearance:none;background:#fff;background:var(--surface);border:1.5px solid #e2e8f0;border:1.5px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text);font-family:inherit;font-size:14px;padding:10px 14px;transition:border-color .15s;width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:#2563eb;border-color:var(--blue);outline:none}.form-textarea{min-height:80px;resize:vertical}.form-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.form-hint{color:#64748b;color:var(--text-muted);font-size:12px;margin-top:4px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;font-size:14px;width:100%}th{background:#f8fafc;background:var(--surface2);color:#64748b;color:var(--text-muted);font-size:12px;font-weight:600;letter-spacing:.5px;padding:10px 16px;text-align:left;text-transform:uppercase;white-space:nowrap}td,th{border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border)}td{padding:12px 16px;vertical-align:middle}tr:last-child td{border-bottom:none}tr:hover td{background:#f8fafc;background:var(--surface2)}.badge{align-items:center;border-radius:999px;display:inline-flex;font-size:12px;font-weight:600;padding:3px 10px}.badge-draft{background:#f1f5f9;color:#64748b}.badge-submitted{background:#eff6ff;color:#2563eb}.badge-active,.badge-approved{background:#f0fdf4;color:#16a34a}.badge-danger,.badge-inactive{background:#fef2f2;color:#dc2626}.badge-warning{background:#fffbeb;color:#d97706}.login-page{align-items:center;background:linear-gradient(135deg,#1a3a5c,#0d2137);background:linear-gradient(135deg,var(--navy) 0,#0d2137 100%);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-card{background:#fff;border-radius:20px;box-shadow:0 4px 6px #00000012,0 10px 40px #0000001a;box-shadow:var(--shadow-lg);max-width:420px;padding:48px 40px;width:100%}.login-logo{margin-bottom:32px;text-align:center}.login-logo h1{color:#1a3a5c;color:var(--navy);font-size:28px;font-weight:800;letter-spacing:-1px}.login-logo h1 span{color:#2563eb;color:var(--blue)}.login-logo p{color:#64748b;color:var(--text-muted);font-size:14px;margin-top:4px}.login-error{background:#fef2f2;border-radius:8px;border-radius:var(--radius-sm);color:#ef4444;color:var(--danger);font-size:14px;margin-bottom:16px;padding:12px 16px}.timesheet-grid{border-collapse:collapse;width:100%}.timesheet-grid th{background:#1a3a5c;background:var(--navy);color:#fff;font-size:12px;letter-spacing:.5px;padding:10px 12px;text-transform:uppercase}.timesheet-grid td{border:1px solid #e2e8f0;border:1px solid var(--border);padding:8px}.timesheet-grid .day-row{background:#f8fafc;background:var(--surface2)}.timesheet-grid .desc-row td{background:#fff}.time-input{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;font-family:DM Mono,monospace;font-size:13px;padding:6px 8px;text-align:center;width:100%}.time-input:focus{border-color:#2563eb;border-color:var(--blue);outline:none}.hours-display{color:#1a3a5c;color:var(--navy);font-size:14px;font-weight:600;text-align:center}.hours-display,.total-row td{font-family:DM Mono,monospace}.total-row td{background:#1a3a5c;background:var(--navy);color:#fff;font-weight:700}.modal-overlay{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:200}.modal{background:#fff;border-radius:12px;border-radius:var(--radius);box-shadow:0 4px 6px #00000012,0 10px 40px #0000001a;box-shadow:var(--shadow-lg);max-height:90vh;max-width:560px;overflow-y:auto;padding:28px;width:100%}.modal-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:24px}.modal-title{color:#0f172a;color:var(--text);font-size:18px;font-weight:700}.modal-footer{border-top:1px solid #e2e8f0;border-top:1px solid var(--border);display:flex;gap:12px;justify-content:flex-end;margin-top:24px;padding-top:20px}.mobile-nav,.mobile-top-header{display:none}@media (max-width:768px){.mobile-nav{background:#fff;border-top:1px solid #e2e8f0;border-top:1px solid var(--border);bottom:0;display:flex;left:0;padding:8px 0 calc(8px + env(safe-area-inset-bottom));position:fixed;right:0;z-index:100}.mobile-nav-item{align-items:center;background:none;border:none;color:#64748b;color:var(--text-muted);cursor:pointer;display:flex;flex:1 1;flex-direction:column;font-size:11px;font-weight:500;gap:2px;padding:6px 4px}.mobile-nav-item svg{height:22px;width:22px}.mobile-nav-item.active{color:#2563eb;color:var(--blue)}.main-content{padding-bottom:80px}}.empty-state{color:#64748b;color:var(--text-muted);padding:48px 24px;text-align:center}.empty-state svg{height:48px;margin-bottom:16px;opacity:.3;width:48px}.empty-state h3{color:#0f172a;color:var(--text);font-size:16px;font-weight:600;margin-bottom:6px}.alert{border-radius:8px;border-radius:var(--radius-sm);font-size:14px;margin-bottom:16px;padding:12px 16px}.alert-error{background:#fef2f2;border:1px solid #fecaca;color:#ef4444;color:var(--danger)}.alert-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#16a34a}.alert-info{background:#eff6ff;border:1px solid #bfdbfe;color:#2563eb;color:var(--blue)}.progress-bar{background:#e2e8f0;background:var(--border);border-radius:999px;height:8px;overflow:hidden}.progress-fill{border-radius:999px;height:100%;transition:width .3s}.progress-good{background:#10b981;background:var(--success)}.progress-warn{background:#f59e0b;background:var(--warning)}.progress-danger{background:#ef4444;background:var(--danger)}@media print{.mobile-header,.no-print,.sidebar{display:none!important}.main-content{margin-left:0!important;padding:0!important}.card{border:none!important;box-shadow:none!important;padding:0!important}body{background:#fff!important}.print-only{display:block!important}.page-header,.stat-card,.stat-grid,form{display:none!important}table{font-size:10pt!important;min-width:0!important;min-width:auto!important;width:100%!important}td,th{border:1px solid #ccc!important;padding:6px 8px!important}tfoot tr{background:#f5f5f5!important}.table-wrap{overflow:visible!important}}@media (max-width:768px){.app-shell,body,html{max-width:100vw;overflow-x:hidden}.app-shell{flex-direction:column}.mobile-top-header{background:#1a3a5c;background:var(--navy);color:#fff;display:block;padding:12px 16px;text-align:center}.mobile-top-header h1{font-size:18px;font-weight:700;margin:0}.mobile-top-header h1 span{color:#f59e0b;color:var(--accent)}.sidebar{display:none!important}.main-content{margin-left:0;max-width:100vw;overflow-x:hidden;padding:16px}.form-row{grid-template-columns:1fr}.stat-grid{grid-template-columns:1fr 1fr}.page-header{align-items:stretch;flex-direction:column;gap:12px}.page-header .btn{width:100%}.timesheet-desktop{display:none!important}.timesheet-mobile{display:block!important}.timesheet-day-card{background:#fff;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;margin-bottom:10px;padding:14px 16px}.timesheet-day-card.has-hours{border-left:3px solid #2563eb;border-left:3px solid var(--blue)}.timesheet-day-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.timesheet-day-name{color:#0f172a;color:var(--text);font-size:15px;font-weight:600}.timesheet-day-date{color:#64748b;color:var(--text-muted);font-size:13px;font-weight:400}.timesheet-day-hours{color:#2563eb;color:var(--blue);font-size:15px;font-weight:600}.timesheet-time-row{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1fr 1fr;margin-bottom:10px}.timesheet-time-row label{color:#64748b!important;color:var(--text-muted)!important;font-size:12px!important;font-weight:500!important}.timesheet-time-input{background:#fff;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;font-size:15px;font-weight:400;padding:10px 12px;width:100%}.timesheet-time-input:focus{border-color:#2563eb;border-color:var(--blue);outline:none}.timesheet-desc-input{background:#fff;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;font-size:15px;font-weight:400;padding:10px 12px;width:100%}.timesheet-desc-input:focus{border-color:#2563eb;border-color:var(--blue);outline:none}.timesheet-total-card{background:#1a3a5c;background:var(--navy);border-radius:8px;color:#fff;margin-top:12px;padding:16px;text-align:center}.timesheet-total-label{font-size:13px;font-weight:500;opacity:.8}.timesheet-total-hours{font-size:28px;font-weight:600}.table-wrap{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}table{min-width:0;width:100%}.btn-sm{font-size:12px;padding:6px 10px}.card{overflow-x:hidden}.card,.page-header,.stat-grid{max-width:100%}*{box-sizing:border-box}}@media (min-width:769px){.timesheet-desktop{display:block}.timesheet-mobile{display:none!important}}.timesheet-mobile{display:none}@media (max-width:480px){.stat-grid{grid-template-columns:1fr}.login-card{max-width:calc(100vw - 40px);padding:32px 24px}.main-content{padding:12px 10px;width:100%}.card{padding:14px;width:100%}.timesheet-day-card{padding:10px}.timesheet-time-row{gap:6px}.form-input,.form-select,.form-textarea{font-size:16px}}
/*# sourceMappingURL=main.e528e786.css.map*/