:root{
  --brand:#0193ff;
  --bg:var(--tg-theme-bg-color,#f4f7fb);
  --card:var(--tg-theme-secondary-bg-color,#fff);
  --text:var(--tg-theme-text-color,#14202e);
  --muted:var(--tg-theme-hint-color,#6b7a8c);
  --link:var(--tg-theme-link-color,var(--brand));
  --line:color-mix(in srgb,var(--muted) 22%,transparent);
  --ok:#2e9e5b; --warn:#e89a0c; --bad:#e5484d;
  --r:16px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 -apple-system,"SF Pro Text","Segoe UI",Roboto,sans-serif}
body{padding-bottom:calc(76px + env(safe-area-inset-bottom))}
.top{display:flex;justify-content:space-between;align-items:baseline;padding:14px 16px 8px}
.brand{font-size:17px;letter-spacing:.2px;display:flex;align-items:center;gap:8px}
.brand b{color:var(--brand);font-weight:700}
.dot{width:9px;height:9px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 22%,transparent)}
.stamp{font-size:12px;color:var(--muted)}
main{padding:0 16px}
.tab{display:none;animation:in .25s ease}.tab.on{display:block}
@keyframes in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
#map{height:46vh;min-height:260px;border-radius:var(--r);overflow:hidden;border:1px solid var(--line)}
.hint{font-size:12px;color:var(--muted);text-align:center;margin:8px 0 12px}
.cards{display:grid;gap:10px}
.card,.sc{background:var(--card);border-radius:var(--r);padding:14px 16px;margin-bottom:12px;border:1px solid var(--line)}
.sc{display:flex;justify-content:space-between;align-items:center;margin:0;cursor:pointer}
.sc:active{transform:scale(.99)}
.sc .n{font-weight:600}.sc .s{font-size:12px;color:var(--muted);margin-top:2px}
.sc .v{font-size:30px;font-weight:700;letter-spacing:-.5px}
.sc.off{opacity:.55}.sc.off .v{font-size:14px;font-weight:500;color:var(--muted)}
.card h2{margin:0 0 8px;font-size:16px}
.muted{color:var(--muted);font-size:13px;margin:.2em 0 .8em}
.chips{display:flex;gap:8px;overflow-x:auto;padding:2px 0 12px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;padding:8px 14px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--text);font:inherit;cursor:pointer}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.chip.off{opacity:.5}
.hero{display:flex;justify-content:space-between;align-items:flex-end}
.hero .big{font-size:64px;font-weight:700;letter-spacing:-2px;line-height:1}
.hero .big small{font-size:26px;font-weight:500;letter-spacing:0;margin-left:2px;color:var(--muted)}
.fresh{font-size:12px;color:var(--muted);text-align:right}
.fresh i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ok);margin-right:5px}
.fresh.old i{background:var(--warn)}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:14px}
.m{padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--muted) 9%,transparent)}
.m span{display:block;font-size:12px;color:var(--muted)}.m b{font-size:19px}.m b+span{display:inline;font-size:12px}
.badge{display:flex;gap:10px;align-items:center;padding:12px 14px;border-radius:14px;margin-bottom:12px;font-size:14px}
.badge.ok{background:color-mix(in srgb,var(--ok) 14%,transparent)}
.badge.warn{background:color-mix(in srgb,var(--warn) 18%,transparent)}
.badge.bad{background:color-mix(in srgb,var(--bad) 16%,transparent)}
.badge .e{font-size:22px}
.seg{display:inline-flex;background:color-mix(in srgb,var(--muted) 14%,transparent);border-radius:10px;padding:3px;margin:4px 0 8px}
.seg button{border:0;background:none;color:var(--text);padding:6px 12px;border-radius:8px;font:inherit;font-size:13px;cursor:pointer}
.seg button.on{background:var(--card);box-shadow:0 1px 3px rgba(0,0,0,.15)}
svg text{font-family:inherit}
.chart{width:100%;height:auto;display:block;touch-action:pan-y}
.empty{padding:18px 6px;text-align:center;color:var(--muted);font-size:13px}
.days{display:grid;gap:8px}
.day{display:grid;grid-template-columns:62px 1fr auto;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--muted) 8%,transparent)}
.day .d{font-weight:600}.day .d small{display:block;font-weight:400;color:var(--muted);font-size:11px}
.rng{height:8px;border-radius:99px;background:color-mix(in srgb,var(--muted) 20%,transparent);position:relative}
.rng i{position:absolute;top:0;bottom:0;border-radius:99px}
.day .t{font-variant-numeric:tabular-nums;font-size:13px;text-align:right;min-width:92px}
.row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.row:last-child{border:0}
.sw{position:relative;width:46px;height:28px;flex:0 0 auto}
.sw input{opacity:0;width:100%;height:100%;margin:0;position:absolute;z-index:2;cursor:pointer}
.sw i{position:absolute;inset:0;border-radius:99px;background:color-mix(in srgb,var(--muted) 35%,transparent);transition:.2s}
.sw i::after{content:"";position:absolute;left:3px;top:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.sw input:checked+i{background:var(--brand)}.sw input:checked+i::after{transform:translateX(18px)}
textarea{width:100%;border-radius:12px;border:1px solid var(--line);background:var(--bg);color:var(--text);padding:10px 12px;font:inherit;resize:none}
.btn{margin-top:8px;width:100%;border:0;border-radius:12px;background:var(--brand);color:#fff;padding:12px;font:inherit;font-weight:600;cursor:pointer}
.btn:disabled{opacity:.6}
.answer{margin-top:12px;padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--brand) 10%,transparent);white-space:pre-wrap}
.link{display:block;padding:8px 0;color:var(--link);text-decoration:none}
.bar{position:fixed;left:0;right:0;bottom:0;display:flex;background:var(--card);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom));z-index:900}
.bar button{flex:1;border:0;background:none;color:var(--muted);font:inherit;font-size:11px;padding:4px 0;cursor:pointer}
.bar button i{display:block;font-style:normal;font-size:21px;line-height:1.2;filter:grayscale(1);opacity:.7}
.bar button.on{color:var(--brand);font-weight:600}.bar button.on i{filter:none;opacity:1}
.mk{display:flex;flex-direction:column;align-items:center;transform:translate(-50%,-100%)}
.mk b{padding:4px 9px;border-radius:99px;color:#fff;font-size:14px;box-shadow:0 2px 8px rgba(0,0,0,.35);border:2px solid #fff;white-space:nowrap}
.mk::after{content:"";width:2px;height:8px;background:#fff}
.mk.off b{background:#8a95a3!important}
.leaflet-container{font:inherit}
.skel{height:120px;border-radius:var(--r);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--muted) 15%,transparent),transparent) var(--card);background-size:200% 100%;animation:sk 1.2s infinite}
@keyframes sk{from{background-position:200% 0}to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
