/* «Что по топливу» (экс-ГдеБЕНЗ) — v3 «Liquid Glass» design system. Original implementation.
   Frosted translucent surfaces, specular top highlights, capsule geometry,
   Apple system palette, SF-style typography. Light default, dark supported. */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  /* base */
  --bg:#F2F3F7; --bg2:#E9EBF1; --text:#0B1220; --dim:#6C7383; --dim2:#464D5C;
  /* apple system palette */
  --green:#34C759; --orange:#FF9500; --yellow:#FFCC00; --red:#FF3B30;
  --blue:#007AFF; --gray:#8E8E93;
  --accent:#248A3D;                       /* deep green for text-on-light */
  --tint:rgba(52,199,89,.14);
  /* glass */
  --glass:rgba(255,255,255,.66);
  --glass-strong:rgba(255,255,255,.82);
  --glass-bd:rgba(11,18,32,.08);
  --glass-hi:rgba(255,255,255,.65);       /* specular inset top light */
  --hairline:rgba(11,18,32,.07);
  --row:rgba(255,255,255,.86);
  /* shadow stack */
  --sh-1:0 0 0 .5px rgba(11,18,32,.04), 0 1px 1px rgba(11,18,32,.04), 0 8px 24px rgba(11,18,32,.10);
  --sh-2:0 0 0 .5px rgba(11,18,32,.04), 0 2px 4px rgba(11,18,32,.05), 0 16px 48px rgba(11,18,32,.16);
  --safe-b:env(safe-area-inset-bottom,0px); --safe-t:env(safe-area-inset-top,0px);
  --ease:cubic-bezier(.32,.72,0,1);
}
html[data-theme="dark"] {
  --bg:#0A0A0F; --bg2:#111218; --text:#F5F6F8; --dim:#8E93A3; --dim2:#B6BBC8;
  --green:#30D158; --orange:#FF9F0A; --yellow:#FFD60A; --red:#FF453A;
  --blue:#0A84FF; --gray:#98989F;
  --accent:#30D158;
  --tint:rgba(48,209,88,.16);
  --glass:rgba(24,25,31,.62);
  --glass-strong:rgba(28,29,36,.78);
  --glass-bd:rgba(255,255,255,.10);
  --glass-hi:rgba(255,255,255,.09);
  --hairline:rgba(255,255,255,.08);
  --row:rgba(255,255,255,.05);
  --sh-1:0 0 0 .5px rgba(0,0,0,.4), 0 1px 1px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.45);
  --sh-2:0 0 0 .5px rgba(0,0,0,.4), 0 2px 4px rgba(0,0,0,.4), 0 16px 48px rgba(0,0,0,.6);
}

html, body {
  height:100%; background:var(--bg); color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Inter",system-ui,"Segoe UI",Roboto,sans-serif;
  font-size:15px; letter-spacing:-.01em;
  -webkit-font-smoothing:antialiased; -webkit-text-size-adjust:100%;
  overscroll-behavior-y:none;
  font-feature-settings:"tnum" 0;
}
body { overflow:hidden; }
button { font:inherit; color:inherit; cursor:pointer; border:none; background:none;
  -webkit-tap-highlight-color:transparent; letter-spacing:inherit; }
input { font:inherit; color:inherit; letter-spacing:inherit; }
a { color:inherit; text-decoration:none; }
[hidden] { display:none !important; }
.tap { transition:transform .18s var(--ease), opacity .18s var(--ease); }
.tap:active { transform:scale(.96); }
svg.ic { width:20px; height:20px; stroke:currentColor; fill:none;
  stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; flex:0 0 auto; }

/* ================= glass primitives ================= */
.glass, .gbtn, .gcap {
  background:var(--glass);
  backdrop-filter:blur(28px) saturate(180%);
  -webkit-backdrop-filter:blur(28px) saturate(180%);
  border:1px solid var(--glass-bd);
  box-shadow:var(--sh-1), inset 0 1px 0 var(--glass-hi);
}
.gbtn { display:grid; place-items:center; color:var(--dim2); }
.gcap { display:flex; align-items:center; }

/* ================= app frame ================= */
#app { position:fixed; inset:0; overflow:hidden; background:var(--bg); }
@media (min-width:640px) {
  body { background:
    radial-gradient(1200px 800px at 20% -10%, rgba(52,199,89,.10), transparent 60%),
    radial-gradient(1000px 700px at 110% 110%, rgba(0,122,255,.08), transparent 60%),
    var(--bg2); }
  #app { position:relative; margin:0 auto; width:460px; height:100vh;
    box-shadow:0 0 0 1px var(--glass-bd), 0 40px 120px rgba(11,18,32,.35); }
}

/* ================= views ================= */
.view { position:absolute; inset:0; display:none; }
.view.on { display:block; }
#view-home, #view-saved { overflow-y:auto; -webkit-overflow-scrolling:touch;
  padding:calc(22px + var(--safe-t)) 18px calc(128px + var(--safe-b)); }

/* iOS-style large titles & captions */
.lg-title { font-size:30px; font-weight:800; letter-spacing:-.035em; line-height:1.15; }
.lg-sub { color:var(--dim); font-size:14px; letter-spacing:-.01em; margin-top:7px;
  line-height:1.5; }
.cap { font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.05em;
  color:var(--dim); }

/* ================= floating tabbar ================= */
#tabbar {
  position:absolute; left:50%; transform:translateX(-50%);
  bottom:calc(14px + var(--safe-b)); width:calc(100% - 44px); max-width:400px;
  height:58px; z-index:1300; display:flex; padding:5px; border-radius:29px;
  background:var(--glass);
  backdrop-filter:blur(32px) saturate(190%); -webkit-backdrop-filter:blur(32px) saturate(190%);
  border:1px solid var(--glass-bd);
  box-shadow:var(--sh-2), inset 0 1px 0 var(--glass-hi);
}
#tab-pill {
  position:absolute; top:5px; bottom:5px; left:5px;
  width:calc((100% - 10px)/3); border-radius:24px; pointer-events:none;
  background:var(--tint);
  border:1px solid color-mix(in srgb, var(--green) 45%, transparent);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25);
  transition:transform .26s var(--ease);
}
#tabbar.is-map #tab-pill { transform:translateX(100%); }
#tabbar.is-saved #tab-pill { transform:translateX(200%); }
.tab {
  flex:1; position:relative; z-index:1; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:3px; min-width:0;
  font-size:10.5px; font-weight:600; letter-spacing:0;
  color:var(--dim); transition:color .2s var(--ease);
}
.tab svg { width:22px; height:22px; stroke-width:1.7; }
.tab.on { color:var(--accent); font-weight:700; }

/* ================= map view ================= */
#map { position:absolute; inset:0; background:var(--bg2); z-index:1; }
.leaflet-container { background:var(--bg2); font:inherit; }
html[data-theme="dark"] .leaflet-tile {
  filter:brightness(.7) contrast(1.05) saturate(.6) hue-rotate(180deg) invert(1); }
.leaflet-control-attribution { font-size:10px; opacity:.7;
  background:rgba(255,255,255,.6) !important; backdrop-filter:blur(8px);
  border-radius:8px 0 0 0; }
html[data-theme="dark"] .leaflet-control-attribution {
  background:rgba(20,20,26,.6) !important; color:var(--dim); }

/* floating header over the map */
.mtop { position:absolute; top:calc(12px + var(--safe-t)); left:14px; right:14px;
  z-index:640; pointer-events:none; }
