.wireframe-shell{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 68px);margin:-44px -24px -80px;background:#f5f6f8}.sidebar{background:#161a22;color:#fff;padding:26px 18px;display:flex;flex-direction:column}.side-brand{font-size:19px;padding:0 10px 34px}.side-brand span{display:block;color:#9da5b4;font-size:12px;margin-left:24px}.side-nav{display:grid;gap:6px}.nav-item{border:0;background:transparent;color:#c7cbd3;text-align:left;padding:12px;border-radius:8px;font-weight:650;cursor:pointer}.nav-item.active,.nav-item:hover{background:#2a303b;color:#fff}.side-user{margin-top:auto;border-top:1px solid #39404d;padding:18px 10px;display:grid;gap:4px}.side-user span{color:#aeb5c2;font-size:12px}.text-button{border:0;background:none;color:#8db0ff;text-align:left;padding:8px 0 0;cursor:pointer}.workspace{padding:38px 44px;max-width:1200px;width:100%;margin:0 auto}.workspace-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:34px}.workspace-user{color:#5a6170;font-size:13px}.badge.dark{background:#161a22;color:#fff}.attention{padding:24px;margin-bottom:34px}.card-heading,.page-toolbar,.admin-toolbar{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.section-heading{margin:24px 0 14px}.section-heading h2,.card-heading h2,.admin-toolbar h2{margin-bottom:3px}.wire-project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.wire-project{text-align:left;padding:22px;cursor:pointer;transition:.15s}.wire-project:hover{border-color:#2354d8;box-shadow:0 5px 18px #2354d81a}.wire-project h3{font-size:17px;margin:10px 0 6px}.card-link{color:#2354d8;font-weight:750;font-size:13px;display:block;margin-top:18px}.activity-area{margin-top:22px;padding:24px}.activity-table{margin-top:20px}.activity-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:16px 0;border-top:1px solid #eef0f3}.activity-row h3{font-size:15px;margin:4px 0}.activity-type{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#5a6170;background:#eef0f3;border-radius:4px;padding:3px 6px}.activity-row select{width:180px;min-height:40px;text-transform:capitalize}.activity-row select.saved{border-color:#177245;background:#e6f5eb}.tabs{display:flex;gap:5px;background:#e9ecf1;border-radius:10px;padding:4px;margin-bottom:20px;width:max-content}.tab{border:0;background:transparent;border-radius:7px;padding:9px 15px;font-weight:700;color:#667085;cursor:pointer}.tab.active{background:#fff;color:#172033;box-shadow:0 1px 2px #0001}.admin-toolbar{background:#fff;border:1px solid #e4e7ec;border-radius:14px 14px 0 0;padding:20px}.admin-list{background:#fff;border:1px solid #e4e7ec;border-top:0;border-radius:0 0 14px 14px}.admin-row{display:flex;justify-content:space-between;align-items:center;padding:17px 20px;border-top:1px solid #eef0f3}.admin-row:first-child{border-top:0}.admin-row div{display:grid;gap:3px}.empty-state{padding:40px 22px;text-align:center;color:#667085;background:#fff;border:1px dashed #cfd5df;border-radius:12px}@media(max-width:800px){.wireframe-shell{grid-template-columns:1fr;margin:-28px -16px -80px}.sidebar{padding:16px;min-height:auto}.side-nav{display:flex;overflow:auto}.side-user{display:none}.workspace{padding:28px 18px}.workspace-top{flex-direction:column}.activity-row{align-items:flex-start;flex-direction:column}.activity-row select{width:100%}}
.portal-modal-layer{position:fixed;inset:0;background:#161a2273;display:flex;align-items:center;justify-content:center;padding:20px;z-index:20}.portal-modal{width:min(560px,100%);background:#fff;border-radius:16px;padding:24px;box-shadow:0 20px 50px #0003}.project-form{margin-top:22px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}
.sub-activity{padding-left:34px;background:#fbfcfe}.sub-label{display:block;font-size:11px;font-weight:800;color:#5b3bb0;letter-spacing:.05em;margin-bottom:4px}
.activity-actions{display:flex;align-items:center;gap:8px}.member-list{display:grid;gap:8px;margin:22px 0}.member-option{display:flex;grid-template-columns:auto 1fr;align-items:flex-start;gap:10px;padding:12px;border:1px solid #e4e7ec;border-radius:9px;cursor:pointer}.member-option input{width:18px;margin-top:2px}.member-option span{display:grid;gap:2px}.member-option small{color:#667085;font-size:12px}
.error-panel{display:grid;gap:10px;padding:20px;background:#fff0f0;border:1px solid #f1b8b2;border-radius:12px;color:#9f241b}.error-panel span{font-size:13px}
.project-actions{display:flex;gap:8px;flex-wrap:wrap}.member-strip{font-size:12px;color:#667085;margin-top:10px}.member-strip b{color:#172033}.activity-actions select{width:170px}
.assigned-users{font-size:12px;color:#667085;margin-top:8px}.assigned-users b{color:#172033}
.activity-details{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-top:12px;padding:12px 14px;border-left:2px solid #cbd5e1;background:#f8fafc;border-radius:8px}.activity-details p{margin:5px 0 8px;white-space:pre-wrap;color:#475569}.planned-date{color:#64748b;font-size:12px}
.date-change-notice{margin-top:6px;color:#8a5a00;font-size:12px;font-weight:700}
.actual-date{display:block;margin-top:5px;color:#177245;font-size:12px;font-weight:700}
.user-access-actions{display:flex;align-items:center;gap:10px}
.hold-reason{display:block;margin-top:6px;color:#9f241b;font-size:12px;font-weight:700}
.name-change-notice{margin-top:8px;color:#8a5a00;font-size:12px;font-weight:700}
.delete-activity{color:#9f241b}.delete-activity:disabled{cursor:not-allowed;opacity:.45}
.customer-project-filter{display:flex;justify-content:flex-end;margin-bottom:18px}.customer-project-filter label{display:grid;gap:5px;font-size:12px;font-weight:700;color:#667085}.customer-project-filter select{min-width:220px}.customer-project-group{margin-bottom:28px}.customer-summary{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin:18px 0 12px;padding:16px 18px;background:#fff;border:1px solid #e4e7ec;border-radius:14px}.customer-summary h2{margin:4px 0 0}.summary-metrics,.project-summary-metrics{display:flex;flex-wrap:wrap;gap:8px}.summary-metrics span,.project-summary-metrics span{padding:5px 8px;background:#eef0f3;border-radius:6px;color:#667085;font-size:11px}.project-summary-metrics{margin:10px 0}.project-summary-metrics span{background:#f4f6f8}
.user-modal{max-height:90vh;overflow:auto}
.customer-view-banner{margin:14px 0;padding:12px 14px;border:1px solid #cbd5e1;background:#f8fafc;border-radius:9px;color:#475569;font-size:12px;font-weight:700}.customer-readonly .activity-actions select:disabled{opacity:.75;cursor:default}
.wire-project-grid#project-list{display:block}.customer-project-filter{align-self:flex-start}.customer-project-filter select{height:38px;min-height:38px;padding:8px 10px}
.activity-row > div:first-child > p.muted{display:none}
.activity-form label:has(#activity-window){display:none}

/* Portal UI system: compact, consistent, and keyboard-friendly. */
:root{
  --portal-navy:#111827;
  --portal-slate:#475569;
  --portal-muted:#64748b;
  --portal-border:#dbe3ee;
  --portal-border-soft:#e8edf4;
  --portal-bg:#f4f7fb;
  --portal-blue:#2f5bd3;
  --portal-blue-dark:#2349b4;
  --portal-blue-soft:#edf2ff;
  --portal-success:#087443;
  --portal-danger:#b42318;
}

body{background:var(--portal-bg);color:var(--portal-navy)}
button,input,textarea,select{font:inherit}
button{ -webkit-tap-highlight-color:transparent }
button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #91b4ff;outline-offset:2px}
.wireframe-shell{background:var(--portal-bg)}
.sidebar{background:linear-gradient(180deg,#121721 0%,#1a202b 100%);border-right:1px solid #252d3a;padding:28px 16px}
.side-brand{font-size:18px;letter-spacing:-.02em;padding:0 12px 38px}
.side-brand span{letter-spacing:.02em}
.side-nav{gap:4px}
.nav-item{border:1px solid transparent;color:#aeb8c8;padding:11px 12px;transition:background .16s ease,color .16s ease,border-color .16s ease}
.nav-item.active{background:#2b3443;border-color:#3b4657;color:#fff;box-shadow:0 5px 14px #0002}
.nav-item:hover{background:#232b38;border-color:#333e4e}
.side-user{border-top-color:#344052;padding:20px 12px}
.side-user b{font-size:14px}
.text-button{font-weight:700;font-size:13px;transition:color .16s ease}
.text-button:hover{color:#c9d8ff}
.shell{max-width:none;width:100%;padding-left:24px;padding-right:24px}
.workspace{max-width:1360px;padding:42px 52px 72px}
.workspace-top{margin-bottom:32px;padding-bottom:24px;border-bottom:1px solid var(--portal-border)}
.workspace-top h1{font-size:32px;letter-spacing:-.045em;margin-bottom:0}
.workspace-user{display:flex;align-items:center;gap:8px;color:var(--portal-slate)}
.badge.dark{padding:5px 10px;font-size:11px;letter-spacing:.01em}
.attention{padding:26px 28px;border-color:#d6e2ff;background:linear-gradient(135deg,#fff 0%,#f5f8ff 100%);box-shadow:0 10px 30px #315ac414}
.attention h2{font-size:21px;letter-spacing:-.02em}
.card,.admin-toolbar,.admin-list{border-color:var(--portal-border);box-shadow:0 8px 26px #22314a0a}
.button{border-color:#cbd5e1;border-radius:8px;min-height:40px;padding:9px 15px;transition:transform .16s ease,box-shadow .16s ease,background .16s ease,border-color .16s ease,color .16s ease}
.button:not(:disabled):hover{border-color:#9eb0c9;box-shadow:0 4px 12px #1d35571c;transform:translateY(-1px)}
.button.primary{background:var(--portal-blue);border-color:var(--portal-blue);box-shadow:0 5px 13px #2f5bd326}
.button.primary:not(:disabled):hover{background:var(--portal-blue-dark);border-color:var(--portal-blue-dark)}
.button.ghost{background:transparent;border-color:transparent;color:var(--portal-blue);box-shadow:none}
.button.ghost:not(:disabled):hover{background:var(--portal-blue-soft);border-color:#d4defc;transform:none}
.button:disabled{cursor:not-allowed;opacity:.52;box-shadow:none;transform:none}
.button.small{min-height:34px;border-radius:7px}
.wire-project-grid{gap:18px}
.wire-project{min-height:160px;border-radius:14px;padding:22px 23px;background:#fff;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.wire-project:not(:disabled):hover{border-color:#9db5ef;box-shadow:0 12px 28px #2f5bd31c;transform:translateY(-3px)}
.wire-project:focus-visible{transform:translateY(-2px)}
.wire-project h3{font-size:18px;letter-spacing:-.025em}
.card-link{font-size:12px;text-decoration:none}
.card-link::after{content:'';display:inline-block;width:0;height:1px;background:currentColor;vertical-align:middle;transition:width .16s ease;margin-left:0}
.wire-project:hover .card-link::after{width:12px;margin-left:5px}
.page-toolbar{align-items:center;margin-bottom:18px}
.page-toolbar p{margin-bottom:0}
.activity-area{padding:26px 28px;border-radius:16px;box-shadow:0 10px 28px #22314a0b;scroll-margin-top:24px}
.card-heading h2{font-size:22px;letter-spacing:-.03em}
.project-actions{justify-content:flex-end}
.member-strip{padding-top:10px;border-top:1px solid var(--portal-border-soft);max-width:680px}
.activity-table{border:1px solid var(--portal-border-soft);border-radius:12px;overflow:hidden;background:#fff}
.activity-row{padding:18px 20px;border-top:1px solid var(--portal-border-soft);transition:background .16s ease}
.activity-row:first-child{border-top:0}
.activity-row:hover{background:#fbfcff}
.activity-row h3{font-size:16px;letter-spacing:-.01em}
.activity-actions{flex-wrap:wrap;justify-content:flex-end}
.activity-actions{align-self:flex-start}
.activity-actions select{border-radius:8px;border-color:#cbd5e1;background:#fff;cursor:pointer}
.activity-actions select:disabled{cursor:not-allowed;background:#f1f5f9}
.activity-type{background:#eef2f7;color:#526175;border-radius:5px;font-weight:800}
.sub-activity{padding-left:42px;background:#fbfcfe}
.sub-label{color:#6046a8}
.assigned-users{color:var(--portal-muted)}
.assigned-users b{color:var(--portal-slate)}
.tabs{width:100%;max-width:max-content;overflow:auto;border:1px solid var(--portal-border);background:#e9eef5;padding:4px}
.tab{white-space:nowrap;padding:9px 17px;transition:background .16s ease,color .16s ease,box-shadow .16s ease}
.tab.active{color:var(--portal-navy);box-shadow:0 2px 5px #263b5b18}
.admin-toolbar{border-radius:14px 14px 0 0;padding:22px 24px;background:#fff}
.admin-toolbar h2{font-size:20px;letter-spacing:-.025em}
.admin-list{border-top:0;border-radius:0 0 14px 14px;overflow:hidden}
.admin-row{min-height:72px;padding:15px 24px;transition:background .16s ease}
.admin-row:hover{background:#fafcff}
.admin-row b{font-size:14px}
.admin-row .muted{font-size:12px}
.user-access-actions{flex-wrap:wrap;justify-content:flex-end}
.empty-state{border-color:#c8d3e2;background:linear-gradient(180deg,#fff,#fafcff);padding:48px 24px}
.customer-summary{align-items:center;margin:20px 0 14px;padding:20px 22px;border-color:var(--portal-border);box-shadow:0 5px 16px #22314a08}
.customer-summary h2{font-size:19px;letter-spacing:-.025em}
.summary-metrics span,.project-summary-metrics span{background:#f1f5f9;border:1px solid #e6ebf2;color:#526175;padding:6px 9px}
.customer-project-group--portal .customer-summary{background:linear-gradient(135deg,#fff,#f7f9ff);border-color:#d4def7}
.customer-project-filter select{background:#fff;border-color:#c6d1df}
.activity-details{border-left-color:#9eb9f5;background:#f7faff;box-shadow:inset 0 0 0 1px #edf3ff}
.date-change-notice,.name-change-notice{font-weight:750}
.portal-modal-layer{background:#0f172acc;backdrop-filter:blur(3px);padding:24px}
.portal-modal{max-height:calc(100vh - 48px);overflow:auto;border:1px solid #e0e7f1;border-radius:18px;padding:28px;box-shadow:0 24px 70px #0005}
.compact-modal{width:min(480px,100%)}
.portal-modal .card-heading{border-bottom:1px solid var(--portal-border-soft);padding-bottom:18px;margin-bottom:20px}
.portal-modal .card-heading h2{margin-bottom:5px}
.portal-modal .form{margin-top:0}
.portal-modal input,.portal-modal textarea,.portal-modal select{border-color:#c7d2e0;min-height:42px}
.portal-modal input:focus,.portal-modal textarea:focus,.portal-modal select:focus{border-color:#7193e8;box-shadow:0 0 0 3px #dce6ff;outline:0}
.modal-actions{border-top:1px solid var(--portal-border-soft);padding-top:18px;margin-top:20px}
.member-option{background:#fff;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}
.member-option:hover{background:#f8faff;border-color:#a9bdf0;box-shadow:0 3px 10px #2f5bd314}
.customer-view-banner{background:#f5f8ff;border-color:#cbd9fa;color:#405681}
.staff-view-banner{background:#f4f9f6;border-color:#c6e4d2;color:#256044}
.staff-unassigned{background:#f8fafc}
.staff-unassigned .activity-actions select{background:#f1f5f9;color:#64748b}
.staff-work-card{padding:24px 26px;margin-bottom:28px}
.staff-work-list{display:grid;gap:0;margin-top:18px;border:1px solid var(--portal-border-soft);border-radius:12px;overflow:hidden}
.staff-work-item{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;padding:15px 18px;border:0;border-top:1px solid var(--portal-border-soft);background:#fff;color:var(--portal-navy);text-align:left;cursor:pointer;transition:background .16s ease,padding .16s ease}
.staff-work-item:first-child{border-top:0}
.staff-work-item:hover{background:#f7faff;padding-left:21px}
.staff-work-item span:first-child{display:grid;gap:3px;min-width:0}
.staff-work-item b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.staff-work-item small{font-size:12px;color:var(--portal-muted)}
.staff-work-item .status{text-transform:capitalize}
@media(max-width:800px){.staff-work-card{padding:20px 16px}.staff-work-item{align-items:flex-start;flex-direction:column}.staff-work-item .status{align-self:flex-start}}
.error-panel{box-shadow:0 5px 16px #b4231810}
@media(max-width:900px){.workspace{padding:32px 28px 60px}}
@media(max-width:800px){.workspace{padding:26px 18px 54px}.workspace-top{padding-bottom:18px}.workspace-top h1{font-size:27px}.page-toolbar,.card-heading,.admin-toolbar{flex-direction:column;align-items:stretch}.project-actions{justify-content:flex-start}.activity-area{padding:20px 16px}.activity-actions{width:100%;justify-content:flex-start}.activity-row{padding:16px}.sub-activity{padding-left:24px}.customer-summary{align-items:flex-start;flex-direction:column}.summary-metrics{width:100%}.portal-modal{padding:22px}}

.activity-comments{margin-top:16px;padding:14px 16px;border:1px solid var(--portal-border-soft);border-radius:10px;background:#fbfcfe;max-width:760px}
.comment-meta>span,.customer-comment-meta>span{display:inline-flex;align-items:center;gap:7px}.automated-comment-badge{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;background:#e8eefc;color:#3157a6;font-size:9px;font-weight:800;letter-spacing:.03em;text-transform:uppercase}.comment-item--automated{background:#f5f8ff}.customer-comment--automated{background:#f5f8ff}
.activity-files-panel{margin-top:16px;border:1px solid var(--portal-border-soft);border-radius:10px;background:#fbfcfe;max-width:760px;overflow:hidden}
.activity-files-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--portal-border-soft)}
.activity-files-heading>div{display:flex;align-items:center;gap:9px}.activity-files-heading .muted{font-size:12px}
.activity-file-list{display:grid}.activity-file-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid #edf0f3;background:#fff}.activity-file-row:last-child{border-bottom:0}
.activity-file-ext{display:grid;min-width:30px;height:30px;place-items:center;border:1px solid #78b79a;border-radius:4px;color:#177245;font-size:9px;font-weight:800}.activity-file-info{display:grid;min-width:0;flex:1;gap:3px}.activity-file-info strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.activity-file-info small{color:var(--portal-muted);font-size:11px}.activity-file-download{width:30px;height:30px;border:1px solid var(--portal-border-soft);border-radius:7px;background:#fff;color:var(--portal-muted);cursor:pointer}.activity-file-download:hover{border-color:#9eb5ef;color:var(--portal-blue)}.activity-file-empty{padding:14px 16px;font-size:12px}
.requirement-upload-fieldset{margin:0;padding:12px;border:1px solid var(--portal-border-soft);border-radius:8px}.requirement-upload-fieldset legend{padding:0 4px;font-size:12px;font-weight:700}.requirement-upload-fieldset legend .muted{font-weight:400}.requirement-upload-file-list{display:grid;gap:8px;max-height:260px;overflow:auto;margin:4px 0 8px}.requirement-upload-file{padding:9px;border:1px solid #e5e9ef;border-radius:7px;background:#fff}.requirement-upload-file>strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.requirement-upload-options{display:grid;gap:7px;max-height:180px;overflow:auto;margin:7px 0 0}.requirement-upload-option{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;border:1px solid #e5e9ef;border-radius:7px;background:#fff;cursor:pointer}.requirement-upload-option:hover{border-color:#9eb5ef;background:#f8faff}.requirement-upload-option input{margin-top:2px}.requirement-upload-option span{display:grid;gap:2px}.requirement-upload-option b{font-size:12px}.requirement-upload-option small{color:var(--portal-muted);font-size:11px;text-transform:capitalize}
.activity-requirements{margin-top:16px;padding:14px 16px;border:1px solid var(--portal-border-soft);border-radius:10px;background:#fbfcfe;max-width:760px}
.requirements-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.requirements-heading>div{display:flex;align-items:center;gap:9px}
.requirements-heading .muted{font-size:12px}
.requirement-list{display:grid;gap:8px}
.requirement-item{padding:11px 12px;background:#fff;border:1px solid #e9edf2;border-radius:8px}
.requirement-item--latest-submission{border-color:#7f9ff0;background:linear-gradient(135deg,#fff,#f4f7ff);box-shadow:0 0 0 3px #e8efff}
.requirement-latest-label{display:inline-flex;margin-bottom:8px;padding:4px 8px;border-radius:999px;background:#e1eaff;color:#2454a6;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.requirement-approval-pending{display:grid;gap:3px;margin:-2px -2px 10px;padding:9px 10px;border:1px solid #f1d28b;border-radius:7px;background:#fff8e8;color:#8a5a00;font-size:12px}
.requirement-approval-pending span{font-size:11px;color:#9a6b16}
.requirement-approval-pending small{color:#9a6b16;font-size:11px}
.requirement-subsection-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}
.requirement-latest-inline-label{display:inline-flex;padding:3px 6px;border-radius:999px;background:#e1eaff;color:#2454a6;font-size:10px;font-weight:800;letter-spacing:.02em;white-space:nowrap}
.requirement-file-button--latest{border-color:#7f9ff0;background:#f4f7ff;box-shadow:0 0 0 2px #e8efff}
.requirement-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.requirement-item p{margin:7px 0 0;color:var(--portal-slate);white-space:pre-wrap;overflow-wrap:anywhere}
.requirement-meta{margin-top:8px;color:var(--portal-muted);font-size:12px}
.requirement-audit{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px;color:var(--portal-muted);font-size:11px}
.requirement-audit b{color:var(--portal-slate);font-weight:750}
.requirement-status{padding:3px 8px;border-radius:999px;font-size:11px;font-weight:750;text-transform:capitalize;white-space:nowrap}
.requirement-status--open{background:#fff4d6;color:#8a5a00}
.requirement-status--submitted{background:#e7f0ff;color:#2454a6}
.requirement-status--accepted{background:#e8f7ee;color:#177245}
.requirement-status--rejected{background:#ffe9e7;color:#a82b24}
.requirement-status--closed{background:#fff0d1;color:#8a5a00}
.requirement-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.requirement-empty{margin:0;padding:4px 0 8px;font-size:13px}
.requirement-response,.requirement-reviewer-remark,.requirement-files{margin-top:10px;padding:10px 11px;border-radius:8px;font-size:12px}
.requirement-response{background:#f4f8ff;border:1px solid #d8e4fb}
.requirement-response-accepted{display:block;margin-top:4px;color:#177245;font-weight:750}
.requirement-reviewer-remark{background:#fff8e8;border:1px solid #f3dfae}
.requirement-files{background:#f8fafc;border:1px solid #e5eaf0}
.activity-challenges{margin-top:14px;border:1px solid #e2e7ee;border-radius:10px;background:#fff;overflow:hidden}
.activity-challenges--has-open{border-color:#f1c86b}
.challenges-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:14px 15px;background:#fafbfc;border-bottom:1px solid #e8edf2}
.challenges-heading p{margin:4px 0 0;font-size:12px}
.challenges-title-row{display:flex;align-items:center;gap:8px}
.challenge-count{padding:3px 8px;border-radius:999px;background:#fff0d1;color:#8a5a00;font-size:10px;font-weight:800}
.challenge-list{display:grid}
.challenge-item{display:flex;gap:10px;padding:13px 15px;border-bottom:1px solid #edf0f3}
.challenge-item:last-child{border-bottom:0}
.challenge-item-icon{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none;background:#fff0d1;color:#8a5a00;font-size:14px;font-weight:850}
.challenge-item--resolved .challenge-item-icon{background:#e8f7ee;color:#177245}
.challenge-item-body{min-width:0;flex:1}
.challenge-item-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.challenge-item-title{font-size:13px}
.challenge-kind-badge{display:inline-block;margin-right:7px;padding:3px 7px;border-radius:999px;background:#eef3ff;color:#2454a6;font-size:9px;font-weight:800;letter-spacing:.04em;vertical-align:middle}
.challenge-item p{margin:5px 0 0;color:var(--portal-slate);white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}
.challenge-status{padding:3px 8px;border-radius:999px;font-size:10px;font-weight:800;white-space:nowrap}
.challenge-status--open{background:#fff0d1;color:#8a5a00}
.challenge-status--requested{background:#e7f0ff;color:#2454a6}
.challenge-status--resolved{background:#e8f7ee;color:#177245}
.challenge-meta{display:flex;flex-wrap:wrap;gap:5px 13px;margin-top:7px;color:var(--portal-muted);font-size:11px}
.challenge-meta b,.challenge-resolution b{color:var(--portal-slate);font-weight:750}
.challenge-audit{display:flex;flex-wrap:wrap;gap:5px 14px;margin-top:6px;color:var(--portal-muted);font-size:11px}
.challenge-audit b{color:var(--portal-slate);font-weight:750}
.challenge-resolution{margin-top:5px;color:#177245;font-size:11px}
.challenge-approval-pending,.challenge-approval-rejected{margin:0 0 10px;padding:9px 10px;border-radius:8px;display:grid;gap:3px;font-size:11px}
.challenge-approval-pending{background:#f4f7ff;border:1px solid #cbd8f6;color:#2454a6}
.challenge-approval-rejected{background:#fff8e8;border:1px solid #f3dfae;color:#8a5a00}
.challenge-approval-pending span,.challenge-approval-rejected span{color:var(--portal-slate)}
.challenge-approval-pending small,.challenge-approval-rejected small{color:var(--portal-muted)}
.challenge-response,.challenge-reviewer-remark{margin-top:10px;padding:10px 11px;border-radius:8px;font-size:12px}
.challenge-response{background:#f4f8ff;border:1px solid #d8e4fb}
.challenge-reviewer-remark{background:#fff8e8;border:1px solid #f3dfae}
.challenge-response p,.challenge-reviewer-remark p{margin:5px 0 0}
.challenge-event-time{display:block;margin-top:4px;color:var(--portal-muted);font-size:11px}
.challenge-remark-history{margin-top:10px;padding:10px 11px;border:1px solid #e2e7ee;border-radius:8px;background:#fbfcfe}
.challenge-remark-history-heading{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px;color:var(--portal-slate);font-size:12px}
.challenge-remark-history-heading span{color:var(--portal-muted);font-size:11px}
.challenge-remark-history-list{display:grid;gap:8px;max-height:260px;overflow-y:auto;padding-right:4px;scroll-behavior:smooth}
.challenge-remark-history-item{padding:9px 10px;border:1px solid #e2e7ee;border-radius:7px;background:#fff}
.challenge-remark-history-item>div{display:flex;justify-content:space-between;gap:10px;color:var(--portal-muted);font-size:10px}
.challenge-remark-history-item>div b{color:var(--portal-slate)}
.challenge-remark-history-item>div time{white-space:nowrap}
.challenge-remark-history-item>strong{display:block;margin-top:4px;font-size:11px}
.challenge-remark-history-item>p{margin:5px 0 0;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--portal-slate);font-size:12px}
.challenge-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.resolve-challenge{margin-top:9px}
.challenge-empty{margin:0;padding:14px 15px;font-size:12px}
.resolved-challenges{border-top:1px solid #e8edf2}
.resolved-challenges summary{padding:10px 15px;color:var(--portal-blue);font-size:12px;font-weight:750;cursor:pointer}
.resolved-challenges .challenge-list{background:#fbfcfe}
.requirement-response p,.requirement-reviewer-remark p{margin:5px 0 0;color:var(--portal-slate);white-space:pre-wrap}
.requirement-event-time{display:block;margin-top:4px;color:var(--portal-muted);font-size:11px;font-weight:600}
.requirement-file-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:7px}
.requirement-file-button{border:1px solid #cbd5e1;border-radius:7px;background:#fff;color:var(--portal-blue);padding:6px 9px;font-size:12px;cursor:pointer}
.requirement-file-button:hover{border-color:#8fa9e8;background:#f5f8ff}
.requirement-file-button span{color:var(--portal-muted);margin-left:4px}
.comments-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.comments-heading>div{display:flex;align-items:center;gap:9px}
.comments-heading .muted{font-size:12px}
.comment-list{display:grid;gap:8px;max-height:260px;overflow-y:auto;padding-right:6px}
.comment-item{padding:10px 12px;background:#fff;border:1px solid #e9edf2;border-radius:8px}
.comment-item p{margin:6px 0 0;color:var(--portal-slate);white-space:pre-wrap;overflow-wrap:anywhere}
.comment-meta{display:flex;justify-content:space-between;gap:14px;font-size:12px}
.comment-meta time{color:var(--portal-muted);white-space:nowrap}
.comment-empty{margin:0;padding:4px 0 8px;font-size:13px}
.comment-permission-note{margin:12px 0 0;padding:10px 12px;border:1px dashed #cbd5e1;border-radius:8px;color:var(--portal-muted);font-size:12px}
.comment-form{display:flex;align-items:flex-end;gap:8px;margin-top:12px}
.comment-form textarea{flex:1;min-height:42px;resize:vertical}
@media(max-width:800px){.comment-form{align-items:stretch;flex-direction:column}.comment-form .button{width:100%}}

/* Professional role-aware dashboard. */
.dashboard-shell{display:grid;gap:24px}
.dashboard-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;padding:28px 30px;border:1px solid #d5e0f8;border-radius:18px;background:linear-gradient(135deg,#fff 0%,#f2f6ff 100%);box-shadow:0 12px 30px #2f5bd30d}
.dashboard-hero h2{margin:2px 0 6px;font-size:27px;letter-spacing:-.04em}
.dashboard-hero p{margin-bottom:0;max-width:720px}
.dashboard-hero-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.dashboard-last-updated{color:var(--portal-muted);font-size:12px;white-space:nowrap}
.dashboard-kpis{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}
.dashboard-kpi{min-height:126px;padding:17px 16px;border:1px solid var(--portal-border);border-radius:14px;background:#fff;box-shadow:0 7px 20px #22314a08;display:flex;flex-direction:column;justify-content:space-between;gap:7px}
.dashboard-kpi-label{color:var(--portal-muted);font-size:11px;font-weight:800;letter-spacing:.02em;text-transform:uppercase}
.dashboard-kpi strong{font-size:29px;line-height:1;letter-spacing:-.045em;color:var(--portal-navy)}
.dashboard-kpi small{color:var(--portal-muted);font-size:11px;line-height:1.35}
.dashboard-kpi--success{border-color:#cce8d7;background:linear-gradient(180deg,#fff,#f5fcf7)}
.dashboard-kpi--success strong{color:var(--portal-success)}
.dashboard-kpi--alert{border-color:#f0d18f;background:linear-gradient(180deg,#fff,#fffaf0)}
.dashboard-kpi--alert strong{color:#a15b00}
.dashboard-kpi--review{border-color:#d7c9f0;background:linear-gradient(180deg,#fff,#faf7ff)}
.dashboard-kpi--review strong{color:#6941a5}
.dashboard-kpi--assigned{border-color:#cde1f6;background:linear-gradient(180deg,#fff,#f5faff)}
.dashboard-kpi--active strong{color:var(--portal-blue)}
.dashboard-signal-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.dashboard-signal-card{display:flex;align-items:flex-start;gap:13px;min-height:120px;padding:18px 20px;border:1px solid var(--portal-border);border-radius:14px;background:#fff}
.dashboard-signal-card p{margin:5px 0 0;color:var(--portal-muted);font-size:12px;line-height:1.4}
.dashboard-signal-card strong{display:block;margin-top:3px;font-size:24px;line-height:1}
.dashboard-signal-label{color:var(--portal-slate);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.dashboard-signal-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:10px;font-weight:900;flex:none}
.dashboard-signal-card--challenge{border-color:#f1d8a6}.dashboard-signal-card--challenge .dashboard-signal-icon{background:#fff0d1;color:#a15b00}.dashboard-signal-card--challenge strong{color:#a15b00}
.dashboard-signal-card--concern{border-color:#cddcf6}.dashboard-signal-card--concern .dashboard-signal-icon{background:#e9f0ff;color:#315dc7}.dashboard-signal-card--concern strong{color:#315dc7}
.dashboard-signal-card--requirement{border-color:#d7c9f0}.dashboard-signal-card--requirement .dashboard-signal-icon{background:#f2edff;color:#6941a5}.dashboard-signal-card--requirement strong{color:#6941a5}
.dashboard-signal-card--hold{border-color:#e0d7f3}.dashboard-signal-card--hold .dashboard-signal-icon{background:#f2edff;color:#6941a5}.dashboard-signal-card--hold strong{color:#6941a5}
.dashboard-main-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:18px}
.dashboard-panel{min-width:0;padding:22px;border:1px solid var(--portal-border);border-radius:16px;background:#fff;box-shadow:0 8px 26px #22314a08}
.dashboard-panel-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px}
.dashboard-panel-heading h2{margin:1px 0 4px;font-size:20px;letter-spacing:-.03em}
.dashboard-panel-heading p{margin:0;font-size:12px}
.dashboard-attention-list,.dashboard-recent-list{display:grid;gap:8px}
.dashboard-attention-item,.dashboard-recent-item{width:100%;display:flex;align-items:center;gap:11px;border:1px solid var(--portal-border-soft);border-radius:10px;background:#fff;color:var(--portal-navy);text-align:left;cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .16s ease}
.dashboard-attention-item{padding:12px 13px}
.dashboard-attention-item:hover,.dashboard-recent-item:hover{background:#f7faff;border-color:#b5c7f0;transform:translateY(-1px)}
.dashboard-attention-icon{display:flex;align-items:center;justify-content:center;width:27px;height:27px;border-radius:8px;flex:none;background:#eef2f7;color:#526175;font-weight:900}
.dashboard-attention--challenge .dashboard-attention-icon{background:#fff0d1;color:#a15b00}.dashboard-attention--concern .dashboard-attention-icon{background:#e9f0ff;color:#315dc7}.dashboard-attention--comment .dashboard-attention-icon{background:#e8f7ee;color:var(--portal-success)}
.dashboard-attention-body,.dashboard-recent-item>span:nth-child(2){display:grid;gap:2px;min-width:0;flex:1}
.dashboard-attention-body b,.dashboard-recent-item b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-attention-body small,.dashboard-recent-item small{color:var(--portal-muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-attention-status{color:var(--portal-blue);font-size:11px;font-weight:800;white-space:nowrap}
.dashboard-recent-item{padding:12px 13px}
.dashboard-recent-dot{width:8px;height:8px;border-radius:50%;background:#94a3b8;flex:none}.dashboard-recent-dot--closed{background:var(--portal-success)}.dashboard-recent-dot--on_hold{background:#a66b00}.dashboard-recent-dot--started,.dashboard-recent-dot--testing,.dashboard-recent-dot--scoping{background:var(--portal-blue)}
.dashboard-recent-item .status{font-size:10px}
.dashboard-projects-panel{padding:24px}
.dashboard-project-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.dashboard-project-card{padding:18px;border:1px solid var(--portal-border-soft);border-radius:13px;background:linear-gradient(180deg,#fff,#fbfcff);min-width:0}
.dashboard-project-card-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.dashboard-project-card h3{margin:3px 0 0;font-size:17px;letter-spacing:-.025em}.dashboard-project-card p{margin:10px 0 13px;font-size:12px;min-height:36px;line-height:1.45}.dashboard-progress-value{color:var(--portal-blue);font-weight:850;font-size:14px}
.dashboard-progress{height:7px;background:#e9eef5;border-radius:999px;overflow:hidden}.dashboard-progress span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#5277df,#2f5bd3)}
.dashboard-project-metrics{display:flex;flex-wrap:wrap;gap:6px;margin:13px 0 6px}.dashboard-project-metrics span{padding:4px 7px;border:1px solid #e6ebf2;border-radius:6px;background:#f5f7fa;color:var(--portal-muted);font-size:10px}.dashboard-project-metrics .dashboard-metric-alert{border-color:#f2d89e;background:#fff8e8;color:#9b620d}
.dashboard-open-project{padding-left:0;padding-right:0;min-height:32px}
.dashboard-empty{display:grid;gap:3px;padding:28px 12px;color:var(--portal-muted);text-align:center;border:1px dashed #cbd5e1;border-radius:10px}.dashboard-empty b{color:var(--portal-slate);font-size:13px}.dashboard-empty span{font-size:12px}
.dashboard-loading{display:grid;gap:15px}.dashboard-loading-bar{display:block;height:112px;border-radius:16px;background:linear-gradient(90deg,#edf1f7 0%,#f8fafc 50%,#edf1f7 100%);background-size:200% 100%;animation:dashboard-shimmer 1.4s infinite}.dashboard-loading-bar:nth-child(2){height:180px}.dashboard-loading-bar:nth-child(3){height:260px}@keyframes dashboard-shimmer{to{background-position:-200% 0}}
.dashboard-error{display:grid;gap:12px;padding:24px}.dashboard-error span{color:var(--portal-muted);font-size:13px}
@media(max-width:1120px){.dashboard-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1000px){.dashboard-signal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:800px){.dashboard-hero{flex-direction:column;padding:22px}.dashboard-hero-actions{justify-content:flex-start}.dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-signal-grid,.dashboard-main-grid{grid-template-columns:1fr}.dashboard-panel{padding:18px}.dashboard-projects-panel{padding:18px}.dashboard-attention-status{display:none}}
