:root{--green:#1f7a4d;--green-dark:#155c39;--ball:#d4e157;--text:#1b1f1d;--muted:#5f6b66;--border:#e3e7e5;--bg:#fff;--card:#f5f7f6;--warn:#b54708}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--text);background:var(--bg)}
a{color:var(--green)}
a:hover{color:var(--green-dark)}
.wrap{max-width:1080px;margin:0 auto;padding:0 16px}
.muted{color:var(--muted)} .small{font-size:14px}
h1,h2,h3{line-height:1.2;margin:0 0 .5em}
h1{font-size:clamp(28px,5vw,44px);letter-spacing:-.02em}
h2{font-size:24px;margin-top:1.6em}
.btn{display:inline-block;background:var(--green);color:#fff;text-decoration:none;font-weight:700;padding:12px 18px;border-radius:12px;border:0}
.btn:hover{background:var(--green-dark);color:#fff}
.btn-small{padding:7px 12px;border-radius:10px;font-size:14px}
.btn-disabled{background:var(--card);color:var(--muted);cursor:default}
.btn-disabled:hover{background:var(--card);color:var(--muted)}
.app-buttons{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}

.site-header{border-bottom:1px solid var(--border);background:#fff;position:sticky;top:0;z-index:1000}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;height:60px;gap:12px}
.brand{display:flex;align-items:center;gap:8px;font-weight:900;font-size:19px;color:var(--green);text-decoration:none;white-space:nowrap}
.brand img{border-radius:9px;display:block}
.site-header nav{display:flex;align-items:center;gap:16px}
.site-header nav a:not(.btn){color:var(--text);text-decoration:none;font-weight:600;font-size:15px}
@media (max-width:520px){.site-header nav a:not(.btn){display:none}}

.hero{background:linear-gradient(180deg,#eef6f1,#fff);padding:48px 0 24px}
.hero p.lead{font-size:19px;color:var(--muted);max-width:640px}
#map{height:460px;border-radius:16px;border:1px solid var(--border);margin:8px 0 6px}
.map-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.legend{display:flex;gap:14px;font-size:14px;color:var(--muted);flex-wrap:wrap}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle}
.dot-ring{width:14px;height:14px;border:3px solid #2563eb}
.dot-closed{width:14px;height:14px;background:#1f2937;color:#fff;font-size:9px;line-height:14px;text-align:center;font-weight:700}
.pin-closed{background:#1f2937;border:2px solid #fff;border-radius:50%;color:#fff;font-size:12px;line-height:18px;text-align:center;font-weight:700;box-shadow:0 0 0 1px rgba(0,0,0,.25)}
.closed-banner{background:#1f2937;color:#fff;border-radius:12px;padding:14px 16px;margin:14px 0}
.closed-banner strong{display:block;font-size:18px}
.tag-closed{display:inline-block;background:#1f2937;color:#fff;font-size:12px;font-weight:700;border-radius:8px;padding:1px 8px;margin-left:6px;vertical-align:middle}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.card{background:var(--card);border-radius:14px;padding:16px}
.card a.title{font-weight:700;text-decoration:none;color:var(--text)}
.card a.title:hover{color:var(--green)}
.stars{color:#f5a524;letter-spacing:1px}
.stars .off{color:#d9dedb}
.score{font-weight:700}

.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:12px 0 8px}
.cta{background:var(--green);color:#fff;border-radius:18px;padding:28px;margin:40px 0}
.cta .btn{background:#fff;color:var(--green)}
.cta .btn-disabled{background:rgba(255,255,255,.2);color:#fff}

table.details{width:100%;border-collapse:collapse}
table.details td{padding:9px 4px;border-bottom:1px solid var(--border)}
table.details td:last-child{text-align:right}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:28px}
@media (max-width:760px){.two-col{grid-template-columns:1fr}}
.review{border-bottom:1px solid var(--border);padding:14px 0}
.review .meta{display:flex;justify-content:space-between;gap:10px}
.notice{background:#eef6f1;border-radius:12px;padding:14px 16px;margin:18px 0}
.page{padding:32px 0 48px}
.legal{max-width:760px}
.legal h2{font-size:20px}
.state-list{columns:3 180px;padding:0;list-style:none}
.state-list li{margin:4px 0}

.site-footer{border-top:1px solid var(--border);background:var(--card);padding:28px 0;margin-top:40px}
.site-footer .wrap{display:grid;gap:14px}
.site-footer nav{display:flex;flex-wrap:wrap;gap:16px}
.leaflet-popup-content a{font-weight:700}

.loc-search{display:flex;gap:8px;margin:18px 0 4px}
.loc-search input{flex:1;min-width:0;font:inherit;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:#fff;color:var(--text)}
.loc-search input:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
#loc-msg{min-height:1.2em;margin:0 0 6px}

.gallery{display:flex;gap:10px;overflow-x:auto;padding:4px 0 10px;margin:18px 0 4px;scroll-snap-type:x mandatory}
.gallery a{flex:0 0 auto;scroll-snap-align:start}
.gallery img{width:240px;height:170px;object-fit:cover;border-radius:12px;background:var(--card);display:block}
td.ok{color:var(--green);font-weight:600} td.bad{color:#b42318;font-weight:600}

/* Photo viewer: click a photo, then flip with arrows, keyboard or swipe */
.gallery a{cursor:zoom-in}
.lb{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.94);display:none;align-items:center;justify-content:center;touch-action:pan-y}
.lb.open{display:flex}
.lb img{max-width:92vw;max-height:84vh;object-fit:contain;border-radius:8px;user-select:none;-webkit-user-drag:none}
.lb button{position:absolute;border:0;background:rgba(255,255,255,.14);color:#fff;cursor:pointer;border-radius:999px;font-size:30px;line-height:1;width:54px;height:54px;display:flex;align-items:center;justify-content:center}
.lb button:hover,.lb button:focus-visible{background:rgba(255,255,255,.3);outline:none}
.lb .lb-prev{left:16px;top:50%;transform:translateY(-50%)}
.lb .lb-next{right:16px;top:50%;transform:translateY(-50%)}
.lb .lb-close{top:14px;right:14px;font-size:24px;width:44px;height:44px}
.lb .lb-count{position:absolute;bottom:16px;left:0;right:0;text-align:center;color:#ddd;font-size:15px}
@media (max-width:600px){.lb .lb-prev,.lb .lb-next{width:44px;height:44px;font-size:24px}.lb .lb-prev{left:6px}.lb .lb-next{right:6px}}
