:root{
  --bg:#f3f1ea; --card:#fffdf8; --ink:#16211d; --muted:#66736d; --line:#e2ded2;
  --head:#0f1a17; --head-ink:#f3f1ea; --accent:#0b7a4b; --accent-ink:#fff;
  --good:#0b7a4b; --mid:#b97a09; --bad:#b3372b; --chip:#ebe7db;
}
@media (prefers-color-scheme:dark){
  :root{ --bg:#0c1412; --card:#15201c; --ink:#e9efe9; --muted:#93a39b; --line:#25332e;
    --head:#0c1412; --accent:#35c486; --accent-ink:#06231a; --good:#35c486; --mid:#e8b04a; --bad:#ef7a6c; --chip:#1e2b26; }
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font:16px/1.4 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink);
  -webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;display:flex;flex-direction:column}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
header{background:var(--head);color:var(--head-ink);padding:calc(env(safe-area-inset-top) + 10px) calc(env(safe-area-inset-right) + 14px) 12px calc(env(safe-area-inset-left) + 14px)}
.top{display:flex;align-items:center;gap:10px}
.brand{font-weight:800;letter-spacing:-.02em;font-size:20px;flex:1}
.brand span{color:#35c486}
.icon-btn{background:rgba(255,255,255,.1);border:0;color:inherit;width:40px;height:40px;border-radius:12px;font-size:18px;display:grid;place-items:center}
.seg{display:flex;background:rgba(255,255,255,.1);border-radius:12px;padding:3px;margin-top:10px}
.seg button{flex:1;border:0;background:none;color:inherit;padding:9px 6px;border-radius:9px;font-weight:600;opacity:.75}
.seg button[aria-pressed=true]{background:#f3f1ea;color:#0f1a17;opacity:1}
.chips{display:flex;gap:8px;margin-top:10px;overflow-x:auto;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{border:1px solid rgba(255,255,255,.25);background:none;color:inherit;border-radius:999px;padding:7px 13px;white-space:nowrap;font-size:14px;font-weight:600}
.chip[aria-pressed=true]{background:#35c486;border-color:#35c486;color:#06231a}
.sep{width:1px;background:rgba(255,255,255,.2);flex:none;margin:4px 2px}
.radius{display:flex;align-items:center;gap:12px;margin-top:12px;font-size:14px}
.radius b{min-width:92px;font-variant-numeric:tabular-nums}
.radius input{flex:1;accent-color:#35c486;height:28px}
.bar{display:flex;align-items:center;gap:8px;padding:8px calc(env(safe-area-inset-right) + 14px) 8px calc(env(safe-area-inset-left) + 14px);border-bottom:1px solid var(--line);font-size:13px;color:var(--muted)}
.bar .loc{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.view{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.view button{border:0;background:none;padding:6px 12px;font-size:13px;font-weight:600;color:var(--muted)}
.view button[aria-pressed=true]{background:var(--ink);color:var(--bg)}
main{flex:1;min-height:0;display:flex;position:relative}
#list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:10px calc(env(safe-area-inset-right) + 12px) calc(env(safe-area-inset-bottom) + 24px) calc(env(safe-area-inset-left) + 12px)}
#mapwrap{flex:1;display:none;min-height:0}
#map{width:100%;height:100%;background:var(--chip)}
body.v-map #list{display:none} body.v-map #mapwrap{display:block}
@media (min-width:900px){ body #list{display:block;flex:0 0 440px;border-right:1px solid var(--line)} body #mapwrap{display:block} .view{display:none} }
.summary{font-size:13px;color:var(--muted);margin:2px 4px 10px}
.summary b{color:var(--ink)}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;margin-bottom:8px;overflow:hidden}
.card.best{border-color:var(--good);box-shadow:0 0 0 1px var(--good) inset}
.row{display:flex;gap:10px;align-items:center;padding:12px 12px;width:100%;border:0;background:none;text-align:left}
.rank{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--chip);color:var(--muted)}
.best .rank{background:var(--good);color:var(--accent-ink)}
.info{flex:1;min-width:0}
.name{font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sub{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.tag{font-size:11.5px;font-weight:600;padding:2px 7px;border-radius:6px;background:var(--chip);color:var(--muted)}
.tag.ok{color:var(--good)} .tag.no{color:var(--bad)}
.price{flex:none;text-align:right;font-variant-numeric:tabular-nums}
.price .big{font-size:22px;font-weight:800;letter-spacing:-.02em;line-height:1.1}
.price .big sup{font-size:.55em;font-weight:700;vertical-align:.55em;margin-left:1px}
.price .unit{font-size:11px;color:var(--muted)}
.price .diff{font-size:12px;font-weight:600;color:var(--muted)}
.best .price .diff{color:var(--good)}
.more{display:none;border-top:1px solid var(--line);padding:10px 12px 12px;font-size:13.5px}
.card.open .more{display:block}
.more table{width:100%;border-collapse:collapse;margin-bottom:8px;font-variant-numeric:tabular-nums}
.more td,.more th{padding:4px 0;text-align:left;font-weight:400;vertical-align:top}
.more th{color:var(--muted);font-size:12px;font-weight:600}
.more td:last-child,.more th:last-child{text-align:right}
.more tr.sel td{font-weight:700}
.nav{display:flex;gap:8px;margin-top:6px}
.nav a{flex:1;text-align:center;text-decoration:none;padding:10px;border-radius:11px;font-weight:650;background:var(--accent);color:var(--accent-ink)}
.nav a.alt{background:var(--chip);color:var(--ink)}
.note{font-size:12px;color:var(--muted);margin:6px 2px}
.state{padding:36px 18px;text-align:center;color:var(--muted)}
.state h2{color:var(--ink);font-size:18px;margin:0 0 6px}
.state .btn,.sheet .btn{display:inline-block;margin-top:12px;border:0;border-radius:12px;padding:11px 18px;background:var(--accent);color:var(--accent-ink);font-weight:650}
.manual{display:flex;gap:8px;margin-top:14px}
.manual input{flex:1;min-width:0;padding:11px 12px;border-radius:12px;border:1px solid var(--line);background:var(--card)}
.spin{width:26px;height:26px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;margin:0 auto 12px;animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spin{animation:none}}
.sheet-bg{position:fixed;inset:0;background:rgba(0,0,0,.45);display:none;z-index:2000;align-items:flex-end;justify-content:center}
.sheet-bg.on{display:flex}
.sheet{background:var(--card);width:100%;max-width:520px;max-height:88%;overflow-y:auto;border-radius:20px 20px 0 0;padding:18px 18px calc(env(safe-area-inset-bottom) + 18px)}
.sheet h2{margin:0 0 4px;font-size:19px}
.sheet h3{margin:18px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.field{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.field label{flex:1}
.field small{display:block;color:var(--muted);font-size:12px}
.field input[type=number],.field input[type=text],.field input[type=password]{width:104px;padding:8px 10px;border-radius:10px;border:1px solid var(--line);background:var(--bg);text-align:right}
.field input[type=checkbox]{width:22px;height:22px;accent-color:var(--accent)}
.pm{font:700 12px/1 -apple-system,sans-serif;padding:4px 6px;border-radius:8px;color:#fff;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.35);white-space:nowrap;transform:translate(-50%,-50%);display:inline-block}
.me{width:16px;height:16px;border-radius:50%;background:#1d7cf2;border:3px solid #fff;box-shadow:0 0 0 2px rgba(29,124,242,.4)}
.leaflet-container{font:inherit}
.btn.wide{width:100%}
.manual .btn{margin:0}
.pm.c0{background:#0b7a4b}.pm.c1{background:#b97a09}.pm.c2{background:#b3372b}
