:root{--navy:#14284b;--navy-2:#1f3a68;--accent:#2a78d6;--surface:#fcfcfb;--page:#f4f4f1;--line:#e6e5e0;--text:#0b0b0b;--text-2:#52514e;--muted:#7a7974;--good:#0b7a3e;--good-bg:#e6f4ec;--warning:#8a5a00;--warning-bg:#fdf3dc;--critical:#b42318;--critical-bg:#fdecea;color:var(--text);background:var(--page);font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{margin:0;font-size:22px}h3{margin:0 0 10px;font-size:15px}h4{margin:14px 0 8px}.muted{color:var(--muted)}.small{font-size:12px}.pad{padding:24px}.text-critical{color:var(--critical);font-weight:600}.text-warning{color:var(--warning);font-weight:600}.shell{min-height:100vh;display:flex}.sidebar{background:var(--navy);color:#fff;flex-direction:column;flex-shrink:0;width:228px;height:100vh;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:18px 16px 6px;display:flex}.logo{width:36px;height:36px;color:var(--navy);background:#fff;border-radius:8px;place-items:center;font-size:20px;font-weight:800;display:grid}.brand.dark .logo{background:var(--navy);color:#fff}.brand-name{letter-spacing:2px;font-weight:800}.brand-sub{opacity:.75;font-size:11px}.brand-app{opacity:.7;border-bottom:1px solid #ffffff1f;padding:0 16px 14px;font-size:12px}.sidebar nav{flex-direction:column;flex:1;gap:2px;padding:10px 8px;display:flex;overflow-y:auto}.sidebar nav a{color:#ffffffd1;border-radius:6px;padding:8px 12px}.sidebar nav a:hover{background:#ffffff14;text-decoration:none}.sidebar nav a.active{color:#fff;background:#ffffff29;font-weight:600}.sidebar-foot{border-top:1px solid #ffffff1f;flex-direction:column;gap:4px;padding:12px 16px;display:flex}.sidebar-foot a,.sidebar-foot .muted{color:#ffffffb3}.sidebar-foot .btn{color:#fff;border-color:#ffffff4d;margin-top:6px}.who{font-weight:600}.content{flex:1;min-width:0;padding:22px 28px 12px}.confidential{border-top:1px solid var(--line);color:var(--muted);margin-top:32px;padding-top:10px;font-size:11px}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.page-head p{margin:4px 0 0}.actions{gap:8px;display:flex}.page-head>div:first-child{flex:320px;min-width:0}.page-head .actions{flex-wrap:wrap;flex:0 auto;justify-content:flex-end;align-items:center}.page-head .actions .btn,.page-head .actions .seg button{white-space:nowrap}.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;padding:16px}.card.narrow{max-width:480px}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.grid-2>.card{margin-bottom:16px}@media (width<=1100px){.grid-2{grid-template-columns:1fr}}.section-title{margin:8px 0}.btn{border:1px solid var(--line);color:var(--text);cursor:pointer;font:inherit;background:#fff;border-radius:6px;padding:7px 14px;display:inline-block}.btn:hover{border-color:#c9c8c2;text-decoration:none}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn.primary:hover{background:var(--navy-2)}.btn.ghost{background:0 0}.btn.small{padding:4px 10px;font-size:12px}.btn.link{color:var(--accent);background:0 0;border:none;padding:0}.btn.block{width:100%;padding:10px}.btn:disabled{opacity:.55;cursor:default}input,select,textarea{font:inherit;color:var(--text);background:#fff;border:1px solid #d3d2cc;border-radius:6px;width:100%;padding:7px 9px}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:2px solid #2a78d659}input[readonly],select:disabled{background:#f3f3f0}input[type=checkbox]{width:auto}label.check{align-items:center;gap:6px;font-weight:400;display:inline-flex}.table-card{padding:0;overflow:hidden}.toolbar{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;display:flex}.toolbar select{width:auto}.toolbar .search{width:240px}.spacer{flex:1}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--text-2);border-bottom:1px solid var(--line);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;background:#f7f7f4;padding:8px 10px;font-size:12px;font-weight:600;position:sticky;top:0}td{white-space:nowrap;vertical-align:middle;border-bottom:1px solid #efeee9;padding:7px 10px}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#f3f7fd}td.empty{text-align:center;color:var(--muted);padding:28px}.pager{justify-content:flex-end;align-items:center;gap:12px;padding:8px 12px;display:flex}.truncate{text-overflow:ellipsis;vertical-align:bottom;max-width:520px;display:inline-block;overflow:hidden}table.mini th,table.mini td{padding:5px 8px}.badge{color:var(--text-2);white-space:nowrap;background:#efeee9;border-radius:10px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.badge.good{background:var(--good-bg);color:var(--good)}.badge.warning{background:var(--warning-bg);color:var(--warning)}.badge.critical{background:var(--critical-bg);color:var(--critical)}.filters{flex-wrap:wrap;align-items:flex-end;gap:14px;padding:12px 16px;display:flex}.filters label{color:var(--text-2);flex-direction:column;gap:4px;min-width:150px;font-size:12px;display:flex}.kpi-group{margin-bottom:14px}.kpi-group h3{text-transform:uppercase;letter-spacing:1px;color:var(--text-2);margin-bottom:8px;font-size:12px}.kpis{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;display:grid}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.kpi-label{color:var(--text-2);font-size:12px}.kpi-value{font-variant-numeric:tabular-nums;margin-top:4px;font-size:22px;font-weight:700}.kpi-sub{color:var(--muted);margin-top:2px;font-size:12px}.kpi.critical{border-left:4px solid var(--critical)}.kpi.warning{border-left:4px solid #eda100}.kpi.good{border-left:4px solid var(--good)}.alerts{margin:0;padding:0;list-style:none}.alerts li{border-bottom:1px solid #f0efea;justify-content:space-between;padding:6px 0;display:flex}.alerts li.hot a{color:var(--text);font-weight:600}.count{border-radius:10px;padding:1px 8px;font-size:12px;font-weight:700}.count.good{color:var(--good);background:var(--good-bg)}.count.critical{color:var(--critical);background:var(--critical-bg)}.stage-bars{margin:0;padding:0;list-style:none}.stage-bars li{grid-template-columns:140px 1fr 32px;align-items:center;gap:10px;padding:4px 0;display:grid}.stage-name{color:var(--text-2);font-size:13px}.stage-track{background:#f0efea;border-radius:0 4px 4px 0;height:10px}.stage-fill{background:#2a78d6;border-radius:0 4px 4px 0;min-width:0;height:100%;display:block}.stage-count{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}ul.plain{margin:0;padding-left:18px;line-height:1.8}.modal-backdrop{z-index:50;background:#0a142873;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;flex-direction:column;width:min(560px,100%);max-height:92vh;display:flex;box-shadow:0 20px 60px #00000040}.modal.wide{width:min(980px,100%)}.modal form{flex-direction:column;min-height:0;display:flex}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-head h3{margin:0}.modal-body{padding:16px 18px;overflow-y:auto}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}.form-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px 16px;display:grid}.form-section{border-top:1px solid var(--line);color:var(--navy);text-transform:uppercase;letter-spacing:.5px;grid-column:1/-1;margin:8px 0 -4px;padding-top:8px;font-size:13px}.form-section:first-child{border-top:none;padding-top:0}.field{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.form-grid .field{margin-bottom:0}.field.full{grid-column:1/-1}.field label{color:var(--text-2);font-size:12px;font-weight:600}.req{color:var(--critical)}.alert{border-radius:8px;margin:10px 0;padding:10px 14px}.modal .alert{margin:10px 18px}.modal-body .alert{margin:12px 0 0}.alert.error{background:var(--critical-bg);color:var(--critical)}.alert.success{background:var(--good-bg);color:var(--good)}.alert.warning{background:var(--warning-bg);color:var(--warning)}.alert.info{color:#1d4f8c;background:#eaf2fc}.alert ul{margin:6px 0 0;padding-left:18px}.info-row{flex-wrap:wrap;align-items:center;gap:18px;margin:12px 0;display:flex}.calc-box{background:#f7f7f4;border-radius:8px;grid-template-columns:1fr 1fr;gap:6px 24px;margin-top:14px;padding:12px 14px;display:grid}.calc-box div{justify-content:space-between;gap:10px;font-size:13px;display:flex}.calc-box span{color:var(--text-2)}.ts-grid{grid-template-columns:repeat(7,1fr) 90px;align-items:end;gap:8px;margin-top:14px;display:grid}.ts-grid label{text-align:center;flex-direction:column;gap:4px;font-size:12px;font-weight:600;display:flex}.ts-grid input{text-align:center}.ts-total{flex-direction:column;align-items:center;font-size:12px;display:flex}.ts-total strong{font-size:22px}dl.details{grid-template-columns:160px 1fr;gap:6px 12px;margin:0;display:grid}dl.details dt{color:var(--text-2)}dl.details dd{margin:0}.pre{background:#f7f7f4;border-radius:8px;max-height:60vh;padding:12px;font-size:12px;overflow:auto}.prose{max-width:900px;line-height:1.6}.prose h3{margin-top:18px}.login-page{background:linear-gradient(135deg, var(--navy) 0%, #2b4f86 100%);place-items:center;min-height:100vh;display:grid}.login-card{background:#fff;border-radius:14px;width:380px;padding:32px;box-shadow:0 24px 60px #0000004d}.login-card .brand{padding:0 0 16px}.login-card h2{margin:6px 0 2px}.login-card p{margin:0 0 16px}.login-card .small{text-align:center;margin-top:14px}.docs{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}.docs h4{margin-top:0}.doc-upload{flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 4px;display:flex}.doc-upload select{width:auto}.doc-upload input[type=file]{flex:1;width:auto;min-width:220px}.nowrap{white-space:nowrap}.actions.wrap{flex-wrap:wrap;margin:12px 0}.invoice-preview{border:1px solid var(--line);border-radius:8px;margin-top:14px;padding:12px}.invoice-preview td{white-space:normal}.totals{flex-direction:column;gap:4px;max-width:340px;margin:10px 0 0 auto;display:flex}.totals div{justify-content:space-between;gap:16px;display:flex}.totals .grand{border-top:2px solid var(--navy);padding-top:6px;font-size:15px}.email-frame{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;height:520px}.seg{border:1px solid var(--line);border-radius:6px;display:inline-flex;overflow:hidden}.seg button{cursor:pointer;font:inherit;background:#fff;border:none;padding:7px 12px}.seg button.on{background:var(--navy);color:#fff}.master{grid-template-columns:240px 1fr;align-items:start;gap:16px;display:grid}.master-cats{flex-direction:column;gap:2px;padding:6px;display:flex;position:sticky;top:12px}.master-cats button{text-align:left;cursor:pointer;font:inherit;color:var(--text);background:0 0;border:none;border-radius:6px;justify-content:space-between;padding:8px 10px;display:flex}.master-cats button:hover{background:#f1f1ee}.master-cats button.active{color:var(--navy);background:#e8eef8;font-weight:600}.master-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:8px;display:flex}.master-head p{max-width:680px;margin:0}.master-items table td{white-space:normal}.inactive-row td{opacity:.55}.wrap-cell{max-width:360px}.tag-checks{flex-wrap:wrap;gap:10px 18px;display:flex}@media (width<=900px){.master{grid-template-columns:1fr}.master-cats{position:static}}.cal-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.cal-head h3{margin:0}.cal-legend{color:var(--text-2);gap:14px;display:flex}.sw{vertical-align:-1px;border:1px solid var(--line);border-radius:3px;width:12px;height:12px;display:inline-block}.sw.approved{background:var(--good-bg);border-color:#b9dfc8}.sw.pending{background:var(--warning-bg);border-color:#f0d9a0}.sw.missing{background:#fff}.cal-grid{table-layout:fixed}.cal-grid th{text-align:center;cursor:default}.cal-day{vertical-align:top;border:1px solid #efeee9;height:64px;padding:6px 8px;position:relative}.cal-day.approved{background:var(--good-bg)}.cal-day.pending{background:var(--warning-bg)}.cal-day.other{opacity:.45}.cal-day.today .cal-date{background:var(--navy);color:#fff;border-radius:10px;padding:0 6px}.cal-date{color:var(--text-2);font-size:12px}.cal-hours{text-align:center;font-variant-numeric:tabular-nums;margin-top:4px;font-size:18px;font-weight:700;display:block}.cal-total{text-align:center;border:1px solid #efeee9;width:110px}.cal-total.approved{color:var(--good)}.cal-total.pending{color:var(--warning)}.cal-week.clickable:hover td{outline:1px solid var(--accent);outline-offset:-1px;cursor:pointer}.cal-week.blocked td{cursor:not-allowed;background:repeating-linear-gradient(135deg,#fafaf8,#fafaf8 6px,#f2f2ef 6px 12px)}.cal-foot{margin-top:8px}.yesno{align-items:center;gap:18px;min-height:34px;display:flex}.rte{border:1px solid var(--line,#d9d7cf);background:#fff;border-radius:6px}.rte.readonly{background:#fafaf7}.rte-tools{background:#fafaf7;border-bottom:1px solid #efeee9;border-radius:6px 6px 0 0;gap:2px;padding:4px;display:flex}.rte-tools button{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;min-width:28px;height:26px;font-weight:600}.rte-tools button:hover{background:#ecebe5;border-color:#d9d7cf}.rte-body{outline:none;min-height:140px;max-height:360px;padding:8px 12px;overflow:auto}.rich h3,.rich h4{margin:10px 0 4px}.rich p{margin:0 0 6px}.rich ul,.rich ol{margin:0 0 6px 20px;padding:0}.skill-matrix table input,.skill-matrix table select{width:100%}.skill-matrix{margin-bottom:6px}input.invalid{border-color:var(--critical,#c0392b);background:#fff6f5}.jd-reader{margin-top:12px}.jd-reader>label{margin-bottom:4px;font-size:13px;font-weight:600;display:block}.pre-wrap{white-space:pre-wrap}.ts-days{margin-top:12px}.ts-days input{width:100%}.ts-days td:nth-child(2) input{text-align:right}.cal-day.clickable{cursor:pointer}.cal-day.clickable:hover{outline:2px solid var(--navy);outline-offset:-2px}.cal-total.clickable{cursor:pointer}.cal-note{color:var(--navy);font-size:12px}.note-chip{white-space:nowrap;cursor:help;border-bottom:1px dotted}dl.details.review{grid-template-columns:1fr 1fr;gap:4px 24px;display:grid}dl.details.review>div{border-bottom:1px solid #f1f0eb;grid-template-columns:46% 1fr;gap:8px;padding:3px 0;display:grid}dl.details.review dt{color:var(--text-2)}dl.details.review dd{margin:0}.ts-import td,.ts-import th{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.ts-import td:first-child,.ts-import th:first-child,.ts-import td:last-child,.ts-import th:last-child{text-align:left;white-space:normal}.ts-import td.changed{background:var(--warning-bg);font-weight:600}.ts-import td.muted{color:var(--text-3,#9a988f)}.row-actions{flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0;display:flex}.vendor-pick tbody tr{cursor:pointer}.vendor-pick tbody tr.muted{cursor:default}.method-pick{gap:8px;margin:4px 0 12px;display:grid}.method-pick .check{align-items:flex-start}.setup-steps{margin:4px 0 12px;font-size:14px}.setup-steps summary{cursor:pointer;font-weight:600}.setup-steps ol{padding-left:20px}.setup-steps li{margin:6px 0}.setup-steps pre{white-space:pre-wrap;background:var(--surface-2,#f4f3ef);border-radius:6px;padding:8px;font-size:12px}.method-pick label.check{gap:10px;display:flex}.method-pick input[type=radio]{flex:none;width:auto;margin-top:3px}