.mtop-row { display:flex; align-items:center; gap:9px; }
.mtop-row > * { pointer-events:auto; }
.logo-chip { gap:8px; height:44px; padding:0 15px 0 11px; border-radius:22px;
  font-weight:800; font-size:15.5px; letter-spacing:-.02em; }
.logo-chip .li { width:26px; height:26px; border-radius:8px;
  background:linear-gradient(160deg,var(--green),#1FA84A);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4), 0 2px 6px rgba(52,199,89,.35);
  display:grid; place-items:center; color:#fff; }
.logo-chip .li svg { width:15px; height:15px; stroke-width:2; }
.logo-chip b { color:#052711; background:linear-gradient(160deg,var(--green),#1FA84A);
  padding:1px 8px 2px; border-radius:999px; font-size:12.5px; letter-spacing:0; }
.h-city { margin-left:auto; gap:7px; height:44px; padding:0 14px; max-width:180px;
  border-radius:22px; font-size:14px; font-weight:600; color:var(--text); }
.h-city svg { width:15px; height:15px; color:var(--accent); }
.h-city .nm { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.h-city .car { color:var(--dim); font-size:9px; margin-top:1px; }
.map-disclaimer { margin-top:9px; gap:6px; padding:7px 12px; border-radius:999px;
  font-size:11px; font-weight:500; color:var(--dim); pointer-events:auto;
  display:inline-flex; align-items:center; }
.map-disclaimer svg { width:13px; height:13px; color:var(--orange); }

/* action column */
.map-actions { position:absolute; right:14px; top:calc(72px + var(--safe-t));
  z-index:630; display:flex; flex-direction:column; gap:9px; }
.ma-btn { width:44px; height:44px; border-radius:22px; position:relative; }
.ma-btn svg { width:19px; height:19px; }
.ma-btn.on { color:var(--accent); }
.ma-btn .dot { position:absolute; top:9px; right:9px; width:7px; height:7px;
  border-radius:50%; background:var(--green);
  box-shadow:0 0 0 2px var(--glass-strong), 0 0 8px var(--green); }

/* zoom / locate */
.map-fabs { position:absolute; right:14px; bottom:calc(31dvh + 16px); z-index:630;
  display:flex; flex-direction:column; gap:9px;
  transition:bottom .3s var(--ease); }
#view-map.sheet-big .map-fabs { bottom:calc(58dvh + 16px); }
#view-map.sheet-min .map-fabs { bottom:calc(124px + var(--safe-b) + 16px); }
.zoom-caps { display:flex; flex-direction:column; border-radius:22px; overflow:hidden; }
.zoom-caps button { width:44px; height:42px; display:grid; place-items:center;
  background:none; color:var(--dim2); font-size:20px; font-weight:400; }
.zoom-caps button + button { border-top:1px solid var(--hairline); }

/* ================= markers ================= */
/* один drop-shadow вместо двух: вторая (цветная) тень оставлена только
   выбранному пину — на статичной карте разницы почти нет, в движении FPS выше */
.mk { position:relative; --mkc:var(--gray);
  filter:drop-shadow(0 2px 4px rgba(11,18,32,.28));
  transition:transform .2s var(--ease); transform-origin:50% 100%; }
html[data-theme="dark"] .mk { filter:drop-shadow(0 2px 5px rgba(0,0,0,.55)); }
.mk.sel { filter:drop-shadow(0 2px 4px rgba(11,18,32,.28))
  drop-shadow(0 6px 14px color-mix(in srgb, var(--mkc) 50%, transparent)); }
/* во время движения карты: без анимаций появления и лишних пересчётов */
body.moving .mk { animation:none; transition:none; }
body.moving .mk .mk-pulse { animation:none; opacity:0; }
.mk svg { display:block; }
.mk .mk-check { display:none; }
.mk.voted .mk-check { display:grid; }
.mk.sel { transform:scale(1.18); z-index:900 !important; }
@keyframes mkIn { from { transform:scale(.4) translateY(8px); opacity:0; }
                  to { transform:scale(1) translateY(0); opacity:1; } }
.mk { animation:mkIn .22s var(--ease) both; }

/* clusters — frosted circle, tinted ring & count */
.mkcl { --mkc:var(--gray);
  border-radius:50%; display:grid; place-items:center;
  font-weight:700; font-size:13px; letter-spacing:-.02em;
  color:color-mix(in srgb, var(--mkc) 80%, var(--text));
  background:var(--glass-strong);
  backdrop-filter:blur(12px) saturate(160%); -webkit-backdrop-filter:blur(12px) saturate(160%);
  border:2px solid color-mix(in srgb, var(--mkc) 75%, transparent);
  box-shadow:0 2px 8px rgba(11,18,32,.18), 0 0 14px color-mix(in srgb, var(--mkc) 30%, transparent),
    inset 0 1px 0 rgba(255,255,255,.5); }
html[data-theme="dark"] .mkcl { box-shadow:0 2px 10px rgba(0,0,0,.5),
    0 0 16px color-mix(in srgb, var(--mkc) 35%, transparent), inset 0 1px 0 rgba(255,255,255,.12); }

/* ================= map bottom sheet ================= */
.msheet {
  position:absolute; left:0; right:0; bottom:0; z-index:620; height:31dvh;
  background:var(--glass);
  backdrop-filter:blur(36px) saturate(185%); -webkit-backdrop-filter:blur(36px) saturate(185%);
  border-top:1px solid var(--glass-bd); border-radius:30px 30px 0 0;
  box-shadow:0 -8px 40px rgba(11,18,32,.14), inset 0 1px 0 var(--glass-hi);
  display:flex; flex-direction:column;
  padding-bottom:calc(88px + var(--safe-b));
  transition:height .3s var(--ease);
}
html[data-theme="dark"] .msheet { box-shadow:0 -8px 40px rgba(0,0,0,.55),
  inset 0 1px 0 var(--glass-hi); }
#view-map.sheet-big .msheet { height:58dvh; }
#view-map.sheet-min .msheet { height:calc(124px + var(--safe-b)); }
.msheet.dragging { transition:none; }
.msheet .drag { width:36px; height:5px; border-radius:999px; flex:0 0 auto;
  background:color-mix(in srgb, var(--dim) 35%, transparent); margin:9px auto 3px; }
.msheet-head { display:flex; align-items:baseline; justify-content:space-between;
  padding:6px 20px 10px; flex:0 0 auto; }
.msheet-head h3 { font-size:19px; font-weight:800; letter-spacing:-.025em; }
.msheet-head .sub { font-size:12px; color:var(--dim); font-weight:500; }
.msheet-list { flex:1; overflow-y:auto; padding:0 14px 14px;
  -webkit-overflow-scrolling:touch; }

/* smart pick FAB */
.pick-fab {
  position:absolute; right:16px; top:-26px; z-index:5;
  height:50px; padding:0 19px 0 15px; display:flex; align-items:center; gap:8px;
  border-radius:25px; font-weight:700; font-size:14.5px; letter-spacing:-.01em;
  color:#fff;
  background:linear-gradient(160deg, #3ED567, #1FA84A);
  border:1px solid rgba(255,255,255,.25);
  box-shadow:0 1px 1px rgba(11,18,32,.1), 0 10px 28px rgba(43,180,86,.45),
    inset 0 1px 0 rgba(255,255,255,.35);
}
.pick-fab svg { width:18px; height:18px; }

/* ================= grouped lists (iOS inset style) ================= */
.group { border-radius:22px; overflow:hidden;
  background:var(--row);
  backdrop-filter:blur(20px) saturate(160%); -webkit-backdrop-filter:blur(20px) saturate(160%);
  border:1px solid var(--glass-bd);
  box-shadow:var(--sh-1), inset 0 1px 0 var(--glass-hi); }
.srow { display:flex; align-items:center; gap:13px; padding:13px 15px;
  cursor:pointer; position:relative; }
.srow + .srow::before { content:""; position:absolute; top:0; left:70px; right:0;
  height:1px; background:var(--hairline); }
.srow:active { background:color-mix(in srgb, var(--dim) 8%, transparent); }
.slogo { width:42px; height:42px; border-radius:12px; flex:0 0 auto;
  display:grid; place-items:center; font-weight:700; font-size:16px;
  letter-spacing:0; color:var(--dim2);
  background:linear-gradient(180deg, color-mix(in srgb, var(--dim) 10%, transparent),
    color-mix(in srgb, var(--dim) 16%, transparent));
  border:1px solid var(--hairline);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25); }
.slogo svg { width:19px; height:19px; color:var(--dim); }
.sc-main { flex:1; min-width:0; }
.sc-name { font-size:15px; font-weight:600; letter-spacing:-.015em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sc-sub { font-size:12px; color:var(--dim); margin-top:2px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sc-fuels { display:flex; gap:4px; margin-top:6px; flex-wrap:wrap; }
.sc-fuels i { font-style:normal; font-size:10px; font-weight:700; padding:2.5px 6.5px;
  border-radius:6px; letter-spacing:0;
  background:var(--tint); color:var(--accent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--green) 30%, transparent); }
.sc-right { display:flex; flex-direction:column; align-items:flex-end; gap:5px;
  flex:0 0 auto; }
.sbadge { font-size:11px; font-weight:700; padding:4.5px 9px; border-radius:999px;
  white-space:nowrap; letter-spacing:0; display:flex; align-items:center; gap:5px; }
.sbadge::before { content:""; width:6px; height:6px; border-radius:50%;
  background:currentColor; box-shadow:0 0 6px currentColor; }
.sbadge.s-yes { color:var(--accent); background:var(--tint); }
.sbadge.s-queue { color:var(--orange); background:color-mix(in srgb,var(--orange) 13%,transparent); }
.sbadge.s-low { color:color-mix(in srgb, var(--yellow) 60%, var(--text));
  background:color-mix(in srgb,var(--yellow) 16%,transparent); }
.sbadge.s-no { color:var(--red); background:color-mix(in srgb,var(--red) 11%,transparent); }
.sbadge.s-unknown { color:var(--dim); background:color-mix(in srgb,var(--dim) 12%,transparent); }
.sbadge.s-unknown::before { box-shadow:none; }
.sc-meta { font-size:11px; color:var(--dim); white-space:nowrap;
  font-variant-numeric:tabular-nums; }

/* ================= home view ================= */
.stat-strip { display:flex; gap:8px; margin:18px -18px 0; padding:2px 18px 8px;
  overflow-x:auto; scrollbar-width:none; }
.stat-strip::-webkit-scrollbar { display:none; }
.stat-chip { flex:0 0 auto; display:flex; align-items:center; gap:7px;
  height:38px; padding:0 14px; border-radius:19px;
  font-size:13px; font-weight:600; letter-spacing:-.01em; color:var(--dim2); }
.stat-chip b { color:var(--text); font-variant-numeric:tabular-nums; }
.stat-chip .sw { width:8px; height:8px; border-radius:50%;
  box-shadow:0 0 8px currentColor; }
.sec { margin-top:26px; }
.sec-head { display:flex; align-items:baseline; justify-content:space-between;
  margin:0 4px 10px; }
.sec-head h2 { font-size:20px; font-weight:800; letter-spacing:-.025em; }
.sec-head .lnk { font-size:13px; color:var(--accent); font-weight:600; }

.map-teaser { position:relative; height:148px; border-radius:24px; overflow:hidden;
  margin-top:16px; cursor:pointer; border:1px solid var(--glass-bd);
  box-shadow:var(--sh-1); background-size:cover; background-position:center;
  background-color:var(--bg2); }
.map-teaser::after { content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, transparent 20%, rgba(11,18,32,.5)); }
html[data-theme="dark"] .map-teaser::after {
  background:linear-gradient(180deg, transparent 10%, rgba(0,0,0,.65)); }
.map-teaser .mt-in { position:absolute; left:14px; right:14px; bottom:12px; z-index:2;
  display:flex; align-items:center; gap:10px; }
.map-teaser .mt-badge { width:40px; height:40px; border-radius:20px;
  background:rgba(255,255,255,.2); backdrop-filter:blur(16px);
  border:1px solid rgba(255,255,255,.35);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4);
  display:grid; place-items:center; color:#fff; }
.map-teaser .mt-badge svg { width:19px; height:19px; }
.map-teaser .mt-t { font-weight:700; font-size:15px; color:#fff;
  letter-spacing:-.015em; text-shadow:0 1px 6px rgba(0,0,0,.4); }
.map-teaser .mt-s { font-size:12px; color:rgba(255,255,255,.85); margin-top:1px;
  text-shadow:0 1px 4px rgba(0,0,0,.4); }
.map-teaser .mt-go { margin-left:auto; width:32px; height:32px; border-radius:16px;
  background:rgba(255,255,255,.92); color:#0B1220; display:grid; place-items:center; }
.map-teaser .mt-go svg { width:15px; height:15px; }

.note-card { display:flex; gap:13px; padding:15px; border-radius:22px; margin-top:26px; }
.note-card .nic { width:38px; height:38px; border-radius:19px; flex:0 0 auto;
  display:grid; place-items:center; }
.note-card .nic svg { width:18px; height:18px; }
.note-card .t { font-weight:700; font-size:14.5px; letter-spacing:-.015em;
  margin-bottom:4px; }
.note-card .p { font-size:12.5px; color:var(--dim); line-height:1.55; }
.note-card.warn .nic { background:color-mix(in srgb,var(--orange) 14%,transparent);
  color:var(--orange); }
.note-card.share .nic { background:var(--tint); color:var(--accent); }
.note-card .btns { display:flex; gap:8px; margin-top:11px; }
.btn-mini { height:34px; padding:0 15px; border-radius:17px; font-weight:600;
  font-size:12.5px; display:flex; align-items:center; gap:6px; }
.btn-mini.prime { background:var(--accent); color:#fff;
  box-shadow:0 4px 14px color-mix(in srgb, var(--green) 40%, transparent),
    inset 0 1px 0 rgba(255,255,255,.3); }
.btn-mini.plain { background:color-mix(in srgb, var(--dim) 10%, transparent);
  color:var(--dim2); }

.faq details { padding:14px 16px; position:relative; }
.faq details + details::before { content:""; position:absolute; top:0; left:16px;
  right:0; height:1px; background:var(--hairline); }
.faq summary { font-weight:600; font-size:14px; cursor:pointer;
  letter-spacing:-.01em; list-style:none; display:flex; align-items:center; }
.faq summary::-webkit-details-marker { display:none; }
.faq summary::after { content:"›"; margin-left:auto; color:var(--dim);
  font-size:17px; transform:rotate(90deg); transition:transform .2s var(--ease); }
.faq details[open] summary::after { transform:rotate(-90deg); }
.faq p { margin-top:9px; font-size:13px; color:var(--dim); line-height:1.6; }

.site-foot { margin-top:30px; padding:0 4px; color:var(--dim); font-size:12.5px;
  line-height:2; }
.site-foot .cap { margin-bottom:8px; }
.site-foot a { margin-right:14px; color:var(--dim2); font-weight:500; }
.don-btn { display:flex; align-items:center; justify-content:center; gap:8px;
  width:100%; height:48px; margin:14px 0; border-radius:24px;
  color:var(--accent); font-weight:700; font-size:14.5px; }
.don-btn svg { width:17px; height:17px; }
.foot-legal { font-size:11.5px; line-height:1.7; margin-top:8px; opacity:.8; }
.site-foot a .fi { width:13px; height:13px; vertical-align:-2px; margin-right:4px; }
/* логотип сети поверх монограммы-фолбэка */
.slogo, .rs-logo { position:relative; overflow:hidden; }
.brand-img { position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; border-radius:inherit; }

/* ================= saved view ================= */
.impact { display:flex; margin-top:18px; border-radius:22px; overflow:hidden; }
.impact .im { flex:1; padding:14px 6px; text-align:center; position:relative; }
.impact .im + .im::before { content:""; position:absolute; left:0; top:12px;
  bottom:12px; width:1px; background:var(--hairline); }
.impact .n { font-size:22px; font-weight:800; letter-spacing:-.03em;
  color:var(--accent); font-variant-numeric:tabular-nums; }
.impact .l { font-size:11px; color:var(--dim); margin-top:2px; font-weight:500; }
.sv-lh { display:flex; align-items:baseline; justify-content:space-between;
  margin:26px 4px 10px; }
.sv-lh h2 { font-size:20px; font-weight:800; letter-spacing:-.025em; }
.sv-sort { font-size:13px; color:var(--accent); font-weight:600;
  display:flex; align-items:center; gap:4px; }
.badges-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:9px; }
.badge-card { padding:14px 8px 12px; border-radius:20px; text-align:center; }
.badge-card .bi { width:44px; height:44px; margin:0 auto; border-radius:22px;
  display:grid; place-items:center; font-size:21px;
  background:color-mix(in srgb, var(--dim) 10%, transparent); }
.badge-card .bn { font-size:11px; font-weight:600; margin-top:8px; line-height:1.3;
  color:var(--dim2); }
.badge-card.locked .bi { filter:grayscale(1); opacity:.4; }
.badge-card.locked .bn { color:var(--dim); opacity:.6; }
.badge-card.got .bi { background:var(--tint);
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--green) 35%, transparent),
    0 4px 14px color-mix(in srgb, var(--green) 22%, transparent); }
.badge-card.got .bn { color:var(--text); }
.sg-entry { width:100%; margin-top:26px; height:52px; border-radius:26px;
  color:var(--accent); font-weight:700; font-size:14.5px;
  display:flex; align-items:center; justify-content:center; gap:8px; }
.sg-entry svg { width:17px; height:17px; }

/* ================= station panel ================= */
#overlay { position:absolute; inset:0; z-index:1400; background:rgba(11,18,32,.35);
  backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px);
  opacity:0; pointer-events:none; transition:opacity .25s var(--ease); }
