:root{--text:#334155;--text-h:#0f172a;--muted:#64748b;--bg:#f8fafc;--surface:#fff;--border:#e2e8f0;--accent:#2563eb;--shadow:0 16px 50px #0f172a14;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{min-width:320px;margin:0}h1,h2,h3,p{margin-top:0}h1,h2,h3,strong{color:var(--text-h)}h1{letter-spacing:-.04em;font-size:clamp(28px,4vw,44px)}h2{margin-bottom:8px;font-size:20px}p{line-height:1.7}.app-shell{width:min(1440px,100% - 32px);margin:0 auto;padding:24px 0 48px}.topbar,.toolbar,.section-heading,.user-chip,.action-row,.table-actions{align-items:center;gap:12px;display:flex}.topbar{border:1px solid var(--border);box-shadow:var(--shadow);background:linear-gradient(135deg,#fff 0%,#eff6ff 100%);border-radius:24px;justify-content:space-between;margin-bottom:24px;padding:20px}.topbar h1{margin:0}.eyebrow{color:var(--accent);letter-spacing:.12em;margin:0 0 4px;font-size:13px;font-weight:700}.user-chip{flex-wrap:wrap;justify-content:flex-end}.stack{gap:18px;display:grid}.tab-nav{border:1px solid var(--border);background:var(--surface);border-radius:999px;flex-wrap:wrap;gap:10px;width:fit-content;padding:8px;display:flex}.tab-nav button.active{background:var(--accent);color:#fff}.compact-tabs{margin:16px 0}.compact-action-row{gap:6px}.access-table{table-layout:fixed;min-width:940px}.access-table th:first-child,.access-table td:first-child{width:22%}.access-table th:nth-child(2),.access-table td:nth-child(2){white-space:nowrap;width:120px}.access-table th:nth-child(3),.access-table td:nth-child(3){white-space:nowrap;width:180px}.access-table th:nth-child(4),.access-table td:nth-child(4){white-space:nowrap;width:140px}.access-table th:last-child,.access-table td:last-child{text-align:right;white-space:nowrap;width:340px}.access-actions{white-space:nowrap;justify-content:flex-end;gap:8px;display:flex}.access-actions button{flex:none}.portal-menu-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px;display:grid}.portal-menu-grid button{text-align:left;border-radius:20px;align-content:start;gap:8px;min-height:132px;padding:18px;display:grid}.portal-menu-grid button strong,.portal-menu-grid button span{color:#fff}.portal-menu-grid button span{opacity:.86;font-size:14px;line-height:1.6}.toolbar{background:var(--surface);border:1px solid var(--border);border-radius:18px;flex-wrap:wrap;justify-content:space-between;padding:16px 18px}.kpi-grid,.card-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.kpi,.mini-card,.panel,.auth-card{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:20px}.kpi{gap:6px;padding:18px;display:grid}.kpi span,.kpi small,.muted{color:var(--muted)}.kpi strong{color:var(--text-h);font-size:28px}.panel,.auth-card{padding:20px;overflow-x:auto}.auth-card{max-width:520px;margin:48px auto}.demo-login-box{border:1px solid var(--border);background:#f8fafc;border-radius:16px;margin-top:18px;padding:16px}.two-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.form-grid{gap:12px;margin-top:16px;display:grid}.login-form{margin-top:0}.login-public-action{margin-top:14px;display:grid}.login-public-action button{width:100%}.form-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.inline{grid-template-columns:repeat(5,minmax(160px,1fr));align-items:end}.invoice-form{grid-template-columns:1fr;align-items:stretch}.invoice-form textarea{resize:vertical;height:auto;min-height:84px}.invoice-input-section{border:1px solid var(--border);background:#fff;border-radius:18px;grid-column:1/-1;gap:14px;padding:16px;display:grid}.invoice-input-section h3{margin:0 0 4px}.invoice-input-grid{grid-template-columns:repeat(2,minmax(220px,1fr));align-items:end;gap:14px 18px;display:grid}.invoice-input-grid .span-2{grid-column:1/-1}.invoice-profile-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.invoice-totals-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.invoice-totals-summary div{border:1px solid var(--border);background:#f8fafc;border-radius:14px;gap:4px;padding:14px;display:grid}.invoice-totals-summary span{color:var(--muted);font-size:13px;font-weight:700}.invoice-totals-summary strong{color:var(--text-h);font-size:22px}.invoice-list-table{table-layout:fixed;min-width:1180px}.invoice-list-table th,.invoice-list-table td{vertical-align:middle}.invoice-list-table th:first-child,.invoice-list-table td:first-child{white-space:nowrap;width:96px}.invoice-list-table th:nth-child(2),.invoice-list-table td:nth-child(2){width:360px}.invoice-list-table th:nth-child(3),.invoice-list-table td:nth-child(3){white-space:nowrap;width:120px}.invoice-list-table th:nth-child(4),.invoice-list-table td:nth-child(4){white-space:nowrap;width:90px}.invoice-list-table th:nth-child(5),.invoice-list-table td:nth-child(5){white-space:nowrap;width:112px}.invoice-list-table th:nth-child(6),.invoice-list-table td:nth-child(6){white-space:nowrap;width:128px}.invoice-list-table th:last-child,.invoice-list-table td:last-child{text-align:right;white-space:nowrap;width:230px}.invoice-title-cell strong{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.invoice-row-actions{flex-wrap:nowrap;justify-content:flex-end}.amount-cell{white-space:nowrap;font-weight:800}.invoice-line-editor{border:1px solid var(--border);background:#f8fafc;border-radius:16px;grid-column:1/-1;gap:12px;padding:14px;display:grid}.invoice-line-editor h3{margin:0}.invoice-line-row{border:1px solid var(--border);background:#fff;border-radius:14px;grid-template-columns:minmax(220px,1fr) 88px 92px 120px 96px minmax(150px,.7fr) auto;align-items:end;gap:10px;padding:12px;display:grid}.invoice-line-total{color:var(--muted);gap:2px;font-size:12px;line-height:1.35;display:grid}.invoice-line-total strong{color:var(--text-h);font-size:13px}.invoice-preview{border:1px solid var(--border);background:#f8fafc;border-radius:20px;padding:16px;overflow:auto}.invoice-document{box-sizing:border-box;border:1px solid var(--border);color:#111827;word-break:keep-all;overflow-wrap:normal;background:#fff;border-radius:8px;width:210mm;max-width:100%;min-height:297mm;margin:18px auto 0;padding:16mm 17mm;font-size:12px;line-height:1.65;box-shadow:0 18px 48px #0f172a1f}.invoice-title-row,.invoice-parties{grid-template-columns:minmax(0,1fr) 220px;align-items:start;gap:20px;display:grid}.invoice-title-row{border-bottom:2px solid var(--text-h);margin-bottom:18px;padding-bottom:12px}.invoice-title-row h3{letter-spacing:.22em;margin:0;font-size:28px;line-height:1.2}.invoice-meta{text-align:right;white-space:nowrap}.invoice-parties{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;margin-bottom:16px}.invoice-party-box{min-width:0}.invoice-party-box strong{overflow-wrap:anywhere;margin-bottom:4px;font-size:14px;line-height:1.5;display:block}.invoice-issuer-box{text-align:right}.invoice-parties p,.invoice-title-row p,.invoice-footer-note p{margin:2px 0}.invoice-total{border-bottom:2px solid var(--text-h);white-space:nowrap;align-items:baseline;gap:24px;min-width:260px;margin:8px 0;padding:8px 0 6px;font-size:13px;line-height:1.4;display:inline-flex}.invoice-total strong{font-size:18px;font-weight:800}.invoice-subject-row{border-bottom:1px solid #111827;grid-template-columns:72px minmax(0,1fr);align-items:center;gap:10px;margin:12px 0 4px;padding-bottom:4px;font-size:12px;display:grid}.invoice-subject-row span{font-weight:700}.invoice-subject-row strong{overflow-wrap:anywhere;min-width:0}.invoice-summary-table,.invoice-info-table,.invoice-detail-lines{table-layout:fixed;border-collapse:collapse;min-width:0;margin-top:12px;font-size:10px}.invoice-summary-table{width:64%;margin-bottom:12px}.invoice-info-table,.invoice-detail-lines{width:100%}.invoice-summary-table th,.invoice-summary-table td,.invoice-info-table th,.invoice-info-table td,.invoice-detail-lines th,.invoice-detail-lines td{vertical-align:middle;border:1px solid #111827;padding:5px 6px;line-height:1.45}.invoice-summary-table th,.invoice-info-table th,.invoice-detail-lines th{background:#f3f4f6}.invoice-info-table th{text-align:center;width:90px}.invoice-info-table td{white-space:pre-line;word-break:keep-all;overflow-wrap:anywhere}.invoice-detail-lines{margin-top:18px}.invoice-detail-lines th{text-align:center;white-space:nowrap}.invoice-blank-row td{height:18px}.invoice-col-label{width:18%}.invoice-col-summary-amount{width:27.3%}.invoice-col-amount-wide{width:13%}.invoice-col-no{width:4%}.invoice-col-date{width:11%}.invoice-col-detail{width:38%}.invoice-col-unit{width:6%}.invoice-col-quantity{width:7%}.invoice-col-amount{width:12%}.invoice-col-rate{width:8%}.invoice-description-cell,.invoice-period-cell{word-break:keep-all;overflow-wrap:anywhere}.invoice-nowrap,.invoice-amount-cell{white-space:nowrap}.invoice-amount-cell{text-align:right;font-variant-numeric:tabular-nums}.invoice-footer-note{margin-top:22px;font-size:12px;line-height:1.65}.invoice-footer-note p{overflow-wrap:anywhere}label{color:var(--muted);gap:6px;font-size:13px;font-weight:700;display:grid}input,select,textarea{box-sizing:border-box;border:1px solid var(--border);width:100%;font:inherit;color:var(--text-h);background:#fff;border-radius:12px;padding:10px 12px}textarea{min-height:84px}button,.button-link{font:inherit;color:#fff;background:var(--accent);cursor:pointer;text-align:center;border:0;border-radius:999px;padding:10px 16px;font-weight:700;text-decoration:none}button.secondary,.ghost-button{color:var(--text-h);background:#e5e7eb}button.danger-button{color:#991b1b;background:#fee2e2}.ghost-button{padding:8px 12px}.notice{color:#0f5132;background:#d1e7dd;border-radius:14px;margin:0;padding:12px 14px}.notice.danger{color:#842029;background:#f8d7da}.notice.warning{color:#92400e;background:#fef3c7}.password-issue-notice{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.password-issue-notice>div{gap:6px;display:grid}.password-issue-notice code{width:fit-content;color:var(--text-h);letter-spacing:.08em;background:#ffffffb8;border-radius:10px;padding:6px 10px;font-size:18px;font-weight:700;display:inline-block}table{border-collapse:collapse;width:100%;min-width:760px}th,td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:12px}th{color:var(--muted);letter-spacing:.04em;font-size:12px}.status{color:#3730a3;background:#eef2ff;border-radius:999px;align-items:center;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.status-finalized,.status-paid,.status-confirmed,.status-submitted{color:#166534;background:#dcfce7}.status-draft{color:#92400e;background:#fef3c7}.status-warning{color:#991b1b;background:#fee2e2}.status-active{color:#1d4ed8;background:#dbeafe}.mini-card{gap:6px;padding:14px;display:grid}.shift-editor{gap:8px;margin-top:18px;display:grid}.weekday-repeat-panel{border:1px solid var(--border);background:#f8fafc;border-radius:18px;gap:14px;margin-top:18px;padding:16px;display:grid}.weekday-repeat-panel h3{margin:0 0 4px}.weekday-repeat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.weekday-repeat-card{border:1px solid var(--border);background:#fff;border-radius:14px;gap:8px;padding:12px;display:grid}.weekday-repeat-card>strong{color:var(--text-h)}.shift-day-row{border:1px solid var(--border);background:#f8fafc;border-radius:16px;grid-template-columns:120px minmax(240px,1fr) 130px minmax(180px,.6fr);align-items:end;gap:10px;padding:12px;display:grid}.shift-day-row>strong{align-self:center}.date-label{gap:3px;line-height:1.35;display:inline-grid}.holiday-badge{color:#b91c1c;background:#fee2e2;border-radius:999px;width:fit-content;padding:2px 7px;font-size:11px;font-weight:800;line-height:1.3;display:inline-flex}.detail-panel{border-top:1px solid var(--border);gap:18px;margin-top:18px;padding-top:18px;display:grid}.detail-columns{align-items:start}.backup-actions{border:1px solid var(--border);background:#f8fafc;border-radius:16px;margin-top:16px;margin-bottom:18px;padding:16px}.modal-backdrop{z-index:20;background:#0f172a52;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-card{background:#fff;border-radius:24px;width:min(920px,100%);max-height:88vh;padding:22px;overflow:auto;box-shadow:0 24px 80px #0f172a3d}.attendance-live{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:12px 0 16px;display:grid}.warning-list{gap:8px;margin-bottom:12px;display:grid}.attendance-live div,.work-session-card{border:1px solid var(--border);background:#f8fafc;border-radius:16px}.attendance-live div{gap:6px;padding:14px;display:grid}.attendance-live span,.session-metrics,.break-list{color:var(--muted);font-size:13px}.work-session-list{gap:12px;margin-top:12px;display:grid}.work-session-card{gap:10px;padding:14px;display:grid}.work-session-card p{margin:0}.session-card-grid{grid-template-columns:120px minmax(240px,1.2fr) 140px minmax(240px,1fr) auto;align-items:center;gap:14px;display:grid}.session-field{gap:4px;display:grid}.session-field>span{color:var(--muted);font-size:12px;font-weight:800}.session-field strong{color:var(--text-h)}.session-field small{color:var(--muted)}.session-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.session-metrics{flex-wrap:wrap;gap:10px;display:flex}.break-list{margin:0;padding-left:18px}.session-breaks .break-list{color:var(--text);font-size:12px}.movement-log,.edit-section{margin-top:18px}.movement-log ol{gap:10px;margin:12px 0 0;padding:0;list-style:none;display:grid}.movement-log li{border:1px solid var(--border);background:#f8fafc;border-radius:14px;justify-content:space-between;gap:12px;padding:12px 14px;display:flex}.movement-log span{color:var(--muted);font-size:13px}.shift-matrix th:first-child{z-index:1;background:#f8fafc;position:sticky;left:0}.matrix-cell{white-space:normal;gap:4px;min-width:160px;display:grid}.matrix-cell strong{color:var(--text-h)}.matrix-cell span{color:var(--muted);font-size:12px;line-height:1.5}.shift-status-card-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;display:grid}.shift-status-card{background:#f8fafc;border-left:5px solid #cbd5e1;align-content:start;gap:8px;padding:12px 14px 12px 12px}.shift-status-card-working{background:linear-gradient(135deg,#eff6ff 0%,#fff 100%);border-left-color:#2563eb}.shift-status-card-break{background:linear-gradient(135deg,#fffbeb 0%,#fff 100%);border-left-color:#f59e0b}.shift-status-card-away{background:linear-gradient(135deg,#fff7ed 0%,#fff 100%);border-left-color:#ea580c}.shift-status-card-done{background:linear-gradient(135deg,#f1f5f9 0%,#fff 100%);border-left-color:#64748b}.shift-status-card-not-started{background:linear-gradient(135deg,#f5f3ff 0%,#fff 100%);border-left-color:#7c3aed}.shift-status-card-no-plan{background:linear-gradient(135deg,#f8fafc 0%,#fff 100%);border-left-color:#94a3b8}.shift-status-card-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.shift-status-card-header div,.shift-status-plan{gap:4px;display:grid}.shift-status-card-header div span,.shift-status-plan span,.shift-status-plan small,.shift-status-details dt{color:var(--muted);font-size:12px}.shift-status-card-header div{min-width:0}.shift-status-card-header strong{overflow-wrap:anywhere;line-height:1.3}.shift-status-chip{flex:none}.shift-status-plan{border:1px solid var(--border);background:#f8fafc;border-radius:12px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 8px;padding:8px 10px}.shift-status-plan strong{color:var(--text-h);overflow-wrap:anywhere;grid-column:1/-1;line-height:1.35}.shift-status-plan small{white-space:nowrap;justify-self:end}.shift-status-details{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;margin:0;display:grid}.shift-status-details div{gap:1px;min-width:0;display:grid}.shift-status-detail-wide{grid-column:1/-1}.shift-status-details dd{color:var(--text-h);overflow-wrap:anywhere;margin:0;font-size:13px;font-weight:700;line-height:1.35}.shift-status-card-working .shift-status-plan{background:#dbeafe8c;border-color:#bfdbfe}.shift-status-card-break .shift-status-plan{background:#fef3c794;border-color:#fde68a}.shift-status-card-away .shift-status-plan{background:#ffedd59e;border-color:#fed7aa}.shift-status-card-done .shift-status-plan{background:#f1f5f9b8;border-color:#cbd5e1}.shift-status-card-not-started .shift-status-plan{background:#ede9fe9e;border-color:#ddd6fe}.shift-status-card-no-plan .shift-status-plan{background:#f1f5f9b8;border-color:#e2e8f0}.shift-status-chip-working{color:#1d4ed8;background:#dbeafe}.shift-status-chip-break{color:#92400e;background:#fef3c7}.shift-status-chip-away{color:#9a3412;background:#ffedd5}.shift-status-chip-done{color:#334155;background:#e2e8f0}.shift-status-chip-not-started{color:#5b21b6;background:#ede9fe}.shift-status-chip-no-plan{color:#475569;background:#e2e8f0}.overview-table th:first-child{width:110px}.table-session-line{margin:2px 0;display:block}.session-actual-cell{gap:4px;display:grid}.session-actual-total{color:var(--text-h);font-size:14px}.session-actual-note,.session-actual-details{color:var(--muted);font-size:12px;line-height:1.4}.table-action-stack{gap:6px;min-width:160px;display:grid}.diff-plus strong{color:#1d4ed8}.diff-minus strong{color:#b91c1c}.payment-log-cell{width:320px;max-width:320px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.log-list,.timeline{gap:10px;max-height:360px;display:grid;overflow:auto}.log-list article,.timeline div{background:#f8fafc;border-radius:14px;gap:4px;padding:12px;display:grid}.log-list span,.timeline span{color:var(--muted);font-size:13px}@media (width<=960px){.topbar,.toolbar,.section-heading{flex-direction:column;align-items:stretch}.kpi-grid,.card-grid,.portal-menu-grid,.two-columns,.form-grid.compact,.form-grid.inline,.invoice-form,.invoice-totals-summary,.shift-day-row,.session-card-grid,.attendance-live{grid-template-columns:1fr}.session-actions{justify-content:flex-start}}@media (width<=520px){.shift-status-card-grid,.shift-status-details,.shift-status-plan{grid-template-columns:1fr}.shift-status-plan small{justify-self:start}.shift-status-detail-wide{grid-column:auto}}
