:root{--color-primary: #0b3a5b;--color-primary-dark: #07263c;--color-primary-light: #154b72;--color-accent: #1f7a8c;--color-bg: #f5f7fa;--color-surface: #ffffff;--color-border: #d6dce4;--color-text: #1a2230;--color-text-muted: #5c6776;--color-rag-green: #2e7d32;--color-rag-amber: #ed8a0a;--color-rag-red: #c62828;--color-success: #2e7d32;--color-error: #c62828;--color-warning: #ed8a0a;--shadow-sm: 0 1px 2px rgba(15, 28, 49, .06);--shadow-md: 0 4px 12px rgba(15, 28, 49, .08);--shadow-lg: 0 8px 24px rgba(15, 28, 49, .12);--radius: 6px;--radius-lg: 10px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text)}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}button,.btn{font-family:inherit;font-size:14px;padding:8px 16px;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:background .15s,border-color .15s}button:hover,.btn:hover{background:var(--color-bg)}button.primary,.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}button.primary:hover,.btn-primary:hover{background:var(--color-primary-dark)}button.danger{border-color:var(--color-error);color:var(--color-error)}button.danger:hover{background:#fef2f2}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font-family:inherit;font-size:14px;padding:8px 12px;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #0b3a5b26}label{display:block;font-size:13px;font-weight:600;color:var(--color-text-muted);margin-bottom:4px}.form-row{margin-bottom:16px}.form-actions{display:flex;gap:8px;margin-top:20px}.app-shell{display:grid;grid-template-rows:56px 1fr;grid-template-columns:240px 1fr;grid-template-areas:"header header" "sidebar main";height:100vh}.app-header{grid-area:header;background:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 24px;box-shadow:var(--shadow-sm);z-index:10}.app-header .brand{display:flex;align-items:center;text-decoration:none}.app-header .brand:hover{text-decoration:none}.app-header .header-right{display:flex;align-items:center;gap:16px}.app-header .user-pill{font-size:13px;opacity:.9;display:flex;align-items:center;gap:12px}.user-menu{position:relative}.user-menu-trigger{display:flex;align-items:center;gap:6px;background:#ffffff14;border:1px solid rgba(255,255,255,.18);color:#fff;font-size:13px;font-family:inherit;padding:6px 12px;border-radius:999px;cursor:pointer;transition:background .15s,border-color .15s}.user-menu-trigger:hover{background:#ffffff29;border-color:#ffffff52}.user-menu-trigger:focus-visible{outline:2px solid #f4d03f;outline-offset:2px}.user-menu-caret{font-size:11px;opacity:.8;margin-left:2px}.user-menu-label{line-height:1}.user-menu-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:240px;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:6px;z-index:50;display:flex;flex-direction:column;gap:2px}.user-menu-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;background:transparent;border:none;text-align:left;font-size:13px;font-weight:500;padding:8px 12px;border-radius:var(--radius);color:var(--color-text);cursor:pointer}.user-menu-item:hover{background:var(--color-bg)}.user-menu-item:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.user-menu-hint{font-size:11px;font-weight:400;color:var(--color-text-muted);line-height:1.3}.bell-link{position:relative;color:#fff;display:flex;align-items:center;text-decoration:none}.bell-badge{position:absolute;top:-6px;right:-8px;background:var(--color-rag-red);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:999px;display:flex;align-items:center;justify-content:center;padding:0 4px}.nav-badge{display:inline-block;background:var(--color-rag-red);color:#fff;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:999px;text-align:center;line-height:18px;margin-left:6px}.app-header .stale-pill{background:var(--color-rag-amber);color:#fff;font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;cursor:help}.app-sidebar{grid-area:sidebar;background:var(--color-surface);border-right:1px solid var(--color-border);padding:16px 0;overflow-y:auto}.app-sidebar a{display:block;padding:10px 24px;color:var(--color-text);font-size:14px}.app-sidebar a.active{background:#0b3a5b14;color:var(--color-primary);font-weight:600;border-left:3px solid var(--color-primary);padding-left:21px}.app-main{grid-area:main;padding:32px;overflow-y:auto}.page-title{font-size:22px;font-weight:700;color:var(--color-primary);margin:0 0 24px}.view-as-banner{position:fixed;top:56px;left:0;right:0;z-index:9;display:flex;align-items:center;justify-content:space-between;padding:8px 24px;background:#f4d03f;color:#4a3000;font-size:13px;font-weight:600;border-bottom:2px solid #d4ac0d;box-shadow:0 2px 6px #00000014}.view-as-banner .view-as-timer{font-weight:400;opacity:.85;margin-left:8px;font-variant-numeric:tabular-nums}.view-as-banner .view-as-exit{background:#4a3000;color:#fff;border-color:#4a3000;font-size:12px;padding:4px 12px}.view-as-banner .view-as-exit:hover{background:#6a4500}body.has-view-as-banner .app-main{padding-top:56px}body.has-view-as-banner .app-main button.primary,body.has-view-as-banner .app-main button.danger,body.has-view-as-banner .app-main button[type=submit],body.has-view-as-banner .app-main input[type=submit],body.has-view-as-banner .app-main form button:not([type=button]){pointer-events:none;opacity:.4;cursor:not-allowed}.view-as-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1c3166;display:flex;align-items:center;justify-content:center;z-index:100}.view-as-modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:28px;width:100%;max-width:480px}.user-edit-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1c3166;display:flex;align-items:center;justify-content:center;z-index:100}.user-edit-modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:28px;width:100%;max-width:520px;max-height:calc(100vh - 64px);overflow-y:auto}.user-edit-modal-title{margin:0 0 20px;font-size:18px;font-weight:700;color:var(--color-primary)}.user-edit-modal-form{display:flex;flex-direction:column;gap:14px}.user-edit-modal-form .form-row{margin-bottom:0}.user-edit-modal-band-row label{margin-bottom:6px}.user-edit-modal-checkbox-row label{display:inline-flex;align-items:center;gap:8px;font-weight:500;color:var(--color-text);font-size:14px;margin:0}.user-edit-modal-checkbox-row input[type=checkbox]{width:auto}.user-edit-modal-na{font-size:13px;color:var(--color-text-muted);padding:8px 12px;background:var(--color-bg);border:1px dashed var(--color-border);border-radius:var(--radius)}.user-edit-modal-field-error{margin:4px 0 0;font-size:12px;color:var(--color-error)}.user-edit-modal-submit-error{padding:10px 14px;background:#fef2f2;border:1px solid var(--color-error);border-radius:var(--radius);color:var(--color-error);font-size:13px;font-weight:500}.user-edit-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}.login-screen,.loading-screen{display:flex;align-items:center;justify-content:center;height:100vh;flex-direction:column;gap:24px}.login-card{background:var(--color-surface);padding:48px;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);text-align:center;max-width:420px}.login-card h1{margin:0 0 4px;color:var(--color-primary);font-size:28px}.login-card .sub{color:var(--color-text-muted);margin:0 0 28px;font-size:14px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm);cursor:pointer;transition:box-shadow .15s,border-color .15s}.card:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary)}.card h3{margin:0 0 4px;font-size:16px;color:var(--color-text)}.card .ref{font-size:13px;color:var(--color-text-muted);margin-bottom:12px}.card .card-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--color-text-muted)}.card .card-meta span{display:flex;align-items:center;gap:4px}.rag-badge{display:inline-block;padding:3px 10px;border-radius:999px;color:#fff;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.summary-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:24px}.summary-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:16px;text-align:center}.summary-card .value{font-size:28px;font-weight:700;color:var(--color-primary)}.summary-card .label{font-size:12px;color:var(--color-text-muted);margin-top:4px}.sortable-table{width:100%;border-collapse:collapse;font-size:14px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.sortable-table th,.sortable-table td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--color-border)}.sortable-table th{background:#f0f3f8;color:var(--color-primary);font-weight:600;font-size:13px;white-space:nowrap;-webkit-user-select:none;user-select:none}.sortable-table .num{text-align:right;font-variant-numeric:tabular-nums}.sortable-table .empty-row{text-align:center;color:var(--color-text-muted);padding:24px}.sortable-table .clickable-row{cursor:pointer}.sortable-table .clickable-row:hover{background:#0b3a5b08}.sort-arrow{font-size:10px;opacity:.7}.tabs{display:flex;gap:0;margin-bottom:24px;border-bottom:2px solid var(--color-border)}.tab-btn{padding:10px 20px;border:none;background:none;font-size:14px;font-weight:500;color:var(--color-text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px}.tab-btn.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.tab-btn:hover{color:var(--color-primary)}.toast-container{position:fixed;top:70px;right:24px;z-index:100;display:flex;flex-direction:column;gap:8px;max-width:420px}.toast{padding:12px 20px;border-radius:var(--radius);font-size:14px;cursor:pointer;box-shadow:var(--shadow-md);animation:toastIn .2s ease-out}.toast-success{background:#e8f5e9;color:var(--color-success);border-left:4px solid var(--color-success)}.toast-error{background:#fef2f2;color:var(--color-error);border-left:4px solid var(--color-error)}.toast-warning{background:#fffbeb;color:#92400e;border-left:4px solid var(--color-warning)}.toast-info{background:#eff6ff;color:var(--color-primary);border-left:4px solid var(--color-primary)}@keyframes toastIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.charts-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;margin-top:24px}.chart-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px}.chart-card h3{margin:0 0 16px;font-size:14px;color:var(--color-primary)}.chart-card .recharts-responsive-container{max-width:100%;overflow:hidden}.admin-panel{max-width:900px}.admin-section{margin-bottom:32px}.admin-section h2{font-size:16px;color:var(--color-primary);margin:0 0 12px}.inline-form{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}.inline-form .form-row{margin-bottom:0;flex:1;min-width:140px}.labour-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:20px 24px;margin-bottom:28px}.labour-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.labour-section-title{margin:0;font-size:16px;font-weight:700;color:var(--color-primary);letter-spacing:.2px}.labour-section-blurb{font-size:12px;color:var(--color-text-muted);margin:0 0 16px;max-width:720px;line-height:1.5}.labour-collapsible-form{padding:14px 16px;margin-bottom:16px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius)}.labour-discipline-block{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);margin-bottom:14px;overflow:hidden}.labour-discipline-block--inactive{opacity:.62;background:var(--color-bg)}.labour-discipline-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-left:3px solid var(--color-primary)}.labour-discipline-block--inactive .labour-discipline-header{border-left-color:var(--color-text-muted)}.labour-discipline-block:not(:last-child) .labour-discipline-header{border-bottom:1px solid var(--color-border)}.labour-discipline-header-left{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}.labour-discipline-name{font-size:15px;font-weight:600;color:var(--color-primary);margin:0}.labour-code-chip{display:inline-block;padding:1px 6px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:11px;color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;white-space:nowrap}.labour-discipline-block--inactive .labour-code-chip{background:#0000000a}.labour-status-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase}.labour-status-pill--inactive{background:var(--color-text-muted);color:#fff}.labour-discipline-actions{display:flex;gap:6px;flex-shrink:0}.labour-discipline-actions button{font-size:12px;padding:4px 10px;display:inline-flex;align-items:center;gap:4px}.labour-scoped-form{padding:12px 16px;background:var(--color-bg);border-top:1px solid var(--color-border)}.labour-discipline-edit-row{display:flex;align-items:center;gap:8px;width:100%}.labour-discipline-edit-row input[type=text],.labour-discipline-edit-row input:not([type]){font-size:14px;padding:4px 8px;max-width:240px}.labour-discipline-edit-row input[type=number]{width:70px;font-size:13px;padding:4px 8px}.labour-band-list{list-style:none;margin:0;padding:0}.labour-band-row{display:grid;grid-template-columns:1fr auto auto auto;gap:16px;align-items:center;padding:10px 16px;border-top:1px solid var(--color-border);font-size:14px}.labour-band-row--inactive{opacity:.55}.labour-band-name{font-weight:500;color:var(--color-text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.labour-band-rate{font-variant-numeric:tabular-nums;color:var(--color-text);white-space:nowrap}.labour-band-rate--missing{display:inline-flex;align-items:center;gap:4px;background:#ed8a0a1a;color:var(--color-rag-amber);font-weight:600;font-size:12px;padding:3px 10px;border:1px solid rgba(237,138,10,.35);border-radius:999px;cursor:pointer}.labour-band-rate--missing:hover{background:#ed8a0a2e}.labour-band-status-dot{width:8px;height:8px;border-radius:50%;background:var(--color-rag-green);box-shadow:0 0 0 2px #2e7d3226}.labour-band-status-dot--inactive{background:var(--color-text-muted);box-shadow:0 0 0 2px #5c67761f}.labour-band-actions{display:flex;gap:4px;flex-shrink:0}.labour-band-actions button{font-size:12px;padding:3px 8px;display:inline-flex;align-items:center;gap:3px}.labour-band-row--editing{background:#0b3a5b0a;grid-template-columns:1fr 80px auto auto}.labour-band-row--editing input{font-size:13px;padding:4px 8px}.labour-discipline-collapsed-note{padding:10px 16px;font-size:12px;color:var(--color-text-muted);font-style:italic}.labour-empty-state{text-align:center;padding:36px 24px;border:2px dashed var(--color-border);border-radius:var(--radius);background:var(--color-bg)}.labour-empty-state h4{color:var(--color-primary);font-size:15px;margin:0 0 6px;font-weight:700}.labour-empty-state p{color:var(--color-text-muted);font-size:13px;margin:0 0 16px}.labour-cascade{display:flex;gap:12px;align-items:flex-start}.labour-cascade--stacked{flex-direction:column;align-items:stretch}.labour-cascade-field{flex:1;min-width:180px;display:flex;flex-direction:column}.labour-cascade-field label{margin-bottom:4px}.labour-cascade-field select:disabled{background:var(--color-bg);color:var(--color-text-muted)}.labour-cascade-hint{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--color-rag-amber);margin:4px 0 0}.labour-cascade-clear{margin-top:6px;font-size:12px;padding:3px 10px;align-self:flex-start;color:var(--color-primary);border-color:var(--color-primary)}.labour-cascade-clear:hover{background:#0b3a5b0f}.labour-rate-form{display:grid;grid-template-columns:2fr 140px 160px auto;gap:12px;align-items:flex-end}.labour-rate-form--with-user{grid-template-columns:1fr 2fr 140px 160px auto}.labour-rate-form .form-row{margin-bottom:0}@media(max-width:1024px){.labour-rate-form,.labour-rate-form--with-user{grid-template-columns:1fr}}@media(max-width:768px){.app-shell{grid-template-columns:1fr;grid-template-rows:56px auto 1fr;grid-template-areas:"header" "sidebar" "main"}.app-sidebar{border-right:none;border-bottom:1px solid var(--color-border);display:flex;overflow-x:auto;padding:0}.app-sidebar a{white-space:nowrap;padding:12px 16px}.app-sidebar a.active{border-left:none;border-bottom:3px solid var(--color-primary);padding-left:16px}.app-main{padding:16px}.card-grid{grid-template-columns:1fr}.summary-cards{grid-template-columns:repeat(2,1fr)}}