#overlay.on { opacity:1; pointer-events:auto; }
#panel {
  position:absolute; left:0; right:0; bottom:0; z-index:1450; max-height:88%;
  background:var(--glass-strong);
  backdrop-filter:blur(40px) saturate(185%); -webkit-backdrop-filter:blur(40px) saturate(185%);
  border-radius:30px 30px 0 0; border-top:1px solid var(--glass-bd);
  box-shadow:0 -12px 60px rgba(11,18,32,.25), inset 0 1px 0 var(--glass-hi);
  display:flex; flex-direction:column;
  transform:translateY(103%); transition:transform .32s var(--ease);
  visibility:hidden;
}
#panel.on { transform:translateY(0); visibility:visible; }
#panel .drag { width:36px; height:5px; border-radius:999px;
  background:color-mix(in srgb, var(--dim) 35%, transparent);
  margin:9px auto 3px; flex:0 0 auto; }
.rs-head { display:flex; align-items:center; gap:12px; padding:8px 18px 2px;
  flex:0 0 auto; }
.rs-logo { width:48px; height:48px; border-radius:14px; flex:0 0 auto;
  display:grid; place-items:center; font-weight:700; font-size:19px; color:var(--dim2);
  background:linear-gradient(180deg, color-mix(in srgb, var(--dim) 9%, transparent),
    color-mix(in srgb, var(--dim) 16%, transparent));
  border:1px solid var(--hairline);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3); }
