/* Server-backed Cron workspace. Shared brand tokens are in base.css. */
:root { --sidebar-width: 226px; }
.loading-screen { min-height: 80vh; display:grid; place-content:center; justify-items:center; gap:24px; color:var(--muted); }
.loading-screen img { width:130px; }
.brand-image { width:117px; height:auto; object-fit:contain; }
.brand { padding-top:3px; flex-direction:column; align-items:flex-start; gap:8px; }
.brand small { font-size:10px; letter-spacing:.8px; color:var(--muted); font-weight:600; }
/* The inherited mobile backdrop is at z-index 25; navigation must stay above it. */
.app-shell .sidebar { z-index:30; }
.sidebar .nav-icon { font-size:18px; }
.login-page { min-height:100vh; display:grid; grid-template-columns:minmax(320px,1fr) minmax(400px,1fr); }
.login-story { background:#104f42; color:white; padding:10vw 7vw; display:flex; flex-direction:column; justify-content:center; }
.login-story .brand-image { filter:brightness(0) invert(1); width:150px; margin-bottom:64px; }
.login-story h1 { font-size:clamp(30px,3.4vw,52px); letter-spacing:-1.6px; font-weight:600; max-width:550px; }
.login-story p { color:#c0dbd2; max-width:390px; line-height:1.9; }
.login-story small { color:#8fb7aa; margin-top:55px; }
.login-side { display:grid; align-content:center; padding:45px; background:var(--surface); }
.login-card { width:100%; max-width:390px; margin:auto; }
.login-card h2 { font-size:26px; letter-spacing:-.7px; margin-bottom:8px; }
.login-card > p { color:var(--muted); line-height:1.7; margin-bottom:30px; }
.login-card .field { margin-bottom:19px; }
.login-card .button.primary { width:100%; min-height:44px; margin-top:8px; }
.login-card .button.ghost { margin-top:12px; width:100%; }
.field input, .field select, .field textarea { width:100%; min-height:39px; border:1px solid var(--line-strong); border-radius:6px; padding:9px 11px; background:white; color:var(--ink); }
.field textarea { min-height:82px; resize:vertical; }
.field label { display:block; margin-bottom:7px; font-size:12px; font-weight:600; }
.field-hint { display:block; color:var(--muted); font-size:11px; line-height:1.6; margin-top:5px; }
.field.checkbox { display:flex; flex-direction:row; align-items:center; justify-content:flex-start; gap:9px; }
.field.checkbox input { width:16px; min-height:16px; height:16px; }
.field.checkbox label { margin:0; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:17px; }
.form-grid .full { grid-column:1/-1; }
.form-error { background:#fff1ef; border:1px solid #f2d1cc; padding:12px 14px; color:#983e35; border-radius:7px; margin:14px 0; line-height:1.6; font-size:12px; }
.form-error:empty { display:none; }
.notice { border:1px solid #d9e9e0; border-radius:8px; padding:14px 17px; background:#f0f7f3; color:#356751; font-size:12px; line-height:1.7; margin-bottom:20px; }
.notice.warning { background:var(--amber-soft); border-color:#edddbb; color:#846021; }
.notice p:last-child { margin-bottom:0; }
.notice ul { margin:7px 0 0; padding-left:20px; }
.muted { color:var(--muted); }
.small { font-size:11px; }
.mono { font-variant-numeric:tabular-nums; }
.toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:20px; }
.toolbar label { color:var(--muted); font-size:12px; }
.toolbar select, .toolbar input[type=month] { padding:8px 10px; min-height:37px; border:1px solid var(--line-strong); border-radius:7px; color:var(--ink); background:white; max-width:100%; }
.toolbar .push { margin-left:auto; }
.topbar input[type=month] { padding:7px 9px; border:1px solid var(--line-strong); border-radius:6px; font:inherit; max-width:175px; }
.topbar .user-name { font-size:12px; }
.page-subtitle { max-width:780px; }
.tabs { display:flex; gap:4px; flex-wrap:wrap; padding:4px; width:fit-content; background:#edf0f2; border-radius:8px; margin-bottom:22px; }
.tabs button { border:0; background:transparent; border-radius:6px; padding:8px 14px; color:var(--muted); font-size:12px; font-weight:600; }
.tabs button.active { color:var(--teal); background:white; box-shadow:0 1px 5px #17232d10; }
.stats-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; margin-bottom:24px; }
.stat-card { border:1px solid var(--line); border-radius:10px; background:white; padding:20px 22px; }
.stat-label { color:var(--muted); font-size:11px; font-weight:600; margin-bottom:10px; }
.stat-value { font-size:27px; letter-spacing:-.8px; font-weight:650; line-height:1.2; }
.stat-note { margin-top:8px; color:var(--muted); font-size:11px; }
.stat-card.emphasis { background:var(--teal); color:white; border-color:var(--teal); }
.stat-card.emphasis .stat-label, .stat-card.emphasis .stat-note { color:#cfebdf; }
.panel { overflow:hidden; margin-bottom:20px; background:white; border:1px solid var(--line); border-radius:10px; }
.panel-header { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:19px 22px; border-bottom:1px solid var(--line); }
.panel-title { margin:0; font-size:14px; font-weight:650; }
.panel-body { padding:22px; }
.panel-header .muted { margin-top:5px; }
.table-wrap { overflow:auto; }
table { border-collapse:collapse; width:100%; font-size:12px; }
th { background:#fafbfc; color:#7a858d; font-size:10px; letter-spacing:.5px; text-transform:uppercase; font-weight:650; text-align:left; padding:12px 17px; white-space:nowrap; }
td { padding:15px 17px; border-top:1px solid var(--line); vertical-align:middle; }
td:last-child { white-space:nowrap; }
td strong { font-weight:600; }
td small { display:block; color:var(--muted); margin-top:4px; line-height:1.5; }
.num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.badge { display:inline-flex; align-items:center; gap:5px; padding:4px 8px; border-radius:5px; font-size:10px; line-height:1.4; font-weight:600; white-space:nowrap; background:#eef0f3; color:#6e7782; }
.badge.green { background:var(--teal-soft); color:var(--teal); }
.badge.amber { background:var(--amber-soft); color:var(--amber); }
.badge.blue { background:var(--blue-soft); color:var(--blue); }
.badge.red { background:#fbece9; color:#a4483a; }
.empty-state { padding:45px 24px; text-align:center; }
.empty-state h3 { font-size:16px; margin:0 0 9px; }
.empty-state p { margin:0 auto; max-width:530px; color:var(--muted); font-size:12px; line-height:1.8; }
.empty-state .button { margin-top:17px; }
.split-grid { display:grid; grid-template-columns:minmax(280px,.8fr) minmax(420px,1.4fr); gap:22px; align-items:start; }
.quick-buttons { display:flex; gap:6px; margin-top:8px; }
.quick-buttons button { padding:5px 11px; border:1px solid var(--line); border-radius:5px; background:#f7f9fa; color:#66727a; font-size:11px; }
.quick-form .field { margin-bottom:17px; }
.quick-form .form-grid { gap:14px; }
.quick-form .button.primary { min-height:41px; }
.quick-form details { margin-bottom:18px; color:var(--muted); font-size:12px; }
.quick-form details[open] summary { margin-bottom:16px; }
.quick-form summary { cursor:pointer; }
.work-description { white-space:pre-wrap; max-width:580px; overflow-wrap:anywhere; }
.confirm-strip { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:17px 21px; margin-bottom:22px; border:1px solid #d9e9e1; border-radius:9px; background:#f2f8f5; }
.confirm-strip p { margin:4px 0 0; font-size:11px; color:var(--muted); }
.confirm-strip strong { font-size:12px; }
.grid-editor { min-width:1050px; }
.grid-editor td { padding:6px; vertical-align:top; }
.grid-editor th { padding:12px 8px; }
.grid-editor input, .grid-editor select, .grid-editor textarea { min-height:36px; padding:7px; border:1px solid #e0e6e9; border-radius:4px; width:100%; font:inherit; background:white; }
.grid-editor input:focus, .grid-editor select:focus, .grid-editor textarea:focus { outline:2px solid var(--teal); outline-offset:-1px; }
.grid-editor input:disabled, .grid-editor select:disabled, .grid-editor textarea:disabled { background:#f5f6f7; color:#89929a; }
.grid-editor textarea { resize:vertical; min-width:210px; min-height:36px; }
.grid-editor .date-cell { width:135px; }.grid-editor .project-cell { width:185px; }.grid-editor .task-cell { width:165px; }.grid-editor .hours-cell { width:76px; }.grid-editor .mode-cell { width:160px; }.grid-editor .draft-cell { width:65px; text-align:center; }
.grid-editor .draft-cell input { width:15px; min-height:15px; margin-top:10px; }
.grid-footer { display:flex; justify-content:space-between; align-items:center; gap:15px; padding:17px 20px; border-top:1px solid var(--line); }
.grid-footer small { color:var(--muted); font-size:11px; }
.review-card { margin-bottom:18px; }
.review-card .review-meta { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.review-card footer { padding:17px 22px; border-top:1px solid var(--line); display:flex; gap:9px; align-items:center; flex-wrap:wrap; }
.review-card footer input { flex:1; min-width:200px; border:1px solid var(--line-strong); padding:9px 11px; border-radius:6px; }
.review-card .review-note { padding:12px 22px; background:var(--amber-soft); font-size:12px; }
.group-report summary { display:flex; align-items:center; justify-content:space-between; padding:18px 22px; cursor:pointer; gap:18px; }
.group-report summary::marker { color:var(--teal); }
.group-report summary small { display:block; color:var(--muted); font-size:11px; margin-top:3px; }
.group-report + .group-report { border-top:1px solid var(--line); }
.invoice-totals { display:flex; justify-content:flex-end; gap:35px; padding:24px 20px; border-top:1px solid var(--line); }
.invoice-totals small { display:block; color:var(--muted); margin-bottom:5px; font-size:11px; }
.invoice-totals strong { font-size:18px; font-weight:600; }
.invoice-totals .grand strong { color:var(--teal); font-size:22px; }
.modal-backdrop { position:fixed; inset:0; background:#102b3970; display:flex; align-items:center; justify-content:center; padding:25px; z-index:60; backdrop-filter:blur(2px); }
.modal { width:min(650px,100%); max-height:90vh; overflow:auto; background:white; border-radius:12px; box-shadow:0 20px 100px #102b3940; }
.modal.wide { width:min(1100px,100%); }
.modal-header { display:flex; align-items:center; justify-content:space-between; padding:21px 24px; border-bottom:1px solid var(--line); }
.modal-header h2 { font-size:18px; margin:0; letter-spacing:-.35px; }
.modal-body { padding:24px; }
.modal-footer { display:flex; justify-content:flex-end; gap:9px; align-items:center; flex-wrap:wrap; padding:18px 24px; border-top:1px solid var(--line); }
.modal-open { overflow:hidden; }
.link-box { width:100%; padding:12px; border:1px solid var(--line-strong); border-radius:6px; font-size:12px; background:#f7f9fa; overflow-wrap:anywhere; resize:none; }
.role-options { display:flex; gap:18px; flex-wrap:wrap; }
.role-options label { display:flex; gap:7px; align-items:center; font-size:12px; }
.access-row { padding:15px 0; border-top:1px solid var(--line); }
.access-row header { display:flex; gap:12px; justify-content:space-between; align-items:center; }
.access-row header strong { font-size:12px; }
.access-row select { max-width:220px; min-height:35px; padding:7px; border:1px solid var(--line-strong); border-radius:5px; }
.access-projects { display:flex; gap:14px; flex-wrap:wrap; margin-top:12px; }
.access-projects label { font-size:12px; display:flex; align-items:center; gap:7px; }
.forecast-row { display:grid; grid-template-columns:135px 1fr 110px; align-items:center; gap:18px; padding:13px 22px; border-bottom:1px solid var(--line); font-size:12px; }
.forecast-bar { height:22px; background:#eef4f1; border-radius:4px; overflow:hidden; }
.forecast-bar span { display:block; height:100%; background:#56a48a; min-width:0; border-radius:4px; }
.toast { position:fixed; right:25px; bottom:25px; padding:13px 18px; background:#173b31; color:white; border-radius:8px; box-shadow:0 8px 30px #132e2530; font-size:12px; z-index:100; max-width:min(480px,90vw); }
.toast.error { background:#913d35; }
.muted-link { color:var(--muted); }.inline-actions { display:flex; gap:5px; justify-content:flex-end; }.inline-actions .button { padding:5px 9px; min-height:30px; font-size:11px; }
.catalog-intro { max-width:800px; color:var(--muted); font-size:12px; line-height:1.8; margin-bottom:20px; }
@media(max-width:1100px) { .stats-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .split-grid { grid-template-columns:1fr; }.quick-form .form-grid { grid-template-columns:1fr 1fr; } }
@media(max-width:760px) { .app-shell { display:block; }.app-shell .sidebar { position:fixed; left:0; top:0; width:226px; visibility:hidden; box-shadow:20px 0 80px #112d3525; }.app-shell.sidebar-open .sidebar { visibility:visible; }.topbar { padding:12px 17px; min-height:65px; gap:10px; }.mobile-nav-toggle, .icon-button.mobile-nav-toggle { display:inline-flex; }.topbar .user-name { display:none; }.topbar-actions { gap:8px; }.main { padding:23px 16px; }.page-heading { gap:15px; align-items:flex-start; flex-direction:column; }.page-title { font-size:25px; }.stats-grid { gap:10px; }.stat-card { padding:17px; }.stat-value { font-size:23px; }.form-grid { grid-template-columns:1fr; }.confirm-strip { align-items:flex-start; flex-direction:column; }.modal-backdrop { padding:12px; }.modal { max-height:94vh; }.modal-body { padding:19px; }.modal-header { padding:17px 19px; }.modal-footer { padding:16px 19px; }.login-page { display:block; }.login-story { padding:34px 28px; }.login-story .brand-image { width:110px; margin-bottom:23px; }.login-story h1 { font-size:30px; max-width:500px; }.login-story p,.login-story small { display:none; }.login-side { padding:35px 25px; }.invoice-totals { gap:18px; }.invoice-totals strong { font-size:15px; }.invoice-totals .grand strong { font-size:19px; }.forecast-row { grid-template-columns:100px 1fr 90px; padding:12px; gap:12px; }.access-row header { flex-direction:column; align-items:flex-start; } }

.user-access-settings { border:0; padding:0; margin:23px 0 0; min-width:0; }
.user-access-settings legend { font-size:14px; font-weight:600; margin-bottom:7px; }
.employee-access-hint { margin:20px 0 0; }
