.nav-portal{border:1px solid var(--ink);padding:12px 16px;white-space:nowrap}header nav{gap:22px}.portal-shell{width:min(1440px,calc(100% - 64px));margin:24px auto 70px}.preview-banner{background:#e8efcf;border:1px solid #cbd8a8;padding:12px 18px;display:flex;gap:18px;align-items:center;font-size:12px}.preview-banner b{white-space:nowrap;font-size:10px;letter-spacing:.1em}.portal-heading{display:flex;align-items:center;justify-content:space-between;padding:36px 0 22px}.portal-heading .eyebrow{margin:0 0 12px}.portal-heading h1{font-size:clamp(38px,5vw,68px);margin-bottom:12px}.portal-heading p{margin-bottom:0}.portal-back{font-size:13px}.role-picker{display:flex;gap:8px;margin-bottom:22px;flex-wrap:wrap}.role-picker button{border:1px solid #c9cec0;padding:12px 20px;background:transparent;cursor:pointer;font-size:13px;font-weight:600}.role-picker button[aria-pressed=true]{background:var(--ink);color:var(--lime);border-color:var(--ink)}.portal-grid{display:grid;grid-template-columns:220px minmax(0,1fr);border:1px solid #d3d8c9;background:#fafbf7;min-height:630px}.portal-sidebar{background:#172019;color:#ecf0e7;padding:24px 16px;display:flex;flex-direction:column}.portal-profile{padding:4px 10px 24px;border-bottom:1px solid #394438;margin-bottom:22px}.avatar{display:flex;background:var(--lime);color:#172019;width:44px;height:44px;align-items:center;justify-content:center;font-weight:700;border-radius:50%;margin-bottom:12px}.portal-profile b,.portal-profile small{display:block}.portal-profile small{color:#b6c1b0;font-size:12px}.portal-sidebar nav{display:flex;flex-direction:column;align-items:stretch;gap:5px}.portal-sidebar nav button{background:none;border:0;color:#c2cdba;text-align:left;padding:12px;font-size:13px;cursor:pointer}.portal-sidebar nav button.active{background:#33412e;color:var(--lime);border-left:3px solid var(--lime)}.sidebar-note{font-size:11px;color:#a6b4a1;margin:35px 10px 0;line-height:1.7}.portal-main{padding:30px;min-width:0}.dashboard-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:26px}.dashboard-heading p{font-size:10px;letter-spacing:.12em;font-weight:700;color:#66755e;margin:0 0 9px}.dashboard-heading h2{font-size:36px;margin:0}.sample-chip{padding:6px 10px;border:1px solid #d1d7c7;font-size:10px;white-space:nowrap}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}.stat-card{border:1px solid #d7ddcf;padding:17px;background:white}.stat-card small{display:block;color:#63715b;font-size:11px}.stat-card strong{display:block;font-size:30px;margin:7px 0 2px;line-height:1.2}.stat-card span{font-size:10px;color:#75816e}.panel-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:18px}.portal-panel{background:white;border:1px solid #d7ddcf;padding:22px;margin-bottom:18px}.portal-panel h3{font-size:24px;margin-bottom:18px}.panel-top{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.panel-top small{font-size:10px;color:#738268}.job-row{padding:15px 0;border-top:1px solid #e4e8de;display:flex;gap:12px;justify-content:space-between;align-items:center}.job-row b{font-size:13px;display:block}.job-row small{font-size:11px;display:block;color:#77806f;line-height:1.7}.badge{font-size:10px;padding:5px 8px;background:#eaf1dc;white-space:nowrap;display:inline-block}.badge.warning{background:#fff0d1;color:#85621f}.portal-action{padding:9px 12px;background:var(--lime);border:0;color:var(--ink);cursor:pointer;font-size:11px;font-weight:700;white-space:nowrap}.portal-action.secondary{background:#f0f2eb;border:1px solid #d6dccf}.portal-action:disabled{opacity:.6;cursor:default}.action-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.task-list{list-style:none;padding:0;margin:0}.task-list li{border-top:1px solid #e4e8de;padding:12px 0;font-size:12px}.task-list small{display:block;color:#788571;font-size:10px;margin-top:4px}.hours-input{width:78px;padding:8px;border:1px solid #cdd5c3}.portal-panel label{font-size:12px;display:block}.portal-table-wrap{overflow-x:auto}.portal-table{width:100%;border-collapse:collapse;font-size:12px}.portal-table th{text-align:left;font-weight:500;font-size:10px;color:#748169;padding:10px;border-bottom:1px solid #d8dfcf}.portal-table td{padding:14px 10px;border-bottom:1px solid #e8ece2}.portal-table caption{text-align:left;font-size:12px;margin-bottom:12px}.portal-note{font-size:12px;color:#69775f;line-height:1.7}.availability-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:16px}.availability-day{background:#f2f4ed;border:1px solid #dbe0d2;padding:12px 4px;text-align:center;cursor:pointer;font-size:11px;min-height:64px}.availability-day small{display:block;font-size:9px;margin-top:5px}.availability-day.available{background:#e7f1d1;border-color:#bdd58c}.access-explainer{margin-top:35px;padding:28px;border-top:1px solid #d0d8c5}.access-explainer h2{font-size:30px}.access-explainer>div{display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.access-explainer p{font-size:12px}.portal-status,#portal-status{font-size:12px;background:#ecf2dd;padding:10px;margin:15px 0 0}#portal-status:empty{display:none}.portal-progress{height:8px;background:#ecf0e4;border-radius:8px;margin:12px 0 16px;overflow:hidden}.portal-progress span{display:block;height:100%;background:#a5c35f}.call-sheet{display:grid;grid-template-columns:1fr 1fr;gap:16px;font-size:13px}.call-sheet small{display:block;color:#7a8670;font-size:10px}.portal-shell input[type=file]{max-width:100%;font-size:12px;margin-top:12px}@media(max-width:1050px){header nav{gap:12px}.stat-grid{grid-template-columns:repeat(2,1fr)}.panel-grid{grid-template-columns:1fr}.portal-main{padding:22px}.portal-grid{grid-template-columns:190px minmax(0,1fr)}}@media(max-width:700px){.portal-shell{width:calc(100% - 28px);margin-top:14px}.preview-banner{display:block}.preview-banner span{display:block;margin-top:5px}.portal-heading{padding:24px 0}.portal-heading p{font-size:12px}.portal-back{display:none}.role-picker button{flex:1;padding:10px 8px;font-size:11px}.portal-grid{display:block}.portal-sidebar{padding:12px}.portal-profile{display:none}.portal-sidebar nav{flex-direction:row;flex-wrap:wrap;gap:4px}.portal-sidebar nav button{padding:9px;font-size:11px}.sidebar-note{display:none}.portal-main{padding:16px}.dashboard-heading h2{font-size:28px}.stat-card{padding:12px}.stat-card strong{font-size:26px}.portal-panel{padding:15px}.availability-grid{grid-template-columns:repeat(4,1fr)}.access-explainer{padding:18px 0}.access-explainer>div{grid-template-columns:1fr;gap:5px}.job-row{align-items:flex-start}.call-sheet{grid-template-columns:1fr 1fr}}
/* Keep dashboard navigation independent of the website's mobile menu. */
.portal-sidebar #portal-nav{position:static;inset:auto;padding:0;background:transparent;border:0;display:flex}.portal-sidebar #portal-nav button{white-space:normal}
[hidden]{display:none!important}.sidebar-signout{font-size:12px;color:#c7d5bd;margin:24px 10px 0}.invoice-item{border-top:1px solid #dce3d2;padding:12px 0 24px}.review-form,.ops-form{background:#f0f4e9;padding:20px;margin-top:16px}.review-form label{margin-bottom:12px}.review-form textarea{width:100%}.review-note{background:#fff2d5;padding:12px;font-size:12px;white-space:pre-wrap}.enquiry-brief{white-space:pre-wrap;font-size:13px}.ops-inline{display:flex;gap:12px;align-items:end;background:transparent;padding:0}.ops-inline label{margin:0}.ops-inline select,.ops-form select{display:block;border:1px solid #c7d0bb;padding:10px;background:white;margin-top:8px;font:inherit}.ops-form input{background:white}#ops-status{font-size:13px;white-space:pre-wrap}#ops-status:empty{display:none}
.ops-view-controls{display:flex;gap:18px;align-items:end;flex-wrap:wrap;background:#e9efdc;border:1px solid #ced8bd;padding:16px 20px;margin-bottom:22px}.ops-view-controls label{margin:0;font-size:12px}.ops-view-controls select{display:block;max-width:100%;padding:9px;border:1px solid #c4cfb7;background:#fff;margin-top:5px;font:inherit}.ops-view-controls p{flex-basis:100%;margin:0}.calendar-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;font-size:14px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid #d8dfce;border-top:1px solid #d8dfce;margin:15px 0}.calendar-weekday{padding:8px;text-align:center;border-bottom:1px solid #d8dfce;border-right:1px solid #d8dfce;font-size:10px;font-weight:700;background:#f2f5eb}.calendar-day{border-right:1px solid #d8dfce;border-bottom:1px solid #d8dfce;min-height:82px;padding:6px;min-width:0}.calendar-day>span{display:block;font-size:11px;margin-bottom:5px}.calendar-day.today{box-shadow:inset 0 0 0 2px #8aab51}.calendar-day.empty{background:#f7f9f2}.calendar-job{display:block;width:100%;border:0;border-left:3px solid;padding:5px;margin-top:4px;text-align:left;cursor:pointer;font-size:10px;overflow-wrap:anywhere;line-height:1.25}.calendar-legend{display:flex;gap:7px;flex-wrap:wrap;font-size:10px}.calendar-legend span{padding:4px 8px}.tentative{background:#fff0ca;color:#725019}.confirmed{background:#e4efc7;color:#365316}.completed{background:#e6eae2;color:#536049}.cancelled{background:#f6e0db;color:#8c392b}.portal-action[disabled]{opacity:.55;cursor:default}@media(max-width:700px){.calendar-day{min-height:64px;padding:3px}.calendar-job{font-size:9px;padding:3px}.calendar-top{font-size:12px}.ops-view-controls{padding:12px}.ops-view-controls label{flex:1;min-width:180px}}
.quoted{background:#f6e5b7;color:#6a511d}.awaiting_confirmation{background:#dceafb;color:#31557e}.ops-form input[type=checkbox]{display:inline-block;width:auto;margin-right:7px}.ops-inline select{max-width:100%}

.agent-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.agent-board .portal-panel{margin:0}.agent-task,.agent-history{padding:16px 0;border-bottom:1px solid #ddd;overflow-wrap:anywhere}.agent-task small,.agent-history small,.agent-areas small{display:block;margin:8px 0;color:#666}.agent-task button{margin-top:10px}.agent-areas{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.agent-history p{font-size:12px} @media(max-width:700px){.agent-board{grid-template-columns:1fr}.agent-areas{grid-template-columns:repeat(2,minmax(0,1fr))}}
