/* Project details popup */
.pulse-card[role="button"]{cursor:pointer;outline:none}
.pulse-card[role="button"]:focus-visible{box-shadow:0 0 0 3px rgba(47,128,201,.18);border-color:#8db8dd}
.pulse-card[role="button"] .pulse-title::after{content:"View details";font-size:8px;font-weight:800;color:var(--blue);position:absolute;right:0;top:24px;opacity:0;transform:translateY(-2px);transition:opacity .16s ease,transform .16s ease}
.pulse-card[role="button"]:hover .pulse-title::after,.pulse-card[role="button"]:focus-visible .pulse-title::after{opacity:1;transform:translateY(0)}
body.modal-open{overflow:hidden}
.project-modal{width:min(760px,calc(100vw - 28px));max-height:min(82vh,760px);padding:0;border:0;border-radius:16px;background:transparent;color:var(--ink);overflow:visible}
.project-modal::backdrop{background:rgba(15,35,61,.34);backdrop-filter:blur(4px)}
.project-modal-panel{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 70px rgba(15,45,78,.2);overflow:hidden;animation:modalIn .2s ease both}
.project-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:20px 22px 16px;border-bottom:1px solid var(--line-soft);background:linear-gradient(180deg,#fff,#f9fbfd)}
.project-modal-header h2{font-size:24px;margin:0 0 4px}.project-modal-sub{margin:0;color:var(--muted);font-size:11.5px}
.modal-close{width:36px;height:36px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy);font-size:24px;line-height:1;display:grid;place-items:center;transition:.16s ease}.modal-close:hover{background:#edf5fb;border-color:#bad0e3}
.project-modal-body{display:grid;grid-template-columns:1.2fr .8fr;gap:12px;padding:16px;background:#f7f9fc;max-height:62vh;overflow:auto}
.modal-section{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;min-width:0}.modal-contractors{border-top:3px solid var(--teal)}.modal-concerns{border-top:3px solid var(--coral)}
.modal-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.modal-section-head h3{margin:1px 0 0;font-size:14px}.modal-kicker{font-size:8px;letter-spacing:.12em;color:var(--muted);font-weight:850}.modal-count{display:grid;place-items:center;min-width:25px;height:25px;padding:0 7px;border-radius:999px;background:#eaf8f5;color:#168174;font-size:10px;font-weight:850}.modal-count.coral{background:#fff1ef;color:#bd4d46}
.modal-list{display:flex;flex-direction:column;gap:7px}.modal-contractor-row{display:grid;grid-template-columns:minmax(110px,1fr) minmax(100px,1.35fr) 48px;gap:9px;align-items:center;padding:9px 10px;border:1px solid var(--line-soft);border-radius:9px;background:#fbfcfe}.modal-row-copy{min-width:0}.modal-row-copy strong{display:block;font-size:11.5px;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-row-copy span{font-size:8.5px;color:var(--muted)}.modal-progress{height:6px;background:#e7edf3;border-radius:999px;overflow:hidden}.modal-progress-fill{height:100%;background:var(--teal);border-radius:999px;animation:barGrow .55s ease both}.modal-rate{font-size:10.5px;font-weight:850;text-align:right;color:#176f66}
.modal-concern-list{display:flex;flex-direction:column;gap:7px}.modal-concern-item{display:grid;grid-template-columns:24px minmax(0,1fr);gap:8px;align-items:center;padding:9px 10px;border:1px solid #f1dcda;background:#fff8f7;border-radius:9px}.modal-concern-item span{display:grid;place-items:center;width:22px;height:22px;border-radius:6px;background:#ffe8e6;color:#bb5049;font-size:9px;font-weight:850}.modal-concern-item strong{font-size:10.5px;color:#6d3330;line-height:1.25}.modal-empty{padding:18px 10px;text-align:center;border:1px dashed var(--line);border-radius:9px;color:var(--muted);font-size:10.5px;background:#fafbfd}
@keyframes modalIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:620px){.project-modal{width:calc(100vw - 16px);max-height:90vh}.project-modal-header{padding:15px 14px 12px}.project-modal-header h2{font-size:20px}.project-modal-sub{font-size:10px}.project-modal-body{grid-template-columns:1fr;padding:10px;max-height:72vh}.modal-section{padding:11px}.modal-contractor-row{grid-template-columns:minmax(90px,1fr) minmax(70px,1fr) 42px;gap:6px;padding:8px}.pulse-card[role="button"] .pulse-title::after{display:none}}
@media print{.project-modal{display:none!important}}
