:root{color-scheme:light;--bg:#fff;--text:#18212a;--hint:#4d5963;--link:#075eac;--button:#1767a5;--button-text:#fff;--secondary:#eef1f4;--section:#fff;--height:100dvh}
:root.dark{color-scheme:dark;--bg:#17212b;--text:#f5f7f9;--hint:#c2cbd3;--link:#8bc9ff;--button:#27618e;--button-text:#fff;--secondary:#263644;--section:#1d2b38}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.4 system-ui,-apple-system,sans-serif}button,input{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,input:focus-visible,.leaflet-container a:focus-visible{outline:3px solid #e69c00;outline-offset:2px}button{min-height:44px;border:0;border-radius:12px;background:var(--secondary);padding:8px 14px}button[aria-pressed=true]{background:var(--button);color:var(--button-text)}[hidden]{display:none!important}.app{height:var(--height);display:flex;flex-direction:column;padding-top:env(safe-area-inset-top)}header{flex:none;padding:10px 14px 8px}.heading,.toolbar,.sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}h1{font-size:22px;margin:0}h2{font-size:21px;margin:0}#age,#result-count{color:var(--hint);font-size:13px}#message,.warning{padding:9px 12px;border-radius:10px;background:var(--secondary);margin:8px 0}.warning{background:#ffe5a3;color:#432c00}.filters{display:flex;gap:7px;overflow:auto;margin:0 -14px;padding:10px 14px;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}.filters button{white-space:nowrap;border-radius:22px;font-size:14px}.toolbar{margin-bottom:3px}.view-switch{display:flex;background:var(--secondary);border-radius:12px;padding:2px}.view-switch button{min-height:44px}.search{display:block;margin-top:8px}.search input{width:100%;min-height:44px;border:1px solid var(--hint);border-radius:10px;padding:8px 12px;background:var(--section);color:var(--text)}main{flex:1;min-height:0;position:relative}.map-empty{position:absolute;left:14px;right:14px;top:14px;z-index:500;padding:4px 14px;border-radius:12px;background:var(--bg);box-shadow:0 1px 6px #0006}.empty button{margin-bottom:10px}.sheet hr{border:0;border-top:1px solid var(--secondary);margin:8px 0}#map{height:100%;background:#dfe7e9}.list{height:100%;overflow:auto;padding:4px 14px calc(16px + env(safe-area-inset-bottom))}.flat-row{display:block;width:100%;text-align:left;margin:8px 0;padding:13px;background:var(--section);border:1px solid var(--hint)}.flat-row strong,.flat-row span{display:block}.flat-row span{font-size:14px;margin-top:4px}.muted{color:var(--hint)}.overlay{position:fixed;inset:0;background:#0009;z-index:1000;display:flex;align-items:flex-end}.sheet{width:100%;max-height:85%;overflow:auto;background:var(--bg);border-radius:20px 20px 0 0;padding:8px 18px calc(20px + env(safe-area-inset-bottom))}.handle{width:42px;height:5px;border-radius:5px;background:var(--hint);margin:0 auto 10px}.sheet-heading button{min-width:44px}.sheet p{margin:12px 0}.actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-top:18px}.actions button{background:var(--secondary);color:var(--text)}.actions button.primary{grid-column:1/-1;background:var(--button);color:var(--button-text)}.option{display:flex;align-items:center;gap:10px;min-height:44px}.option input{width:20px;height:20px;accent-color:var(--button)}.marker-icon{background:transparent;border:0}.marker-dot{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:2px solid white;box-shadow:0 1px 4px #0009;border-radius:50%;font-size:18px;font-weight:700;color:white}.marker-dot.approx{border-style:dashed}.marker-dot.removed{filter:saturate(.3);opacity:.75}.marker-dot.applied{border-radius:6px;transform:rotate(45deg)}.marker-dot.applied span{transform:rotate(-45deg)}.marker-dot.viewed,.marker-dot.jb{border-radius:5px}.marker-dot.new,.marker-dot.liked{color:#252b30;border-color:#343b42}.marker-dot.liked{border-color:#d4374f}.marker-dot.jb{background:#172c48;font-size:13px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.dark .leaflet-tile-pane{filter:brightness(.72) contrast(1.08)}.dark .leaflet-bar a{background:var(--section);color:var(--text);border-color:var(--secondary)}.dark .leaflet-control-attribution{background:#17212bcc;color:var(--hint)}.dark .leaflet-control-attribution a{color:var(--link)}
