:root{--green:#0b4d3b;--green-2:#12634d;--cream:#f5f7f2;--ink:#18302a;--muted:#60726d;--gold:#f0b429;--line:#dce5e0;--shadow:0 14px 36px rgba(14,48,39,.16)}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--cream);color:var(--ink);font-family:"Segoe UI",Roboto,Arial,sans-serif}button,input{font:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:9999;left:1rem;top:-5rem;padding:.75rem 1rem;background:#fff;color:var(--green);border-radius:.5rem}.skip-link:focus{top:1rem}
.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:var(--green);color:#fff;position:relative;z-index:50}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border:2px solid rgba(255,255,255,.75);border-radius:12px;color:var(--gold);font-weight:900}.brand strong,.brand small{display:block}.brand strong{font-size:1.08rem}.brand small{margin-top:2px;color:#d6ebe4;font-size:.82rem}.help-button{border:1px solid rgba(255,255,255,.35);border-radius:999px;background:rgba(255,255,255,.1);color:#fff;padding:10px 15px;font-weight:700;cursor:pointer}.help-button:hover,.help-button:focus-visible{background:#fff;color:var(--green);outline:none}
.app-shell{height:calc(100vh - 72px);display:grid;grid-template-columns:350px 1fr}.directory{display:flex;flex-direction:column;background:#fff;border-right:1px solid var(--line);position:relative;z-index:20;min-height:0}.directory-head{padding:24px 22px 16px;border-bottom:1px solid var(--line)}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--green-2);font-size:.72rem;font-weight:800;margin:0 0 7px}.directory h1{font-size:1.75rem;line-height:1.1;margin:0 0 8px;letter-spacing:-.035em}.directory-head>p:not(.eyebrow){color:var(--muted);font-size:.94rem;line-height:1.45;margin:0 0 16px}.search-box{display:flex;align-items:center;gap:10px;border:2px solid var(--line);border-radius:12px;padding:0 12px;background:#fafcfb}.search-box:focus-within{border-color:var(--green-2);box-shadow:0 0 0 3px rgba(18,99,77,.12)}.search-box i{color:var(--green-2)}.search-box input{width:100%;height:44px;border:0;outline:0;background:transparent;color:var(--ink);font-size:1rem}.directory-summary{margin-top:12px;color:var(--muted);font-size:.82rem}.directory-summary strong{color:var(--green)}.area-list{padding:9px 12px 18px;overflow:auto;scrollbar-color:#b9c8c1 transparent}.area-item{width:100%;border:0;background:transparent;display:grid;grid-template-columns:16px 1fr auto;align-items:center;gap:11px;text-align:left;padding:10px;border-radius:10px;color:var(--ink);cursor:pointer;min-height:44px}.area-item:hover,.area-item:focus-visible,.area-item.active{background:#edf5f1;outline:none}.area-item.active{box-shadow:inset 3px 0 var(--green)}.area-dot{width:14px;height:14px;border-radius:4px;border:1px solid rgba(0,0,0,.22)}.area-name{font-size:.94rem;font-weight:650}.area-kind{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.empty-list{padding:28px 12px;text-align:center;color:var(--muted)}.source-note{border-top:1px solid var(--line);padding:13px 18px;color:var(--muted);font-size:.73rem;line-height:1.4;background:#fafcfb}.source-note i{color:var(--green-2);margin-right:4px}
.back-button{border:0;background:transparent;color:var(--green);padding:0 0 14px;font-weight:750;cursor:pointer}.back-button:hover,.back-button:focus-visible{text-decoration:underline;outline:none}.street-item{grid-template-columns:30px 1fr auto}.street-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:#e8f2ed;color:var(--green);font-size:.76rem}.street-cep{font-size:.7rem;color:var(--muted);white-space:nowrap}.street-sign{position:relative;min-width:300px;max-width:380px;padding:17px 22px 16px;color:#fff;background:linear-gradient(155deg,#1266a8,#064d86);border:4px solid #fff;border-radius:12px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.2),0 12px 28px rgba(4,34,58,.3);text-align:center}.sign-bolt{position:absolute;top:11px;width:7px;height:7px;border-radius:50%;background:#d9e0e4;box-shadow:inset 0 0 0 1px #8a979f}.bolt-left{left:11px}.bolt-right{right:11px}.sign-city{display:block;font-size:.68rem;font-weight:800;letter-spacing:.18em;color:#cfeaff}.sign-type{display:block;margin-top:6px;font-size:.65rem;text-transform:uppercase;letter-spacing:.12em;color:#d7ebfa}.sign-street{display:block;margin:4px auto 11px;font-size:1.18rem;line-height:1.18;text-transform:uppercase;text-wrap:balance;text-shadow:0 1px 1px rgba(0,0,0,.22)}.sign-divider{display:block;height:1px;background:rgba(255,255,255,.55);margin:0 3px 10px}.sign-details{display:grid;grid-template-columns:1fr auto;gap:18px;text-align:left;font-size:.82rem;font-weight:750}.sign-details>span:last-child{text-align:right}.sign-details small{display:block;margin-bottom:2px;color:#bcdcf3;font-size:.58rem;text-transform:uppercase;letter-spacing:.1em}
.street-neighborhood{display:block;margin-top:3px;color:var(--muted);font-size:.72rem}.result-heading{padding:15px 10px 6px;color:var(--green-2);font-size:.7rem;font-weight:850;text-transform:uppercase;letter-spacing:.09em;border-bottom:1px solid #eef2f0}.result-heading:first-child{padding-top:7px}
.map-stage{min-width:0;position:relative;background:#d7e2dc}.map-stage #map{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0}.map-toolbar{position:absolute;z-index:8;left:18px;top:16px;right:18px;display:flex;justify-content:flex-end;pointer-events:none}.map-tip,.mobile-directory-button{background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border:1px solid rgba(11,77,59,.12);box-shadow:0 5px 18px rgba(16,53,43,.13);border-radius:999px;padding:10px 14px;color:var(--green);font-size:.82rem;font-weight:700}.map-tip i{margin-right:6px;color:var(--gold)}.mobile-directory-button{display:none;pointer-events:auto;cursor:pointer}.legend-note{position:absolute;z-index:8;left:18px;bottom:18px;display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.95);padding:10px 13px;border-radius:10px;box-shadow:0 5px 18px rgba(16,53,43,.14);font-size:.8rem}.legend-swatch{width:20px;height:14px;border-radius:3px;background:linear-gradient(90deg,#663acc,#70ea29,#e74031,#2cca80)}
.area-card{position:absolute;z-index:10;left:50%;bottom:22px;transform:translateX(-50%);width:min(520px,calc(100% - 40px));display:grid;grid-template-columns:8px 1fr auto;gap:15px;background:#fff;border-radius:16px;box-shadow:var(--shadow);padding:16px;align-items:stretch}.area-card-color{border-radius:999px}.area-card-kicker{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:800}.area-card h2{margin:2px 0 4px;font-size:1.25rem}.area-card p{margin:0;color:var(--muted);font-size:.85rem}.area-card button{align-self:start;border:0;background:#eef3f0;color:var(--green);width:34px;height:34px;border-radius:50%;cursor:pointer}.area-card[hidden]{display:none}.area-card:not([hidden])~.legend-note{display:none}
.learn-panel{position:fixed;z-index:101;right:0;top:0;width:min(420px,100%);height:100%;background:#fff;padding:34px;box-shadow:-18px 0 50px rgba(14,48,39,.22);transform:translateX(110%);transition:transform .28s ease;overflow:auto}.learn-panel.open{transform:none}.learn-panel h2{font-size:2rem;letter-spacing:-.04em;margin:0 0 24px}.close-help{float:right;border:0;background:#edf3f0;color:var(--green);width:40px;height:40px;border-radius:50%;cursor:pointer}.learn-panel ol{padding:0;margin:0;list-style:none}.learn-panel li{display:grid;grid-template-columns:38px 1fr;gap:13px;margin:0 0 20px}.learn-panel li>span{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:var(--green);color:#fff;font-weight:900}.learn-panel li p{color:var(--muted);font-size:.9rem;line-height:1.45;margin:4px 0 0}.learn-box{margin-top:30px;border-radius:16px;background:#f1f7f4;border:1px solid #d5e8df;padding:18px;display:flex;gap:13px}.learn-box i{color:var(--gold);font-size:1.3rem}.learn-box p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.5}.scrim{position:fixed;z-index:100;inset:0;background:rgba(4,25,19,.38)}
.ol-control>*{background:#fff!important;color:var(--green)!important;border-radius:7px!important}.ol-control>*:focus,.ol-control>*:hover{background:#eaf3ef!important}.ol-control{background:rgba(255,255,255,.6)!important;padding:3px!important;border-radius:10px!important}.ol-zoom{top:auto!important;left:auto!important;right:18px!important;bottom:18px!important}.ol-attribution{font-size:.65rem}.ol-popup{min-width:260px;max-width:420px;border:0!important;border-radius:14px!important;box-shadow:var(--shadow)!important;padding:18px!important}.ol-popup:after,.ol-popup:before{display:none}.ol-popup.street-sign-popup{padding:0!important;background:transparent!important;box-shadow:none!important}.ol-popup.street-sign-popup .ol-popup-closer{right:11px!important;top:8px!important;color:#fff!important;z-index:3;text-decoration:none}.ol-popup.street-sign-popup .ol-popup-closer:after{content:'×';font-size:22px;font-weight:500}.ol-popup table{width:100%;font-size:.85rem}.ol-popup td{padding:5px 3px}.ol-popup td:first-child{font-weight:700;color:var(--green)}
@media(max-width:820px){.topbar{height:64px;padding:0 15px}.brand small{display:none}.help-button{padding:9px 12px}.app-shell{height:calc(100vh - 64px);display:block}.directory{position:fixed;z-index:40;left:0;top:64px;bottom:0;width:min(350px,90vw);transform:translateX(-105%);transition:transform .25s ease;box-shadow:12px 0 32px rgba(14,48,39,.18)}.directory.mobile-open{transform:none}.map-stage{width:100%;height:100%}.map-toolbar{justify-content:space-between}.mobile-directory-button{display:block}.map-tip{font-size:0;width:42px;height:42px;padding:0;display:grid;place-items:center}.map-tip i{font-size:1rem;margin:0}.legend-note{bottom:14px;left:14px;max-width:220px}.ol-zoom{right:14px!important;bottom:70px!important}.area-card{bottom:14px}.area-list{padding-bottom:80px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
