/* LocalHello styles */
:root{
  --bg:#F4F5FA; --surface:#FFFFFF; --ink:#1F2552; --text:#1B1F3A; --muted:#5E6477; --line:#E2E5EE;
  --marigold:#F4B000; --marigold-soft:#FFF3CC; --leaf:#1F8A5B; --leaf-soft:#E2F4EA; --chili:#C8372D; --chili-soft:#FBE7E5;
  --head:#1F2552; --head-text:#FFFFFF;
  --display:"Baloo 2", "Hind", system-ui, sans-serif; --body:"Hind", system-ui, -apple-system, "Segoe UI", sans-serif;
  box-sizing:border-box; padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --bg:#11142A; --surface:#1B1F3D; --ink:#E9ECFA; --text:#E9ECFA; --muted:#A2A8C6; --line:#2D3259;
  --marigold-soft:#3A3114; --leaf-soft:#153426; --chili-soft:#3B1A18; --head:#0B0E22;
}}
:root[data-theme="dark"]{
  --bg:#11142A; --surface:#1B1F3D; --ink:#E9ECFA; --text:#E9ECFA; --muted:#A2A8C6; --line:#2D3259;
  --marigold-soft:#3A3114; --leaf-soft:#153426; --chili-soft:#3B1A18; --head:#0B0E22;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);font-size:16px;line-height:1.5}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
img{max-width:100%}
.wrap{max-width:560px;margin:0 auto;min-height:100vh;background:var(--bg)}
/* top bar */
.top{background:var(--head);color:var(--head-text);padding:10px 16px 0;position:sticky;top:env(safe-area-inset-top,0px);z-index:20}
.brand{display:flex;align-items:center;justify-content:space-between;gap:8px}
.logo{text-decoration:none;font-family:var(--display);font-weight:800;font-size:24px;letter-spacing:-.5px;color:var(--marigold);line-height:1}
.logo span{color:#fff}
.town{font-size:14px;opacity:.85}
.apps{display:flex;gap:4px;margin-top:10px;overflow-x:auto}
.apps a{text-decoration:none;background:none;border:0;color:#fff;opacity:.7;padding:8px 10px 10px;border-bottom:3px solid transparent;cursor:pointer;white-space:nowrap;font-weight:500;font-size:15px}
.apps a[aria-current="true"]{opacity:1;border-bottom-color:var(--marigold)}
main{padding:16px}
.banner{background:var(--marigold-soft);border-radius:10px;padding:10px 12px;font-size:14px;margin-bottom:12px}
/* hero */
.hero{margin:-16px -16px 16px;padding:22px 16px 18px;background:var(--marigold);color:#1F2552}
.hero h1{font-family:var(--display);font-weight:800;font-size:36px;line-height:1.05;margin:0}
.hero p{margin:4px 0 14px;font-weight:500}
.search{display:flex;gap:8px}
.search input{flex:1;min-width:0;border:2px solid #1F2552;border-radius:12px;padding:12px 14px;background:#fff;color:#1B1F3A;font-size:17px}
.search button{border:0;border-radius:12px;background:#1F2552;color:#fff;padding:0 16px;font-weight:600;cursor:pointer}
.locline{display:flex;justify-content:space-between;align-items:center;font-size:14px;margin-top:10px;gap:8px}
.linkbtn{background:none;border:0;padding:0;text-decoration:underline;cursor:pointer;font-weight:600;color:inherit}
h2{font-family:var(--display);font-size:22px;margin:22px 0 10px;color:var(--ink);line-height:1.2}
h3{font-family:var(--display);font-size:18px;margin:16px 0 8px;color:var(--ink)}
.cats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.cat{text-decoration:none;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 4px;text-align:center;cursor:pointer;font-size:12.5px;line-height:1.2;min-height:84px;display:flex;flex-direction:column;align-items:center;gap:6px}
.cat .ic{font-size:26px;line-height:1}
.list{display:flex;flex-direction:column;gap:10px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;gap:12px;cursor:pointer;text-align:left;width:100%}
.thumb{width:72px;height:72px;border-radius:10px;background:var(--marigold-soft);flex:none;object-fit:cover;display:flex;align-items:center;justify-content:center;font-size:28px}
.card .body{flex:1;min-width:0}
.card .name{font-weight:600;font-size:16.5px;line-height:1.25}
.meta{color:var(--muted);font-size:14px}
.pill{display:inline-block;font-size:12.5px;font-weight:600;padding:1px 8px;border-radius:99px}
.open{background:var(--leaf-soft);color:var(--leaf)} .closed{background:var(--chili-soft);color:var(--chili)}
.sample{background:var(--marigold-soft);color:#8a6200}
.acts{display:flex;gap:6px;margin-top:8px}
.acts a,.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:10px;padding:8px 12px;font-weight:600;font-size:14.5px;text-decoration:none;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;color:var(--text)}
.btn.primary,.acts a.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.btn.gold{background:var(--marigold);color:#1F2552;border-color:var(--marigold)}
.btn.danger{color:var(--chili);border-color:var(--chili)}
.btn.block{width:100%;padding:12px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.bigacts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0}
.bigacts a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 6px;border-radius:12px;background:var(--ink);color:var(--bg);text-decoration:none;font-weight:600}
.bigacts a.wa{background:var(--leaf);color:#fff}
.bigacts a.dir{background:var(--marigold);color:#1F2552}
.bigacts .i{font-size:22px}
.count{font-family:var(--display);font-size:26px;font-weight:700;line-height:1.15;margin:4px 0 10px;color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{text-decoration:none;color:var(--text);display:inline-block;border:1.5px solid var(--line);background:var(--surface);border-radius:99px;padding:5px 12px;font-size:14px;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.tag{text-decoration:none;color:inherit;background:var(--marigold-soft);border-radius:99px;padding:3px 10px;font-size:14px}
.back{background:none;border:0;padding:4px 0;margin-bottom:6px;cursor:pointer;font-weight:600;color:var(--muted)}
.photos{display:flex;gap:8px;overflow-x:auto;margin:0 -16px;padding:0 16px}
.photos img{height:200px;border-radius:12px;flex:none;object-fit:cover}
.sect{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px}
.row{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--line);font-size:15px}
.row:last-child{border-bottom:0}
.row .k{color:var(--muted)}
label.f{display:block;font-weight:600;font-size:14.5px;margin:12px 0 4px}
.hint{font-weight:400;color:var(--muted);font-size:13.5px}
input.t,select.t,textarea.t{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--surface);font-size:16px}
input.t:focus,select.t:focus,textarea.t:focus,button:focus-visible,a:focus-visible{outline:3px solid var(--marigold);outline-offset:1px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.err{background:var(--chili-soft);color:var(--chili);border-radius:10px;padding:10px 12px;font-size:14.5px;margin:10px 0}
.ok{background:var(--leaf-soft);color:var(--leaf);border-radius:10px;padding:10px 12px;font-size:14.5px;margin:10px 0}
.pgrid{display:flex;gap:8px;flex-wrap:wrap}
.pgrid .ph{position:relative}
.pgrid img{width:96px;height:96px;object-fit:cover;border-radius:10px}
.pgrid .x{position:absolute;top:2px;right:2px;background:rgba(0,0,0,.65);color:#fff;border:0;border-radius:99px;width:24px;height:24px;cursor:pointer}
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px}
.stat b{display:block;font-family:var(--display);font-size:30px;line-height:1.1;color:var(--ink)}
.stat span{color:var(--muted);font-size:14px}
.tabs{display:flex;gap:6px;overflow-x:auto;margin-bottom:12px}
.empty{text-align:center;color:var(--muted);padding:28px 12px}
.modal{position:fixed;inset:0;background:rgba(10,12,30,.55);display:flex;align-items:flex-end;justify-content:center;z-index:50;padding-bottom:env(safe-area-inset-bottom,0px)}
.sheet{background:var(--surface);width:100%;max-width:560px;border-radius:18px 18px 0 0;padding:18px 16px 22px;max-height:85vh;overflow:auto}
.qr{background:#fff;padding:12px;border-radius:12px;display:inline-block}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(20px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:10px;z-index:60;font-weight:600;font-size:15px;max-width:90vw}
.bar{height:8px;background:var(--marigold);border-radius:99px}
.small{font-size:13.5px;color:var(--muted)}
.tablewrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:14.5px}
td,th{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left}
.thumb svg{width:100%;height:100%;display:block;border-radius:10px}
.art svg{display:block;width:100%;height:auto;border-radius:12px}
.photos .art{flex:none;width:100%}
:root{--map-land:#EEF0E4;--map-minor:#FFFFFF;--map-major:#FFFFFF;--map-case:#C9CDBE;--map-hwy:#F6CF65;--map-hwy-case:#C99A1E;--map-water:#A9D3F0;--map-label:#3D4258}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--map-land:#1A1E36;--map-minor:#2C3155;--map-major:#3A4070;--map-case:#10132A;--map-hwy:#8A6B12;--map-hwy-case:#4E3C08;--map-water:#1E3F5E;--map-label:#C9CEE8}}
:root[data-theme="dark"]{--map-land:#1A1E36;--map-minor:#2C3155;--map-major:#3A4070;--map-case:#10132A;--map-hwy:#8A6B12;--map-hwy-case:#4E3C08;--map-water:#1E3F5E;--map-label:#C9CEE8}
.map{position:relative;overflow:hidden;background:var(--map-land);border-radius:14px;border:1px solid var(--line);touch-action:none;user-select:none;-webkit-user-select:none}
.map svg.base{position:absolute;inset:0;width:100%;height:100%}
.map .ovl{position:absolute;inset:0;pointer-events:none}
.map .plabel{position:absolute;transform:translate(-50%,-50%);font-size:12px;font-weight:600;color:var(--map-label);white-space:nowrap;text-shadow:0 0 3px var(--map-land),0 0 3px var(--map-land)}
.map .plabel.town{font-family:var(--display);font-size:16px;font-weight:700}
.map .pin{position:absolute;transform:translate(-50%,-100%);pointer-events:auto;border:0;background:none;padding:0;cursor:pointer}
.map .pin .b{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--ink);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.35)}
.map .pin .b span{transform:rotate(45deg);font-size:16px;line-height:1}
.map .pin.sel .b{background:var(--marigold);width:42px;height:42px}
.map .clu{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;border:2px solid #fff;background:var(--marigold);color:#1F2552;font-weight:700;border-radius:99px;min-width:34px;height:34px;padding:0 8px;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.35)}
.map .me{position:absolute;width:16px;height:16px;border-radius:50%;background:#1B6CA8;border:3px solid #fff;transform:translate(-50%,-50%);box-shadow:0 0 0 6px rgba(27,108,168,.25)}
.map .ctl{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:6px}
.map .ctl button{width:40px;height:40px;border-radius:10px;border:1px solid var(--line);background:var(--surface);font-size:20px;font-weight:700;cursor:pointer;color:var(--text)}
.map .attr{position:absolute;left:6px;bottom:4px;font-size:11px;color:var(--map-label);background:color-mix(in srgb,var(--map-land) 80%,transparent);padding:0 4px;border-radius:4px}
.map .mcard{position:absolute;left:10px;right:10px;bottom:22px}
.map .mcard .card{box-shadow:0 4px 16px rgba(0,0,0,.2)}
.map.mini{pointer-events:none}
.demo{background:var(--marigold-soft);border-radius:10px;padding:8px 12px;font-size:14px;margin:10px 0}
@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
@media (max-width:380px){.cats{grid-template-columns:repeat(3,1fr)}.hero h1{font-size:30px}}

.foot{text-align:center;padding:28px 16px calc(28px + env(safe-area-inset-bottom,0px));color:var(--muted);font-size:14.5px;display:flex;flex-wrap:wrap;gap:6px 10px;justify-content:center}
.foot a{color:var(--muted);font-weight:600}
.foot .small{flex-basis:100%}
a.btn{text-decoration:none}
.sheet .qr canvas,.sheet .qr img{display:block}
