/* Layout: full-height app — side panel (search, filters, list) beside the map; on phones the map sits on top and the panel scrolls below.
   Brand follows valynwang.com: Gilda Display + Poppins, orange #FF914D, near-black #0E0E0E. Single light theme to match the main site. */
:root{
  --bg:#fbf8f5; --panel:#ffffff; --ink:#151312; --muted:#6f6863; --line:#ebe4de; --chip:#f5efea;
  --accent:#ff914d; --accent-ink:#b4561a; --dark:#0e0e0e;
  --c-sf:#ff914d; --c-mf:#1f8a8a; --c-com:#4b5bd6; --c-demo:#c2412d; --c-lu:#8a5cc2; --c-reno:#8d857e;
  --ok:#2f8a4e; --warn:#b7791f; --info:#3b6fb6;
  --display:"Gilda Display","Noto Serif SC",Georgia,serif;
  --body:"Poppins","Noto Sans SC",system-ui,-apple-system,"Segoe UI",sans-serif;
  --zh:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:14px;line-height:1.45;overflow:hidden}
html[lang="zh"] body{font-family:var(--zh)}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--accent-ink)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

.app{display:grid;grid-template-columns:410px 1fr;height:100%}
.side{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;z-index:2}
.map-wrap{position:relative;min-width:0}
#map{position:absolute;inset:0;background:#e9e4de}