.rs-tt { flex:1; min-width:0; }
.rs-name { font-size:18px; font-weight:700; letter-spacing:-.02em; line-height:1.2; }
.rs-addr { font-size:12px; color:var(--dim); margin-top:2px; }
.rs-bm, .rs-x { width:36px; height:36px; border-radius:18px; flex:0 0 auto;
  display:grid; place-items:center; color:var(--dim);
  background:color-mix(in srgb, var(--dim) 9%, transparent); }
.rs-bm svg, .rs-x svg { width:17px; height:17px; }
.rs-bm.on { color:var(--yellow);
  background:color-mix(in srgb, var(--yellow) 16%, transparent); }
.rs-bm.on svg { fill:currentColor; }
.rs-body { overflow-y:auto; padding:12px 18px calc(20px + var(--safe-b));
  -webkit-overflow-scrolling:touch; }

.rs-status { display:flex; align-items:center; gap:12px; padding:13px 15px;
  border-radius:18px; box-shadow:inset 0 1px 0 rgba(255,255,255,.2); }
.rs-status .sw { width:10px; height:10px; border-radius:50%; flex:0 0 auto;
  box-shadow:0 0 10px currentColor; background:currentColor; }
.rs-status .st { font-weight:700; font-size:15.5px; letter-spacing:-.015em; }
.rs-status .sm { font-size:11.5px; color:var(--dim); margin-top:2px; }
.rs-status.s-yes { background:var(--tint); }
.rs-status.s-yes .sw, .rs-status.s-yes .st { color:var(--accent); }
.rs-status.s-queue { background:color-mix(in srgb,var(--orange) 11%,transparent); }
.rs-status.s-queue .sw, .rs-status.s-queue .st { color:var(--orange); }
.rs-status.s-low { background:color-mix(in srgb,var(--yellow) 13%,transparent); }
.rs-status.s-low .sw, .rs-status.s-low .st {
  color:color-mix(in srgb, var(--yellow) 55%, var(--text)); }
.rs-status.s-no { background:color-mix(in srgb,var(--red) 9%,transparent); }
.rs-status.s-no .sw, .rs-status.s-no .st { color:var(--red); }
.rs-status.s-unknown { background:color-mix(in srgb,var(--dim) 9%,transparent); }
.rs-status.s-unknown .sw { color:var(--gray); box-shadow:none; }
.conf-line { font-size:12px; color:var(--dim); margin:9px 4px 0;
  font-variant-numeric:tabular-nums; }
.extras { display:flex; gap:7px; flex-wrap:wrap; margin:10px 0 0; }
.extras span { font-size:11.5px; font-weight:600; padding:6px 11px;
  border-radius:999px; background:color-mix(in srgb, var(--dim) 9%, transparent);
  color:var(--dim2); display:flex; align-items:center; gap:5px; }
.extras svg { width:13px; height:13px; }

.fuel-row { display:flex; flex-wrap:wrap; gap:7px; margin:14px 0 0; }
.fuel-tag { padding:7px 12px; border-radius:999px; font-size:12px; font-weight:600;
  letter-spacing:0; background:color-mix(in srgb, var(--dim) 8%, transparent);
  color:var(--dim); }
