:root{color-scheme:light;--background:#f4f6f8;--foreground:#111827;--muted:#5f6b7a;--border:#d8dee8;--border-strong:#c4ccd8;--panel:#ffffff;--panel-subtle:#f9fafb;--primary:#1f5e8c;--primary-strong:#16476b;--primary-soft:#e7f1f9;--accent:#7c5c16;--danger:#b42318;--success:#216e4e;--shadow:0 10px 30px rgba(17,24,39,0.07)}*{box-sizing:border-box}body,html{background:var(--background)}body{margin:0;color:var(--foreground);font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:1.5}a{color:inherit}button,input,select,textarea{font:inherit}.shell{min-height:100vh}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;display:grid;grid-template-columns:auto 1fr auto;grid-gap:22px;gap:22px;padding:14px 28px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--border);box-shadow:0 1px 0 rgba(17,24,39,.02);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.brand,.topbar{align-items:center}.brand{display:inline-flex;gap:10px;color:var(--foreground);font-weight:800;letter-spacing:0;text-decoration:none;white-space:nowrap}.brand small{display:block;margin-top:1px;color:var(--muted);font-size:11px;font-weight:700;line-height:1.1}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:8px;background:var(--primary);color:#ffffff;font-size:13px}.nav{display:flex;gap:4px;flex-wrap:wrap}.nav a{padding:8px 11px;border-radius:6px;color:var(--muted);font-weight:700;text-decoration:none}.nav a:hover,.nav a[aria-current=page]{background:var(--primary-soft);color:var(--primary-strong)}.session{display:flex;align-items:center;justify-content:flex-end;gap:10px;color:var(--muted);font-size:13px;white-space:nowrap}.main{max-width:1240px;margin:0 auto;padding:28px 24px 56px}.headline{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:22px}.headline h1{margin:0 0 6px;font-size:28px;line-height:1.2;letter-spacing:0}.headline p,.muted{margin:0;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:16px;gap:16px}.card,.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow)}.panel{min-width:0;padding:18px}.panel h2{margin:0 0 14px;font-size:17px;line-height:1.3;letter-spacing:0}.panel-heading-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-heading-row h2{margin:0}.import-result,.import-summary{margin-top:12px}.import-result{display:grid;grid-gap:10px;gap:10px}.import-result ul{display:grid;grid-gap:6px;gap:6px;margin:8px 0 0;padding-left:18px;color:#344054}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-6{grid-column:span 6}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.metric{display:flex;align-items:center;justify-content:space-between;gap:12px}.metric strong{display:block;margin-top:8px;font-size:28px}.tabular{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.notice{display:grid;grid-template-columns:minmax(220px,.5fr) 1fr;grid-gap:14px;gap:14px;margin-bottom:18px;padding:14px 16px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.notice.warning{border-color:#ead28c;background:#fff9e7}.notice strong{color:var(--accent)}.notice p{margin:4px 0 0;color:var(--muted)}.notice ul{display:grid;grid-gap:6px;gap:6px;margin:0;padding:0;list-style:none}.notice li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid rgba(124,92,22,.16);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.notice li:last-child{border-bottom:0}.table-scroll{width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:8px}.table{width:100%;min-width:640px;border-collapse:collapse;background:var(--panel)}.admin-table{min-width:1350px}.admin-table tbody,.admin-table tbody>tr,.admin-table tbody>tr>td,.admin-table thead{display:block}.admin-table thead .admin-grid-row{padding:0 11px;border-bottom:1px solid var(--border);background:var(--panel-subtle)}.admin-table thead .admin-grid-row>th{display:block;overflow:hidden;padding:10px 0;border-bottom:0;background:transparent;text-overflow:ellipsis}.admin-table tbody>tr{border-bottom:1px solid var(--border)}.admin-table tbody>tr:last-child{border-bottom:0}.admin-table tbody>tr>td{padding:10px 11px;border-bottom:0}.table td,.table th{padding:10px 11px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}.table tr:last-child td{border-bottom:0}.table th{background:var(--panel-subtle);color:#3f4a59;font-size:12px;font-weight:800;white-space:nowrap}.table td{color:#1f2937}.badge{display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.badge,.badge.status-draft{background:#eef2f6;color:#344054}.badge.status-submitted,.badge.warn{background:#fff4d6;color:var(--accent)}.badge.status-approved{background:#e7f6ee;color:var(--success)}.badge.danger,.badge.status-rejected{background:#fee4e2;color:var(--danger)}.actions,.row-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.toolbar{margin-bottom:12px}.button{min-height:36px;border:1px solid var(--primary);border-radius:6px;background:var(--primary);color:#ffffff;padding:8px 13px;font-weight:800;text-decoration:none;cursor:pointer}.button:hover{background:var(--primary-strong);border-color:var(--primary-strong)}.button:disabled{opacity:.6;cursor:not-allowed;transform:none}.button:active{transform:translateY(1px)}.button.secondary{border-color:var(--border-strong);background:#ffffff;color:#243041}.button.secondary:hover{background:#f1f4f8;border-color:#aeb8c6}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:13px;gap:13px}.field{display:grid;grid-gap:6px;gap:6px}.field label{color:#344054;font-size:13px;font-weight:800}.actions input,.field input,.field select,.field textarea,.row-form input,.row-form select{width:100%;min-height:36px;border:1px solid var(--border-strong);border-radius:6px;padding:8px 10px;background:#ffffff;color:var(--foreground)}.field textarea{resize:vertical}.actions input:focus,.field input:focus,.field select:focus,.field textarea:focus,.row-form input:focus,.row-form select:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(31,94,140,.18);outline:none}.readonly-value{min-height:38px;display:flex;align-items:center;border:1px solid var(--border);border-radius:6px;background:var(--panel-subtle);padding:8px 10px;color:#344054;font-weight:700}.row-form{gap:8px;align-items:center;min-width:max-content}.admin-grid-row{display:grid;grid-template-columns:var(--admin-grid-template)}.employee-admin-grid{--admin-grid-template:140px 110px 210px 130px 130px 130px 130px 110px 80px 80px}.project-admin-grid{--admin-grid-template:120px 190px 150px 220px 110px 80px 80px}.inline-action{margin-top:8px}.project-picker-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:8px;gap:8px;align-items:center}.field.full{grid-column:1/-1}.login-panel{max-width:420px;margin:80px auto;padding:24px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow)}.report-summary{margin-bottom:16px}.chart-panel{background:#fcfcfb}.report-svg{display:block;width:100%;height:auto;min-height:220px}.svg-label{fill:#52514e;font-size:12px;font-weight:700}.svg-value{fill:#0b0b0b;font-size:12px;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.svg-axis,.svg-legend{fill:#898781;font-size:11px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.empty-chart{display:grid;min-height:220px;place-items:center;margin:0;color:var(--muted)}.budget-table{min-width:760px}.budget-progress{width:100%;min-width:120px;height:12px;overflow:hidden;border-radius:999px;background:#eef2f6}.budget-progress span{display:block;height:100%;border-radius:inherit}.budget-progress-ok span{background:#008300}.budget-progress-warning span{background:#eda100}.budget-progress-over span{background:#e34948}.budget-progress-empty{color:var(--muted);white-space:nowrap}@media (max-width:920px){.topbar{grid-template-columns:1fr;align-items:flex-start;gap:12px}.nav{max-width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.nav a{flex:0 0 auto}.session{justify-content:flex-start;white-space:normal;flex-wrap:wrap}.span-12,.span-3,.span-4,.span-6,.span-8{grid-column:span 12}.row-form{min-width:0}}@media (max-width:640px){body{overflow-x:hidden}.main{padding:20px 14px 40px;max-width:100%}.topbar{padding:12px 14px}.brand,.session,.session .button,.session form{width:100%}.headline{align-items:flex-start;flex-direction:column}.headline h1{font-size:24px}.form-grid,.notice{grid-template-columns:1fr}.button,.field,.field input,.field select,.field textarea{width:100%}.actions,.filter-actions,.preset-row,.project-picker-row,.row-actions{width:100%;align-items:stretch}.project-picker-row{grid-template-columns:1fr}.actions>*,.filter-actions>*,.preset-row>*,.project-picker-row>*,.row-actions>*{flex:1 1 auto}.panel{padding:14px}.notification-item{align-items:stretch;flex-direction:column}.table-scroll{max-width:100%}.table td,.table th{padding:8px}.report-svg{max-width:100%;height:auto}.admin-table{min-width:1350px}}.filter-actions{display:flex;gap:10px;align-items:center}.preset-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.chip{padding:6px 12px;border-radius:999px;border:1px solid var(--border);color:var(--muted);font-weight:700;font-size:13px;text-decoration:none;background:var(--surface-1,#fff)}.chip:hover{background:var(--primary-soft);color:var(--primary-strong)}.chip-active{background:var(--primary);color:#fff;border-color:var(--primary)}.calendar-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}.calendar-heading h2{margin:0}.calendar-grid,.calendar-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:6px;gap:6px}.calendar-weekdays{margin-bottom:6px;color:var(--muted);font-size:12px;font-weight:800;text-align:center}.calendar-cell{min-height:128px;padding:10px;border:1px solid var(--border);border-radius:8px;background:#fff;overflow:hidden;position:relative}.calendar-cell.outside-month{background:var(--panel-subtle);color:var(--muted)}.calendar-cell-top{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:28px}.calendar-cell ul{display:grid;grid-gap:4px;gap:4px;margin:8px 0 0;padding:0;list-style:none}.calendar-cell li{display:flex;justify-content:space-between;gap:6px;color:#52514e;font-size:12px;white-space:nowrap}.worktype-svg{min-height:96px}.worktype-table{margin-top:12px;min-width:360px}@media (max-width:760px){.calendar-grid,.calendar-weekdays{grid-template-columns:1fr}.calendar-weekdays{display:none}.calendar-cell{min-height:96px}}.calendar-cell{padding:0}.calendar-cell.selected{border-color:var(--primary);background:var(--primary-soft)}.calendar-cell.copy-source{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}.calendar-cell.locked{background:#f1f2f4;border-color:#d7d9dd;color:#6c7077}.calendar-cell.locked .calendar-cell-link{cursor:not-allowed}.calendar-cell.locked .calendar-cell-link:hover{background:transparent}.calendar-cell.locked li{color:#6c7077}.calendar-cell-link{display:flex;flex-direction:column;gap:6px;width:100%;padding:8px;min-height:84px;text-align:left;text-decoration:none;color:inherit;border:0;border-radius:8px;background:transparent;cursor:pointer}.calendar-cell-link:hover{background:var(--primary-soft)}.calendar-cell-badges,.calendar-cell-date{display:inline-flex;align-items:center;gap:5px;min-width:0}.calendar-cell-badges{flex-wrap:wrap;justify-content:flex-end}.calendar-period-badge{background:#e5e7eb;color:#4b5563}.calendar-cell-add{margin-top:auto;font-size:11px;font-weight:700;color:var(--muted);opacity:0}.calendar-cell-link:hover .calendar-cell-add{opacity:1;color:var(--primary-strong)}.calendar-cell.locked .calendar-cell-add,.calendar-cell.locked .calendar-cell-link:hover .calendar-cell-add{opacity:0}.calendar-copy-button{position:absolute;right:8px;bottom:8px;z-index:1;padding:4px 7px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--primary-strong);font-size:11px;font-weight:800;cursor:pointer}.calendar-copy-button:hover{border-color:var(--primary);background:var(--primary-soft)}.calendar-edit-button{position:absolute;left:8px;bottom:8px;z-index:1;padding:4px 7px;border:1px solid var(--primary);border-radius:6px;background:var(--primary);color:#fff;font-size:11px;font-weight:800;cursor:pointer}.calendar-edit-button:hover{border-color:var(--primary-strong);background:var(--primary-strong)}.calendar-submit-button{position:absolute;right:8px;top:8px;z-index:1;padding:4px 7px;border:1px solid var(--primary);border-radius:6px;background:var(--primary);color:#fff;font-size:11px;font-weight:800;cursor:pointer}.calendar-submit-button:disabled{opacity:.65;cursor:wait}.calendar-copy-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px;padding:10px 12px;border:1px solid var(--primary);border-radius:8px;background:var(--primary-soft);color:var(--text);font-size:14px;font-weight:700}.calendar-copy-status{color:var(--muted);font-weight:600}.entry-edit-list{display:grid;grid-gap:14px;gap:14px}.entry-edit-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:10px;gap:10px;align-items:end;padding:12px 0;border-top:1px solid var(--border)}.entry-edit-row:first-child{border-top:0}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:rgba(17,24,39,.42)}.edit-popup{width:min(920px,100%);max-height:min(760px,calc(100vh - 40px));overflow:auto;padding:18px;border:1px solid var(--border);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.edit-popup-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.edit-popup-header h2{margin:0 0 4px;font-size:18px;line-height:1.3}.edit-popup-list{display:grid;grid-gap:12px;gap:12px}.edit-popup-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:12px;gap:12px;align-items:end;padding:12px 0;border-top:1px solid var(--border)}.edit-popup-row:first-child{border-top:0}.edit-popup-actions{display:flex;gap:8px;align-items:center}.edit-popup-error{display:block;margin-bottom:12px}@media (max-width:760px){.entry-edit-row{grid-template-columns:1fr}.edit-popup{max-height:calc(100vh - 28px);padding:14px}.edit-popup-actions,.edit-popup-header,.edit-popup-row{display:grid;grid-template-columns:1fr}}.calendar-cell.paste-pending{outline:2px solid var(--primary);outline-offset:-2px;background:var(--primary-soft)}.calendar-cell.paste-pending .calendar-cell-add{color:var(--primary-strong);opacity:1}.calendar-copy-count{font-weight:700;color:var(--primary-strong)}.session-user{color:var(--muted);text-decoration:none;font-size:13px}.session-user:hover{color:var(--primary-strong);text-decoration:underline}.notification-link{position:relative;display:inline-flex;align-items:center;gap:5px;min-height:32px;padding:6px 9px;border:1px solid var(--border);border-radius:6px;color:var(--muted);font-size:13px;font-weight:800;text-decoration:none}.notification-link:hover{border-color:var(--primary);color:var(--primary-strong);background:var(--primary-soft)}.notification-badge{display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:var(--danger);color:#ffffff;font-size:11px;line-height:1}.notification-list{display:grid;grid-gap:10px;gap:10px;margin:0;padding:0;list-style:none}.notification-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px;border:1px solid var(--border);border-radius:8px;background:#ffffff}.notification-item.unread{border-color:#f2cf7d;background:#fffaf0}.notification-main{display:grid;grid-gap:5px;gap:5px;min-width:0}.notification-title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.notification-main p{margin:0;color:#344054;line-height:1.45}.notification-main time{color:var(--muted);font-size:12px}.calendar-reject-reason{font-size:11px;color:var(--critical,#d03b3b);line-height:1.3;margin:2px 0 0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.reject-reason-text{font-size:12px;color:var(--critical,#d03b3b);margin-top:4px;max-width:220px}.demo-banner{background:var(--primary);color:#fff;text-align:center;padding:8px 14px;font-size:13px;font-weight:700}.demo-login{margin:14px 0;padding:14px;border:1px dashed var(--primary);border-radius:10px;background:var(--primary-soft)}.demo-login-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.demo-login-buttons form{margin:0}