/* Shared presentation only. Does not move controls, alter bindings or hide fields. */
.phicor-workspace { padding-top:1rem; }
.phicor-workspace h1 { font-size:clamp(1.65rem,2.4vw,2.15rem); font-weight:600; letter-spacing:-.025em; }
.phicor-workspace > p { color:#667181; max-width:78ch; line-height:1.6; }
.phicor-workspace .card,
.phicor-workspace > form[method="post"][class*="col-lg"],
.phicor-workspace > form[method="post"].mt-4,
.phicor-workspace > form[method="post"].mt-3,
.phicor-workspace > form[method="post"]:not([class]):not(:has(.table)):not(:has(fieldset.card)) {
    background:#fff; border:1px solid #dfe5d8; border-radius:12px;
    box-shadow:0 3px 12px rgba(44,60,30,.035);
}
.phicor-workspace > form[method="post"][class*="col-lg"],
.phicor-workspace > form[method="post"].mt-4,
.phicor-workspace > form[method="post"].mt-3,
.phicor-workspace > form[method="post"]:not([class]):not(:has(.table)):not(:has(fieldset.card)) { padding:1.5rem; margin-bottom:1.5rem; }
.phicor-workspace .card-body { padding:1.5rem; }
.phicor-back-navigation { margin:0 0 1rem; font-size:.9rem; }
.audit-history-table td { padding:1rem .75rem; vertical-align:top; }
.audit-history-table tbody tr + tr { border-top:1px solid #e7ebdf; }
.audit-history-table td:nth-child(2), .audit-reason { overflow-wrap:anywhere; min-width:160px; max-width:300px; }
.audit-record-type { display:block; color:#687463; font-size:.75rem; text-transform:uppercase; letter-spacing:.04em; margin-bottom:.35rem; }
.audit-history-table details.audit-technical { border:0; padding:0; margin-bottom:0; background:transparent; font-size:.8rem; }
.audit-technical summary { color:#687463; font-weight:500; }
.audit-technical dd { overflow-wrap:anywhere; font-size:.75rem; }
/* Explicit form sections: shared by create/edit screens, never applied to row-action forms. */
.phicor-form { width:100%; min-width:0; }
.phicor-form-narrow { max-width:900px; }
.jobcard-list-help { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.25rem; padding:1rem 1.25rem; background:#f0f5e8; border:1px solid #dce6cd; border-radius:10px; }
.jobcard-list-help p { margin:0; font-size:.85rem; line-height:1.6; color:#526249; }
.jobcard-list-help strong { color:#3e5730; }
.phicor-workspace form.jobcard-filter-panel { padding:0; background:#fff; border:1px solid #dfe5d8; border-radius:12px; overflow:hidden; }
.jobcard-filter-heading { padding:1.15rem 1.5rem; background:#f7f9f3; border-bottom:1px solid #e5eadf; }
.jobcard-filter-heading h2 { font-size:1.05rem; margin:0 0 .3rem; color:#43533b; }
.jobcard-filter-heading p { margin:0; font-size:.85rem; color:#687463; }
.jobcard-filter-grid { display:grid; grid-template-columns:minmax(0,2fr) minmax(130px,1fr) minmax(150px,1fr); gap:1.25rem; padding:1.5rem; align-items:end; }
.jobcard-filter-toggles { display:flex; flex-direction:column; gap:.7rem; padding-bottom:.3rem; }
.jobcard-filter-toggles label { display:flex; align-items:center; gap:.6rem; cursor:pointer; font-size:.9rem; }
.jobcard-filter-toggles input { margin:0; flex-shrink:0; }
.jobcard-filter-footer { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1rem 1.5rem; border-top:1px solid #e5eadf; }
@media(max-width:767.98px) { .jobcard-filter-grid { grid-template-columns:1fr 1fr; } .jobcard-filter-grid > div:first-child { grid-column:1/-1; } .jobcard-list-help { grid-template-columns:1fr; gap:.75rem; } }
@media(max-width:575.98px) { .jobcard-filter-grid { grid-template-columns:1fr; padding:1rem; } .jobcard-filter-heading, .jobcard-filter-footer { padding:1rem; } .jobcard-filter-footer { flex-wrap:wrap; } }
.product-planned-dates { padding:0 !important; border:1px solid #dfe5d8; border-radius:12px; background:#fff; overflow:hidden; }
.product-planned-dates > summary { padding:1.15rem 1.5rem; background:#f7f9f3; color:#43533b; font-size:1.1rem; font-weight:600; cursor:pointer; }
.product-planned-dates[open] > summary { border-bottom:1px solid #e5eadf; }
.product-save-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem; padding:1.25rem 1.5rem; background:#fff; border:1px solid #dfe5d8; border-radius:12px; margin-bottom:1rem; }
@media(max-width:575.98px) { .product-planned-dates > summary, .product-save-actions { padding:1rem; } }
.product-list-tabs .nav-link { color:#48611c; border:1px solid #dce5cc; background:#fff; }
.product-list-tabs .nav-link.active { color:#fff; background:#55771d; border-color:#55771d; }
.project-edit-heading { display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:1rem; }
.project-edit-heading > div { flex:1 1 340px; }
.project-edit-reference { color:#526a3f; font-size:.9rem; font-weight:600; overflow-wrap:anywhere; }
.project-edit-shortcuts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.project-edit-shortcuts > section { padding:1.15rem 1.25rem; border:1px solid #dfe5d8; border-radius:12px; background:#fff; display:flex; flex-direction:column; gap:.8rem; }
.project-edit-shortcuts h2 { font-size:1rem; font-weight:600; margin:0 0 .3rem; color:#43533b; }
.project-edit-shortcuts p { color:#687463; font-size:.85rem; margin:0; }
@media(max-width:575.98px) { .project-edit-shortcuts { grid-template-columns:1fr; } }
.overview-progress { background:#fff; border:1px solid #dfe5d8; border-radius:14px; overflow:hidden; box-shadow:0 3px 14px #2c3c1e08; }
.overview-progress > header { padding:1.4rem 1.5rem; background:#f7f9f3; border-bottom:1px solid #e5eadf; }
.overview-status { display:inline-flex; align-items:center; width:fit-content; padding:.35rem .75rem; border-radius:30px; font-size:.82rem; font-weight:700; line-height:1.4; }
.overview-status-complete { color:#17603d; background:#e6f4ec; border:1px solid #c5e3d2; }
.overview-status-pending { color:#5d4d26; background:#f8f2e3; border:1px solid #e8dbb8; }
.overview-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; padding:1.5rem; }
.overview-metrics > div { display:flex; flex-direction:column; gap:.35rem; padding:1rem; background:#f8faf6; border:1px solid #e6ebdf; border-radius:10px; }
.overview-metrics span { font-size:.8rem; color:#62705c; }
.overview-metrics strong { color:#33452d; font-size:1.9rem; line-height:1.25; font-variant-numeric:tabular-nums; }
.overview-metrics small { font-size:1rem; font-weight:400; color:#62705c; }
.overview-route-progress { padding:0 1.5rem 1.25rem; }
.overview-percent { color:#2d623e; font-size:1.5rem; }
.overview-route-progress .progress { height:.65rem; background:#edf1e7; }
.overview-checks { display:flex; flex-wrap:wrap; gap:.6rem; padding:0 1.5rem 1.25rem; }
.overview-checks > span { font-size:.8rem; border:1px solid #e3e8dc; border-radius:6px; padding:.45rem .65rem; color:#53614c; }
.overview-checks .overview-check-warning { color:#8b352c; background:#fff0ed; border-color:#e9c4bd; }
.overview-progress details.overview-count-details { margin:0; padding:1rem 1.5rem; border:0; border-top:1px solid #e5eadf; border-radius:0; background:#fafbf8; font-size:.85rem; }
.overview-count-details summary { font-weight:600; color:#48613a; cursor:pointer; }
.overview-company { padding:1rem; background:#f8faf6; border-radius:10px; border:1px solid #e4eadc; }
.overview-company-facts, .overview-contacts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin-bottom:0; }
.overview-company-facts dt, .overview-contacts dt { font-size:.75rem; font-weight:500; color:#687463; margin-bottom:.2rem; }
.overview-company-facts dd, .overview-contacts dd { overflow-wrap:anywhere; margin-bottom:.75rem; }
.overview-company-facts dd:last-child, .overview-contacts dd:last-child, .overview-contacts dl { margin-bottom:0; }
.overview-contacts article { min-width:0; padding:1rem; border:1px solid #e3e8dd; border-radius:10px; }
.overview-contacts h3 { font-size:.78rem; color:#5c7148; font-weight:600; margin-bottom:.65rem; }
.overview-contacts p { overflow-wrap:anywhere; }
.overview-batch-progress { display:flex; flex-direction:column; align-items:flex-start; gap:.5rem; min-width:150px; padding:.35rem 0; }
@media(max-width:767.98px) { .overview-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:575.98px) {
 .overview-metrics { padding:1rem; gap:.6rem; }
 .overview-progress > header, .overview-progress details.overview-count-details { padding:1rem; }
 .overview-route-progress { padding:0 1rem 1rem; }
 .overview-checks { padding:0 1rem 1rem; }
 .overview-contacts, .overview-company-facts { grid-template-columns:1fr; }
}
nav[aria-label="Project list"] .nav-link { color:#48611c; border:1px solid #dce5cc; background:#fff; }
nav[aria-label="Project list"] .nav-link.active { color:#fff; background:#55771d; border-color:#55771d; }
.customer-edit-layout { display:grid; grid-template-columns:minmax(0,3fr) minmax(240px,1fr); gap:1.5rem; align-items:start; }
.customer-edit-layout > .phicor-form { margin-bottom:0 !important; }
.customer-edit-layout .phicor-form-section { margin-bottom:0; }
.customer-save-bar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem; padding:1rem 1.5rem; border-top:1px solid #e5eadf; background:#fafbf8; }
.customer-contacts-table { padding:0 !important; border:0 !important; box-shadow:none !important; }
.customer-contacts-table td { padding-top:1rem; padding-bottom:1rem; }
.customer-delete-section { border:1px solid #e5dcd9; border-radius:12px; padding:1.25rem 1.5rem; background:#fff; }
.customer-delete-section summary { color:#854b45; font-weight:600; cursor:pointer; }
@media(max-width:991.98px) { .customer-edit-layout { grid-template-columns:1fr; } }
.phicor-form-layout { display:grid; grid-template-columns:minmax(0,2fr) minmax(240px,1fr); gap:1.5rem; align-items:start; }
.phicor-workspace .phicor-form { background:transparent !important; border:0 !important; box-shadow:none !important; padding:0 !important; margin-bottom:1.5rem; }
.phicor-form-section { background:#fff; border:1px solid #dfe5d8; border-radius:12px; overflow:hidden; margin-bottom:1.25rem; box-shadow:0 3px 12px rgba(44,60,30,.035); }
.phicor-form-section > header { padding:1.15rem 1.5rem; background:#f7f9f3; border-bottom:1px solid #e5eadf; }
.phicor-form-section > header h2 { font-size:1.1rem; font-weight:600; margin:0 0 .35rem; color:#43533b; }
.phicor-form-section > header p { margin:0; color:#687463; line-height:1.5; font-size:.9rem; }
.phicor-form-section-body { padding:1.5rem; }
.phicor-form-section-body > :last-child { margin-bottom:0 !important; }
.phicor-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem 1.5rem; align-items:start; }
.phicor-form-grid > .mb-3 { margin-bottom:0 !important; min-width:0; }
.phicor-form-grid > p, .phicor-form-grid > [role="status"], .phicor-form-full { grid-column:1/-1; }
.phicor-form-grid > input[type="hidden"] { display:none; }
.phicor-form-grid:has(> :last-child textarea) > :last-child { grid-column:1/-1; }
.phicor-form-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:.65rem; padding:1rem 0 .25rem; }
.phicor-form-guide { background:#eef4e4; border:1px solid #dae5c9; border-radius:12px; padding:1.5rem; color:#46583a; }
.phicor-form-guide h2 { font-size:1.1rem; margin:0 0 1rem; }
.phicor-form-guide ol { padding-left:1.25rem; margin-bottom:1.25rem; }
.phicor-form-guide li { padding-left:.25rem; margin-bottom:.85rem; }
.phicor-form-guide p { font-size:.9rem; margin:0; line-height:1.6; }
.phicor-workspace .role-edit-toolbar { position:static; margin-top:1.5rem; padding:1.25rem; border:1px solid #dfe5d8; border-radius:12px; background:#fff; box-shadow:none; }
.phicor-workspace .role-edit-toolbar > div { flex:1 1 100%; margin-bottom:.5rem !important; }
.phicor-workspace fieldset.card.card-body > legend { width:100%; padding:0 0 .85rem; margin:0 0 1.2rem; border-bottom:1px solid #e5eadf; color:#43533b; }
.phicor-workspace .card.card-body > h2 { padding-bottom:.75rem; border-bottom:1px solid #e5eadf; color:#43533b; }
.phicor-workspace form > label:not(.form-check-label) { display:block; font-size:.95rem; font-weight:500; margin-bottom:.45rem; }
@media(max-width:991.98px) { .phicor-form-layout { grid-template-columns:1fr; } }
@media(max-width:575.98px) {
 .phicor-form-grid { grid-template-columns:1fr; gap:1rem; }
 .phicor-form-section > header, .phicor-form-section-body, .phicor-form-guide { padding:1rem; }
 .phicor-form-actions { justify-content:flex-start; }
}
.route-version-eyebrow { color:#536b32; font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; margin:0 0 .4rem; }
.route-version-tag { color:#405a23; background:#eaf1de; border:1px solid #d7e3c5; padding:.55rem .8rem; border-radius:2rem; font-size:.85rem; font-weight:600; }
.route-version-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.25rem; margin:0; }
.route-version-facts dt { color:#687463; font-size:.85rem; font-weight:500; margin-bottom:.35rem; }
.route-version-facts dd { color:#384832; font-weight:600; margin:0; }
.route-version-explanation { display:flex; gap:1.5rem; justify-content:space-between; padding:1.5rem; border:1px solid #dce6cd; border-radius:12px; background:#f0f5e8; color:#425338; }
.route-version-explanation p { margin-bottom:.65rem; }
.route-step-code { display:inline-block; padding:.2rem .4rem; background:#f1f4eb; color:#52633e; border-radius:5px; font-size:.8rem; }
@media(max-width:575.98px) { .route-version-facts { grid-template-columns:1fr; } .route-version-explanation { flex-direction:column; padding:1rem; } }
.route-builder { display:grid; gap:1.5rem; }
.route-builder-step { background:#fff; border:1px solid #dfe6d8; border-radius:12px; overflow:hidden; }
.route-builder-step > header { display:flex; align-items:flex-start; gap:1rem; padding:1.25rem 1.5rem; background:#f5f8ef; border-bottom:1px solid #e4e9dd; }
.route-builder-step h2 { font-size:1.15rem; margin:0 0 .35rem; }
.route-builder-step header p { color:#617064; margin:0; font-size:.9rem; }
.route-step-number { display:grid; place-items:center; background:#e4edce; color:#405a23; font-weight:700; width:2rem; height:2rem; border-radius:50%; flex-shrink:0; }
.route-builder-form, .route-builder-content { padding:1.5rem; margin:0; }
.route-builder-content .route-builder-form { padding:0; }
.route-section-actions { display:flex; justify-content:flex-end; margin-top:1rem; }
.route-add-work { display:flex; align-items:flex-end; gap:.75rem; padding-top:1.25rem; margin-top:1rem; border-top:1px solid #e4e9dd; }
.route-step-controls { min-width:180px; }
.route-order { display:inline-grid; place-items:center; min-width:1.8rem; height:1.8rem; background:#f0f4e8; border-radius:6px; color:#405a23; font-weight:600; }
.route-version-row { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.5rem; padding:1rem 0; border-top:1px solid #e4e9dd; }
@media(max-width:575.98px) {
 .route-builder-step > header, .route-builder-form, .route-builder-content { padding:1rem; }
 .route-add-work { flex-direction:column; align-items:stretch; }
}
.phicor-workspace .validation-summary-errors,
.phicor-auth-card .validation-summary-errors {
 background:#fff4f2; color:#8e2525; border:1px solid #ebc5bf;
 border-radius:8px; padding:1rem 1.25rem; margin:0 0 1.25rem; font-size:.9rem;
}
.validation-summary-errors::before { content:"Please check the following:"; display:block; font-weight:700; margin-bottom:.5rem; }
.validation-summary-errors ul { margin:0; padding-left:1.2rem; }
.validation-summary-errors li + li { margin-top:.3rem; }
.validation-summary-valid, .field-validation-valid { display:none; }
.phicor-workspace .field-validation-error,
.phicor-auth-card .field-validation-error { display:block; margin-top:.35rem; color:#a52b2b !important; font-size:.875rem; line-height:1.45; }
.phicor-workspace .input-validation-error { border-color:#bb4444; background-color:#fffafa; }
.validation-summary-errors:focus { outline:2px solid #a52b2b; outline-offset:3px; }
.phicor-back-navigation a { display:inline-flex; align-items:center; gap:.45rem; }
.phicor-workspace fieldset.card > legend { float:none; width:auto; margin-bottom:.8rem; font-weight:600; }
.phicor-workspace fieldset.card:not(.card-body) > legend { padding:.8rem 1.5rem 0; }

/* Role permission groups: keep the semantic legend, styled as a real panel header. */
.phicor-workspace form:has(input[name="Input.PermissionCodes"]) fieldset.card,
.phicor-workspace #role-edit-form fieldset.card {
 display:block; padding:0; border:1px solid #dfe6d8; border-radius:12px; overflow:hidden;
 background:#fff; box-shadow:0 2px 8px rgba(44,60,30,.025);
}
.phicor-workspace form:has(input[name="Input.PermissionCodes"]) fieldset.card > legend,
.phicor-workspace #role-edit-form fieldset.card > legend {
 float:left; width:100%; margin:0; padding:1rem 1.25rem;
 background:#f0f5e8; color:#3e542d; border:0; border-bottom:1px solid #dfe6d8;
 font-size:1rem; font-weight:700; line-height:1.4;
}
.phicor-workspace form:has(input[name="Input.PermissionCodes"]) fieldset.card > .card-body,
.phicor-workspace #role-edit-form fieldset.card > .card-body { clear:both; padding:.5rem 1.25rem; }
.phicor-workspace form:has(input[name="Input.PermissionCodes"]) fieldset.card .form-check,
.phicor-workspace #role-edit-form fieldset.card .form-check {
 position:relative; margin:0 !important; padding:.9rem .5rem .9rem 2rem; border-radius:6px;
}
.phicor-workspace form:has(input[name="Input.PermissionCodes"]) fieldset.card .form-check + .form-check,
.phicor-workspace #role-edit-form fieldset.card .form-check + .form-check { border-top:1px solid #edf0e8; }
.phicor-workspace form:has(input[name="Input.PermissionCodes"]) fieldset.card .form-check:has(:checked),
.phicor-workspace #role-edit-form fieldset.card .form-check:has(:checked) { background:#f7faf2; }
.phicor-workspace form:has(input[name="Input.PermissionCodes"]) fieldset.card .form-check-label,
.phicor-workspace #role-edit-form fieldset.card .form-check-label { display:block; cursor:pointer; }
.phicor-workspace form:has(input[name="Input.PermissionCodes"]) fieldset.card .form-check-label .text-muted,
.phicor-workspace #role-edit-form fieldset.card .form-check-label .text-muted { display:inline-block; margin-top:.2rem; font-size:.9rem; }
.phicor-workspace .form-label { font-weight:500; margin-bottom:.45rem; }
.phicor-workspace .form-control,.phicor-workspace .form-select { border-radius:7px; }
.phicor-workspace textarea.form-control { min-height:5rem; }
.phicor-workspace > form[method="get"]:not(.phicor-table-tools) { background:#fff; border:1px solid #dfe5d8; border-radius:12px; padding:1rem; margin-left:0; margin-right:0; }
.phicor-workspace > .table-responsive,
.phicor-workspace > section > .table-responsive { background:#fff; border:1px solid #dfe5d8; border-radius:12px; padding:.75rem; }
.phicor-workspace table { margin-bottom:0; }
.phicor-workspace table thead th { color:#465443; font-weight:600; border-bottom-color:#dfe5d8; }
.phicor-workspace .btn { border-radius:7px; }
.phicor-workspace > div.d-flex:has(h1) { gap:1rem; flex-wrap:wrap; }
.phicor-workspace .form-check { margin-bottom:.45rem; }
.phicor-workspace details { background:#fff; border:1px solid #dfe5d8; border-radius:12px; padding:1rem; margin-bottom:1rem; }
.phicor-workspace summary { font-weight:600; cursor:pointer; }
@media(max-width:575.98px) {
 .phicor-workspace .card-body,
 .phicor-workspace > form[method="post"][class*="col-lg"],
 .phicor-workspace > form[method="post"].mt-4,
 .phicor-workspace > form[method="post"].mt-3,
 .phicor-workspace > form[method="post"]:not([class]):not(:has(.table)):not(:has(fieldset.card)) { padding:1rem; }
 .phicor-workspace > form.d-flex { flex-wrap:wrap; }
 .phicor-workspace .phicor-table-tools { flex-wrap:wrap; }
}
