:root{
  --ink:#0E1A2B; --dim:#5B6B82; --dim2:#8A98AD;
  --card:rgba(255,255,255,.93); --edge:rgba(14,26,43,.08);
  --blue:#2F6BFF; --deep:#3949D6; --amber:#E89A1E; --green:#1FA971;
  --r:22px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html,body{margin:0;height:100%;background:#EEF3F9;color:var(--ink);
  font-family:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  font-size:14px;line-height:1.5;letter-spacing:-.01em;-webkit-text-size-adjust:100%;overflow:hidden}
#map{position:fixed;inset:0;z-index:0;background:#E7EDF4}
.leaflet-container{font-family:inherit}
.base{filter:grayscale(.72) saturate(.9) contrast(.92) brightness(1.05)}
.leaflet-control-attribution{font-size:9.5px!important;background:rgba(255,255,255,.7)!important;border-radius:8px 0 0 0}
.leaflet-control-zoom{display:none}

/* 상단 */
.bar{position:fixed;left:12px;right:12px;top:calc(10px + env(safe-area-inset-top));z-index:1000;
  display:flex;gap:8px;align-items:flex-start;max-width:560px;margin:0 auto}
.brand{display:flex;align-items:center;gap:6px;height:46px;padding:0 13px;border-radius:15px;
  background:var(--card);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:1px solid var(--edge);box-shadow:0 6px 24px rgba(14,26,43,.08)}
.brand svg{width:20px;height:20px;color:var(--ink)}
.brand b{font-size:16px;font-weight:750;letter-spacing:-.03em}
.search{position:relative;flex:1;min-width:0}
.search input{width:100%;height:46px;border-radius:15px;border:1px solid var(--edge);outline:none;
  background:var(--card);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  padding:0 14px;font:inherit;font-size:16px;color:var(--ink);box-shadow:0 6px 24px rgba(14,26,43,.08);-webkit-appearance:none}
.search input:focus{border-color:rgba(47,107,255,.5)}
.res{position:absolute;left:0;right:0;top:52px;background:#fff;border-radius:16px;border:1px solid var(--edge);
  box-shadow:0 12px 32px rgba(14,26,43,.14);overflow:hidden;max-height:50vh;overflow-y:auto}
.res button{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid #EEF1F5;
  padding:10px 14px;font:inherit;color:var(--ink);cursor:pointer}
.res button:last-child{border-bottom:0}
.res button:active,.res button:hover{background:#F2F6FD}
.res b{display:block;font-weight:600;font-size:14px}
.res em{font-style:normal;font-size:11.5px;color:var(--dim2)}
.res .none{padding:12px 14px;color:var(--dim);font-size:13px}

.banner{position:fixed;left:12px;right:12px;top:calc(64px + env(safe-area-inset-top));z-index:999;max-width:560px;margin:0 auto;
  background:#FFF6E6;border:1px solid #F6DFB5;color:#7A5410;border-radius:13px;padding:9px 12px;font-size:12px;line-height:1.5}

/* 핀 */
.pin{width:26px;height:26px;border-radius:50% 50% 50% 0;background:var(--ink);transform:rotate(-45deg);
  box-shadow:0 4px 14px rgba(14,26,43,.35);border:3px solid #fff}
.ring{border-radius:50%;border:1.5px dashed rgba(14,26,43,.45);pointer-events:none}

/* 시트 */
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:1000;max-width:560px;margin:0 auto;
  background:var(--card);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-radius:var(--r) var(--r) 0 0;border:1px solid var(--edge);border-bottom:0;
  box-shadow:0 -10px 40px rgba(14,26,43,.12);padding:6px 18px calc(16px + env(safe-area-inset-bottom));
  max-height:62vh;overflow-y:auto}
.grip{width:38px;height:4px;border-radius:2px;background:#D5DCE6;margin:4px auto 10px}
.k{font-size:11.5px;color:var(--dim2);font-weight:600;margin:0}
.addr{font-size:13px;color:var(--dim);margin:2px 0 0}
.verdict{display:flex;gap:12px;align-items:flex-start;margin:12px 0 4px}
.verdict .dot{flex:none;width:44px;height:44px;border-radius:14px;display:grid;place-items:center}
.verdict .dot svg{width:24px;height:24px}
.verdict h2{margin:0;font-size:20px;line-height:1.3;font-weight:750;letter-spacing:-.035em}
.verdict p{margin:3px 0 0;color:var(--dim);font-size:12.5px}
.v-in .dot{background:#E6EAFF;color:var(--deep)} .v-in h2{color:var(--deep)}
.v-near .dot{background:#FFF1DA;color:var(--amber)}
.v-far .dot{background:#EEF3F9;color:var(--dim)}
.v-none .dot{background:#E3F6EE;color:var(--green)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0 4px}
.stat{background:#F4F7FB;border-radius:13px;padding:9px 10px}
.stat .t{font-size:10.5px;color:var(--dim2);font-weight:600}
.stat .v{font-size:16px;font-weight:700;letter-spacing:-.03em;margin-top:1px}
.layers{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0 2px}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--edge);background:#fff;border-radius:999px;
  padding:6px 11px;font:inherit;font-size:12px;color:var(--ink);cursor:pointer}
.chip i{width:10px;height:10px;border-radius:3px;display:inline-block}
.chip.off{opacity:.45}
.coast{margin-top:10px;font-size:12.5px;color:var(--dim);background:#F4F7FB;border-radius:12px;padding:9px 11px}
.coast b{color:var(--ink)}
.notes{margin:14px 0 0;padding:0 0 0 16px;color:var(--dim);font-size:11.5px;line-height:1.6}
.notes li+li{margin-top:3px}
.row{display:flex;gap:8px;margin-top:14px}
.btn{flex:1;height:44px;border-radius:13px;border:1px solid var(--edge);background:#fff;font:inherit;font-size:13.5px;font-weight:650;color:var(--ink);cursor:pointer}
.btn.pri{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn.done{background:var(--green);border-color:var(--green);color:#fff}
.src{margin:12px 0 0;font-size:10.5px;color:var(--dim2);line-height:1.55}
.src a{color:var(--dim2)}
.intro h2{margin:6px 0 4px;font-size:19px;font-weight:750;letter-spacing:-.035em}
.intro p{margin:0;color:var(--dim);font-size:13px}
.ex{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.spin{width:18px;height:18px;border-radius:50%;border:2.5px solid #D8E1EE;border-top-color:var(--blue);animation:sp .8s linear infinite;display:inline-block;vertical-align:-4px;margin-right:6px}
@keyframes sp{to{transform:rotate(360deg)}}
.by{margin-top:10px;text-align:center;font-size:11px;color:var(--dim2)}
.by a{color:var(--dim);text-decoration:none}
