:root{--purple:#6d3bf5;--blue:#3b6df5;--text:#3f3d4a;--text-h:#16141f;--bg:#f5f6fb;--card-bg:#fff;--border:#e6e5f0;--danger:#e2483a;--success:#1fa971;--sans:"Inter", system-ui, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--sans);color:var(--text);background:var(--bg);margin:0}h1,h2,h3{color:var(--text-h);margin:0 0 8px;font-weight:600}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:14px}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--card-bg);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:240px;padding:20px 16px;display:flex}.brand{border-bottom:1px solid var(--border);margin-bottom:16px;padding:4px 4px 20px}.brand-logo{width:100%;max-width:190px;height:auto}.nav-links{flex-direction:column;flex:1;gap:4px;display:flex}.nav-links a{color:var(--text);border-radius:8px;padding:10px 12px;font-size:14px;font-weight:500;text-decoration:none}.nav-links a:hover{background:var(--bg)}.nav-links a.active{background:linear-gradient(90deg, var(--purple), var(--blue));color:#fff}.nav-group{letter-spacing:.08em;text-transform:uppercase;color:#9a98a6;margin:14px 12px 4px;font-size:10.5px;font-weight:700}.sidebar-footer{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding-top:16px;display:flex}.user-chip .user-name{color:var(--text-h);font-size:14px;font-weight:600}.user-chip .user-role{text-transform:capitalize;color:#8a8898;font-size:12px}.content{flex:1;width:100%;max-width:1440px;margin:0 auto;padding:32px 40px}.page-subtitle{color:#8a8898;margin-bottom:24px}.page-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.btn-primary,.btn-secondary,.btn-danger,.btn-small{border:none;border-radius:8px;padding:10px 18px;font-size:14px;font-weight:600}.btn-primary{background:linear-gradient(90deg, var(--purple), var(--blue));color:#fff}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--bg);color:var(--text);border:1px solid var(--border)}.btn-danger{background:var(--danger);color:#fff}.btn-small{padding:6px 12px;font-size:13px}.btn-link-danger{color:var(--danger);background:0 0;border:none;font-size:13px;text-decoration:underline}.row-actions{gap:6px;display:flex}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:20px}.card-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;max-width:800px;display:grid}.attendance-card textarea{border:1px solid var(--border);resize:vertical;border-radius:8px;width:100%;margin:12px 0;padding:8px 10px}.attendance-times{gap:32px;margin:12px 0;display:flex}.attendance-times .label{color:#8a8898;font-size:12px;display:block}.attendance-times .value{color:var(--text-h);font-size:20px;font-weight:600;display:block}.done-badge{color:var(--success);padding:10px 0;font-weight:600}.payout-row{justify-content:space-between;padding:6px 0;font-size:14px;display:flex}.payout-row.total{border-top:1px solid var(--border);color:var(--text-h);margin-top:6px;padding-top:10px;font-weight:700}.profile-row{border-bottom:1px solid var(--border);justify-content:space-between;padding:10px 0;font-size:14px;display:flex}.profile-row:last-child{border-bottom:none}.profile-row .label{color:#8a8898}.profile-row .value{color:var(--text-h);font-weight:500}.form-card label{color:var(--text-h);margin:10px 0 4px;font-size:13px;font-weight:600;display:block}.form-card input,.form-card select,.form-card textarea{border:1px solid var(--border);border-radius:8px;width:100%;padding:8px 10px}.form-card button{margin-top:16px}.form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 16px;display:grid}.data-table{border-collapse:collapse;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;width:100%;overflow:hidden}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);padding:12px 14px;font-size:13.5px}.data-table th{background:var(--bg);color:#8a8898;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.data-table tr:last-child td{border-bottom:none}.empty-state{text-align:center;color:#8a8898;padding:24px!important}.filters{gap:10px;margin-bottom:16px;display:flex}.filters select,.filters input{border:1px solid var(--border);border-radius:8px;padding:8px 10px}.badge{text-transform:capitalize;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.badge-pending{color:#8a6500;background:#fff3cd}.badge-approved{color:#0e7a4f;background:#d9f2e6}.badge-paid{color:#1e4fd6;background:#dbe8ff}.badge-rejected{color:#b3261e;background:#fde0dc}.status-active{color:#0e7a4f;background:#d9f2e6}.status-inactive{color:#666;background:#eee}.status-on_leave{color:#8a6500;background:#fff3cd}.status-terminated{color:#b3261e;background:#fde0dc}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;max-width:900px;display:grid}.stat-tile{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:6px;padding:20px;display:flex}.stat-value{color:var(--text-h);font-size:28px;font-weight:700}.stat-label{color:#8a8898;font-size:13px}.login-page{background:linear-gradient(135deg,#f5f6fb 0%,#eef0fb 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--card-bg);border:1px solid var(--border);text-align:center;border-radius:16px;width:360px;padding:40px;box-shadow:0 10px 30px #3c327814}.login-logo{width:100%;max-width:220px;margin-bottom:20px}.login-card h1{margin-bottom:4px;font-size:20px}.login-card .subtitle{color:#8a8898;margin-bottom:20px;font-size:13px}.login-card form{text-align:left}.login-card label{margin:12px 0 4px;font-size:13px;font-weight:600;display:block}.login-card input{border:1px solid var(--border);border-radius:8px;width:100%;padding:10px 12px}.login-card button{width:100%;margin-top:20px;padding:12px}.error-text{color:var(--danger);margin:10px 0;font-size:13px}.btn-link{color:var(--blue);background:0 0;border:none;margin-left:6px;font-size:12px;text-decoration:underline}.data-table.compact th,.data-table.compact td{padding:6px 8px}.data-table.compact input{border:1px solid var(--border);border-radius:6px;width:100%;padding:6px 8px}.invoice-editor{flex-direction:column;gap:16px;max-width:860px;display:flex}.invoice-totals{align-self:flex-end;width:100%;max-width:420px}.invoice-actions{flex-wrap:wrap;gap:10px;display:flex}.public-wrap{background:var(--bg);min-height:100vh;padding:24px 16px 60px}.public-toolbar{justify-content:flex-end;max-width:800px;margin:0 auto 16px;display:flex}.public-toolbar .btn-primary{text-decoration:none;display:inline-block}.public-invoice{border:1px solid var(--border);background:#fff;border-radius:12px;max-width:800px;margin:0 auto;padding:44px 40px 32px;position:relative;overflow:hidden;box-shadow:0 10px 30px #3c327814}.pi-corner{pointer-events:none;background:linear-gradient(115deg,#4a6e2f 0 45%,#7cb342 45% 100%);width:240px;height:58px;position:absolute;top:0}.pi-corner-l{clip-path:polygon(0 0,100% 0,0 100%);left:0}.pi-corner-r{clip-path:polygon(100% 0,0 0,100% 100%);background:linear-gradient(245deg,#4a6e2f 0 45%,#7cb342 45% 100%);right:0}.pi-thanks-sub{text-align:center;color:#8a8898;margin-top:4px;font-size:12px}.pi-head{z-index:1;justify-content:space-between;align-items:flex-start;margin-top:20px;display:flex;position:relative}.pi-brand{align-items:center;gap:14px;display:flex}.pi-logo{width:190px;max-width:48vw}.pi-brand-div{background:#151a12;align-self:stretch;width:2px;min-height:44px}.pi-brand-sub{color:#151a12;font-size:18px;font-weight:700;line-height:1.15}.pi-title{color:#3e5e2e;font-size:42px;font-weight:800}.pi-meta-row{flex-wrap:wrap;justify-content:space-between;gap:24px;margin-top:24px;display:flex}.pi-label{color:#3e5e2e;font-size:13px;font-weight:700}.pi-billname{color:var(--text-h);margin-top:4px;font-size:18px;font-weight:700}.pi-muted{color:#8a8898;font-size:13px}.pi-meta td{color:#55535f;padding:2px 8px 2px 0;font-size:13px}.pi-meta td:last-child{color:var(--text-h);font-weight:700}.pi-pill{color:#3e5e2e;background:#f1f6ea;border:1px solid #6fa83c;border-radius:999px;width:max-content;margin:22px auto 0;padding:6px 26px;font-size:14px}.pi-table{border-collapse:collapse;width:100%;margin-top:22px}.pi-table th{color:#fff;text-align:center;background:#6fa83c;padding:10px;font-size:12px;font-weight:700}.pi-table th:first-child{text-align:left}.pi-table td{border-bottom:1px solid #e6e5f0;padding:9px 10px;font-size:13.5px}.pi-table td.num{text-align:center;font-variant-numeric:tabular-nums}.pi-table tbody tr:nth-child(2n){background:#f7faf2}.pi-table .pi-total td{background:#f1f6ea;border-bottom:none;font-weight:700}.pi-table .pi-big{color:#3e5e2e;font-size:17px}.pi-lower{flex-wrap:wrap;justify-content:space-between;gap:24px;margin-top:24px;display:flex}.pi-note{max-width:340px}.pi-note p{color:#8a8898;white-space:pre-line;margin:6px 0 0;font-size:13px}.pi-summary{border-collapse:collapse;min-width:320px}.pi-summary td{color:#55535f;background:#f1f6ea;border:1px solid #6fa83c;padding:8px 12px;font-size:13px;font-weight:700}.pi-summary td.num{text-align:right;color:#3e5e2e}.pi-summary .pi-grand td{color:#fff;background:#6fa83c;font-size:15px}.pi-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:24px;margin-top:32px;padding-top:20px;display:flex}.pi-footer p{color:#55535f;white-space:pre-line;margin:6px 0 0;font-size:12.5px}.pi-thanks{text-align:center;color:#6fa83c;margin-top:20px;font-size:20px;font-style:italic;font-weight:700}@media print{.public-toolbar{display:none}.public-wrap{background:#fff;padding:0}.public-invoice{box-shadow:none;border:none;max-width:none}}.notice-text{color:#0e7a4f;background:#d9f2e6;border:1px solid #a7dcc4;border-radius:8px;margin:10px 0;padding:8px 12px;font-size:13px;font-weight:600}.modal-overlay{z-index:100;background:#14121e73;justify-content:center;align-items:flex-start;padding:40px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-box{background:var(--card-bg);border:1px solid var(--border);border-radius:14px;width:100%;max-width:640px;padding:24px;box-shadow:0 20px 50px #14123c40}.modal-box label{color:var(--text-h);margin:10px 0 4px;font-size:13px;font-weight:600;display:block}.modal-box input,.modal-box textarea{border:1px solid var(--border);border-radius:8px;width:100%;padding:8px 10px}