.fuel-tag.on { background:var(--tint); color:var(--accent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--green) 32%, transparent); }

.rs-h { font-size:12px; text-transform:uppercase; letter-spacing:.05em;
  color:var(--dim); font-weight:700; margin:22px 4px 10px; }
.vgrid { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.vbtn { padding:13px 8px 12px; border-radius:18px;
  background:color-mix(in srgb, var(--dim) 7%, transparent);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18);
  font-weight:600; font-size:13px; letter-spacing:-.01em; color:var(--dim2);
  display:flex; flex-direction:column; align-items:center; gap:7px;
  transition:all .18s var(--ease); }
.vbtn .vi { width:34px; height:34px; border-radius:17px; display:grid;
  place-items:center; background:color-mix(in srgb, var(--dim) 10%, transparent);
  color:var(--dim); transition:all .18s var(--ease); }
.vbtn .vi svg { width:17px; height:17px; }
.vbtn[data-s="yes"] .vi { color:var(--accent); background:var(--tint); }
.vbtn[data-s="queue"] .vi { color:var(--orange);
  background:color-mix(in srgb,var(--orange) 13%,transparent); }
.vbtn[data-s="low"] .vi { color:color-mix(in srgb, var(--yellow) 60%, var(--text));
  background:color-mix(in srgb,var(--yellow) 16%,transparent); }
.vbtn[data-s="no"] .vi { color:var(--red);
  background:color-mix(in srgb,var(--red) 11%,transparent); }
.vbtn.sel { color:var(--text);
  box-shadow:inset 0 0 0 1.5px currentColor, inset 0 1px 0 rgba(255,255,255,.18); }
.vbtn.sel[data-s="yes"] { color:var(--accent); background:var(--tint); }
.vbtn.sel[data-s="queue"] { color:var(--orange);
  background:color-mix(in srgb,var(--orange) 12%,transparent); }
.vbtn.sel[data-s="low"] { color:color-mix(in srgb, var(--yellow) 55%, var(--text));
  background:color-mix(in srgb,var(--yellow) 14%,transparent); }
.vbtn.sel[data-s="no"] { color:var(--red);
  background:color-mix(in srgb,var(--red) 10%,transparent); }

.chips { display:flex; flex-wrap:wrap; gap:8px; }
.chips .ch { height:38px; padding:0 15px; border-radius:19px;
  background:color-mix(in srgb, var(--dim) 8%, transparent);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.15);
  font-weight:600; font-size:13px; color:var(--dim2);
  transition:all .16s var(--ease); }
.chips .ch.on { background:var(--accent); color:#fff;
  box-shadow:0 4px 12px color-mix(in srgb, var(--green) 40%, transparent),
    inset 0 1px 0 rgba(255,255,255,.35); }

.cmt-in { display:flex; gap:9px; margin-top:14px; }
.cmt-in input { flex:1; height:46px; padding:0 16px; border-radius:23px;
  background:color-mix(in srgb, var(--dim) 8%, transparent);
  border:none; box-shadow:inset 0 1px 2px rgba(11,18,32,.06); font-size:14px; }
.cmt-in input::placeholder { color:var(--dim); }
.cmt-in input:focus { outline:none;
  box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--green) 45%, transparent); }
.cmt-send { width:46px; height:46px; border-radius:23px; flex:0 0 auto;
  background:var(--accent); color:#fff; display:grid; place-items:center;
  box-shadow:0 4px 12px color-mix(in srgb, var(--green) 35%, transparent),
    inset 0 1px 0 rgba(255,255,255,.3); }
.cmt-send svg { width:18px; height:18px; }

.cta-big { width:100%; height:52px; border-radius:26px; margin-top:16px;
  background:linear-gradient(160deg, #3ED567, #1FA84A); color:#fff;
  font-weight:700; font-size:16px; letter-spacing:-.015em;
  border:1px solid rgba(255,255,255,.25);
  box-shadow:0 1px 1px rgba(11,18,32,.08), 0 10px 26px rgba(43,180,86,.4),
    inset 0 1px 0 rgba(255,255,255,.35);
  transition:all .18s var(--ease); }
.cta-big:disabled { opacity:.4; box-shadow:none; filter:saturate(.4); }
.rs-trust { font-size:11.5px; color:var(--dim); text-align:center; margin-top:10px;
  line-height:1.55; padding:0 12px; }
.route-cta { width:100%; height:50px; border-radius:25px; margin-top:18px;
  font-weight:700; font-size:14.5px; color:var(--text);
  display:flex; align-items:center; justify-content:center; gap:9px; }
.route-cta svg { width:18px; height:18px; color:var(--blue); }
.rs-nothere { width:100%; padding:12px; margin-top:6px; font-size:12.5px;
  color:var(--dim); font-weight:500; }

.comment { padding:12px 15px; position:relative; }
.comment + .comment::before { content:""; position:absolute; top:0; left:15px;
  right:0; height:1px; background:var(--hairline); }
.comment p { font-size:13.5px; line-height:1.5; }
.comment .meta { color:var(--dim); font-size:11px; margin-top:6px;
  display:flex; gap:12px; }
.comment .meta button { color:var(--dim); font-size:11px; font-weight:500; }

/* ================= action sheets ================= */
.rsh { position:absolute; inset:0; z-index:1500; display:none; }
.rsh.on { display:block; }
.rsh-back { position:absolute; inset:0; background:rgba(11,18,32,.35);
  backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px); }
.rsh-card { position:absolute; left:12px; right:12px;
  bottom:calc(12px + var(--safe-b));
  background:var(--glass-strong);
  backdrop-filter:blur(40px) saturate(185%); -webkit-backdrop-filter:blur(40px) saturate(185%);
  border:1px solid var(--glass-bd); border-radius:28px;
  box-shadow:var(--sh-2), inset 0 1px 0 var(--glass-hi);
  padding:18px 16px 14px; max-height:80%; overflow-y:auto;
  animation:shUp .28s var(--ease); }
@keyframes shUp { from { transform:translateY(40px) scale(.98); opacity:0; }
                  to { transform:translateY(0) scale(1); opacity:1; } }
.rsh-h { font-size:12px; text-transform:uppercase; letter-spacing:.05em;
  color:var(--dim); font-weight:700; margin:2px 6px 10px; }
.rsh-h ~ .rsh-h { margin-top:18px; }
.rsh-opt { width:100%; display:flex; align-items:center; gap:13px; padding:13px 12px;
  border-radius:16px; font-weight:600; font-size:14.5px; letter-spacing:-.01em;
  text-align:left; transition:background .15s var(--ease); }
.rsh-opt:active { background:color-mix(in srgb, var(--dim) 10%, transparent); }
.rsh-opt.on { background:var(--tint); color:var(--accent); }
.rsh-opt .oi { width:34px; height:34px; border-radius:10px; flex:0 0 auto;
  display:grid; place-items:center; font-size:13px; font-weight:700;
  background:color-mix(in srgb, var(--dim) 9%, transparent); color:var(--dim2); }
