.coverage-map{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);border:1px solid var(--navy);background:rgba(247,248,247,.88)}
.map-shell{position:relative;min-height:690px;border-right:1px solid var(--navy);overflow:hidden;background:linear-gradient(135deg,rgba(255,255,255,.85),rgba(222,229,233,.58))}
.map-shell:after{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--signal),transparent);opacity:.5;animation:map-scan 8s linear infinite;pointer-events:none}
.uk-map{display:block;width:100%;height:650px;margin:20px auto 0;overflow:visible}
.map-land{fill:rgba(13,42,67,.08);stroke:var(--navy);stroke-width:2.2;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.country-labels{fill:#82909a;font:700 12px/1 monospace;letter-spacing:2px}
.route-line{fill:none;stroke:var(--signal);stroke-width:2;stroke-dasharray:7 9;stroke-linecap:round;vector-effect:non-scaling-stroke;animation:route-flow 13s linear infinite}
.map-marker{color:var(--navy);opacity:0;animation:marker-in .55s cubic-bezier(.2,.7,.2,1) forwards}
.marker-leeds{animation-delay:.1s}.marker-york{animation-delay:.18s}.marker-goole{animation-delay:.26s}.marker-brandesburton{animation-delay:.34s}.marker-doncaster{animation-delay:.42s}.marker-langold{animation-delay:.5s}.marker-london{animation-delay:.58s}
.map-marker circle{fill:var(--paper);stroke:currentColor;stroke-width:3;vector-effect:non-scaling-stroke}
.map-marker line{stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke}
.map-marker text{fill:var(--navy);font:800 13px/1 monospace;letter-spacing:1px}
.map-marker--office{color:var(--signal)}.map-marker--office>circle:not(.marker-ring){fill:var(--signal)}
.map-marker .marker-ring{fill:none;stroke:var(--signal);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:office-pulse 2.8s ease-out infinite}
.map-key{position:absolute;left:22px;bottom:18px;display:flex;flex-wrap:wrap;gap:16px;background:rgba(247,248,247,.94);border:1px solid var(--navy);padding:10px 12px;font:700 .68rem/1 monospace;letter-spacing:.05em}
.map-key span{display:flex;align-items:center;gap:7px}.map-key i{display:block;width:10px;height:10px;border:2px solid var(--navy);border-radius:50%;background:var(--paper)}.map-key .office-key{border-color:var(--signal);background:var(--signal)}
.location-register{display:flex;flex-direction:column}.location-register article{display:grid;grid-template-columns:92px 1fr;gap:4px 18px;padding:22px 24px;border-bottom:1px solid var(--line);transition:background-color .25s,padding-left .25s}.location-register article:hover{background:white;padding-left:30px}.location-register article>span{grid-row:1/3;color:var(--signal);font:700 .64rem/1.3 monospace;letter-spacing:.07em}.location-register b{text-transform:uppercase;font-size:1.15rem}.location-register small{color:#5a6974;font-size:.82rem}.coverage-regions{margin-top:auto;padding:24px;background:var(--navy);color:white}.coverage-regions b,.coverage-regions span{display:block}.coverage-regions b{font:700 .65rem/1.2 monospace;letter-spacing:.12em;color:var(--signal);margin-bottom:10px}.coverage-regions span{font-size:.86rem;color:#c2cbd1}
.contact-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.contact-grid>*{min-width:0;overflow-wrap:anywhere}.contact-grid address{padding:25px 20px 0 0;color:#b7c4cd;font-style:normal;font-weight:400}.contact-grid address b{display:block;color:white;font:700 .68rem/1.2 monospace;letter-spacing:.1em;margin-bottom:10px}
@keyframes marker-in{from{opacity:0}to{opacity:1}}
@keyframes office-pulse{0%{opacity:.8;transform:scale(.55)}70%,100%{opacity:0;transform:scale(1.7)}}
@keyframes route-flow{to{stroke-dashoffset:-160}}
@keyframes map-scan{0%{transform:translateY(0)}100%{transform:translateY(690px)}}
@media(max-width:900px){.coverage-map{grid-template-columns:1fr}.map-shell{min-height:620px;border-right:0;border-bottom:1px solid var(--navy)}.uk-map{height:580px}.location-register article{grid-template-columns:88px 1fr}.contact-grid{grid-template-columns:1fr}.contact-grid address{border-bottom:1px solid #6e8190;padding-bottom:20px}}
@media(max-width:560px){.map-shell{min-height:480px}.uk-map{height:450px;margin-top:10px}.map-marker text{font-size:12px}.country-labels{font-size:11px}.map-key{left:12px;right:12px;bottom:10px;gap:10px}.location-register article{grid-template-columns:78px 1fr;padding:19px 17px}.location-register article:hover{padding-left:17px}.coverage-regions{padding:20px 17px}}
@media(prefers-reduced-motion:reduce){.map-shell:after,.route-line,.map-marker,.map-marker .marker-ring{animation:none!important}.map-marker{opacity:1}}
.coverage-copy .map-intro{color:#536473;font:400 1rem/1.5 Arial,Helvetica,sans-serif;letter-spacing:0;max-width:620px}
.map-tools{display:grid;grid-template-columns:140px minmax(260px,1fr) 1fr;gap:18px;align-items:center;padding:20px;border:1px solid var(--navy);border-bottom:0;background:var(--paper)}
.map-tools label{font:700 .75rem/1.3 monospace;letter-spacing:.05em}
.map-tools select{width:100%;padding:13px 36px 13px 12px;border:1px solid var(--navy);border-radius:0;background:white;color:var(--navy);font:400 1rem Arial,Helvetica,sans-serif;min-width:0}
.map-selection{margin:0;color:#536473;font-size:.9rem;line-height:1.5}
.coverage-map{align-items:start}.map-shell{min-height:780px}.uk-map{height:690px}
.map-marker{cursor:pointer;outline:none}.map-marker circle:not(.marker-ring):not(.marker-hit){fill:var(--navy)}
.map-marker--office circle:not(.marker-ring):not(.marker-hit){fill:var(--signal)}
.map-marker .marker-hit{fill:transparent;stroke:none;pointer-events:all}
.map-marker .marker-count{fill:white;font:700 12px/1 monospace;letter-spacing:0;pointer-events:none}
.map-marker.selected circle:not(.marker-ring):not(.marker-hit),.map-marker:focus-visible circle:not(.marker-ring):not(.marker-hit){fill:var(--signal);stroke:var(--signal);stroke-width:5}
.map-marker.selected>text:not(.marker-count),.map-marker:focus-visible>text:not(.marker-count){fill:#c93617}
.international-marker{position:absolute;top:22px;left:22px;display:flex;gap:12px;align-items:center;text-align:left;background:white;border:1px solid var(--navy);padding:13px 15px;color:var(--navy);cursor:pointer}
.international-marker b,.international-marker small{display:block}.international-marker b{font:700 .85rem monospace;letter-spacing:.08em}.international-marker small{font-size:.85rem;margin-top:3px;color:#536473}
.international-count{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--navy);color:white;font:700 1rem monospace}
.international-marker.selected,.international-marker:focus-visible{outline:3px solid var(--signal);outline-offset:2px}.international-marker.selected .international-count{background:var(--signal)}
.map-key{font-size:.75rem;line-height:1.3}.map-key small{flex-basis:100%;font:400 .75rem/1.4 Arial,Helvetica,sans-serif;color:#536473}
.location-register{position:relative;max-height:780px;overflow-y:auto;overscroll-behavior:contain;scrollbar-color:var(--signal) #dce2e6;scrollbar-width:thin}
.project-location{border-bottom:1px solid var(--line);padding:19px 24px;background:var(--paper);transition:background-color .2s}
.project-location summary{cursor:pointer;list-style-position:outside;margin-left:16px;padding:3px 0}.project-location summary b{font-size:1rem}.project-location summary span{display:block;font-size:.8rem;color:#536473;margin-top:3px}
.project-location ul{list-style:none;padding:10px 0 0;margin:0}.project-location li+li{border-top:1px solid #dde3e7}
.project-location li button{display:block;width:100%;text-align:left;font:400 .9rem/1.4 Arial,Helvetica,sans-serif;color:var(--navy);padding:11px 8px;border:0;background:transparent;cursor:pointer}
.project-location li button:hover,.project-location li button:focus-visible{background:#e5ebee;outline:2px solid var(--navy);outline-offset:-2px}
.project-location.selected{background:white;box-shadow:inset 4px 0 var(--signal)}.project-location li button.selected{color:#b92d11;font-weight:700;background:#fff1ec}
.london-boroughs .borough-group{padding:10px 0 4px}
.london-boroughs .borough-group h4{margin:0 8px 5px;color:#536473;font:700 .875rem/1.4 monospace;text-transform:uppercase;letter-spacing:.05em}
.london-boroughs .borough-group>ul{padding:0}
.contact-grid address small{display:block;font-size:.875rem;margin-top:5px}
@media(max-width:560px){.project-table .row--london>span:nth-child(3){display:block;grid-column:2;grid-row:2;color:#b4c0c8}.row--london{row-gap:4px}}
.coverage-map .map-shell{min-height:0}
.map-shell>.map-key{position:static;margin:18px;left:auto;right:auto;bottom:auto}
.london-map-panel{margin:0 18px;border:1px solid var(--navy);background:rgba(247,248,247,.97)}
.london-map-heading{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:15px 16px;border-bottom:1px solid var(--line)}
.london-map-heading h3{margin:0;font:700 .875rem/1.4 monospace;text-transform:uppercase;letter-spacing:.05em}
.london-map-heading span{font-size:.875rem;color:#536473}
.london-map{display:block;width:100%;height:auto;max-height:490px;overflow:visible}
.london-borough{fill:#e6ebee;stroke:#9aabb5;stroke-width:.6;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.london-borough--project{fill:#bdcdd8;stroke:#637e90}
.london-borough--office{fill:#ffdfd5;stroke:#d34c2e}
.london-borough.selected{fill:#ffb39f;stroke:var(--signal);stroke-width:2}
.london-map .map-marker{opacity:1;animation:none}
.london-map .map-marker line{stroke:#526675;stroke-width:1.2;pointer-events:none}
.london-map .map-marker>text:not(.marker-count){font:800 19px/1 monospace;letter-spacing:0;paint-order:stroke;stroke:var(--paper);stroke-width:4px;stroke-linejoin:round}
.london-map .map-marker .marker-count{font:700 16px/1 monospace;letter-spacing:0;fill:white;stroke:none}
.london-map .office-label{font-size:14px;fill:#b92d11}
.london-map .map-marker--office .borough-dot{fill:var(--signal);stroke:var(--signal)}
.london-map .map-marker--office .marker-ring{animation:none;opacity:.6;transform:none}
.london-map .map-marker .marker-hit{fill:transparent;stroke:none}
.london-map-note{margin:0;padding:10px 16px;border-top:1px solid var(--line);font-size:.875rem;color:#536473}
.map-attribution{margin:0;padding:0 16px 14px;color:#657580;font-size:.75rem;line-height:1.5}
.map-attribution a{color:inherit;text-underline-offset:2px}
.london-boroughs .borough-group.selected{background:#fff1ec;border-left:3px solid var(--signal)}
.london-boroughs .borough-group.selected h4{color:#b92d11}
@media(max-width:560px){.london-map-panel{margin:0 12px}.london-map-heading{padding:12px}.london-map .map-marker>text:not(.marker-count){font-size:28px;stroke-width:5px}.london-map .map-marker .marker-count{font-size:27px}.london-map .borough-dot{r:18px}.london-map .office-label{font-size:20px}.london-map .map-marker--office .marker-ring{r:25px}.london-map-note{padding:10px 12px}.map-attribution{padding:0 12px 12px}.map-shell>.map-key{margin:12px}}
@media(max-width:1100px){.map-tools{grid-template-columns:120px 1fr}.map-selection{grid-column:2}}
@media(max-width:900px){.map-shell{min-height:720px}.uk-map{height:640px}.location-register{max-height:none;overflow:visible}.map-tools{grid-template-columns:1fr;gap:10px}.map-selection{grid-column:1}.project-location{padding:18px 22px}.international-marker{top:18px;left:18px}}
@media(max-width:560px){.map-shell{min-height:575px}.uk-map{height:480px;margin-top:30px}.international-marker{top:12px;left:12px;padding:9px 11px;gap:8px}.international-marker b{font-size:.75rem}.international-marker small{font-size:.75rem}.international-count{width:26px;height:26px;font-size:.85rem}.map-tools{padding:16px}.map-key{font-size:.7rem}}

/* Borough detail stays within the UK coverage view. */
#uk-map-panel{height:720px;position:relative}
#uk-map-panel>.uk-map{width:72%;height:100%;margin:0}
#uk-map-panel>.london-map-inset{position:absolute;right:18px;bottom:18px;width:38%;max-width:430px;margin:0;border:1px solid #071524;background:#f7f8f7;box-shadow:0 4px 18px #07152420;display:flex;flex-direction:column;height:auto;overflow:hidden}
.london-map-inset .london-map{width:100%;height:auto;max-height:none;flex:none}
.london-map-inset .london-map-heading{padding:12px}.london-map-inset .london-map-note{padding:9px 12px;font-size:12px}.london-map-inset .map-attribution{padding:0 12px 10px;font-size:12px}
@media(max-width:700px){#uk-map-panel{height:820px}#uk-map-panel>.uk-map{width:100%;height:470px}#uk-map-panel>.london-map-inset{width:80%;max-width:360px;right:12px;bottom:12px}.london-map-inset .london-map{max-height:245px}.london-map-inset .london-map-heading h3,.london-map-inset .london-map-heading span{font-size:12px}}
