:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#0f172a;background:linear-gradient(135deg,#f5f3ff,#eff6ff);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh}h1,h2,p{margin:0}h1{font-size:clamp(2rem,3vw,2.8rem);margin-bottom:.75rem}h2{font-size:1.25rem;margin-bottom:.5rem}.app-shell{display:grid;gap:1.5rem;padding:2rem;max-width:1100px;margin:0 auto;min-height:100vh;align-content:center}.hero-card,.status-card{background:#ffffffeb;border:1px solid rgba(15,23,42,.08);border-radius:24px;box-shadow:0 20px 45px #0f172a14;padding:2rem}.hero-card{display:grid;gap:1.5rem;grid-template-columns:1.2fr 1fr;align-items:center}.eyebrow{text-transform:uppercase;letter-spacing:.24em;font-size:.8rem;font-weight:700;color:#7c3aed;margin-bottom:.75rem}.auth-card{display:grid;gap:1rem}.field{display:grid;gap:.4rem;font-weight:600;color:#0f172a}.field input,.field select,.field textarea{width:100%;min-width:0;min-height:44px;border:1px solid #cbd5e1;border-radius:12px;padding:.85rem 1rem;font:inherit;color:#0f172a;background:#fff}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid rgba(37,99,235,.2);outline-offset:1px;border-color:#2563eb}button{border:none;border-radius:999px;padding:.8rem 1.2rem;font:inherit;font-weight:700;background:linear-gradient(135deg,#7c3aed,#2563eb);color:#fff;cursor:pointer}button:disabled{opacity:.7;cursor:wait}.ghost{background:transparent;color:#0f172a;border:1px solid #cbd5e1}.actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1rem}.message{margin-top:.75rem;padding:.8rem .95rem;border-radius:12px;font-weight:600}.message.error{background:#fee2e2;color:#991b1b}.message.success{background:#dcfce7;color:#166534}.message.info{background:#dbeafe;color:#1d4ed8}.hint,.token-preview{margin-top:.75rem;color:#475569}.dashboard-grid{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.dashboard-user{font-size:1.1rem;font-weight:700;margin:.5rem 0}.info-card{display:flex;gap:1rem;align-items:flex-start;border-radius:12px;padding:1.5rem;color:#fff;box-shadow:0 10px 25px #0f172a1f}.info-card__icon{font-size:1.75rem;line-height:1}.info-card__body h2{margin:0 0 .35rem;font-size:1.05rem}.info-card__body .hint{color:#ffffffd9}.info-card__body .message{background:#ffffff2e;color:#fff}.info-card--blue{background:linear-gradient(135deg,#2563eb,#1d4ed8)}.info-card--teal{background:linear-gradient(135deg,#0d9488,#0f766e)}.user-dashboard__cards{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.user-dashboard-card{overflow:hidden;border:1px solid #cbd5e1;border-radius:8px;background:#fff;box-shadow:0 6px 16px #0f172a1a}.user-dashboard-card__main{display:flex;align-items:center;gap:1rem;min-height:120px;padding:1.25rem;color:#fff}.user-dashboard-card__icon{display:grid;width:3rem;height:3rem;place-items:center;border:3px solid currentColor;border-radius:50%;font-size:1.75rem;font-weight:800}.user-dashboard-card__main strong,.user-dashboard-card__main span{display:block}.user-dashboard-card__main strong{font-size:2rem;line-height:1}.user-dashboard-card__main span:not(.user-dashboard-card__icon){margin-top:.5rem;font-size:.9rem}.user-dashboard-card button{display:flex;width:100%;justify-content:space-between;padding:.75rem 1rem;border:0;border-top:1px solid #e2e8f0;border-radius:0;background:#fff;color:#475569;text-align:left}.user-dashboard-card--blue .user-dashboard-card__main{background:#2d7fba}.user-dashboard-card--green .user-dashboard-card__main{background:#55b957}.user-dashboard-card--red .user-dashboard-card__main{background:#dc5555}.app-layout{min-height:100vh;display:flex}.app-sidebar{width:250px;flex-shrink:0;background:#1a2035;color:#cbd5e1;display:flex;flex-direction:column;transition:transform .2s ease,width .2s ease}.app-sidebar__brand{display:flex;align-items:center;gap:.65rem;padding:1.15rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.08);font-weight:700;color:#fff}.app-sidebar__logo{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,#7c3aed,#2563eb);font-size:.75rem}.app-sidebar__nav{padding:1rem 0}.app-sidebar__nav ul{list-style:none;margin:0;padding:0;display:grid;gap:.25rem}.app-sidebar__nav li{display:block;border-left:3px solid transparent}.app-sidebar__link{display:flex;width:100%;align-items:center;gap:.85rem;padding:.75rem 1.25rem;font:inherit;font-weight:600;color:#cbd5e1;background:transparent;border:none;border-radius:0;cursor:pointer;text-align:left}.app-sidebar__nav li.active{color:#fff;background:#ffffff0f;border-left-color:#3b82f6}.app-sidebar__nav li.active .app-sidebar__link{color:#fff}.app-sidebar__icon{font-size:1.1rem}.app-sidebar__backdrop{display:none}.app-main{flex:1;min-width:0;display:flex;flex-direction:column;background:#f4f6fb}.app-topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1.5rem;background:#fff;border-bottom:1px solid rgba(15,23,42,.08)}.app-topbar__menu-toggle{display:none;background:transparent;border:1px solid #cbd5e1;color:#0f172a;border-radius:10px;padding:.4rem .65rem;font-size:1.05rem;line-height:1}.app-topbar__actions{display:flex;align-items:center;gap:1rem;margin-left:auto}.app-topbar__icon-btn{font-size:1.1rem;color:#475569}.app-topbar__user{display:flex;align-items:center;gap:.6rem}.app-topbar__avatar{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#7c3aed,#2563eb);color:#fff;font-size:.75rem;font-weight:700}.app-topbar__email{font-weight:600;color:#0f172a}.payroll-page,.payslip-page{display:grid;gap:1rem;max-width:1180px}.payslip-page__intro{display:flex;align-items:center;justify-content:space-between;gap:1rem}.payslip-page h2,.payslip-page h3{margin:0;color:#0f172a}.payslip-page h2{font-size:1.65rem}.payslip-selector{display:grid;grid-template-columns:2fr 1fr 1fr;gap:1rem}.payslip-preview iframe{display:block;width:100%;min-height:760px;margin-top:1rem;border:1px solid #cbd5e1;background:#f8fafc}.payroll-page__intro,.payroll-panel{background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:14px;padding:1.25rem;box-shadow:0 8px 20px #0f172a0d}.payroll-page__intro,.payroll-panel__heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.payroll-page h2,.payroll-page h3{margin:0;color:#0f172a}.timesheet-page{max-width:1000px}.operational-timesheet-page{display:grid;gap:1rem;max-width:1280px}.operational-timesheet__intro,.operational-timesheet__panel{background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:14px;padding:1.25rem;box-shadow:0 8px 20px #0f172a0d}.operational-timesheet__intro,.operational-timesheet__section-heading,.operational-timesheet__filters{display:flex;align-items:center;justify-content:space-between;gap:1rem}.operational-timesheet__intro h2,.operational-timesheet__panel h3{margin:0;color:#0f172a}.operational-timesheet__intro h2{font-size:1.65rem}.operational-timesheet__filters{align-items:end;margin-bottom:1rem}.operational-timesheet__filters .field{min-width:220px}.operational-timesheet__count{color:#64748b;font-weight:600;padding-bottom:.75rem}.operational-timesheet__empty{padding:2.5rem 1rem;text-align:center;border:1px dashed #cbd5e1;border-radius:12px}.operational-timesheet__empty h3{margin-bottom:.35rem}.operational-timesheet__empty .hint{margin-top:0}.operational-timesheet__grid-wrap{overflow-x:auto;margin-top:1.25rem}.operational-timesheet__grid{width:100%;min-width:1120px;border-collapse:collapse}.operational-timesheet__grid th,.operational-timesheet__grid td{padding:.5rem;border-bottom:1px solid #e2e8f0;text-align:left;vertical-align:middle}.operational-timesheet__grid th{background:#f8fafc;color:#475569;font-size:.78rem}.operational-timesheet__grid th small{display:block;font-weight:400}.operational-timesheet__grid input{width:100%;min-width:60px;min-height:38px;padding:.55rem;border:1px solid #cbd5e1;border-radius:8px;font:inherit}.operational-timesheet__grid td:first-child input,.operational-timesheet__grid td:nth-child(2) input{min-width:150px}.operational-timesheet__row-total,.operational-timesheet__grand-total{color:#0f766e;font-weight:700}.operational-timesheet__grand-total{text-align:right;margin:1rem 0 0}.operational-timesheet__grid-wrap>button{margin-top:.9rem}.operational-timesheet__remove{padding:.35rem .65rem}.status-chip{display:inline-flex;padding:.3rem .65rem;border-radius:999px;font-size:.78rem;font-weight:700;white-space:nowrap}.status-chip--draft{background:#e2e8f0;color:#475569}.status-chip--submitted,.status-chip--resubmitted{background:#dbeafe;color:#1d4ed8}.status-chip--returnedforcorrection{background:#fef3c7;color:#92400e}.status-chip--approved{background:#dcfce7;color:#166534}.operational-timesheet__panel small{display:block;color:#64748b;margin-top:.2rem}.operational-timesheet__comment-banner{padding:1rem;margin-bottom:1rem;border-left:4px solid #f59e0b;border-radius:8px;background:#fffbeb;color:#92400e}.operational-timesheet__comment-banner p{margin-top:.35rem}.operational-timesheet__review,.operational-timesheet__history{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid #e2e8f0}.history-event{margin-top:.75rem;padding:.75rem;border-left:3px solid #cbd5e1;background:#f8fafc}.history-event span{margin-left:.5rem;color:#64748b;font-size:.85rem}.history-event p{margin-top:.35rem}.payroll-page h2{font-size:1.65rem}.payroll-page h3{margin-bottom:1rem;font-size:1.05rem}.payroll-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.payroll-grid .field input,.payroll-grid .field select,.payroll-panel>.field input,.payroll-panel>.field select{width:100%;box-sizing:border-box}.payroll-totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin-top:1rem;padding-top:1rem;border-top:1px solid #e2e8f0;color:#0f766e}.payroll-status{color:#475569;font-weight:600}.payroll-table-wrap{overflow-x:auto}.payroll-table{width:100%;border-collapse:collapse;min-width:720px}.payroll-table th,.payroll-table td{padding:.7rem;border-bottom:1px solid #e2e8f0;text-align:left;white-space:nowrap}.payroll-table th{background:#f8fafc;color:#475569;font-size:.82rem}.payroll-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;padding:1rem;background:#0f172a7a}.payroll-dialog{width:min(780px,100%);max-height:90vh;overflow-y:auto;background:#fff;border-radius:14px;padding:1.25rem}@media (max-width: 760px){.payroll-grid,.payroll-totals,.payslip-selector{grid-template-columns:1fr}.payslip-page__intro,.payslip-preview .payroll-panel__heading{align-items:flex-start;flex-direction:column}.payslip-preview iframe{min-height:600px}.payroll-page__intro,.payroll-panel__heading,.operational-timesheet__intro,.operational-timesheet__section-heading,.operational-timesheet__filters{align-items:flex-start;flex-direction:column}.operational-timesheet__filters .field{width:100%}}.app-topbar__logout{background:transparent;color:#0f172a;border:1px solid #cbd5e1;padding:.5rem .9rem;border-radius:999px;font-weight:600}.app-content-header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:1.25rem 1.5rem 0}.app-content-header h1{margin:0;font-size:1.5rem;color:#0f172a}.app-breadcrumb{margin:0;color:#64748b;font-size:.9rem}.app-workspace{flex:1;min-width:0;padding:1.5rem;overflow-y:auto}.employee-form-card{background:#fff;border-radius:16px;padding:1.75rem;box-shadow:0 10px 25px #0f172a14;max-width:760px}.employee-form{display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:1.25rem}.employee-form .field--full{grid-column:1 / -1}.employee-form button{grid-column:1 / -1;justify-self:start}.offer-letter-action{display:grid;gap:.75rem;margin-top:1rem}.offer-letter-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:1rem;background:#0f172a73}.offer-letter-dialog{width:min(680px,100%);max-height:min(760px,calc(100vh - 2rem));overflow-y:auto;padding:1.5rem;border-radius:16px;background:#fff;box-shadow:0 24px 60px #0f172a40}.offer-letter-dialog__header,.offer-letter-form__actions{display:flex;align-items:center;justify-content:space-between;gap:1rem}.offer-letter-dialog h3{margin:.25rem 0 0;color:#0f172a}.offer-letter-form{display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:1.5rem}.offer-letter-form__actions{grid-column:1 / -1;justify-content:flex-end}.button-secondary{background:#e2e8f0;color:#0f172a}@media (max-width: 600px){.employee-form{grid-template-columns:1fr}.employee-form-card{padding:1.25rem}.offer-letter-form,.payslip-selector{grid-template-columns:1fr}.payslip-page__intro,.payslip-preview .payroll-panel__heading{align-items:flex-start;flex-direction:column}.payslip-preview iframe{min-height:600px}.offer-letter-form__actions{grid-column:auto}}@media (max-width: 1024px){.app-sidebar{width:76px}.app-sidebar__brand-text{display:none}.app-sidebar__nav li{justify-content:center;padding:0}.app-sidebar__link{justify-content:center;padding:.75rem}.app-sidebar__label{display:none}.app-sidebar__nav li.active{border-left:none;border-radius:10px;margin:0 .5rem}}@media (max-width: 768px){.app-topbar__menu-toggle{display:inline-flex;align-items:center;justify-content:center}.app-topbar__email{display:none}.app-sidebar{position:fixed;top:0;left:0;bottom:0;width:250px;transform:translate(-100%);z-index:30;box-shadow:0 20px 45px #0f172a40}.app-sidebar.is-open{transform:translate(0)}.app-sidebar__brand-text{display:inline}.app-sidebar__nav li{justify-content:flex-start;padding:0}.app-sidebar__link{justify-content:flex-start;padding:.75rem 1.25rem}.app-sidebar__label{display:inline}.app-sidebar__nav li.active{margin:0;border-left-color:#3b82f6;border-radius:0}.app-sidebar__backdrop.is-visible{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a59;z-index:25;border:none;padding:0;cursor:pointer}.app-content-header{flex-direction:column;align-items:flex-start;gap:.25rem}.app-workspace{padding:1rem}}@media (max-width: 768px){.hero-card{grid-template-columns:1fr}.app-shell{padding:1rem}}
