@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;
  src:url(../assets/fonts/manrope/manrope-cyrillic-wght-normal.woff2) format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;
  src:url(../assets/fonts/manrope/manrope-latin-wght-normal.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{--ink:#20211f;--muted:#6b6f65;--line:#e5e5de;--bg:#f7f7f4;--accent:#e38c1b;--accent-d:#8b5411;--accent-l:#fff1dd;--teal:#427f7a;--dark:#252b24;--card:#fff}
*{box-sizing:border-box}
html,body{margin:0}
body{font:14px/1.45 Manrope,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
[hidden]{display:none!important}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.skip{position:absolute;left:-999px;top:0;background:#fff;padding:8px 12px;z-index:100}
.skip:focus{left:8px;top:8px}
.muted{color:var(--muted)}.small{font-size:11px}

.hdr{display:flex;align-items:center;gap:12px;height:64px;padding:0 18px;background:#fff;border-bottom:1px solid var(--line)}
.logo{width:40px;height:40px;border-radius:50%;background:var(--accent);display:grid;place-items:center;font-weight:800;font-size:18px;flex:none}
.ttl h1{margin:0;font-size:17px;letter-spacing:-.4px}
.ttl small{display:block;font-size:8px;letter-spacing:1.2px;color:#666a62;font-weight:700}

.ws{display:grid;grid-template-columns:340px minmax(0,1fr);height:calc(100vh - 64px);height:calc(100dvh - 64px)}
.side{display:flex;flex-direction:column;min-height:0;background:#fff;border-right:1px solid var(--line)}
.fa{padding:14px 16px}
.tabs{display:flex;background:#f0f1e9;border-radius:10px;padding:4px;gap:4px}
.tabs button{flex:1;border:0;background:transparent;padding:9px 4px;border-radius:7px;font-size:12px;color:#636a58;min-height:36px}
.tabs .sel{background:#242424;color:#fff}
.search{display:flex;align-items:center;gap:8px;border:1px solid #dedfd6;border-radius:8px;height:42px;padding:0 12px;margin-top:10px;background:#fff;color:#6b7262}
.search input{border:0;outline:0;background:transparent;width:100%;min-width:0;font-size:13px}
.search:focus-within{border-color:#c48735;box-shadow:0 0 0 2px #e38c1b22}
.filters{margin-top:8px}
.filters summary{list-style:none;display:flex;justify-content:space-between;align-items:center;min-height:36px;cursor:pointer;font-size:12px;font-weight:700;color:#394333}
.filters summary::-webkit-details-marker{display:none}
.filters[open] .chev{transform:rotate(180deg)}
#filter-count{background:#f6e4c9;color:#7d4c12;border-radius:99px;padding:0 6px;font-size:10px;margin-left:4px}
.fbody{display:flex;flex-direction:column;gap:10px;padding-bottom:6px}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.frow label{display:flex;flex-direction:column;gap:4px;font-size:11px;color:#59644e;font-weight:600}
select,input[type=date]{border:1px solid #dedfd6;background:#fff;border-radius:8px;padding:9px;font-size:12px;min-width:0;min-height:38px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid #e1e3d9;background:#fff;border-radius:7px;padding:7px 10px;font-size:11px;color:#66705b;min-height:34px}
.chip.a{background:#fff0d9;border-color:#e9c387;color:#86500b}
.chk{display:flex;gap:8px;align-items:center;font-size:12px;color:#59644e;min-height:30px}
.chk input{accent-color:var(--accent-d);width:16px;height:16px}
.text-button{border:0;background:none;color:var(--accent-d);font-size:12px;font-weight:700;padding:6px 0;text-align:left}
/* метро: фильтр, подпись «м. Станция · ≈N мин пешком», точки линий (цвет — fill у SVG, без inline-стилей) */
.metro-f{display:flex;flex-direction:column;gap:6px}
.metro-f label{display:flex;flex-direction:column;gap:4px;font-size:11px;color:#59644e;font-weight:600}
.metro-f select{min-height:44px}
.mchip{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:8px 12px;font-size:12px}
.fhint{margin:0;font-size:11px;color:var(--muted)}
.fhint:empty{display:none}
.metro{display:inline-flex;align-items:center;gap:6px;min-width:0}
.mdots{display:inline-flex;gap:2px;flex:none}
.mdot{display:block;width:10px;height:10px}
.metro-loc{color:#4b5442}
.hero .metro-row{color:#4f4a3a;font-weight:600}
.sys{display:inline-block;margin-left:4px;padding:0 4px;border-radius:4px;background:#fffd;border:1px solid #e2d3b6;font-size:9px;font-weight:800;color:#6b5a3a;line-height:14px}
.prev .exits{list-style:none;margin:0 0 10px;padding:0;max-height:180px;overflow:auto}
.exit-row{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;border:0;border-bottom:1px solid #eef0e8;background:none;text-align:left;font-size:12px;padding:6px 2px}
.exit-row[aria-pressed=true]{background:var(--accent-l)}
.exit-row small{color:var(--muted)}
.exit-n{flex:none;min-width:24px;height:24px;border-radius:50%;border:2px solid #4b5442;display:grid;place-items:center;font-size:10px;font-weight:800}
.wc{margin-left:auto;font-size:14px}
.prev .mline{display:flex;align-items:center;gap:6px;margin:0 0 6px}
body[data-mode=events] [data-for=sections]{display:none}
body[data-mode=sections] [data-for=events]{display:none}

.vt{display:none;background:#e9ece3;border-radius:9px;padding:3px;margin:0 16px 8px;gap:3px}
.vt button{flex:1;border:0;background:none;border-radius:6px;padding:10px;font-size:12px;color:#5a674d;min-height:40px}
.vt [aria-pressed=true]{background:#fff;color:#293320;box-shadow:0 1px 4px #29322018;font-weight:700}
.rhead{display:flex;justify-content:space-between;padding:11px 16px;font-size:11px;background:#f8f9f3;border-top:1px solid #e4e6db;border-bottom:1px solid #e4e6db}
.rhead span{color:#667059}
.res{overflow:auto;flex:1;padding:10px;min-height:0}
.res:focus{outline:none}

.rc{border:1px solid #e1e4d8;border-radius:10px;padding:13px;margin-bottom:10px;background:#fff;cursor:pointer}
.rc:hover,.rc.hl{border-color:#d9a355}
.rc.hl{background:#fffdf8}
.rc .top{display:flex;gap:8px;align-items:center;margin-bottom:6px;font-size:10px;color:#656e5a}
.rc .top .tag{margin-left:auto}
.rc h3{margin:0 0 3px;font-size:15px;letter-spacing:-.2px}
.rc .loc{font-size:11px;color:#666e5d;line-height:1.6}
.rc .names{margin:6px 0 0;font-size:12px;color:#4b5442}
.rc .bot{display:flex;justify-content:space-between;border-top:1px solid #ecede5;margin-top:9px;padding-top:8px;font-size:11px}
.rc .bot span:last-child{color:var(--accent-d);font-weight:700}
.rc.ev .evrow{display:flex;gap:11px}
.rc.ev .evbody{flex:1;min-width:0}
.tag{display:inline-block;background:#f0f2e9;color:#5e6b50;font-size:10px;border-radius:4px;padding:3px 7px;font-weight:600}
.tag.ev{background:#fff0db;color:#8b5411}
.tag.bad{background:#f6dcd6;color:#9a3f30}
.dayb{width:46px;border-radius:9px;background:var(--accent-l);color:#86500b;text-align:center;padding:5px 0;flex:none;font-weight:800;line-height:1.1;font-size:17px;height:max-content}
.dayb small{display:block;font-size:9px;font-weight:700}
.empty{padding:26px 14px;text-align:center;color:var(--muted);font-size:12px;line-height:1.8}
.load-more{width:100%;background:#fff;border:1px solid #d9dfd3;border-radius:9px;padding:13px;color:#303e2d;font-size:12px;font-weight:700;margin-bottom:10px}

.map{position:relative;background:#eceee6;min-width:0;min-height:0}
#map{position:absolute;inset:0}
.mlabel{position:absolute;left:14px;top:14px;z-index:5;background:#fffffff2;border:1px solid #fff;border-radius:12px;padding:9px 12px;box-shadow:0 4px 16px #2c362014;font-size:11px;color:#666e5d}
.mlabel strong{display:block;font-size:12px;color:#32382d}
.mbtn{position:absolute;right:10px;z-index:5;width:36px;height:36px;border:1px solid #e0e5db;background:#fff;border-radius:9px;font-size:19px;color:#2c7ac1;box-shadow:0 3px 12px #2028200c}
#locate{top:92px}.mbtn2{top:134px;color:#515b48}
.prev{position:absolute;left:14px;bottom:34px;z-index:6;width:min(320px,calc(100% - 28px));background:#fff;border:1px solid #e4e8dd;border-radius:15px;padding:16px;box-shadow:0 12px 40px #28301d26}
.prev small{color:#6b7262;font-size:10px}
.prev h3{margin:6px 0 4px;font-size:16px;letter-spacing:-.4px}
.prev p{margin:0 0 10px;font-size:12px;color:#667059}
.prev .x{position:absolute;right:10px;top:10px;border:0;background:#f3f4ef;border-radius:50%;width:28px;height:28px;font-size:18px}
.mwarn{position:absolute;left:14px;right:60px;top:70px;z-index:7;background:#fff4dd;border-radius:9px;padding:12px;font-size:12px}
.maplibregl-ctrl-top-right{top:6px}
body.no-map .map,body.no-map .vt{display:none}
body.no-map .ws{grid-template-columns:1fr}
body.no-map .side{max-width:760px;margin:0 auto;border:0}

.btn{display:block;width:100%;background:var(--accent);color:#211e17;border:0;border-radius:8px;padding:12px 16px;font-weight:800;font-size:13px;min-height:44px}
a.btn{box-sizing:border-box;text-align:center;text-decoration:none;line-height:normal;font-family:inherit;display:flex;align-items:center;justify-content:center}
.btn:hover{background:#d78011}
.btn.btn-secondary{background:#f2f3eb;color:#526044;border:1px solid #dbe0cf;font-weight:700}
.hint{font-size:10px;color:#6b7064;margin-top:6px;text-align:center}

dialog{border:0;padding:0;border-radius:20px;width:min(520px,calc(100% - 20px));max-height:calc(100vh - 20px);max-height:calc(100dvh - 20px);color:var(--ink);box-shadow:0 25px 100px #20174136;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch}
html.modal-open,html.modal-open body{overflow:hidden;overscroll-behavior:none}
dialog::backdrop{background:#20211f88}
.hero{background:#f4eedf;padding:26px 22px 18px;position:relative}
.dlg-bar{position:sticky;top:0;height:0;z-index:5}
.dlg-bar .x,.hero .x{position:absolute;right:14px;top:14px;width:34px;height:34px;border-radius:50%;background:#fffd;border:1px solid #e2ddce;font-size:20px;line-height:1}
.hero h2{margin:8px 0 6px;font-size:22px;letter-spacing:-.6px;line-height:1.2;padding-right:30px}
.hero p{margin:3px 0;font-size:12px;color:#655f4d}
.sec{padding:16px 22px;border-bottom:1px solid #e6e8de}
.sec:last-child{border:0}
.sec h4{margin:0 0 6px;font-size:15px}
.grp{background:#f3f5ed;border-radius:10px;padding:10px 12px;margin:10px 0}
.grp .gh{display:flex;justify-content:space-between;align-items:center;font-size:12px}
.sched{margin:6px 0}
.sched .l{display:flex;justify-content:space-between;gap:10px;font-size:12px;padding:5px 0;border-bottom:1px solid #e2e6d9;color:#59654a}
.sched .l:last-child{border:0}
.can{color:#9a3f30;text-decoration:line-through}
.mv{color:#8b5411;font-weight:700}
.gf{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:8px 0}
.info{background:#faf1df;border-radius:10px;padding:11px 12px;font-size:12px;color:#7b6541;white-space:pre-line;margin-top:8px}
.evlink{display:flex;gap:10px;align-items:center;width:100%;text-align:left;border:0;background:none;padding:8px 0}
.evlink b{font-size:13px;display:block}

.center{display:flex;flex-direction:column;align-items:center;text-align:center;padding:30px 24px}
.center h2{margin:16px 0 8px;font-size:23px;letter-spacing:-.8px}
.center p{color:#636a5c;font-size:13px;margin:0 0 14px}
.center .logo{width:64px;height:64px;font-size:28px}
.ul{text-align:left;font-size:12px;color:#59644e;background:#f3f5ed;border-radius:10px;padding:12px 14px;margin:6px 0 16px;width:100%}
.ul div{padding:3px 0}
.code{background:#f0f2e9;border-radius:9px;padding:10px 14px;font-weight:800;letter-spacing:2px;font-size:16px;margin-top:6px}
.center a{color:var(--accent-d);font-size:12px}
.center .btn+.btn{margin-top:8px}
#screen{width:min(460px,calc(100% - 20px))}

#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:#242424;color:#fff;border-radius:12px;padding:12px 20px;font-size:12px;max-width:90vw;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:2000}
#toast.on{opacity:1;transform:translate(-50%,0)}

@media (max-width:800px){
  .hdr{height:56px;padding:0 14px}.logo{width:34px;height:34px;font-size:16px}
  .ws{display:flex;flex-direction:column;height:auto;min-height:calc(100dvh - 56px)}
  .side{display:contents}
  .fa{order:1;background:#fff;margin:10px 10px 0;border:1px solid #dfe3d5;border-radius:13px;padding:12px}
  .vt{display:flex;order:2;margin:10px 10px 0}
  .map{order:3;height:calc(100dvh - 290px);min-height:380px;margin:10px;border-radius:14px;overflow:hidden;border:1px solid #dce1d3}
  .rhead{order:4;margin:10px 10px 0;border:1px solid #e1e5d8;border-radius:10px}
  .res{order:5;overflow:visible;flex:none;padding:10px}
  body[data-view=map] .rhead,body[data-view=map] .res{display:none}
  body[data-view=list] .map{display:none}
  body.no-map .res,body.no-map .rhead{display:block}
  body.no-map .rhead{display:flex}
  .prev{left:10px;right:10px;width:auto;bottom:30px}
  dialog{margin:auto auto 0;border-radius:20px 20px 0 0;width:100%;max-height:92vh;max-height:92dvh}
  #screen{margin:auto;border-radius:20px;width:calc(100% - 20px)}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
.you{width:18px;height:18px;border-radius:50%;background:#2b83d4;border:3px solid #fff;box-shadow:0 0 0 8px #2b83d433}