.rsh-opt .oi svg { width:17px; height:17px; }
.rsh-opt .oi.oi-ymaps { background:#FC3F1D; color:#fff; }
.rsh-opt .oi.oi-dgis  { background:#19AA1E; color:#fff; }
.rsh-opt .oi.oi-navi  { background:#1F6BFF; color:#fff; }
.rsh-opt .oi.oi-ymaps svg, .rsh-opt .oi.oi-dgis svg { width:19px; height:19px; }
.rsh-opt .oi.oi-navi svg { width:18px; height:18px; }
.rsh-opt.on .oi { background:color-mix(in srgb, var(--green) 18%, transparent);
  color:var(--accent); }
.rsh-cancel { width:100%; height:48px; margin-top:10px; border-radius:24px;
  background:color-mix(in srgb, var(--dim) 9%, transparent);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.15);
  font-weight:700; font-size:14.5px; }

/* pick / donate headers */
.pick-hd { display:flex; align-items:center; gap:12px; margin:0 2px 12px; }
.pick-hd .pi { width:40px; height:40px; border-radius:20px; flex:0 0 auto;
  display:grid; place-items:center; background:var(--tint); color:var(--accent); }
.pick-hd .pi svg { width:19px; height:19px; }
.pick-hd .t { font-weight:700; font-size:16.5px; letter-spacing:-.02em; }
.pick-hd .s { font-size:12px; color:var(--dim); margin-top:2px; line-height:1.4; }
.pick-x { margin-left:auto; width:32px; height:32px; border-radius:16px;
  background:color-mix(in srgb, var(--dim) 9%, transparent); color:var(--dim);
  display:grid; place-items:center; flex:0 0 auto; }
.pick-x svg { width:14px; height:14px; }
#pick-body { min-height:110px; margin-top:12px; }

.dn-row { display:grid; grid-template-columns:repeat(4,1fr); gap:9px; margin-top:14px; }
.dn-amt { height:52px; border-radius:18px;
  background:color-mix(in srgb, var(--dim) 8%, transparent);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.15);
  font-weight:700; font-size:14px; font-variant-numeric:tabular-nums; }
.dn-amt.star { background:var(--tint); color:var(--accent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--green) 35%, transparent); }
.dn-note { font-size:11.5px; color:var(--dim); text-align:center; margin-top:12px;
  line-height:1.5; }
.dn-thx { text-align:center; padding:20px 8px 8px; }
.dn-thx .hh { width:64px; height:64px; margin:0 auto; border-radius:32px;
  background:var(--tint); display:grid; place-items:center; color:var(--accent); }
.dn-thx .hh svg { width:28px; height:28px; fill:currentColor; stroke:none; }
.dn-thx .tt { font-weight:700; font-size:17px; margin-top:12px;
  letter-spacing:-.02em; }

/* add-station */
.sg-cross { position:absolute; left:50%; top:50%; transform:translate(-50%,-100%);
  z-index:660; pointer-events:none; display:none; color:var(--red);
  filter:drop-shadow(0 4px 8px rgba(11,18,32,.35)); }
.sg-cross svg { width:38px; height:38px; fill:currentColor; stroke:#fff;
  stroke-width:1; }
#view-map.sg-on .sg-cross { display:block; }
.sg-pickbar { position:absolute; left:14px; right:14px;
  bottom:calc(100px + var(--safe-b)); z-index:660; display:none;
  border-radius:24px; padding:14px 15px; }
#view-map.sg-on .sg-pickbar { display:block; }
.sg-pickbar .hint { font-size:13px; color:var(--dim2); margin-bottom:12px;
  text-align:center; line-height:1.45; }
.sg-pickbar .row { display:flex; gap:9px; }
.sg-pickbar .row button { flex:1; height:44px; border-radius:22px; font-weight:700;
  font-size:14px; }
.sg-pickbar .cancel { background:color-mix(in srgb, var(--dim) 9%, transparent); }
.sg-pickbar .ok { background:var(--accent); color:#fff;
  box-shadow:0 6px 16px color-mix(in srgb, var(--green) 35%, transparent),
    inset 0 1px 0 rgba(255,255,255,.3); }
#view-map.sg-on .msheet, #view-map.sg-on .map-actions,
#view-map.sg-on .pick-fab { display:none; }
.sg-field { margin-bottom:11px; }
.sg-field label { display:block; font-size:11.5px; font-weight:600; color:var(--dim);
  margin:0 6px 6px; }
.sg-field input { width:100%; height:46px; padding:0 16px; border-radius:16px;
  background:color-mix(in srgb, var(--dim) 8%, transparent); border:none;
  box-shadow:inset 0 1px 2px rgba(11,18,32,.06); font-size:14.5px; }
.sg-field input:focus { outline:none;
  box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--green) 45%, transparent); }

/* ================= search overlay ================= */
#search-wrap { position:absolute; inset:0; z-index:1600; display:none;
  background:rgba(11,18,32,.35); backdrop-filter:blur(2px);
  -webkit-backdrop-filter:blur(2px); }
#search-wrap.on { display:block; }
.search-card { position:absolute; left:12px; right:12px;
  top:calc(14px + var(--safe-t)); max-height:76%;
  display:flex; flex-direction:column;
  background:var(--glass-strong);
  backdrop-filter:blur(40px) saturate(185%); -webkit-backdrop-filter:blur(40px) saturate(185%);
  border:1px solid var(--glass-bd); border-radius:26px;
  box-shadow:var(--sh-2), inset 0 1px 0 var(--glass-hi); overflow:hidden;
  animation:shDown .28s var(--ease); }
@keyframes shDown { from { transform:translateY(-24px) scale(.98); opacity:0; }
                    to { transform:translateY(0) scale(1); opacity:1; } }
.search-row { display:flex; align-items:center; gap:10px; padding:13px 14px;
  border-bottom:1px solid var(--hairline); }
.search-field { flex:1; display:flex; align-items:center; gap:9px; height:44px;
  padding:0 14px; border-radius:22px;
  background:color-mix(in srgb, var(--dim) 8%, transparent); }
.search-field svg { width:16px; height:16px; color:var(--dim); }
.search-field input { flex:1; border:none; background:none; font-size:15px; }
.search-field input:focus { outline:none; }
.search-row .sx { width:36px; height:36px; border-radius:18px; flex:0 0 auto;
  display:grid; place-items:center; color:var(--dim);
  background:color-mix(in srgb, var(--dim) 9%, transparent); }
.search-row .sx svg { width:14px; height:14px; }
#search-results { overflow-y:auto; padding:12px 14px 16px; }
#search-results .rs-h:first-child { margin-top:0; }

/* ================= vote thanks ================= */
#vote-thanks { position:absolute; inset:0; z-index:1700; display:none;
  background:rgba(11,18,32,.4); backdrop-filter:blur(3px);
  -webkit-backdrop-filter:blur(3px); place-items:center; }
#vote-thanks.on { display:grid; }
.vt-card { width:min(320px,86%); padding:28px 22px 18px; text-align:center;
  border-radius:30px;
  background:var(--glass-strong);
  backdrop-filter:blur(40px) saturate(185%); -webkit-backdrop-filter:blur(40px) saturate(185%);
  border:1px solid var(--glass-bd);
  box-shadow:var(--sh-2), inset 0 1px 0 var(--glass-hi);
  animation:shUp .3s var(--ease); }
.vt-heart { width:68px; height:68px; margin:0 auto; border-radius:34px;
  background:var(--tint); display:grid; place-items:center; color:var(--accent);
  box-shadow:0 8px 24px color-mix(in srgb, var(--green) 25%, transparent),
    inset 0 1px 0 rgba(255,255,255,.3);
  animation:pulseH 1.4s var(--ease) infinite alternate; }
.vt-heart svg { width:30px; height:30px; fill:currentColor; stroke:none; }
@keyframes pulseH { from { transform:scale(1); } to { transform:scale(1.07); } }
.vt-t { font-weight:800; font-size:19px; letter-spacing:-.025em; margin-top:14px; }
.vt-s { font-size:13.5px; color:var(--dim); margin-top:7px; line-height:1.5; }
.vt-streak { display:inline-flex; align-items:center; gap:6px; margin-top:14px;
  height:36px; padding:0 15px; border-radius:18px;
  background:var(--tint); color:var(--accent); font-weight:700; font-size:13px; }
