*{box-sizing:border-box}html{font-size:20px}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f3f6fa;color:#111;padding-bottom:150px;line-height:1.4}
header{background:#0b4f8a;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:14px 16px;padding-top:max(14px,env(safe-area-inset-top))}
h1{margin:0;font-size:1.5rem}button{font:inherit;font-size:1.05rem;border:0;border-radius:12px;padding:14px 18px;background:#0b4f8a;color:#fff;cursor:pointer;min-height:56px}
.ghost{background:#fff;color:#0b4f8a;font-weight:700;font-size:.85rem;min-height:44px;padding:8px 12px}
nav{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:8px;background:#fff;position:sticky;top:0;box-shadow:0 2px 6px #0002}
nav button{background:#e8eef5;color:#0b4f8a;font-size:1.6rem;display:flex;flex-direction:column;align-items:center;padding:8px 2px}
nav span{font-size:.56rem;font-weight:700;line-height:1.15;text-align:center}nav .on{background:#0b4f8a;color:#fff}
main{padding:16px;max-width:640px;margin:auto}.tab{display:none}.tab.on{display:block}
label{font-weight:700;font-size:1.1rem}.row{display:flex;gap:8px;margin:8px 0 12px}
input{flex:1;font-size:1.6rem;padding:10px 14px;border:2px solid #0b4f8a;border-radius:12px;min-width:0;letter-spacing:2px}
.wide{width:100%;background:#2b7a3b}#msg{margin:14px 0;font-size:1.1rem}.err{color:#b00020;font-weight:700}
.card{background:#fff;border-radius:16px;padding:16px;margin:14px 0;box-shadow:0 1px 4px #0002}
.place{font-size:1.5rem;font-weight:800}.sub{color:#444}.now{display:flex;align-items:center;gap:14px}
.now img{width:86px;height:86px;border-radius:12px}.temp{font-size:3rem;font-weight:800}
.day{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid #e3e3e3}.day:first-child{border:0}
.day img{width:60px;height:60px;border-radius:10px}.day .t{margin-left:auto;font-weight:800;font-size:1.2rem;white-space:nowrap}
.soon{text-align:center;font-size:3rem;padding:30px 10px}.soon h2{font-size:1.6rem;margin:10px 0}.soon p{font-size:1.1rem}.soon b{font-size:1.3rem;background:#ffe08a;padding:8px 16px;border-radius:30px;color:#5a4300}
#ad{position:fixed;left:0;right:0;bottom:0;display:flex;align-items:center;gap:12px;padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom));background:#fffbea;border-top:2px solid #e5c25b;color:#222;text-decoration:none;min-height:112px}
#ad>span:not(.tag){transition:opacity .35s}#ad.fade>span:not(.tag){opacity:0}
#ad .e{font-size:2.2rem;flex:none;width:52px;text-align:center;line-height:1}#ad .e svg{width:48px;height:48px;display:block;margin:auto}
#ad{padding-left:12px;padding-right:10px;gap:10px}#ad .e.pic{width:72px}#ad .e img{width:72px;height:72px;display:block;border-radius:14px;object-fit:cover;background:#fff;box-shadow:0 1px 4px #0003}#ad .e img[src$=".svg"]{object-fit:contain;padding:10px 6px}
#ad .tx{flex:1;min-width:0;padding-right:0}#ad b{display:block;font-size:1.15rem;line-height:1.25;color:#0b4f8a}#ad small{display:block;font-size:.95rem;line-height:1.3;color:#333}
#ad .tag{position:absolute;top:-13px;right:14px;font-size:.75rem;font-weight:700;line-height:1.3;color:#5a4300;background:#fffbea;border:2px solid #e5c25b;border-radius:8px;padding:0 8px}
@media (prefers-reduced-motion:reduce){#ad>span:not(.tag){transition:none}}
body.noads #ad{display:none}dialog{border:0;border-radius:16px;font-size:1.1rem;max-width:90vw}
[hidden]{display:none!important}fieldset{border:0;padding:0;margin:4px 0 12px;min-width:0}legend{font-weight:700;font-size:1.1rem;padding:0;margin-bottom:6px}
.chips{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.chips button{background:#e8eef5;color:#0b4f8a;font-weight:800;font-size:1.2rem;padding:10px 4px}
.chips button.on{background:#0b4f8a;color:#fff}#rcwrap{margin-top:10px}.unit{align-self:center;font-weight:700;font-size:1.1rem}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.rsum{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.rsum .n{font-size:2.2rem;font-weight:800;color:#0b4f8a;line-height:1.1}
.csv{background:#2b7a3b}.zl{list-style:none;margin:0;padding:0}
.zl li{display:grid;grid-template-columns:1fr auto;align-items:baseline;column-gap:10px;padding:10px 0;border-top:1px solid #e3e3e3}.zl li:first-child{border:0}
.zl .z{font-size:1.35rem;font-weight:800;font-variant-numeric:tabular-nums;color:#0b4f8a}.zl .c{grid-column:1/-1;grid-row:2}.zl .c b{margin-right:6px}
.zl .m{grid-column:2;grid-row:1;font-weight:800;font-size:1.15rem;white-space:nowrap;font-variant-numeric:tabular-nums}
.more{width:100%;background:#e8eef5;color:#0b4f8a;font-weight:700;margin-top:6px}
.full{text-align:center;font-size:1.1rem;margin:22px 0 8px}.full a{color:#0b4f8a}
.chips.two{grid-template-columns:1fr 1fr}.chips.two button{font-size:1.05rem}
.tvh{display:flex;align-items:center;gap:10px;margin:-16px -16px 6px;padding:12px 16px;border-radius:16px 16px 0 0;font-weight:800;font-size:1.15rem}
.tvh small{display:block;font-weight:600;font-size:.85rem}.tvh .dot{width:22px;height:22px;border-radius:50%;flex:none;border:2px solid #fff8}
.t1 .tvh{background:#dff3e3;color:#14532d}.t1 .dot,.t1 .ch{background:#2b7a3b}
.t2 .tvh{background:#fff2c6;color:#5a4300}.t2 .dot,.t2 .ch{background:#b7791f}
.t3 .tvh{background:#ffe1cc;color:#7a2e00}.t3 .dot,.t3 .ch{background:#c2410c}
.t4 .tvh{background:#eceef1;color:#374151}.t4 .dot,.t4 .ch{background:#6b7280}
.sl{list-style:none;margin:0;padding:0}.sl li{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid #e3e3e3}.sl li:first-child{border:0}
.ch{flex:none;min-width:64px;height:56px;border-radius:12px;color:#fff;font-weight:800;font-size:1.6rem;display:flex;align-items:center;justify-content:center;padding:0 6px;font-variant-numeric:tabular-nums}
.ch.rf{font-size:1rem;line-height:1.1;text-align:center}.sl .c{flex:1;min-width:0}.sl .c b{font-size:1.15rem;margin-right:6px;white-space:nowrap}.sl .net{font-weight:700;color:#0b4f8a;display:inline-block}
.sl .m{font-weight:800;font-size:1.05rem;white-space:nowrap;font-variant-numeric:tabular-nums}.tag2{display:inline-block;font-size:.75rem;font-weight:700;background:#eceef1;color:#374151;border-radius:8px;padding:1px 7px;margin-left:4px}
.tvnote{font-size:.85rem;margin-top:18px}.approx{font-style:italic;color:#7a2e00}

header{flex-wrap:wrap;row-gap:10px}.prow{flex-basis:100%;display:flex}#powered{display:inline-flex;align-items:center;gap:7px;background:#fff;color:#0b4f8a;text-decoration:none;border-radius:999px;padding:3px 12px 3px 7px;font-size:.75rem;line-height:1.25;white-space:nowrap;box-shadow:0 1px 3px #0004;font-size:.8rem}#powered svg{width:36px;height:23px;flex:none;display:block}#powered b{font-weight:800}#powered:focus-visible,#ad:focus-visible{outline:3px solid #ffbf47;outline-offset:2px}
/* ---------- ZipGas / ZipRestaurants (data/gas, data/food from data/build_places.py) ---------- */
#fkind .chips button{font-size:.95rem;padding:10px 2px}#fkind .chips button small{display:block;font-size:.75rem;font-weight:700;opacity:.85}
.price{margin:-16px -16px 10px;padding:10px 16px;border-radius:16px 16px 0 0;background:#dff3e3;color:#14532d;font-weight:800;font-size:1.05rem;display:flex;gap:10px;align-items:center}
.price .dot{font-size:1.5rem}.gp{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.gp .big{font-size:2.2rem;font-weight:800;color:#0b4f8a;line-height:1.1;font-variant-numeric:tabular-nums}
.gp .us{font-weight:700}.src{font-size:.8rem;color:#444;margin-top:6px}.src a{color:#0b4f8a}
.pl{list-style:none;margin:0;padding:0}.pl li{display:grid;grid-template-columns:auto 1fr auto;column-gap:12px;row-gap:10px;align-items:start;padding:12px 0;border-top:1px solid #e3e3e3}.pl li:first-child{border:0}
.pl .ic{grid-row:1;width:52px;height:52px;border-radius:12px;background:#e8eef5;display:flex;align-items:center;justify-content:center;font-size:1.6rem}
.pl .c{min-width:0}.pl .c b{font-size:1.15rem;line-height:1.25;display:block}.pl .ad{display:block;color:#444;font-size:.95rem}.pl .ad.no{font-style:italic;color:#6b7280}
.pl .hrs{display:block;font-size:.8rem;line-height:1.3;color:#555;margin-top:2px}.pl .m{font-weight:800;font-size:1.05rem;white-space:nowrap;font-variant-numeric:tabular-nums}
.pl .cu{display:inline-block;font-size:.75rem;font-weight:700;background:#fff2c6;color:#5a4300;border-radius:8px;padding:1px 7px;margin:2px 4px 0 0}
.acts{grid-column:1/-1;display:flex;gap:8px}.acts a,.acts .nophone{flex:1;justify-content:center;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:8px 14px;border-radius:12px;font-weight:700;font-size:.9rem;text-decoration:none;background:#e8eef5;color:#0b4f8a}
.acts a.call{background:#2b7a3b;color:#fff}.acts .nophone{min-height:44px;border-radius:12px;font-size:.8rem;white-space:nowrap;padding:8px 6px;font-weight:700;color:#6b7280;background:#f3f4f6;border:1px dashed #cbd5e1}.pl .ph{display:block;font-size:.95rem;font-weight:700;color:#14532d}
.osm{color:#0b4f8a;font-weight:700}
.pl .cu.fu{background:#e3f0ff;color:#0b4f8a}
/* ---------- v12: ZipFarmersMarkets, ZipRadio, ZipFacts ---------- */
nav button{padding:6px 2px}
.pl .note{display:block;font-size:.85rem;line-height:1.35;color:#333;margin-top:4px}.pl .upd{display:block;font-size:.75rem;color:#6b7280;margin-top:2px}
.pl .cu.pay{background:#dff3e3;color:#14532d}
.ch.fq{font-size:1.25rem;min-width:72px;flex-direction:column;line-height:1}.ch.fq small{font-size:.65rem;font-weight:700;opacity:.9;margin-top:3px}
.sl .own{display:block;font-size:.85rem;color:#0b4f8a;font-weight:600}
.fx{display:grid;grid-template-columns:1fr 1fr;gap:10px}.fx>div{background:#f3f6fa;border-radius:12px;padding:10px 12px;min-width:0}
.fx .v{font-size:1.45rem;font-weight:800;color:#0b4f8a;line-height:1.15;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.fx .l{font-weight:700;font-size:.9rem;line-height:1.25}
.fx .s{font-size:.7rem;color:#555;line-height:1.25;margin-top:3px}.fx .wide2{grid-column:1/-1}
.tenure{display:flex;height:14px;border-radius:7px;overflow:hidden;background:#e3e3e3;margin:6px 0 2px}.tenure i{background:#2b7a3b}.tenure b{background:#b7791f}
.zcta{font-size:.8rem;color:#444;margin-top:10px}
