.project-shell { overflow:hidden; }
.visually-hidden { position:absolute !important; width:1px !important; height:1px !important; padding:0 !important; margin:-1px !important; overflow:hidden !important; clip:rect(0 0 0 0) !important; white-space:nowrap !important; border:0 !important; }
.project-shell [id] { scroll-margin-top:112px; }
.project-shell-header { padding:72px 0 78px; }
.project-shell-header .breadcrumb { margin-bottom:42px; }
.project-header-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr); gap:8%; align-items:start; }
.project-header-copy h1 { max-width:820px; margin:8px 0 22px; font-size:clamp(42px,5.8vw,76px); }
.project-header-copy .project-subtitle { margin:0 0 18px; color:var(--blue); font:400 clamp(22px,2.2vw,31px) var(--serif); }
.project-header-copy .lead { max-width:760px; margin-bottom:26px; color:#405159; font-size:18px; line-height:1.68; }
.project-location { margin:0 0 12px; color:#405159; font:500 12px var(--mono); letter-spacing:.06em; text-transform:uppercase; }
.project-notice { padding:18px 20px; border-left:3px solid var(--sun); background:#ece7de; color:#445258; font-size:14px; line-height:1.6; }
.project-header-cta { display:grid; gap:13px; padding:28px; background:var(--ink); color:#fff; }
.project-header-cta h2 { margin:4px 0 5px; color:#fff; font-size:29px; }
.project-header-cta p { margin:0; color:#d8e0e2; font-size:14px; }
.project-header-cta .eyebrow { margin:0; color:#f5d894; }
.project-header-cta .button { width:100%; margin-top:8px; }
.project-status-update-image { display:block; width:100%; max-height:180px; margin-top:12px; border:1px solid rgba(255,255,255,.25); object-fit:cover; }
.project-group-link { display:inline-flex; justify-content:space-between; gap:12px; padding:12px 0 2px; border-top:1px solid rgba(255,255,255,.2); color:#fff; font-weight:700; font-size:13px; }

.project-snapshot { padding:38px 0; background:#e9e4da; border-block:1px solid #d0c9bd; }
.snapshot-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px; background:#cbc4b8; }
.snapshot-item { min-height:126px; padding:20px; background:#f8f5ef; }
.snapshot-item dt { margin-bottom:11px; color:var(--blue); font:500 10px var(--mono); letter-spacing:.09em; text-transform:uppercase; }
.snapshot-item dd { margin:0; color:var(--ink); font-size:14px; line-height:1.52; }
.snapshot-item dd strong { display:block; margin-bottom:4px; font:400 20px var(--serif); }
.status-badge { display:inline-flex; align-items:center; gap:7px; padding:5px 8px; border:1px solid var(--blue); color:var(--blue); font:600 11px var(--mono); text-transform:uppercase; }
.status-badge::before { content:""; width:7px; height:7px; border-radius:50%; background:var(--sun); }

.project-shell-section { padding:88px 0; }
.project-shell-section.alt { background:#e9e4da; }
.project-section-heading { display:grid; grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr); gap:8%; align-items:end; margin-bottom:36px; }
.project-section-heading h2 { margin:6px 0 0; }
.project-section-heading > p { max-width:650px; margin:0; color:#46565c; font-size:16px; line-height:1.65; }
.project-context-grid { display:grid; grid-template-columns:1.05fr .95fr; gap:22px; }
.context-panel { padding:28px; border:1px solid var(--line); background:#fffdfa; }
.context-panel h3 { margin:5px 0 14px; font-size:28px; }
.context-panel p:last-child { margin-bottom:0; }
.local-review-intro { margin-bottom:34px; padding:27px 28px; border-left:4px solid var(--sun); background:#fffdfa; }
.local-review-intro h2 { margin:7px 0 13px; font-size:clamp(30px,3vw,43px); }
.local-review-intro p { max-width:900px; color:#405159; }
.local-review-intro p:last-child { margin-bottom:0; font-weight:600; }
.crime-rank-list { display:grid; grid-template-columns:1fr 1fr; gap:10px 22px; margin:20px 0 0; }
.crime-rank-list dt { color:var(--blue); font:500 10px var(--mono); text-transform:uppercase; }
.crime-rank-list dd { margin:0; color:#34474f; }

.goal-list { display:grid; gap:18px; }
.project-goal { padding:28px; border:1px solid #c9ceca; background:#fffdfa; }
.project-goal-header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:22px; }
.project-goal h3 { margin:5px 0 0; font-size:clamp(25px,2.6vw,35px); }
.goal-status { flex:0 0 auto; max-width:220px; padding:7px 10px; border:1px solid var(--blue); color:var(--blue); font:600 10px var(--mono); letter-spacing:.04em; text-transform:uppercase; }
.goal-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1px; background:#d4d2cc; }
.goal-field { padding:17px; background:#f7f4ee; }
.goal-field dt { margin-bottom:6px; color:var(--blue); font:500 9px var(--mono); letter-spacing:.08em; text-transform:uppercase; }
.goal-field dd { margin:0; color:#405159; font-size:14px; line-height:1.55; }
.goal-actions { margin:18px 0 0; padding-left:19px; color:#33484f; }
.goal-actions li + li { margin-top:6px; }
.goal-related { margin:18px 0 0; }

.review-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.review-item { padding:23px; border:1px solid #cbc5ba; background:#f8f5ef; }
.review-item h3 { margin:4px 0 9px; font-size:23px; }
.review-item p { margin:0 0 10px; color:#4a5a60; font-size:14px; }
.review-item dl { margin:14px 0 0; }
.review-item dt { color:var(--blue); font:500 9px var(--mono); text-transform:uppercase; }
.review-item dd { margin:4px 0 12px; color:#43545a; font-size:13px; }

.approach-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px; background:#c8c2b7; }
.approach-step { min-height:235px; padding:24px; background:#fffdfa; }
.approach-step .step-number { color:var(--sun); font:500 11px var(--mono); }
.approach-step h3 { margin:38px 0 10px; font-size:24px; }
.approach-step p { margin:0; color:#4a5a60; font-size:14px; }

.progress-table-wrap { overflow-x:auto; border:1px solid #c8cdc9; background:#fffdfa; }
.progress-table { width:100%; border-collapse:collapse; min-width:900px; }
.progress-table th,.progress-table td { padding:15px 14px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; }
.progress-table th { background:var(--ink); color:#fff; font:500 10px var(--mono); letter-spacing:.05em; text-transform:uppercase; }
.progress-table td { color:#405159; font-size:13px; }
.progress-table tbody tr:last-child td { border-bottom:0; }
.progress-table td:first-child { color:var(--ink); font-weight:700; }
.progress-note { margin:18px 0 0; color:#536168; font-size:13px; }

.project-goal-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:24px; }
.project-goal-summary li { padding:18px; border:1px solid var(--line); background:#fffdfa; color:#405159; }
.project-goal-summary strong { display:block; margin-bottom:4px; color:var(--ink); }

.project-gallery-compact { margin-top:30px; }
.project-gallery-compact > div { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.project-gallery-compact figure { margin:0; }
.project-gallery-compact img { display:block; width:100%; height:220px; object-fit:cover; border:1px solid #c6cbc7; }
.project-gallery-compact figcaption { margin-top:8px; color:#55646a; font-size:12px; line-height:1.45; }
.project-media-note { max-width:850px; margin:18px 0 0; color:#56656a; font-size:13px; }

.site-progress-table { min-width:1500px; }
.site-progress-table td { min-width:125px; }
.site-progress-table td:first-child { min-width:165px; }
.site-progress-table .unknown { color:#657277; }
.site-progress-toggle { display:none; }

.funding-resources { margin-top:34px; padding:25px; border-left:4px solid var(--sun); background:#fffdfa; }
.funding-resources h3 { margin:5px 0 12px; font-size:28px; }
.funding-record { display:grid; grid-template-columns:1fr auto; gap:20px; align-items:start; margin-top:18px; padding-top:18px; border-top:1px solid var(--line); }
.funding-record h4 { margin:0 0 8px; font:400 21px var(--serif); }
.funding-record p { margin:0; color:#4d5d62; font-size:14px; }

.site-progress-message td { padding:24px; color:#536168 !important; text-align:center; }
.project-action-loading,.project-action-empty,.project-action-error,.site-report-error { margin:18px 0 0; padding:16px 18px; border-left:4px solid var(--sun); background:#fffdfa; color:#405159; line-height:1.55; }
.project-action-error,.site-report-error { border-left-color:#8a3022; }
.site-report-shell { min-height:92px; }
.site-report-loading,.site-report-access { margin:0; padding:24px; border:1px solid var(--line); background:#fffdfa; color:#405159; }
.site-report-access { display:flex; align-items:center; justify-content:space-between; gap:24px; }
.site-report-access p { margin:0; }
.site-report-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(300px,.8fr); gap:22px; align-items:start; }
.site-report-form,.site-report-listing { padding:26px; border:1px solid var(--line); background:#fffdfa; }
.site-report-form h3,.site-report-listing h3 { margin:6px 0 12px; font-size:28px; }
.site-report-form > p:not(.eyebrow):not(.site-report-status):not(.site-report-file-note) { margin:0 0 18px; color:#536168; line-height:1.55; }
.site-report-form label { display:block; margin-top:16px; color:var(--ink); font-size:13px; font-weight:700; }
.site-report-form label span { color:#657277; font-weight:400; }
.site-report-form select,.site-report-form textarea,.site-report-form input[type="file"] { display:block; box-sizing:border-box; width:100%; margin-top:7px; padding:11px; border:1px solid #b9c4c4; background:#fff; color:var(--ink); font:400 15px var(--sans); }
.site-report-form textarea { min-height:132px; line-height:1.55; resize:vertical; }
.site-report-file-note { margin:8px 0 0; color:#617176; font-size:12px; line-height:1.5; }
.site-report-preview { display:block; width:min(100%,420px); max-height:320px; margin-top:16px; border:1px solid #c8cfcd; object-fit:contain; background:var(--ink); }
.site-report-existing-image { padding:12px; border-left:3px solid var(--sun); background:#f1ede4; font-weight:500 !important; }
.site-report-existing-image input { margin-right:8px; }
.site-report-form-actions,.site-report-card-actions { display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-top:18px; }
.site-report-form-actions .button { margin:0; }
.site-report-status { min-height:1.35em; margin:14px 0 0; color:#30464d; font-weight:700; line-height:1.5; }
.site-report-status:not(:empty) { padding:10px 12px; border-left:4px solid var(--sun); background:#fff3d8; }
.site-report-status[data-state="error"] { border-left-color:#8a3022; }
.site-report-card { padding:18px 0; border-top:1px solid var(--line); }
.site-report-card:first-child { padding-top:0; border-top:0; }
.site-report-details { margin:10px 0; color:#405159; line-height:1.58; white-space:pre-wrap; }
.site-report-image { display:block; width:100%; max-height:300px; margin-top:12px; border:1px solid #c8cfcd; object-fit:contain; background:var(--ink); }
.site-report-date { margin:12px 0 0; color:#657277; font-size:12px; }
.site-report-delete-confirm { margin-top:14px; padding:13px; border-left:4px solid #8a3022; background:#f6ece8; }
.site-report-delete-confirm p { margin:0 0 10px; color:#4e302a; font-weight:700; }
.site-report-delete-confirm .text-button + .text-button { margin-left:12px; }
.site-report-empty { margin:0; color:#536168; line-height:1.55; }

.project-records-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.project-record-card { padding:25px; border:1px solid var(--line); background:#fffdfa; }
.project-record-card h3 { margin:5px 0 12px; font-size:26px; }
.project-record-card p,.project-record-card li { color:#46575d; font-size:14px; }
.project-record-card ul { margin:0; padding-left:19px; }
.project-record-date { color:var(--blue); font:500 10px var(--mono); letter-spacing:.07em; text-transform:uppercase; }
.project-resources { padding:88px 0; background:#f1ede4; }
.project-resources > .content-width > h2 { margin-bottom:12px; }
.project-resources-intro { max-width:780px; margin-bottom:30px; color:#46565c; }
.issue-action-card .issue-stage-gauge { display:none; }
[data-project-action-model="live-options"] .issue-action-card .issue-stage-gauge { display:block; }

@media (max-width:960px) {
  .project-header-grid,.project-section-heading,.project-context-grid,.site-report-grid { grid-template-columns:1fr; gap:28px; }
  .snapshot-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .approach-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .project-gallery-compact > div { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .project-section-heading { align-items:start; }
}

@media (max-width:700px) {
  .project-shell-header { padding:54px 0 60px; }
  .project-shell-header .breadcrumb { margin-bottom:30px; }
  .project-shell-section { padding:64px 0; }
  .snapshot-grid,.goal-fields,.review-list,.approach-grid,.project-goal-summary,.project-records-grid { grid-template-columns:1fr; }
  .project-goal-header,.funding-record { flex-direction:column; display:flex; }
  .goal-status { max-width:none; }
  .crime-rank-list { grid-template-columns:1fr; gap:6px; }
  .project-gallery-compact img { height:180px; }
  .progress-table-wrap { overflow-x:auto; }
  .site-progress-wrap { overflow:visible; border:0; background:transparent; }
  .site-progress-table { display:block; min-width:0; }
  .site-progress-table thead { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
  .site-progress-table tbody,.site-progress-table tr,.site-progress-table td { display:block; width:100%; }
  .site-progress-table tr { margin-bottom:16px; padding:18px; border:1px solid #c8cdc9; background:#fffdfa; }
  .site-progress-table td { display:grid; grid-template-columns:minmax(115px,.7fr) 1.3fr; gap:12px; min-width:0; padding:9px 0; border-bottom:1px solid var(--line); }
  .site-progress-table td::before { content:attr(data-label); color:var(--blue); font:500 9px var(--mono); letter-spacing:.05em; text-transform:uppercase; }
  .site-progress-table td:last-child { border-bottom:0; }
  .site-progress-table .site-progress-message { padding:0; }
  .site-progress-table .site-progress-message td { display:block; padding:18px; }
  .site-progress-table .site-progress-message td::before { display:none; }
  .site-progress-area-cell { display:block !important; padding:0 !important; border-bottom:0 !important; }
  .site-progress-area-cell::before { display:none; }
  .site-progress-area-desktop { display:none; }
  .site-progress-toggle { display:grid; grid-template-columns:1fr auto; gap:16px; align-items:center; width:100%; min-height:44px; padding:2px 0; border:0; background:transparent; color:var(--ink); text-align:left; cursor:pointer; }
  .site-progress-toggle-name { font:400 21px var(--serif); letter-spacing:-.03em; }
  .site-progress-toggle-icon { display:grid; width:30px; height:30px; place-items:center; border:1px solid var(--blue); color:var(--blue); font:500 20px/1 var(--sans); }
  .site-progress-item:not(.is-open) .site-progress-detail { display:none; }
  .site-progress-item.is-open .site-progress-area-cell { margin-bottom:8px; padding-bottom:12px !important; border-bottom:1px solid var(--line) !important; }
  .site-report-access { align-items:flex-start; flex-direction:column; }
  .site-report-form,.site-report-listing { padding:21px; }
}

@media (max-width:430px) {
  .project-header-cta,.project-goal,.context-panel,.local-review-intro,.project-record-card { padding:21px; }
  .project-gallery-compact > div { grid-template-columns:1fr; }
  .project-gallery-compact img { height:190px; }
  .site-progress-table td { grid-template-columns:1fr; gap:4px; }
}

@media (prefers-reduced-motion:reduce) {
  .project-shell * { scroll-behavior:auto !important; transition:none !important; animation:none !important; }
}
