:root{--bg:#f4f6f8;--card:#fff;--text:#15202b;--muted:#667085;--line:#e5e9ef;--dark:#111827;--accent:#2563eb;--accent2:#0f172a;--success:#15803d;--warning:#b45309;--danger:#b42318}
*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}.topbar{min-height:68px;background:var(--dark);color:#fff;display:flex;align-items:center;padding:0 28px;gap:26px;position:sticky;top:0;z-index:30;box-shadow:0 3px 14px #0002}.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-weight:800;white-space:nowrap}.brand-mark{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#fff;color:#111827;font-weight:900;letter-spacing:-1px}.brand-mark.large{width:48px;height:48px;border-radius:14px}.nav{display:flex;gap:6px;flex:1;overflow:auto}.nav a{color:#dbe2ea;text-decoration:none;padding:9px 10px;border-radius:8px;white-space:nowrap}.nav a:hover{background:#ffffff12;color:#fff}.user-menu{display:flex;gap:12px;align-items:center;white-space:nowrap}.user-menu form{margin:0}.link-button{border:0;background:transparent;color:#cbd5e1;cursor:pointer;padding:0}.container{max-width:1500px;margin:0 auto;padding:28px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px}.page-head h1{font-size:30px;margin:3px 0}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:800;color:var(--accent);margin:0}.muted{color:var(--muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #cfd6df;background:#fff;color:#182230;padding:10px 14px;border-radius:9px;text-decoration:none;font-weight:700;cursor:pointer}.btn:hover{background:#f8fafc}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 2px 8px #1018280a}.card.narrow{max-width:760px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:10px}.card-head h2,.export-card h2{margin:0;font-size:18px}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:4px}.kpi span{color:var(--muted);font-weight:700}.kpi strong{font-size:30px;line-height:1.1}.kpi small{color:var(--muted)}.kpi.accent{background:#111827;color:#fff}.kpi.accent span,.kpi.accent small{color:#cbd5e1}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.metric-row{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}.quick-links{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick-links a{padding:14px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--text);font-weight:700}.week-nav{display:flex;gap:8px}.messages{margin-bottom:14px}.message{padding:12px 14px;background:#eaf2ff;border:1px solid #c9ddff;border-radius:10px}.message.success{background:#ecfdf3;border-color:#abefc6}.message.error{background:#fef3f2;border-color:#fecdca}.timesheet-grid{display:grid;grid-template-columns:repeat(5,minmax(220px,1fr));gap:12px;align-items:start}.day-card{background:#fff;border:1px solid var(--line);border-radius:13px;overflow:hidden}.day-title{display:flex;justify-content:space-between;padding:13px 14px;background:#f8fafc;border-bottom:1px solid var(--line)}.halfday{padding:13px;border-bottom:1px solid var(--line);display:grid;gap:9px}.halfday:last-child{border-bottom:0}.halfday.locked{background:#f8fafc}.halfday-label{display:flex;justify-content:space-between;align-items:center}.halfday label,.filter-bar label{display:grid;gap:5px;color:#475467;font-weight:700;font-size:12px}.halfday select,.halfday input,.filter-bar select,.filter-bar input,.form-grid input,.form-grid select,.form-grid textarea,.login-card input,.export-card input{width:100%;border:1px solid #d0d5dd;border-radius:8px;padding:9px 10px;background:#fff;color:#101828;font:inherit}.halfday select:disabled,.halfday input:disabled{background:#eef2f6}.sticky-actions{position:sticky;bottom:16px;margin-top:18px;display:flex;justify-content:flex-end;gap:10px;background:#ffffffee;backdrop-filter:blur(8px);padding:12px;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 25px #10182818}.status{display:inline-flex;border-radius:99px;padding:4px 8px;background:#f2f4f7;color:#475467;font-size:11px;font-weight:800}.status-draft{background:#f2f4f7}.status-submitted{background:#fff4e8;color:#b54708}.status-approved{background:#ecfdf3;color:#027a48}.filter-bar{display:flex;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:16px}.filter-bar label{min-width:260px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle}thead th{background:#f8fafc;color:#475467;font-size:12px;text-transform:uppercase;letter-spacing:.03em}td small,th small{display:block;color:var(--muted);margin-top:3px}.card.table-wrap{padding:0}.load-table th:first-child{position:sticky;left:0;background:#fff;z-index:2;min-width:200px}.load-table thead th:first-child{background:#f8fafc}.load-table td{text-align:center;min-width:92px;border-left:1px solid var(--line)}.load-low{background:#fff8ed}.load-good{background:#ecfdf3}.load-high{background:#fef3f2}.legend{display:flex;gap:18px;margin:0 0 12px;color:var(--muted)}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.dot.low{background:#f79009}.dot.good{background:#12b76a}.dot.high{background:#f04438}.form-grid p{display:grid;gap:6px;margin:0 0 15px}.form-grid label{font-weight:700;color:#344054}.form-grid .helptext{font-size:12px;color:var(--muted)}.form-grid ul.errorlist{color:var(--danger);padding-left:18px}.form-actions{margin-top:18px}.export-card{margin-top:18px;display:flex;justify-content:space-between;align-items:center;gap:16px}.export-card form{display:flex;gap:8px;align-items:center}.card-actions{display:flex;justify-content:flex-end;padding-top:14px}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(145deg,#0f172a,#1e293b)}.login-card{width:min(420px,calc(100% - 32px));background:#fff;border-radius:18px;padding:28px;box-shadow:0 24px 70px #0005}.login-brand{display:flex;gap:12px;align-items:center;margin-bottom:28px}.login-brand small{display:block;color:var(--muted);margin-top:3px}.login-card h1{margin:0 0 18px}.stack{display:grid;gap:14px}.stack label{display:grid;gap:6px;font-weight:700}.empty{padding:30px;background:#fff;border:1px dashed #cfd6df;border-radius:12px;text-align:center;color:var(--muted)}
@media(max-width:1100px){.timesheet-grid{grid-template-columns:repeat(2,1fr)}.kpi-grid{grid-template-columns:repeat(2,1fr)}.nav{display:none}.topbar{justify-content:space-between}.grid-2{grid-template-columns:1fr}}
@media(max-width:680px){.container{padding:18px 12px}.topbar{padding:0 14px}.brand span:last-child{display:none}.user-menu>span{display:none}.page-head{align-items:flex-start;flex-direction:column}.timesheet-grid,.kpi-grid{grid-template-columns:1fr}.quick-links{grid-template-columns:1fr}.week-nav{width:100%;overflow:auto}.sticky-actions{bottom:8px}.export-card{align-items:stretch;flex-direction:column}.export-card form{align-items:stretch;flex-direction:column}}

.planned-hint{font-size:11px;background:#eff6ff;color:#1d4ed8;border:1px solid #dbeafe;border-radius:7px;padding:7px 8px;line-height:1.35}
