:root{--bg: #f6f7f9;--surface: #ffffff;--surface-2: #eef0f4;--text: #1b1f27;--text-muted: #5d6573;--border: #d9dde4;--accent: #1f5fbf;--accent-contrast: #ffffff;--danger: #b42318;--warn: #a15c07;--ok: #18794e;--radius: 8px;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .1);--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #111318;--surface: #1a1d24;--surface-2: #232731;--text: #e7e9ee;--text-muted: #9aa3b2;--border: #2e3340;--accent: #6ea2ff;--accent-contrast: #0b1220;--danger: #f97066;--warn: #fdb022;--ok: #47cd89;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 3px rgba(0, 0, 0, .5);color-scheme:dark}}:root[data-theme=dark]{--bg: #111318;--surface: #1a1d24;--surface-2: #232731;--text: #e7e9ee;--text-muted: #9aa3b2;--border: #2e3340;--accent: #6ea2ff;--accent-contrast: #0b1220;--danger: #f97066;--warn: #fdb022;--ok: #47cd89;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 1px 3px rgba(0, 0, 0, .5);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0 0 .5em;line-height:1.25}h1{font-size:1.5rem}h2{font-size:1.15rem}a{color:var(--accent)}code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}img,svg{vertical-align:middle}.text-muted{color:var(--text-muted)}.app-shell{display:grid;grid-template-columns:220px minmax(0,1fr);grid-template-rows:56px minmax(0,1fr);grid-template-areas:"header header" "nav main";min-height:100vh}.app-header{grid-area:header;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--border)}.brand{font-weight:700;color:var(--text);text-decoration:none}.app-user{display:flex;align-items:center;gap:12px}.nav{grid-area:nav;background:var(--surface);border-right:1px solid var(--border);padding:12px 8px;overflow-y:auto}.nav-group+.nav-group{margin-top:12px}.nav-group-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:4px 8px}.nav ul{list-style:none;margin:0;padding:0}.nav a{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius);color:var(--text);text-decoration:none}.nav a:hover{background:var(--surface-2)}.nav a.active{background:var(--accent);color:var(--accent-contrast)}.main{grid-area:main;padding:24px;min-width:0}.public-shell{max-width:420px;margin:10vh auto;padding:0 16px}.page-loading{padding:24px;color:var(--text-muted)}@media (max-width: 760px){.app-shell{grid-template-columns:minmax(0,1fr);grid-template-rows:56px auto minmax(0,1fr);grid-template-areas:"header" "nav" "main"}.nav{border-right:0;border-bottom:1px solid var(--border)}.main{padding:16px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card+.card{margin-top:16px}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:8px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.table th{background:var(--surface-2);font-weight:600;font-size:.85rem}.table tr:last-child td{border-bottom:0}.table .row-link{cursor:pointer}.table .row-link:hover td{background:var(--surface-2)}.table-message{text-align:center;color:var(--text-muted);padding:24px}.form{display:grid;gap:12px}.form-row{display:grid;gap:4px}.form-row label{font-weight:600}.form-row input,.form-row select,.form-row textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;width:100%}.form-row input:focus,.form-row select:focus,.form-row textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.form-row.has-error input,.form-row.has-error select,.form-row.has-error textarea{border-color:var(--danger)}.field-error,.form-error{color:var(--danger)}.form-actions{display:flex;gap:8px;align-items:center}.btn{font:inherit;display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.btn-primary:hover{background:var(--accent);filter:brightness(1.08)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-link{font:inherit;background:none;border:0;padding:0 4px;color:var(--text-muted);cursor:pointer}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:grid;place-items:center;padding:16px;z-index:50}.modal{width:min(560px,100%);max-height:90vh;overflow:auto}.modal-header,.modal-footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.modal-footer{justify-content:flex-end;margin-top:16px}.toasts{position:fixed;right:16px;bottom:16px;display:grid;gap:8px;z-index:60}.toast{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow);max-width:420px}.toast-ok{border-left-color:var(--ok)}.toast-error{border-left-color:var(--danger)}.toast-ref{color:var(--text-muted)}.stub{border-style:dashed}.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:.78rem;font-weight:600;white-space:nowrap;background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border)}.badge-active,.badge-approved,.badge-accepted,.badge-hg-approved,.badge-client-approved,.badge-paid,.badge-hired,.badge-clear,.badge-pass,.badge-uploaded,.badge-done,.badge-resolved,.badge-completed,.badge-present,.badge-screening-complete,.badge-filled,.badge-open{color:var(--ok);border-color:currentColor}.badge-pending,.badge-pending-client,.badge-pending-hg,.badge-pending-start,.badge-proposed,.badge-submitted,.badge-invited,.badge-processing,.badge-scheduled,.badge-issued,.badge-on-hold,.badge-awaiting-client,.badge-awaiting-hg,.badge-half-day,.badge-flagged{color:var(--warn);border-color:currentColor}.badge-rejected,.badge-failed,.badge-fail,.badge-disabled,.badge-suspended,.badge-overdue,.badge-void,.badge-terminated,.badge-cancelled,.badge-withdrawn,.badge-absent{color:var(--danger);border-color:currentColor}.badge-billed{color:var(--accent);border-color:currentColor}
