
:root{
    --bg:#f4f7fb;
    --panel:#ffffff;
    --panel-soft:#f8fafc;
    --line:#d8e0ec;
    --line-strong:#c5d1e0;
    --text:#172033;
    --muted:#62708a;
    --primary:#335dff;
    --primary-strong:#2648c9;
    --success:#0f9d58;
    --success-bg:#e9f8ef;
    --warning:#c97a00;
    --warning-bg:#fff5e3;
    --danger:#c73a3a;
    --danger-bg:#fdeceb;
    --draft-bg:#eef2ff;
    --draft-text:#4356d8;
    --shadow:0 14px 40px rgba(18, 37, 63, .08);
    --radius:18px;
    --radius-sm:12px;
    --radius-xs:10px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font:15px/1.45 Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,p{margin:0}
code{padding:2px 6px;background:#eef2ff;border-radius:8px}
textarea,input,select,button{font:inherit}

.app-shell{display:grid;grid-template-columns:280px 1fr;min-height:100vh}
.sidebar{background:linear-gradient(180deg,#10192d,#1b2741);color:#eef3ff;padding:28px 22px;display:flex;flex-direction:column;gap:26px;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:center;gap:14px}
.brand-mark{width:46px;height:46px;border-radius:14px;background:linear-gradient(135deg,#335dff,#6b8cff);display:grid;place-items:center;color:#fff;font-weight:800;letter-spacing:.04em;box-shadow:0 12px 24px rgba(36,72,201,.35)}
.brand-title{font-size:1.08rem;font-weight:700}
.brand-subtitle{font-size:.9rem;color:#bec9e0}
.auth-brand .brand-subtitle{color:var(--muted)}

.nav-section{display:flex;flex-direction:column;gap:6px}
.nav-heading{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:#9aabd0;margin-bottom:6px}
.nav-link{padding:11px 14px;border-radius:12px;color:#dbe6ff;transition:.18s;background:transparent}
.nav-link:hover,.nav-link.active{background:rgba(255,255,255,.09);text-decoration:none}
.sidebar-card{padding:16px;border-radius:16px;background:rgba(255,255,255,.08);margin-top:auto}
.sidebar-user{font-weight:700;margin:6px 0}
.sidebar-muted,.tiny-label{font-size:.82rem;color:#9aa9c5}
.main-panel{padding:28px 32px 40px}
.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:24px}
.page-subtitle{color:var(--muted);margin-top:6px;max-width:70ch}
.topbar-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:12px;padding:11px 16px;font-weight:600;cursor:pointer;text-decoration:none;transition:.18s}
.btn:hover{text-decoration:none;transform:translateY(-1px)}
.btn-primary{background:var(--primary);color:#fff;box-shadow:0 10px 22px rgba(51,93,255,.22)}
.btn-primary:hover{background:var(--primary-strong)}
.btn-secondary{background:#eef3ff;color:#2e4db8}
.btn-secondary:hover{background:#e5ecff}
.btn-danger{background:var(--danger-bg);color:var(--danger)}
.btn-danger:hover{background:#fadfdc}
.btn-small{padding:7px 11px;border-radius:10px;font-size:.9rem}
.btn-block{width:100%}

.flash-stack{display:grid;gap:10px;margin-bottom:20px}
.flash{padding:13px 15px;border-radius:12px;border:1px solid transparent;font-weight:500}
.flash-success{background:var(--success-bg);border-color:#c8ebd6;color:#157347}
.flash-warning{background:var(--warning-bg);border-color:#f1d58b;color:#8d5e00}
.flash-danger{background:var(--danger-bg);border-color:#f6c8c3;color:#a93333}
.flash.compact{padding:10px 12px}

.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;overflow:hidden}
.card + .card{margin-top:18px}
.card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}
.card-subtitle{margin-top:6px;color:var(--muted)}
.accent-card{background:linear-gradient(180deg,#ffffff,#f7f9ff)}
.callout{margin-top:14px;background:#eef3ff;border:1px solid #d4ddff;padding:14px 16px;border-radius:14px;color:#2743a2}
.empty-note{padding:16px;background:var(--panel-soft);border:1px dashed var(--line-strong);border-radius:14px;color:var(--muted)}
.empty-cell{text-align:center;color:var(--muted);padding:28px 12px !important}

.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}
.stats-grid.three-up{grid-template-columns:repeat(3,minmax(0,1fr))}
.stats-grid.four-up{grid-template-columns:repeat(4,minmax(0,1fr))}
.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}
.stat-label{color:var(--muted);font-size:.92rem}
.stat-value{font-size:1.95rem;font-weight:800;margin:8px 0 6px}
.stat-value.small-text{font-size:1.15rem;line-height:1.35}
.stat-meta{font-size:.9rem;color:var(--muted)}

.split-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}
.split-grid.wider-right{grid-template-columns:1fr 1.15fr}
.split-grid.wider-left{grid-template-columns:1.05fr 1.35fr}
.action-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.action-card{display:block;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;min-height:160px}
.action-card:hover{text-decoration:none;border-color:#aab9d3}
.action-card h3{margin-bottom:8px;color:var(--text)}
.action-card p{color:var(--muted)}

.data-table{width:100%;border-collapse:separate;border-spacing:0}
.data-table th,.data-table td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.data-table thead th{font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;color:#6b7892;background:#f8fafc}
.data-table tr:last-child td{border-bottom:0}
.data-table tbody tr:hover td{background:#fbfcff}
.compact-table th,.compact-table td{padding:10px 12px}
.right-align{text-align:right}
.muted{color:var(--muted)}
.table-wrap{overflow:auto}

.badge{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;font-size:.82rem;font-weight:700}
.badge-draft{background:var(--draft-bg);color:var(--draft-text)}
.badge-submitted{background:var(--warning-bg);color:var(--warning)}
.badge-approved{background:var(--success-bg);color:var(--success)}
.badge-rejected{background:var(--danger-bg);color:var(--danger)}
.badge-locked{background:#edf0f5;color:#4d596c}
.badge-neutral{background:#f0f3f8;color:#536074}

form label{display:flex;flex-direction:column;gap:8px;color:#344057;font-weight:600}
input,select,textarea{width:100%;padding:12px 13px;border:1px solid var(--line-strong);border-radius:12px;background:#fff;color:var(--text);outline:none}
input[type=checkbox],input[type=radio]{width:auto;padding:0;border:none;background:none;border-radius:0}
.checkbox-group{display:flex;flex-direction:column;gap:6px;padding:4px 0}
.checkbox-item{display:flex;align-items:center;gap:8px;font-weight:400;color:var(--text)}
.checkbox-row{flex-direction:row;align-items:center;gap:8px;font-weight:400;color:var(--text)}
.checkbox-row input[type=checkbox]{flex:none;margin:0}
input:focus,select:focus,textarea:focus{border-color:#8fa3ff;box-shadow:0 0 0 4px rgba(51,93,255,.12)}
textarea{resize:vertical;min-height:100px}
.grid-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.grid-form .full-span{grid-column:1/-1}
.stacked-form{display:grid;gap:14px}
.filters-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;align-items:end}
.filters-grid.wide{grid-template-columns:repeat(6,minmax(0,1fr))}
.form-actions{display:flex;gap:10px;flex-wrap:wrap}
.form-actions.align-end{align-self:end}
.inline-check{flex-direction:row;align-items:center;font-weight:500}
.inline-check input{width:auto}
.button-row{display:flex;gap:10px;flex-wrap:wrap}
.stack-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-end}

.day-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.day-card{padding:14px;border:1px solid var(--line);border-radius:14px;background:#fbfcff}
.day-hours{font-size:1.2rem;font-weight:800;margin-top:6px}
.submission-box{margin-top:18px;padding:18px;border-radius:16px;background:#fbfcff;border:1px solid var(--line)}

.bar-list{display:grid;gap:16px}
.bar-row{display:grid;gap:8px}
.bar-topline{display:flex;justify-content:space-between;gap:12px;color:#2b3752}
.bar-track{height:10px;border-radius:999px;background:#edf1f7;overflow:hidden}
.bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#3b82f6,#60a5fa)}

.detail-block{padding:14px 0;border-top:1px solid var(--line)}
.detail-block:first-of-type{margin-top:18px}
.ordered-guidance{margin:14px 0 0 22px;padding:0;color:#31405a}
.ordered-guidance li{margin-bottom:8px}

.auth-shell{min-height:100vh;display:grid;place-items:center;padding:28px}
.auth-panel{width:min(100%,460px)}
.auth-form{padding:28px;margin-top:20px}
.auth-form h1{margin-bottom:8px}
.login-help{margin-top:16px;padding:14px;border-radius:14px;background:#f8fafc;border:1px solid var(--line);display:grid;gap:6px;color:#44506a;font-size:.94rem}
.auth-footer{margin-top:18px;text-align:center}
.auth-footer-note{font-size:.82rem;color:var(--muted);line-height:1.5;margin:0 0 8px}
.auth-footer-note a{color:var(--primary);text-decoration:none;font-weight:600}
.auth-footer-links{display:flex;justify-content:center;gap:8px;font-size:.82rem;color:var(--muted)}
.auth-footer-links a{color:var(--muted);text-decoration:none}
.auth-footer-links a:hover{color:var(--text);text-decoration:underline}

.tiny-label{text-transform:uppercase;letter-spacing:.05em}
.small-text{font-size:1.05rem !important}
.tight-list{margin:10px 0 0 18px;padding:0}
.tight-list li{margin-bottom:6px}
.import-summary{margin:8px 0 4px;padding-left:18px;line-height:1.7}
.import-errors{margin:8px 0;padding-left:18px;line-height:1.6;color:#b42318}
.code-block{background:#0f172a;color:#e2e8f0;padding:14px 16px;border-radius:10px;overflow:auto;font-size:.82rem;line-height:1.5;white-space:pre}
.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.pill-create{background:#dcfce7;color:#166534}
.pill-update{background:#dbeafe;color:#1e40af}

@media (max-width: 1220px){
    .stats-grid,.stats-grid.three-up,.stats-grid.four-up,.action-grid,.split-grid,.split-grid.wider-left,.split-grid.wider-right{grid-template-columns:1fr 1fr}
    .filters-grid,.filters-grid.wide{grid-template-columns:repeat(3,minmax(0,1fr))}
    .day-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}

@media (max-width: 920px){
    .app-shell{grid-template-columns:1fr}
    .sidebar{padding:22px}
    .main-panel{padding:22px}
    .topbar{flex-direction:column}
    .stats-grid,.stats-grid.three-up,.stats-grid.four-up,.action-grid,.split-grid,.split-grid.wider-left,.split-grid.wider-right,.filters-grid,.filters-grid.wide,.grid-form,.day-grid{grid-template-columns:1fr}
    .data-table thead{display:none}
    .data-table,.data-table tbody,.data-table tr,.data-table td{display:block;width:100%}
    .data-table tr{padding:10px 0;border-bottom:1px solid var(--line)}
    .data-table td{border:0;padding:7px 0}
    .data-table td::before{content:attr(data-label);display:block;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:3px}
    .right-align,.stack-actions{text-align:left;align-items:flex-start}
}


.quick-actions-card{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}
.progress-block{display:grid;gap:10px;margin-bottom:18px}
.progress-topline{display:flex;justify-content:space-between;gap:12px;color:#2b3752}
.progress-track{height:12px;border-radius:999px;background:#edf1f7;overflow:hidden}
.progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#335dff,#6b8cff)}
.validation-box{margin-top:18px;padding:16px;border-radius:16px;border:1px solid var(--line)}
.validation-box h3{margin-bottom:8px}
.validation-box-success{background:var(--success-bg);border-color:#c8ebd6}
.validation-box-danger{background:var(--danger-bg);border-color:#f6c8c3}
.chip-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.chip{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:#f1f5fb;color:#40506e;font-size:.85rem;font-weight:600}
.danger-text{color:var(--danger)}
.warning-text{color:var(--warning)}
.day-grid.seven-up{grid-template-columns:repeat(7,minmax(0,1fr))}
.day-card-empty{background:#fff7f7;border-color:#f0d2d2}
.day-card-heavy{background:#fff9ee;border-color:#f0dfb6}
.button-row-right{justify-content:flex-end}
.btn[disabled]{opacity:.65;cursor:not-allowed;transform:none;box-shadow:none}
.btn[disabled]:hover{text-decoration:none;background:inherit}

@media (max-width: 1220px){
    .day-grid.seven-up{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width: 920px){
    .quick-actions-card,.progress-topline{flex-direction:column}
    .day-grid.seven-up{grid-template-columns:1fr}
}


.workspace-layout{display:grid;grid-template-columns:300px 1fr;gap:18px;align-items:start}
.workspace-sidebar{position:sticky;top:18px;padding:18px}
.workspace-main{display:grid;gap:18px}
.compact-header{margin-bottom:10px}
.project-menu-list{display:grid;gap:10px}
.project-menu-item{display:block;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fbfcff;color:var(--text)}
.project-menu-item:hover{text-decoration:none;border-color:#9bb0ff;background:#f6f9ff}
.project-menu-item.active{border-color:#6d88ff;background:#eef3ff;box-shadow:0 0 0 1px rgba(51,93,255,.08) inset}
.project-menu-title{font-weight:700;margin-bottom:4px}
.project-menu-meta{font-size:.88rem;color:var(--muted)}
.person-list{display:grid;gap:10px}
.person-row{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fbfcff}
.person-row span{color:var(--muted);font-size:.92rem}
.multi-entry-grid{display:grid;grid-template-columns:150px 150px 110px 1fr 110px;gap:10px;align-items:start}
.multi-entry-grid.header-row{font-size:.8rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:700}
.multi-entry-grid textarea{min-height:56px}
.billable-box{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:12px;background:#fff;font-weight:600;min-height:46px}
.billable-box input[type=checkbox]{width:auto}
.compact-days .day-card{padding:12px}
@media (max-width: 1220px){.workspace-layout{grid-template-columns:1fr}.workspace-sidebar{position:static}.multi-entry-grid{grid-template-columns:1fr 1fr 1fr}.multi-entry-grid.header-row{display:none}.billable-box{grid-column:1/-1}}
@media (max-width: 920px){.multi-entry-grid{grid-template-columns:1fr}}

.align-start{align-items:start}
.project-hero-card{overflow:hidden}
.row-selected{background:#f6f9ff}
.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.28);display:flex;align-items:center;justify-content:center;padding:24px;z-index:50}
.modal-card{width:min(760px,100%);max-height:90vh;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:0 24px 80px rgba(15,23,42,.22)}
@media (max-width:920px){.modal-backdrop{padding:12px}.modal-card{padding:16px}}

/* Hide modals by default; show only when [data-open] is set */
[data-modal]{display:none}
[data-modal][data-open]{display:flex}
.modal-stacked{z-index:60;background:rgba(15,23,42,.42)}
.modal-large-backdrop{align-items:flex-start;padding:48px 24px}
.modal-card-wide{width:min(960px,100%)}
.modal-header{align-items:flex-start;border-bottom:1px solid var(--line);margin-bottom:16px;padding-bottom:14px}
.modal-close{appearance:none;border:0;background:transparent;font-size:1.5rem;line-height:1;width:32px;height:32px;border-radius:8px;color:var(--muted);cursor:pointer;font-weight:600}
.modal-close:hover{background:var(--panel-soft);color:var(--text)}
.modal-section{padding-top:6px}
.modal-section-title{font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 4px;font-weight:700}
.modal-section + label,.modal-section + .grid-form,.modal-section + .table-wrap{margin-top:4px}
.modal-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}
.modal-form .full-span{grid-column:1/-1}
.modal-form-tight{grid-template-columns:repeat(3,minmax(0,1fr))}
.modal-footer-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.modal-secondary-actions{display:flex;gap:8px;flex-wrap:wrap}
body.modal-open{overflow:hidden}
@media (max-width:720px){.modal-form,.modal-form-tight{grid-template-columns:1fr}.modal-large-backdrop{padding:12px}}

.workspace-layout-wide{grid-template-columns:320px 1fr}
.project-nav-card{padding-bottom:18px}
.project-filter-row{margin-bottom:12px}
.project-filter-row input{background:#f8fbff}
.project-menu-topline,.project-menu-foot,.entry-group-header,.entry-toolbar,.tab-strip,.project-mini-stats{display:flex;align-items:center;justify-content:space-between;gap:12px}
.project-menu-hours{font-weight:700;color:#2d4ec0}
.project-menu-foot{font-size:.83rem;color:var(--muted)}
.workspace-banner{border-style:solid;background:linear-gradient(180deg,#ffffff,#f6f9ff)}
.tab-strip-card{margin:-2px 0 2px}
.tab-strip{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:8px;box-shadow:var(--shadow);flex-wrap:wrap}
.tab-link{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:12px;font-weight:700;color:#44506a}
.tab-link:hover{text-decoration:none;background:#f6f8fc}
.tab-link.active{background:#eef3ff;color:#2d4ec0;box-shadow:inset 0 0 0 1px rgba(51,93,255,.12)}
.project-summary-grid{align-items:start}
.project-mini-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.mini-stat{padding:14px;border:1px solid var(--line);border-radius:14px;background:#fbfcff}
.mini-stat-value{font-size:1.3rem;font-weight:800;margin-top:8px}
.hero-stats{align-items:flex-end}
.hero-metric{font-weight:700;color:#4360bd}
.project-assigned-list .person-list{margin-top:10px}
.sticky-card{position:sticky;top:18px}
.review-meta-row{margin-top:6px}
.progress-block-tight{margin-bottom:0}
.summary-footer-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}
.summary-footer-row-wrap{margin-bottom:12px}
.summary-pill{display:inline-flex;align-items:center;gap:6px;padding:10px 14px;border-radius:999px;background:#eef3ff;color:#2d4ec0;font-weight:700}
.summary-pill.wide-pill{justify-content:space-between;width:100%}
.rate-summary-copy{margin-top:10px}
.entry-toolbar{padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#fbfcff}
.entry-row{margin-bottom:12px}
.entry-remove-btn{align-self:stretch}
.grid-editor-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:#fff}
.grid-editor{width:100%;border-collapse:collapse;font-size:.88rem}
.grid-editor thead th{background:var(--panel-soft);text-align:left;padding:9px 10px;font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1}
.grid-editor tbody tr{border-bottom:1px solid var(--line)}
.grid-editor tbody tr:last-child{border-bottom:0}
.grid-editor tbody tr:hover{background:#f8fafc}
.grid-editor td{padding:0;vertical-align:middle}
.grid-editor td.muted{padding:0 10px;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}
.grid-editor input[type="date"],.grid-editor input[type="number"],.grid-editor input[type="text"],.grid-editor select{width:100%;border:0;background:transparent;padding:10px 10px;border-radius:0;font:inherit;color:var(--text)}
.grid-editor input[type="date"]:focus,.grid-editor input[type="number"]:focus,.grid-editor input[type="text"]:focus,.grid-editor select:focus{outline:2px solid var(--primary);outline-offset:-2px;background:#fff;border-radius:0}
.grid-editor .col-date{width:140px}
.grid-editor .col-day{width:60px;text-align:center}
.grid-editor .col-work{width:130px}
.grid-editor .col-hours{width:80px}
.grid-editor .col-hours input{text-align:right;font-variant-numeric:tabular-nums}
.grid-editor .col-desc{min-width:240px}
.grid-editor .col-bill{width:80px;text-align:center}
.grid-editor .col-del{width:50px;text-align:center}
.grid-editor .check-box-cell{display:flex;justify-content:center;align-items:center;padding:10px;cursor:pointer}
.grid-editor .check-box-cell input{width:auto;padding:0;cursor:pointer}
.grid-editor .grid-delete{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer;font-weight:700;font-size:1.05rem;line-height:1}
.grid-editor .grid-delete:hover{background:var(--danger-bg);color:var(--danger)}
.grid-editor .grid-delete input{display:none}
.grid-editor .grid-delete:has(input:checked){background:var(--danger-bg);color:var(--danger)}
.grid-editor tr.grid-row-blank{background:#fcfdff}
.grid-editor tr.grid-row-blank input,.grid-editor tr.grid-row-blank select{color:var(--muted)}
.grid-editor tr.grid-row-blank input:focus,.grid-editor tr.grid-row-blank input:not(:placeholder-shown),.grid-editor tr.grid-row-blank select{color:var(--text)}
.grid-editor tr.grid-row-weekend{background:#f5f7fc}
.grid-editor tr.grid-row-weekend.grid-row-filled{background:#eef2fa}
.grid-editor tr.grid-row-weekend td.col-day{color:#9aa9c5;font-weight:600}
.grid-editor tr.row-marked-delete{background:#fdeceb;text-decoration:line-through;color:var(--muted)}
.grid-editor tr[data-row-state="saving"]{background:#fbf7e3}
.grid-editor tr[data-row-state="saved"]{animation:row-flash-saved .8s ease}
.grid-editor tr[data-row-state="error"]{background:#fdeceb}
@keyframes row-flash-saved{0%{background:#dcfce7}100%{background:transparent}}
.grid-editor .cell-with-status{display:flex;align-items:center;gap:6px}
.grid-editor .cell-with-status input{flex:1;min-width:0}
.row-status{width:8px;height:8px;border-radius:50%;background:transparent;flex:0 0 auto;margin-right:6px;transition:.2s}
tr[data-row-state="saving"] .row-status{background:#ca8a04;box-shadow:0 0 0 3px #fef3c7}
tr[data-row-state="saved"] .row-status{background:#16a34a}
tr[data-row-state="error"] .row-status{background:#dc2626;box-shadow:0 0 0 3px #fee2e2}
.row-error{display:none;font-size:.78rem;color:#a93333;padding:4px 10px 0}
tr[data-row-state="error"] .row-error{display:block}
.grid-editor-actions{display:flex;align-items:center;gap:12px}
.save-status{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--panel-soft);border:1px solid var(--line);font-size:.8rem;font-weight:600;color:var(--muted);transition:.2s}
.save-status-dot{width:8px;height:8px;border-radius:50%;background:#16a34a}
.save-status-idle{color:#157347;background:#e9f8ef;border-color:#c8ebd6}
.save-status-saving{color:#8d5e00;background:#fff5e3;border-color:#f1d58b}
.save-status-saving .save-status-dot{background:#ca8a04;animation:pulse-dot 1s ease-in-out infinite}
.save-status-error{color:#fff;background:#dc2626;border-color:#dc2626;padding:8px 14px;font-weight:700;font-size:.85rem;animation:save-error-pulse 1.4s ease-in-out infinite}
.save-status-error .save-status-dot{background:#fff}
@keyframes save-error-pulse{0%,100%{box-shadow:0 0 0 0 rgba(220,38,38,.6)}50%{box-shadow:0 0 0 6px rgba(220,38,38,0)}}
@keyframes pulse-dot{0%,100%{opacity:1}50%{opacity:.4}}
.grid-editor-readonly td{padding:10px}
.grid-editor-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;margin-top:14px}
.grid-editor-totals{display:flex;gap:18px;color:var(--muted);font-size:.9rem}
.grid-editor-totals strong{color:var(--text);font-variant-numeric:tabular-nums}
.grid-editor-card{width:100%}
/* Per-project color affordances */
.project-menu-item{position:relative;padding-left:18px}
.project-menu-item::before{content:'';position:absolute;left:8px;top:14px;bottom:14px;width:4px;border-radius:2px;background:var(--project-color,var(--line-strong));transition:.15s}
.project-menu-item.active::before{left:6px;width:6px}
.project-hero-card{border-left:4px solid var(--project-color,var(--primary))}
.swatch-cell{width:18px;padding-right:0!important}
.project-swatch-dot{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:middle}
.color-picker-row{display:flex;align-items:center;gap:10px}
.color-picker-row input[type="color"]{width:48px;height:36px;padding:2px;border:1px solid var(--line);border-radius:8px;cursor:pointer;background:#fff}

/* Zero-hour summary rows (Reports) */
tr.row-zero-hours{opacity:.5}
tr.row-zero-hours:hover{opacity:1}
tr.row-zero-hours strong{font-weight:500}

/* Employee dashboard */
.muted-small{font-weight:500;color:var(--muted);font-size:.8rem}
.dashboard-progress{margin-top:14px}
.dashboard-project-bars{display:flex;flex-direction:column;gap:14px}
.dashboard-project-bar{display:block;padding:10px 12px;border:1px solid var(--line);border-radius:12px;color:var(--text);text-decoration:none;transition:.15s;border-left:3px solid var(--project-color,var(--primary))}
.dashboard-project-bar:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,23,42,.08);text-decoration:none;border-color:var(--project-color,var(--primary))}
.dashboard-project-bar-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:.92rem}
.dashboard-project-bar-hours{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums}
.dashboard-project-bar-track{height:8px;background:var(--panel-soft);border-radius:4px;overflow:hidden}
.dashboard-project-bar-fill{height:100%;border-radius:4px;transition:.25s}
.dashboard-project-bar-meta{font-size:.78rem;color:var(--muted);margin-top:5px}

.assigned-list{display:flex;flex-direction:column;gap:10px}
.assigned-item{padding:10px 12px;border:1px solid var(--line);border-radius:12px;border-left:3px solid var(--project-color,var(--primary));background:#fbfcff}
.assigned-item-head{display:flex;align-items:center;gap:10px}
.assigned-item-meta{font-size:.85rem;margin-top:4px}
.assigned-item-window{font-size:.78rem;margin-top:2px}

/* Reports page extras */
.date-presets{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:8px;border-top:1px solid var(--line);margin-top:6px}
.date-presets .muted{font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;font-weight:600}
.spotlight-card{border-left:4px solid var(--project-color,var(--primary));margin-top:18px}
.spotlight-grid{margin-top:14px}
.work-type-bars{display:flex;flex-direction:column;gap:8px;padding:4px 2px}
.work-type-bar-row{display:grid;grid-template-columns:140px 1fr 70px;gap:10px;align-items:center;font-size:.88rem}
.work-type-bar-label{font-weight:600;color:var(--text)}
.work-type-bar-track{height:10px;background:var(--panel-soft);border-radius:5px;overflow:hidden}
.work-type-bar-fill{height:100%;background:linear-gradient(90deg,#7c97ff,#3a5ed8);border-radius:5px;transition:.25s}
.work-type-bar-value{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:var(--muted)}
@media (max-width:720px){.work-type-bar-row{grid-template-columns:1fr 60px;gap:6px}.work-type-bar-track{grid-column:1/-1}}

/* People card grid (Assignments tab) */
.people-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.person-card{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff;display:flex;flex-direction:column;gap:12px;transition:.15s}
.person-card:hover{border-color:var(--primary-strong);box-shadow:0 6px 18px rgba(15,23,42,.08)}
.person-card-head{display:flex;align-items:center;gap:12px}
.person-avatar{flex:0 0 auto;width:40px;height:40px;border-radius:50%;background:var(--primary);color:#fff;font-weight:700;font-size:1rem;text-transform:uppercase;display:flex;align-items:center;justify-content:center}
.person-avatar-inline{width:24px;height:24px;font-size:.78rem;display:inline-flex;vertical-align:middle;margin-right:6px}
.person-card-id{flex:1;min-width:0}
.person-card-name{font-weight:700;color:var(--text)}
.person-card-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:.88rem}
.person-card-grid .full-span{grid-column:1/-1}
.person-card-grid .tiny-label{margin-bottom:2px}
.person-card-actions{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:10px;margin-top:auto}
.person-card-actions form{display:contents}

/* Manage Assignments modal — list-first design */
.assignment-people-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin:8px 0 18px}
.assignment-people-grid .person-card{padding:12px;background:#fbfcff}
.assignment-people-grid .person-card-grid{font-size:.85rem}
.assignment-people-grid .person-card-actions{padding-top:8px;border-top:1px solid var(--line);margin-top:6px;flex-wrap:wrap}
.person-card-editing{border-color:var(--primary);box-shadow:0 0 0 2px rgba(51,93,255,.18);background:#f3f6ff}
.chip-editing{background:#fff5e3;color:#8d5e00;padding:3px 9px;border-radius:999px;font-size:.74rem;font-weight:700;letter-spacing:.02em}
.assignment-empty{grid-column:1/-1}
.assignment-form-card{padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:#f8fafc;margin-top:6px}
.assignment-form-card.assignment-form-editing{border-color:var(--primary);background:#f3f6ff;box-shadow:0 0 0 1px rgba(51,93,255,.12)}
.assignment-form-card .modal-section{padding-top:0;margin-bottom:6px}
.assignment-form-card .new-user-fields{margin-top:4px}

/* Rate modal: new-user fields wrapper */
.new-user-fields{padding:12px;background:#f8fafc;border:1px dashed var(--line-strong);border-radius:12px;margin-top:6px}
.new-user-fields[hidden]{display:none}
.new-user-fields .modal-form{margin-top:8px}
.new-user-fields .modal-section{padding-top:0}

/* Activity tab: pending approvals banner */
.pending-banner-card{background:linear-gradient(180deg,#fff7e3,#fff)}
.pending-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.pending-tile{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--text);transition:.15s}
.pending-tile:hover{border-color:var(--primary);box-shadow:0 4px 14px rgba(15,23,42,.08);text-decoration:none;transform:translateY(-1px)}
.pending-tile-head{display:flex;align-items:center;gap:10px}
.pending-tile-name{font-weight:700}
.pending-tile-meta{font-size:.85rem;color:var(--muted)}
.pending-tile-meta strong{color:var(--text)}

/* Activity feed */
.activity-feed{display:flex;flex-direction:column}
.activity-row{display:grid;grid-template-columns:130px 1fr auto;gap:14px;padding:12px 4px;border-bottom:1px solid var(--line);align-items:center}
.activity-row:last-child{border-bottom:0}
.activity-row-date{display:flex;flex-direction:column;font-size:.85rem}
.activity-row-date strong{color:var(--text);font-variant-numeric:tabular-nums}
.activity-row-date .muted{font-size:.75rem}
.activity-row-main{min-width:0}
.activity-row-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.activity-row-desc{color:var(--muted);font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.activity-row-hours{font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);font-size:1rem}
.chip-soft{background:#eef3ff;color:#2648c9;padding:3px 9px;border-radius:999px;font-size:.74rem;font-weight:600}
@media (max-width:720px){.activity-row{grid-template-columns:1fr;gap:6px}.activity-row-hours{justify-self:end}}

/* Monthly trend bars */
.trend-chart{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;align-items:end;height:160px;padding:6px 4px}
.trend-chart-wide{height:200px;gap:14px}
.trend-block-grid{margin-top:6px}
.trend-block-grid .work-type-list{margin-top:6px}
@media (max-width:920px){.trend-chart-wide{height:160px;gap:8px}}
.trend-bar-wrap{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;height:100%}
.trend-bar-value{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums}
.trend-bar{flex:1;display:flex;align-items:flex-end;width:100%;background:linear-gradient(180deg,transparent,#f4f7fb);border-radius:6px}
.trend-bar-fill{width:100%;background:linear-gradient(180deg,#7c97ff,#3a5ed8);border-radius:6px;height:var(--pct);min-height:2px;transition:.25s}
.trend-bar-fill.is-current{background:linear-gradient(180deg,#22c55e,#16a34a)}
.trend-bar-label{font-size:.74rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.trend-bar-label.is-current{color:#16a34a}
.work-type-list{display:flex;flex-direction:column;gap:6px;font-size:.88rem}
.work-type-row{display:flex;justify-content:space-between;padding:6px 8px;border-radius:8px;background:var(--panel-soft)}
.glance-card{margin-top:18px}
.glance-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px;align-items:start}
.glance-grid .tiny-label{margin-bottom:8px}
.glance-grid .data-table thead th{background:transparent;border-bottom:1px solid var(--line);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:8px 10px}
.glance-grid .data-table tbody td{padding:10px;border-bottom:1px solid var(--line);font-size:.9rem}
.glance-grid .data-table tfoot th{padding:10px;background:var(--panel-soft);font-weight:700;font-size:.9rem}
.glance-grid .right-align{text-align:right;font-variant-numeric:tabular-nums}
.cal-legend-divider{display:inline-block;width:1px;height:14px;background:var(--line);margin:0 4px}
.cal-legend-swatch-empty{background:#fff5f3;border:1px solid #f4d2cd}
@media (max-width:1100px){.glance-grid{grid-template-columns:1fr}}
.submit-strip-card,.admin-strip-card{margin-top:14px;padding:16px 18px}
.submit-strip,.admin-strip{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}
.submit-strip-meta,.admin-strip-meta{flex:1 1 280px;min-width:0}
.submit-strip-title,.admin-strip-title{font-weight:700;font-size:1rem;color:var(--text)}
.submit-strip-warn{margin-top:4px;color:#a93333;font-size:.88rem}
.submit-strip-ok{margin-top:4px;color:#157347;font-size:.88rem}
.admin-strip-sub{margin-top:4px;color:var(--muted);font-size:.88rem;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.admin-strip-note{margin-top:6px;color:var(--muted);font-size:.85rem}
.admin-strip-note strong{color:var(--text)}
.submit-strip-form,.admin-strip-form{display:flex;gap:10px;align-items:center;flex:1 1 360px;flex-wrap:wrap}
.submit-strip-form input[type="text"],.admin-strip-form input[type="text"]{flex:1 1 220px;min-width:200px;padding:11px 14px;border:1px solid var(--line);border-radius:12px;font:inherit;color:var(--text);background:#fff}
.submit-strip-form input[type="text"]:focus,.admin-strip-form input[type="text"]:focus{outline:2px solid var(--primary);outline-offset:0;border-color:transparent}
.admin-strip-form .button-row{flex-wrap:wrap;gap:8px}
@media (max-width:920px){.submit-strip,.admin-strip{flex-direction:column;align-items:stretch}.submit-strip-form,.admin-strip-form{flex-direction:column;align-items:stretch}}
.cal-heatmap{display:flex;flex-direction:column;gap:5px}
.cal-heatmap-headers{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:0 2px 4px}
.cal-heatmap-headers div{text-align:center}
.cal-heatmap-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.cal-cell{aspect-ratio:1/1;border-radius:10px;padding:6px 7px 5px;display:flex;flex-direction:column;justify-content:space-between;font-size:.72rem;background:#f4f7fb;border:1px solid transparent;color:var(--muted);transition:transform .12s ease,box-shadow .12s ease;min-height:44px;position:relative}
.cal-cell:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(18,37,63,.08);z-index:2}
.cal-num{font-weight:700;color:var(--text);font-size:.78rem;line-height:1}
.cal-hours{font-weight:600;font-size:.72rem;text-align:right}
.cal-out{opacity:.28}.cal-out .cal-num{color:var(--muted)}
.cal-weekend{background:#f7f9fc}
.cal-empty-weekday{background:#fff5f3;border-color:#f4d2cd}.cal-empty-weekday .cal-num{color:#a93333}
.cal-h1{background:#e1eaff}.cal-h1 .cal-num{color:#1e3580}.cal-h1 .cal-hours{color:#2648c9}
.cal-h2{background:#bdcfff}.cal-h2 .cal-num{color:#1e3580}.cal-h2 .cal-hours{color:#1e3580}
.cal-h3{background:#7c97ff;color:#fff}.cal-h3 .cal-num{color:#fff}.cal-h3 .cal-hours{color:#fff}
.cal-h4{background:linear-gradient(135deg,#3a5ed8,#2648c9);color:#fff}.cal-h4 .cal-num{color:#fff}.cal-h4 .cal-hours{color:#fff}
.cal-today{outline:2px solid var(--primary);outline-offset:0}
.cal-heatmap-projects .cal-cell{aspect-ratio:auto;min-height:74px;padding:5px;display:flex;flex-direction:column;gap:3px;background:#f9fbfd;border:1px solid transparent}
.cal-heatmap-projects .cal-cell.cal-out{background:transparent;border-color:transparent}
.cal-heatmap-projects .cal-cell.cal-weekend{background:#f5f7fc}
.cal-heatmap-projects .cal-cell.cal-empty-weekday{background:#fff5f3;border-color:#f4d2cd}
.cal-cell-head{display:flex;justify-content:space-between;align-items:baseline;gap:4px;font-size:.74rem;line-height:1}
.cal-cell-head .cal-num{font-weight:700;color:var(--text)}
.cal-cell-head .cal-hours{font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.cal-project-stack{display:flex;flex-direction:column;gap:2px;flex:1;min-height:0}
.cal-project-chip{display:flex;justify-content:space-between;align-items:center;gap:4px;padding:2px 5px;border-radius:4px;color:#fff;font-size:.62rem;font-weight:700;line-height:1.2;letter-spacing:.02em;overflow:hidden;white-space:nowrap}
.cal-project-chip-code{opacity:.85}
.cal-project-chip-hours{font-variant-numeric:tabular-nums}
.project-legend{flex-wrap:wrap;gap:6px 12px}
.project-legend-swatch{width:12px;height:12px;border-radius:3px;display:inline-block;vertical-align:middle;margin-right:4px}
@media (max-width:1100px){.cal-heatmap-projects .cal-cell{min-height:64px}}
.cal-legend{display:flex;align-items:center;gap:6px;font-size:.7rem;color:var(--muted);margin-top:8px}
.cal-legend-swatch{width:14px;height:14px;border-radius:4px;display:inline-block}
.cal-legend-swatch.s0{background:#f4f7fb}
.cal-legend-swatch.s1{background:#e1eaff}
.cal-legend-swatch.s2{background:#bdcfff}
.cal-legend-swatch.s3{background:#7c97ff}
.cal-legend-swatch.s4{background:linear-gradient(135deg,#3a5ed8,#2648c9)}
@media (max-width:680px){.cal-cell{min-height:36px;font-size:.66rem;padding:4px 5px 3px}.cal-num{font-size:.72rem}}

.month-pulse{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:12px;background:var(--panel-soft);border:1px solid var(--line)}
.month-pulse-line{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:.85rem}
.month-pulse-line strong{color:var(--text)}
.month-pulse-bar{height:6px;border-radius:3px;background:#e3e9f4;overflow:hidden}
.month-pulse-bar-fill{height:100%;background:linear-gradient(90deg,#5d80ff,#2648c9);border-radius:3px;transition:width .25s ease}
.month-pulse-meta{font-size:.78rem;color:var(--muted)}
.month-pulse-meta .warn{color:#a93333;font-weight:600}

.project-stat-strip{display:flex;flex-wrap:wrap;gap:18px;padding:14px 16px;border-radius:14px;background:linear-gradient(180deg,#fbfcff,#f4f7fb);border:1px solid var(--line);margin-top:14px}
.project-stat{display:flex;flex-direction:column;gap:2px;min-width:110px}
.project-stat .stat-num{font-weight:700;font-size:1.15rem;color:var(--text);line-height:1}
.project-stat .stat-key{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.project-stat .stat-sub{font-size:.78rem;color:var(--muted)}
.project-stat-divider{width:1px;background:var(--line);margin:4px 0}

.month-nav{font-variant-numeric:tabular-nums}
.month-nav-arrow{font-weight:700;color:var(--primary)}
.month-picker-form{display:inline-flex;align-items:center}
.month-picker-form input[type="month"]{padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;font:inherit;color:var(--text);min-width:160px;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer}
.month-picker-form input[type="month"]:focus,.month-picker-form input[type="month"]:hover{outline:2px solid var(--primary);outline-offset:0;border-color:transparent}

.user-switcher{position:relative}
.user-switcher>summary{list-style:none;cursor:pointer}
.user-switcher>summary::-webkit-details-marker{display:none}
.user-switcher-menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);min-width:280px;padding:8px;z-index:30;display:flex;flex-direction:column;gap:2px}
.user-switcher-heading{padding:10px 12px;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.user-switcher-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;border:0;border-radius:10px;background:transparent;cursor:pointer;text-align:left;color:var(--text);font:inherit;width:100%}
.user-switcher-item:hover{background:#eef3ff}
.user-switcher-item span{font-size:.82rem;color:var(--muted)}
.user-switcher-item.is-current{background:#eef3ff;color:var(--primary-strong)}
.quick-login-card{margin-top:18px}
.quick-login-title{margin-bottom:6px}
.quick-login-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:14px}
.quick-login-btn{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;text-align:left}
.quick-login-meta{font-size:.85rem;color:var(--muted);font-weight:500}
.year-group{margin-top:18px}
.year-group-title{display:flex;align-items:center;gap:14px;margin-bottom:14px;font-size:1.05rem;font-weight:700;color:var(--text)}
.year-group-title small{color:var(--muted);font-weight:500;font-size:.85rem}
.month-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.month-tile{display:flex;flex-direction:column;gap:6px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fbfcff;color:var(--text);transition:.15s}
.month-tile:hover{border-color:var(--primary);text-decoration:none;transform:translateY(-1px)}
.month-tile-name{font-weight:700}
.month-tile-meta{font-size:.85rem;color:var(--muted)}
.month-tile-empty{background:var(--panel-soft);color:var(--muted);border-style:dashed;cursor:default}
.month-tile-empty:hover{transform:none;border-color:var(--line)}
.day-grid.month-cells{grid-template-columns:repeat(7,minmax(0,1fr))}
.day-grid.month-cells .day-card{padding:10px;font-size:.85rem}
@media (max-width:1100px){.month-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:720px){.month-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.day-grid.month-cells{grid-template-columns:repeat(4,minmax(0,1fr))}}
.entry-group-spaced{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}
.chip-warning{background:#fff5e3;color:#8d5e00}
.table-wrap + .summary-footer-row{margin-top:16px}
.modal-card .grid-form textarea{min-height:110px}
@media (max-width:1220px){
    .workspace-layout-wide{grid-template-columns:1fr}
    .project-mini-stats{grid-template-columns:1fr 1fr}
}
@media (max-width:920px){
    .project-menu-topline,.project-menu-foot,.entry-toolbar,.entry-group-header{flex-direction:column;align-items:flex-start}
    .tab-strip{display:grid;grid-template-columns:1fr 1fr}
    .project-mini-stats{grid-template-columns:1fr}
    .sticky-card{position:static}
}

/* ============== Enterprise project workspace ============== */
.hero-identity{display:flex;gap:16px;align-items:flex-start}
.project-glyph{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;color:#fff;font-weight:800;font-size:1.05rem;letter-spacing:.02em;flex:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.hero-chips{margin-top:10px}
.project-hero-card{border-left:4px solid var(--line-strong)}
.hero-accent-ok{border-left-color:var(--success)}
.hero-accent-warn{border-left-color:var(--warning)}
.hero-accent-danger{border-left-color:var(--danger)}
.hero-accent-neutral{border-left-color:var(--line-strong)}

.health-pill{display:inline-flex;align-items:center;gap:7px;padding:3px 11px;border-radius:999px;font-size:.78rem;font-weight:700}
.health-pill .health-dot{width:8px;height:8px;border-radius:50%}
.health-ok{background:var(--success-bg);color:var(--success)} .health-ok .health-dot{background:var(--success)}
.health-warn{background:var(--warning-bg);color:#92600a} .health-warn .health-dot{background:var(--warning)}
.health-danger{background:var(--danger-bg);color:var(--danger)} .health-danger .health-dot{background:var(--danger)}
.health-neutral{background:#eef1f6;color:var(--muted)} .health-neutral .health-dot{background:var(--muted)}

.chip-priority{font-weight:700}
.chip-priority-critical{background:var(--danger-bg);color:var(--danger)}
.chip-priority-high{background:var(--warning-bg);color:#92600a}
.chip-priority-normal{background:#eef1f6;color:var(--muted)}
.chip-priority-low{background:#eef1f6;color:var(--muted)}
.chip-tag{background:#eef4ff;color:var(--primary-strong)}
.chip-muted{background:#eef1f6;color:var(--muted)}
.chip-billable{background:var(--success-bg);color:var(--success);font-weight:600}

/* progress tracks */
.track{height:8px;border-radius:999px;background:#eef1f6;overflow:hidden;margin:8px 0}
.track-thin{height:6px;margin:0}
.track-fill{height:100%;border-radius:999px;transition:width .3s ease;background:var(--primary)}
.track-ok{background:var(--success)} .track-warn{background:var(--warning)} .track-danger{background:var(--danger)}
.track-neutral{background:var(--muted)} .track-info{background:var(--primary)}
.track-fill-timeline{background:linear-gradient(90deg,var(--primary),var(--primary-strong))}
.track-fill-alloc-under{background:var(--primary)} .track-fill-alloc-full{background:var(--success)} .track-fill-alloc-over{background:var(--danger)}

.timeline-bar-wrap{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.timeline-bar-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.timeline-meta{font-size:.82rem;color:var(--muted);font-weight:600}

/* KPI grid */
.kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:18px}
.kpi-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.kpi-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}
.kpi-label{font-size:.76rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}
.kpi-tag{font-size:.72rem;font-weight:800;padding:2px 8px;border-radius:999px;background:#eef1f6;color:var(--muted)}
.kpi-tag-ok{background:var(--success-bg);color:var(--success)} .kpi-tag-warn{background:var(--warning-bg);color:#92600a} .kpi-tag-danger{background:var(--danger-bg);color:var(--danger)}
.kpi-tag-alloc-under{background:#eef4ff;color:var(--primary-strong)} .kpi-tag-alloc-full{background:var(--success-bg);color:var(--success)} .kpi-tag-alloc-over{background:var(--danger-bg);color:var(--danger)}
.kpi-value{font-size:1.6rem;font-weight:800;color:var(--text);line-height:1.1;font-variant-numeric:tabular-nums}
.kpi-unit{font-size:.9rem;font-weight:600;color:var(--muted)}
.kpi-foot{font-size:.82rem;color:var(--muted);margin-top:6px}
.delta{font-weight:700}.delta-up{color:var(--success)}.delta-down{color:var(--danger)}

/* bar chart */
.bar-chart{display:flex;align-items:flex-end;gap:14px;height:150px;padding:10px 4px 0}
.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%}
.bar-track{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center}
.bar{width:60%;min-height:3px;border-radius:6px 6px 0 0;background:#cfdaf5;transition:height .3s ease}
.bar-current{background:linear-gradient(180deg,var(--primary),var(--primary-strong))}
.bar-value{font-size:.74rem;color:var(--muted);font-variant-numeric:tabular-nums}
.bar-label{font-size:.74rem;color:var(--muted);font-weight:600}

/* meters */
.meter-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.meter-row{display:grid;grid-template-columns:120px 1fr 56px;align-items:center;gap:10px}
.meter-name{font-size:.85rem;color:var(--text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.meter-val{font-size:.82rem;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}

/* financial rows */
.fin-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:.92rem}
.fin-row:last-of-type{border-bottom:none}
.fin-row span{color:var(--muted)} .fin-row strong{color:var(--text);font-variant-numeric:tabular-nums;text-align:right}

/* staffing rows */
.staff-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.staff-row:last-child{border-bottom:none}
.staff-main{flex:1;min-width:0}
.staff-alloc{display:flex;align-items:center;gap:8px;width:130px}
.staff-alloc .track{flex:1;margin:0}
.staff-alloc span{font-size:.82rem;color:var(--muted);font-variant-numeric:tabular-nums;width:38px;text-align:right}
.staff-row-link{text-decoration:none;color:inherit;justify-content:space-between}
.staff-row-link:hover{background:var(--panel-soft)}

@media (max-width:1100px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:680px){.kpi-grid{grid-template-columns:1fr}.meter-row{grid-template-columns:90px 1fr 48px}}