.vt-ok { width:100%; height:48px; margin-top:16px; border-radius:24px;
  background:var(--accent); color:#fff; font-weight:700; font-size:15px;
  box-shadow:0 8px 20px color-mix(in srgb, var(--green) 35%, transparent),
    inset 0 1px 0 rgba(255,255,255,.3); }

/* ================= misc ================= */
.toast { position:absolute; left:50%; bottom:calc(94px + var(--safe-b));
  transform:translateX(-50%) translateY(16px); z-index:1800;
  height:44px; display:flex; align-items:center; padding:0 20px;
  border-radius:22px; font-weight:600; font-size:13.5px; letter-spacing:-.01em;
  color:var(--text);
  background:var(--glass-strong);
  backdrop-filter:blur(32px) saturate(185%); -webkit-backdrop-filter:blur(32px) saturate(185%);
  border:1px solid var(--glass-bd);
  box-shadow:var(--sh-2), inset 0 1px 0 var(--glass-hi);
  opacity:0; pointer-events:none;
  transition:opacity .25s var(--ease), transform .25s var(--ease);
  white-space:nowrap; max-width:92%; overflow:hidden; text-overflow:ellipsis; }
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }
.empty { text-align:center; color:var(--dim); padding:36px 20px; font-size:13.5px;
  line-height:1.6; }
.spin { width:22px; height:22px; margin:0 auto; border-radius:50%;
  border:2.5px solid color-mix(in srgb, var(--dim) 20%, transparent);
  border-top-color:var(--accent); animation:spin .7s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }
.center-load { position:absolute; top:calc(76px + var(--safe-t)); left:50%;
  transform:translateX(-50%); z-index:610; width:40px; height:40px;
  border-radius:20px; display:grid; place-items:center; pointer-events:none; }

@media (prefers-reduced-motion:reduce) {
  *, *::before, *::after { animation-duration:.01ms !important;
    transition-duration:.01ms !important; }
}

/* ================= v6: донаты-кластеры, обзор, активность, радар, десктоп ===== */

/* donut clusters & overview cells: цветное кольцо-диаграмма + стеклянный центр */
.dnut { border-radius:50%; position:relative; display:grid; place-items:center;
  box-shadow:0 3px 10px rgba(11,18,32,.22), inset 0 1px 0 rgba(255,255,255,.35); }
html[data-theme="dark"] .dnut { box-shadow:0 3px 12px rgba(0,0,0,.55),
  inset 0 1px 0 rgba(255,255,255,.10); }
/* центр кольца НЕ блюрит подложку: real-time blur на десятках маркеров
   поверх движущейся карты — главная цена по FPS. Непрозрачная поверхность
   с тем же бликом визуально почти неотличима. */
.dnut::after { content:""; position:absolute; inset:5px; border-radius:50%;
  background:rgba(255,255,255,.94);
  box-shadow:inset 0 1px 0 var(--glass-hi); }
html[data-theme="dark"] .dnut::after { background:rgba(30,31,38,.94); }
.dnut span { position:relative; z-index:2; font-weight:700; letter-spacing:-.02em;
  color:var(--text); font-variant-numeric:tabular-nums; }
.dnut.ov { cursor:pointer; }
.dnut.ov span small { display:block; font-size:9px; font-weight:600; color:var(--dim);
  letter-spacing:0; margin-top:-1px; }

/* пин: пульс выбранного, приглушение при фильтре, точка конфликта, live-вспышка */
.mk .mk-pulse { display:none; position:absolute; left:50%; top:14px; width:44px; height:44px;
  margin:-22px 0 0 -22px; border-radius:50%; border:2px solid var(--mkc);
  opacity:0; pointer-events:none; }
.mk.sel .mk-pulse { display:block; animation:mkPulse 1.6s ease-out infinite; }
@keyframes mkPulse { 0% { transform:scale(.55); opacity:.75; }
  80% { transform:scale(1.25); opacity:0; } 100% { opacity:0; } }
.mk.dim { opacity:.32; filter:grayscale(.55) drop-shadow(0 2px 3px rgba(11,18,32,.18)); }
.mk .mk-chg { position:absolute; top:-3px; left:-4px; width:11px; height:11px;
  border-radius:50%; background:#AF52DE; border:1.5px solid #fff;
  box-shadow:0 0 6px rgba(175,82,222,.7); }
@keyframes mkFlash { 0%,100% { transform:scale(1); } 35% { transform:scale(1.35); } }
.mk.flash { animation:mkFlash .7s var(--ease) 2; }

/* легенда в фильтре */
.legend-row { display:flex; flex-wrap:wrap; gap:10px 14px; padding:2px 6px 4px; }
.legend-row .li { display:flex; align-items:center; gap:6px; font-size:12px;
  color:var(--dim2); font-weight:500; }
.legend-row .sw { width:9px; height:9px; border-radius:50%; box-shadow:0 0 6px currentColor; }

/* свежесть данных */
.fresh-line { display:flex; align-items:center; gap:7px; margin:10px 2px 0;
  font-size:12px; font-weight:600; }
.fresh-line svg { width:14px; height:14px; }
.fresh-line.ok { color:var(--accent); }
.fresh-line.old { color:var(--orange); }

/* лента активности */
.act-row { display:flex; align-items:flex-start; gap:10px; padding:11px 14px; position:relative; }
.act-row + .act-row::before { content:""; position:absolute; top:0; left:42px; right:0;
  height:1px; background:var(--hairline); }
.act-dot { width:9px; height:9px; border-radius:50%; margin-top:5px; flex:0 0 auto;
  box-shadow:0 0 7px currentColor; background:currentColor; }
.act-main { flex:1; min-width:0; }
.act-t { font-size:13px; font-weight:600; letter-spacing:-.01em; }
.act-meta { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-top:4px; }
.act-meta .tm { font-size:11px; color:var(--dim); }
.act-chip { display:inline-flex; align-items:center; gap:4px; font-size:10px; font-weight:700;
  padding:2.5px 7px; border-radius:999px; }
.act-chip svg { width:10px; height:10px; }
.act-chip.site { background:var(--tint); color:var(--accent); }
.act-chip.trust { background:color-mix(in srgb,var(--blue) 13%,transparent); color:var(--blue); }
.act-thx { display:inline-flex; align-items:center; gap:5px; height:28px; padding:0 11px;
  border-radius:14px; font-size:11.5px; font-weight:700; color:var(--dim2); flex:0 0 auto;
  background:color-mix(in srgb, var(--dim) 9%, transparent); }
.act-thx svg { width:12px; height:12px; }
.act-thx.did { background:var(--tint); color:var(--accent); }
.act-thx.did svg { fill:currentColor; stroke:none; }

/* спарклайн 24 ч */
.spark { display:flex; gap:2px; height:26px; align-items:flex-end; margin:8px 2px 2px; }
.spark i { flex:1; border-radius:3px; min-height:6px; opacity:.9; }
.spark-cap { display:flex; justify-content:space-between; font-size:10px; color:var(--dim);
  margin:4px 4px 0; }

/* кнопки в карточке: следить / поделиться статусом */
.rs-actions { display:flex; gap:9px; margin-top:14px; }
.rs-actions button { flex:1; height:44px; border-radius:22px; font-weight:700; font-size:13px;
  display:flex; align-items:center; justify-content:center; gap:7px; color:var(--text); }