.brand{padding:14px 18px 12px max(20px,env(safe-area-inset-left,0px));border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}
.brand-link{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;min-width:0;flex:1}
.brand-mark{width:38px;height:38px;border-radius:50%;background:var(--dark);color:#fff;display:grid;place-items:center;font-family:var(--display);font-size:17px;flex:none}
.brand-txt{display:flex;flex-direction:column;min-width:0}
.brand-name{font-family:var(--display);font-size:18px;line-height:1.1}
.brand-sub{font-size:11.5px;color:var(--muted);letter-spacing:.02em}
.lang{display:flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;flex:none}
.lang button{background:none;border:0;padding:5px 11px;font-size:12px;cursor:pointer;color:var(--muted)}
.lang button[aria-pressed="true"]{background:var(--dark);color:#fff}

.scroll{overflow:auto;min-height:0;flex:1}
.intro{padding:18px 20px 14px}
.intro h1{font-family:var(--display);font-weight:400;font-size:28px;line-height:1.15;margin:0 0 6px;text-wrap:balance}
html[lang="zh"] .intro h1{font-family:var(--zh);font-weight:700;font-size:23px}
.intro p{margin:0;color:var(--muted);font-size:13px}
.search{position:relative;margin-top:14px}
.search input{width:100%;padding:10px 12px 10px 36px;border:1px solid var(--line);border-radius:10px;background:var(--panel) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%236f6863' stroke-width='2'%3E%3Ccircle cx='7' cy='7' r='5'/%3E%3Cpath d='m11 11 4 4'/%3E%3C/svg%3E") no-repeat 12px 50%}
.sugg{position:absolute;left:0;right:0;top:calc(100% + 4px);list-style:none;margin:0;padding:4px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.12);z-index:5;max-height:320px;overflow:auto}
.sugg li{padding:8px 10px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between;gap:10px}
.sugg li:hover,.sugg li.on{background:var(--chip)}
.sugg small{color:var(--muted);white-space:nowrap}

.section{padding:14px 20px;border-top:1px solid var(--line)}
.label{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;display:flex;justify-content:space-between;gap:8px}
html[lang="zh"] .label{letter-spacing:.02em;text-transform:none}
.groups{display:flex;flex-direction:column;gap:4px}
.grp{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;border:1px solid transparent;background:none;cursor:pointer;text-align:left;width:100%}
.grp:hover{background:var(--chip)}
.grp .dots{display:flex;gap:3px}
.grp .dots i{width:11px;height:11px;border-radius:50%;display:block;box-shadow:0 0 0 2px var(--panel)}
.grp .name{font-weight:500}
.grp .hint{display:block;font-size:11.5px;color:var(--muted);font-weight:400}
.grp .n{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12.5px}
.grp[aria-pressed="false"]{opacity:.45}
.grp[aria-pressed="false"] .dots i{background:transparent!important;box-shadow:inset 0 0 0 2px var(--muted)}

.seg{display:flex;background:var(--chip);border-radius:8px;padding:3px;gap:2px;flex-wrap:wrap}
.seg button{border:0;background:none;padding:5px 10px;border-radius:6px;cursor:pointer;font-size:12.5px;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--panel);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.jump{display:flex;gap:6px;flex-wrap:wrap}
.jump a{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:4px 11px;font-size:12.5px;color:var(--ink);text-decoration:none}
.jump a:hover,.jump a[aria-current="page"]{border-color:var(--accent);color:var(--accent-ink)}

.list-head{display:flex;justify-content:space-between;align-items:baseline;padding:14px 20px 6px;border-top:1px solid var(--line);gap:8px}
.list-head b{font-family:var(--display);font-weight:400;font-size:19px}
html[lang="zh"] .list-head b{font-family:var(--zh);font-weight:700;font-size:16px}
.list-head span{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;text-align:right}
.items{list-style:none;margin:0;padding:0 10px 20px}
.item{display:grid;grid-template-columns:4px 1fr;gap:12px;padding:10px;border-radius:8px;cursor:pointer}
.item:hover,.item.on{background:var(--chip)}
.item .bar{border-radius:2px}
.item .t{font-weight:500;font-size:13.5px;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.item .m{font-size:12px;color:var(--muted);margin-top:3px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.empty{padding:10px 20px;color:var(--muted)}

.pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;padding:1px 8px;border-radius:999px;background:var(--chip);white-space:nowrap}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.st-applied,.st-in_review{color:var(--info)}
.st-approved{color:var(--warn)}
.st-completed{color:var(--ok)}
.st-unknown{color:var(--muted)}

.foot{padding:12px 20px max(12px,env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);font-size:11px;color:var(--muted);display:flex;flex-direction:column;gap:4px}
.foot strong{color:var(--ink);font-weight:500}

.detail{position:absolute;top:calc(14px + env(safe-area-inset-top,0px));right:calc(14px + env(safe-area-inset-right,0px));width:min(390px,calc(100% - 28px));max-height:calc(100% - 28px);overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.18);z-index:3}
.detail-top{padding:16px 18px 12px;border-bottom:1px solid var(--line);position:relative}
.kind{font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;display:flex;align-items:center;gap:6px}
html[lang="zh"] .kind{letter-spacing:.02em}
.kind i{width:9px;height:9px;border-radius:50%;display:inline-block}
.detail h2{font-family:var(--display);font-weight:400;font-size:22px;line-height:1.2;margin:6px 34px 4px 0;text-wrap:balance}
html[lang="zh"] .detail h2{font-family:var(--zh);font-weight:700;font-size:18px}
.addr{color:var(--muted);font-size:13px}
.x{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:50%;border:0;background:var(--chip);cursor:pointer;font-size:16px;line-height:1}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;padding:14px 18px;margin:0}
.facts div{min-width:0}
.facts dt{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
html[lang="zh"] .facts dt{text-transform:none;letter-spacing:0}
.facts dd{margin:2px 0 0;font-weight:500;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.desc{padding:0 18px 12px;font-size:13px;opacity:.88;white-space:pre-line}
.links{display:flex;gap:14px;flex-wrap:wrap;padding:0 18px 14px;font-size:12.5px}
.links a,.links button{color:var(--accent-ink);text-decoration:none;background:none;border:0;padding:0;cursor:pointer}
.links a:hover,.links button:hover{text-decoration:underline}
.cta{padding:14px 18px 18px;border-top:1px solid var(--line);background:#fff6f0}
.cta h3{margin:0 0 4px;font-size:14px;font-weight:600}
.cta p{margin:0 0 10px;font-size:12.5px;color:var(--muted)}
.cta form{display:grid;gap:8px}
.cta input[type=text],.cta input[type=email],.cta textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
.cta textarea{min-height:60px;resize:vertical}
.consent{display:flex;gap:8px;align-items:flex-start;font-size:11.5px;color:var(--muted)}
.consent input{margin-top:3px}
.hp{position:absolute;left:-9999px}
.btns{display:flex;gap:8px;flex-wrap:wrap}
.btn{border:0;border-radius:8px;padding:9px 14px;font-weight:500;cursor:pointer}
.btn-primary{background:var(--dark);color:#fff}
.btn-primary[disabled]{opacity:.6;cursor:wait}
.btn-ghost{background:var(--panel);border:1px solid var(--line)}
.msg-ok{font-size:13px;color:var(--ok);font-weight:500;margin:0}
.msg-err{font-size:12.5px;color:var(--c-demo);margin:0}
.sub-row{display:flex;gap:8px}
.sub-row input{flex:1;min-width:0}

.loading{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:13px;z-index:1;pointer-events:none}
.hover-tip{position:absolute;pointer-events:none;background:var(--dark);color:#fff;font-size:12px;padding:5px 8px;border-radius:6px;transform:translate(-50%,calc(-100% - 12px));white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis;z-index:2}
.toast{position:absolute;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--dark);color:#fff;padding:8px 14px;border-radius:8px;font-size:13px;z-index:4}

@media (max-width:760px){
  body{overflow:auto}
  .app{grid-template-columns:1fr;grid-template-rows:auto;height:auto;min-height:100%}
  .map-wrap{order:1;height:60vh;position:sticky;top:0}
  .side{order:2;border-right:0;border-top:1px solid var(--line)}
  .brand,.intro,.section,.list-head,.foot{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
  .scroll{overflow:visible}
  .detail{top:auto;bottom:calc(10px + env(safe-area-inset-bottom,0px));right:10px;left:10px;width:auto;max-height:85%}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.zip-pin{background:var(--dark);color:#fff;font-size:12px;font-weight:600;padding:4px 9px;border-radius:999px;white-space:nowrap;letter-spacing:.04em;box-shadow:0 4px 12px rgba(0,0,0,.25)}
.zip-pin::after{content:"";position:absolute;left:50%;bottom:-5px;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--dark);border-bottom:0}

.home-pin{display:flex;flex-direction:column;align-items:center}
.home-pin span{background:var(--accent);color:#1b0f06;font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;white-space:nowrap;box-shadow:0 4px 12px rgba(0,0,0,.25)}
.home-pin::after{content:"";width:0;height:0;border:6px solid transparent;border-top-color:var(--accent);border-bottom:0}
.home-sub{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff6f0}
.home-sub p{margin:0 0 8px;font-size:12.5px;font-weight:500;color:var(--ink)}
.home-sub input{padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
.basemaps{position:absolute;left:calc(12px + env(safe-area-inset-left,0px));top:calc(12px + env(safe-area-inset-top,0px));z-index:2;display:flex;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px;box-shadow:0 2px 8px rgba(0,0,0,.12)}
.basemaps button{border:0;background:none;padding:6px 11px;border-radius:7px;font-size:12.5px;cursor:pointer;color:var(--muted)}
.basemaps button[aria-pressed="true"]{background:var(--dark);color:#fff}

a.btn{display:inline-block;text-decoration:none}
.home-ask{margin:10px 0 0!important;font-weight:400!important;color:var(--muted)!important}
.home-ask a{font-weight:500;color:var(--accent-ink)}