.rs-actions svg { width:16px; height:16px; }
.rs-actions .follow.on { color:var(--accent);
  box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--green) 45%, transparent),
    var(--sh-1), inset 0 1px 0 var(--glass-hi); }
.rs-actions .follow.on svg { fill:currentColor; }

/* плашка получателя снапшота */
.ss-recv { display:flex; gap:11px; padding:13px 14px; border-radius:18px; margin-bottom:12px;
  background:color-mix(in srgb, var(--blue) 9%, transparent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--blue) 30%, transparent); }
.ss-recv svg { width:18px; height:18px; color:var(--blue); flex:0 0 auto; margin-top:1px; }
.ss-recv .t { font-size:13px; font-weight:700; }
.ss-recv .s { font-size:12px; color:var(--dim); margin-top:3px; line-height:1.45; }

/* радар в «Мои АЗС» */
.radar-note { display:flex; gap:11px; padding:13px 14px; border-radius:20px; margin-top:16px;
  background:var(--tint);
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--green) 35%, transparent); }
.radar-note svg { width:18px; height:18px; color:var(--accent); flex:0 0 auto; margin-top:1px; }
.radar-note .t { font-size:13.5px; font-weight:700; }
.radar-note .s { font-size:12px; color:var(--dim2); margin-top:3px; line-height:1.5; }
.srow.hl { box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--green) 50%, transparent); }
.srow .edit-btn { width:30px; height:30px; border-radius:15px; flex:0 0 auto; display:grid;
  place-items:center; color:var(--dim);
  background:color-mix(in srgb, var(--dim) 8%, transparent); }
.srow .edit-btn svg { width:13px; height:13px; }

/* бейджи: прогресс */
.bprog { height:4px; border-radius:2px; margin-top:8px;
  background:color-mix(in srgb, var(--dim) 15%, transparent); overflow:hidden; }
.bprog i { display:block; height:100%; border-radius:2px; background:var(--accent);
  box-shadow:0 0 6px color-mix(in srgb, var(--green) 50%, transparent); }
.bp-cap { font-size:9.5px; color:var(--dim); margin-top:4px; font-variant-numeric:tabular-nums; }
.trust-chip { display:inline-flex; align-items:center; gap:6px; margin-top:14px;
  height:36px; padding:0 14px; border-radius:18px; font-weight:700; font-size:12.5px;
  background:color-mix(in srgb, var(--blue) 11%, transparent); color:var(--blue); }
.trust-chip svg { width:14px; height:14px; }
.imp-line { font-size:12px; color:var(--dim); margin:10px 6px 0; line-height:1.5; }
.imp-line b { color:var(--accent); }
.vt-badge { margin-top:12px; padding:10px 14px; border-radius:16px; font-weight:700;
  font-size:13px; background:color-mix(in srgb, var(--yellow) 15%, transparent);
  color:color-mix(in srgb, var(--yellow) 55%, var(--text)); }

/* мои заявки */
.sug-status { font-size:10.5px; font-weight:700; padding:4px 9px; border-radius:999px; }
.sug-status.pend { color:var(--orange);
  background:color-mix(in srgb, var(--orange) 13%, transparent); }
.sug-status.acc { color:var(--accent); background:var(--tint); }
.sg-hint { display:flex; align-items:center; gap:7px; margin:2px 6px 10px; font-size:12px;
  font-weight:600; min-height:16px; }
.sg-hint.ok { color:var(--accent); }
.sg-hint.err { color:var(--red); }
.sg-or { text-align:center; color:var(--dim); font-size:11px; margin:2px 0 10px; }

/* демо-баннер */
.demo-banner { position:absolute; top:calc(64px + var(--safe-t)); left:50%;
  transform:translateX(-50%); z-index:1250; padding:8px 16px; border-radius:999px;
  font-size:12px; font-weight:700; color:var(--orange); white-space:nowrap; }

/* ошибки сети */
.err-box { text-align:center; padding:26px 18px; color:var(--dim); font-size:13px; }
.err-box button { margin-top:12px; height:38px; padding:0 18px; border-radius:19px;
  background:color-mix(in srgb, var(--dim) 9%, transparent); font-weight:700; font-size:13px;
  color:var(--text); }

/* установка PWA */
#install-btn { display:none; }
#install-btn.show { display:grid; }

/* фокус с клавиатуры */
:focus-visible { outline:2px solid color-mix(in srgb, var(--green) 60%, transparent);
  outline-offset:2px; border-radius:8px; }

/* ================= десктоп (≥1020px): сайдбар + карта ================= */
@media (min-width:1020px) {
  #app { width:100%; max-width:none; height:100vh; margin:0; border:none;
    box-shadow:none; }
  body { background:var(--bg); }
  #view-home, #view-saved { padding-left:calc(50% - 340px);
    padding-right:calc(50% - 340px); }
  /* карта: список-сайдбар слева, карта справа */
  #map { left:404px; }
  .msheet { left:0; right:auto; top:0; bottom:0; width:404px; height:100% !important;
    border-radius:0; border-right:1px solid var(--glass-bd); border-top:none;
    padding-bottom:calc(96px + var(--safe-b)); }
  .msheet .drag { display:none; }
  .msheet-head { padding-top:18px; }
  .pick-fab { top:auto; bottom:calc(20px + var(--safe-b)); right:14px; }
  .mtop { left:424px; right:20px; }
  .map-actions { right:20px; top:calc(76px + var(--safe-t)); }
  .map-fabs { right:20px; bottom:24px !important; }
  #view-map.sheet-big .map-fabs, #view-map.sheet-min .map-fabs { bottom:24px; }
  #tabbar { left:202px; width:368px; }
  #panel, .rsh-card, .search-card, .vt-card { max-width:560px; left:0; right:0;
    margin:0 auto; }
  .sg-pickbar { left:auto; right:20px; width:380px; }
  .demo-banner { left:calc(50% + 202px); }
}

/* ================= v9: анти-фриз при пане/зуме ================= */
:root { --glass-solid: rgba(248,249,252,.97); }
html[data-theme="dark"] { --glass-solid: rgba(26,27,33,.96); }

/* backdrop-filter пересчитывает размытие на каждом кадре движения карты —
   на телефонах это главный источник фризов. Во время жеста (body.moving)
   меняем стекло на почти непрозрачную поверхность, после — плавно возвращаем. */
.msheet, #tabbar, .gcap, .gbtn, .map-disclaimer, .zoom-caps, .center-load {
  transition: background-color .25s var(--ease); }
body.moving .msheet, body.moving #tabbar,
body.moving .mtop .gcap, body.moving .map-disclaimer,
body.moving .ma-btn, body.moving .zoom-caps, body.moving .center-load {
  backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
  background: var(--glass-solid); }

/* строки списка за пределами экрана не рендерятся вовсе */
.msheet-list .srow, #search-results .srow {
  content-visibility: auto; contain-intrinsic-size: auto 64px; }

/* ================= v19: канал / поддержка карточки ================= */
.note-card.channel, .note-card.support { align-items:center; text-decoration:none;
  color:inherit; margin-top:14px; }
.note-card.channel .nic { background:color-mix(in srgb,var(--blue) 14%,transparent);
  color:var(--blue); }
.note-card.support .nic { background:var(--tint); color:var(--accent); }
.note-card .chev { width:18px; height:18px; color:var(--dim); flex:0 0 auto; }
.note-card.channel:active, .note-card.support:active { transform:scale(.99); }
