@font-face{font-family:Akrobat;src:url('fonts/Akrobat-Bold.otf') format('opentype');font-weight:700;font-display:swap}@font-face{font-family:Montserrat;src:url('fonts/Montserrat-Variable.ttf') format('truetype');font-weight:100 900;font-display:swap}
:root{--ink:#25493f;--muted:#879187;--paper:#f8f9f5;--line:#e2e7dd}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:13px Montserrat,Arial,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #bb965e;outline-offset:3px}main{height:100dvh;display:grid;grid-template-columns:430px 1fr}.sidebar{overflow-y:auto;scrollbar-width:thin;scrollbar-color:#cfdbce transparent;background:var(--paper);z-index:500}.catalog-header{padding:32px 30px 24px;background:var(--paper)}h1,h2,h3{font-family:Akrobat,Arial,sans-serif;font-weight:700;margin:0}h1{font-size:53px;line-height:.98;letter-spacing:-1.2px}h1 span{color:#d18d5d}.counts{display:flex;align-items:center;gap:13px;color:#83907e;font-size:11px;margin-top:23px}.counts b{color:var(--ink);font-weight:600;font-size:14px}.counts i{width:3px;height:3px;background:#a1b098;border-radius:50%}#routes{padding:0 20px 25px}.route-card{background:#fff;border:1px solid var(--line);border-radius:12px;margin-bottom:13px;position:relative;overflow:hidden;transition:border-color .2s,box-shadow .2s}.route-card.selected{border-color:var(--route-color);box-shadow:0 4px 18px #26463c0c}.route-head{padding:17px 17px 9px;width:100%;text-align:left;display:grid;grid-template-columns:1fr 69px;gap:12px;position:relative}.route-title-row{display:flex;align-items:baseline;gap:9px}.route-number{font-size:11px;font-weight:600;color:var(--route-color);flex-shrink:0}.route-head h2{font-size:27px;line-height:1.05;letter-spacing:-.3px}.route-area{display:block;font-size:10px;color:#8b9586;line-height:1.65;margin:8px 0 0}.route-cover{height:74px;width:69px;object-fit:cover;border-radius:8px;align-self:start}.route-points{padding:0 17px;line-height:1.75;font-size:10px;color:#84907c}.route-points button{font-size:inherit;line-height:inherit;text-align:left;padding:0;color:inherit}.route-points button:hover{color:var(--ink);text-decoration:underline;text-underline-offset:2px}.route-meta{display:flex;align-items:center;gap:12px;padding:13px 17px 14px;font-size:10px;border-top:1px solid #f0f2ec;margin-top:12px;color:#72806a;flex-wrap:wrap}.route-meta strong{font-weight:600;color:var(--route-color)}.route-meta .places{margin-left:auto}.full-day{font-size:10px;line-height:1.7;color:#8a937f;padding:0 17px 13px}.route-detail{border-top:1px solid var(--line);padding:16px 17px 20px}.endpoint{display:flex;align-items:center;gap:10px;font-size:10px;line-height:1.7;color:#7b8b73}.endpoint i{display:grid;place-items:center;font-style:normal;width:23px;height:23px;background:#eff3e9;border-radius:50%;font-size:12px;flex-shrink:0}.transfer{margin:10px 0 10px 33px;font-size:9px;line-height:1.7;color:#9aa190}.transfer .mode{color:#6e8762}.stop{display:grid;grid-template-columns:23px 36px 1fr;gap:9px;width:100%;text-align:left;align-items:center;padding:0}.stop-number{display:grid;place-items:center;width:23px;height:23px;font-size:9px;color:white;border-radius:50%;background:var(--route-color)}.stop img{width:36px;height:39px;object-fit:cover;border-radius:6px}.stop strong{display:block;font-size:11px;line-height:1.5;font-weight:500}.stop small{display:block;font-size:9px;margin-top:4px;color:#929d87}.route-card .route-head:hover h2,.stop:hover strong{color:var(--route-color)}.map-wrap{position:relative;overflow:hidden;background:#e6ebe1}#map{height:100%;width:100%;background:#e6ebe1}.map-buttons{position:absolute;top:22px;right:22px;display:flex;gap:8px;z-index:450}.map-buttons button{background:#fffffff2;width:39px;height:39px;border:1px solid #e1e7d9;border-radius:9px;box-shadow:0 3px 15px #1e493115;font-size:23px}.map-legend{position:absolute;top:22px;left:22px;z-index:450;display:flex;gap:15px;background:#fffffff2;border:1px solid #e1e7d9;border-radius:8px;padding:12px 14px;font-size:9px;color:#73836b}.map-legend span{display:flex;align-items:center;gap:6px}.map-legend i{width:18px;border-top:2px solid #50705b}.map-legend .walk{border-top-style:dashed}.map-legend .boat{border-top-style:dotted;border-color:#568e9d}.photo-marker{background:none;border:0}.marker-photo{position:relative;width:49px;height:55px;filter:drop-shadow(0 3px 5px #183e363d);transition:transform .18s}.marker-photo:hover{transform:translateY(-3px) scale(1.12)}.marker-photo img{width:47px;height:47px;object-fit:cover;background:#d8e3d4;border:3px solid var(--route-color);border-radius:12px}.marker-photo:after{content:'';position:absolute;bottom:1px;left:18px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:8px solid var(--route-color)}.marker-photo b{position:absolute;right:-3px;top:-5px;background:var(--route-color);border:2px solid white;color:white;border-radius:50%;height:18px;min-width:18px;padding:0 3px;display:grid;place-items:center;font-size:9px}.marker-photo.overview{transform:scale(.86);transform-origin:bottom}.home-marker{white-space:nowrap;border:2px solid var(--ink);border-radius:25px;padding:8px 12px;background:white;font-size:10px;font-weight:500;box-shadow:0 4px 15px #23453926;display:inline-block}.leg-label{white-space:nowrap;font-size:9px;background:#fffffff5;border:1px solid #dce5d4;border-radius:14px;padding:4px 7px;color:#54734a}.parking-marker{background:white;border:1px solid #8c9e81;color:#5d7452;text-align:center;border-radius:4px;font-size:10px}#map-error{position:absolute;top:80px;left:22px;right:22px;z-index:450;background:#fff2db;border-radius:8px;padding:13px;font-size:11px}.mobile-switch{display:none}dialog{border:0;border-radius:16px;padding:0;background:white;color:var(--ink);width:min(580px,calc(100% - 28px));max-height:92dvh;box-shadow:0 25px 110px #102a3755}dialog::backdrop{background:#143a3566;backdrop-filter:blur(5px)}.dialog-close{position:absolute;top:15px;right:15px;width:35px;height:35px;border-radius:50%;background:#fffffff0;z-index:3;font-size:25px;box-shadow:0 3px 15px #21403a20}.photo-link{display:block}.place-hero{width:100%;height:265px;display:block;object-fit:cover;background:#dde7d7}.place-body{padding:26px 30px 30px}.place-body h2{font-size:39px;line-height:1.05;letter-spacing:-.4px}.place-location{font-size:10px;line-height:1.7;color:#96a08e;margin:10px 0 17px}.place-description{font-size:12px;line-height:1.9;color:#6d7e66;margin:0}.visit-time{display:inline-block;color:#637e56;background:#f1f5eb;border-radius:15px;padding:7px 11px;font-size:10px;margin:15px 0 0}.facts{list-style:none;counter-reset:fact;padding:0;margin:23px 0 15px}.facts li{counter-increment:fact;position:relative;padding:0 0 16px 35px;font-size:12px;line-height:1.8;color:#597250}.facts li:before{content:'0' counter(fact);position:absolute;left:0;top:1px;color:#a6b599;font-size:11px}.facts a{text-decoration:none;color:inherit}.facts a:hover{text-decoration:underline;text-underline-offset:3px}.yandex-link{display:block;text-align:center;text-decoration:none;background:var(--ink);color:white;border-radius:8px;font-size:11px;font-weight:500;padding:15px;margin-top:5px}.yandex-link:hover{background:#346552}.standalone{border-color:#aab39f}
@media(min-width:1700px){main{grid-template-columns:460px 1fr}.catalog-header{padding:35px 35px 25px}#routes{padding:0 25px 25px}.route-head h2{font-size:29px}.route-head{padding-top:19px}.route-points{font-size:11px}}
@media(max-width:1000px){main{grid-template-columns:365px 1fr}.catalog-header{padding:26px 24px 23px}h1{font-size:48px}#routes{padding:0 15px 20px}.route-head{grid-template-columns:1fr 58px;padding:16px 15px 10px}.route-cover{width:58px;height:68px}.route-head h2{font-size:25px}.route-area{font-size:9px}.route-points{padding:0 15px}.route-meta{padding-left:15px;padding-right:15px;gap:8px;font-size:9px}.map-legend{left:15px;top:15px;gap:10px}.map-buttons{right:15px;top:15px}}
@media(max-width:700px){main{display:block;height:100dvh}.sidebar{height:100%;padding-bottom:68px}.catalog-header{padding:26px 24px 23px}h1{font-size:49px;line-height:1}h1 br{display:none}.counts{margin-top:14px;font-size:11px}#routes{padding:0 16px 22px}.route-head{grid-template-columns:1fr 69px;padding:17px 17px 10px}.route-head h2{font-size:27px}.route-cover{width:69px;height:74px}.route-area{font-size:10px}.route-points{font-size:10px;padding:0 17px}.route-meta{font-size:10px;padding:13px 17px 14px;gap:12px}.map-wrap{position:fixed;inset:0;visibility:hidden;z-index:600}.map-visible .map-wrap{visibility:visible}.map-visible .sidebar{visibility:hidden}.mobile-switch{display:block;position:fixed;bottom:19px;left:50%;transform:translateX(-50%);z-index:900;border-radius:25px;background:var(--ink);color:white;box-shadow:0 4px 20px #203e3233;padding:13px 23px;font-size:12px;white-space:nowrap}.map-buttons{top:16px;right:14px;gap:6px}.map-buttons button{width:34px;height:34px}.map-legend{top:16px;left:14px;padding:10px;gap:8px;font-size:8px}.map-legend i{width:13px}.place-hero{height:210px}.place-body{padding:22px 23px 25px}.place-body h2{font-size:34px}.place-location{font-size:10px}.place-description,.facts li{font-size:11px}.facts{margin-top:20px}.facts li{padding-left:30px}dialog{max-height:94dvh;border-radius:13px}}

.map-place{width:49px;height:55px;padding:0;border:0;overflow:visible;z-index:3}.marker-photo{display:block}.map-place:hover,.map-place:focus-visible{z-index:10}.maplibregl-map{font-family:Montserrat,Arial,sans-serif}.maplibregl-ctrl-group{border:1px solid #d6e1ce;border-radius:9px!important;overflow:hidden;box-shadow:0 3px 15px #1d412912!important}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-group{margin-right:22px;margin-bottom:12px}.maplibregl-ctrl-scale{font:9px Montserrat,Arial,sans-serif;background:#ffffffd9;border-color:#8c9a83;color:#6c7e62}.maplibregl-ctrl-attrib{font-size:9px;background:#ffffffdd}.route-tooltip .maplibregl-popup-content{font:10px Montserrat,Arial,sans-serif;color:#466540;border-radius:7px;padding:8px 11px}.parking-marker{height:18px;width:18px;line-height:16px}.maplibregl-canvas:focus-visible{outline:2px solid #bb965e;outline-offset:-2px}@media(max-width:700px){.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-group{margin-bottom:70px;margin-right:14px}}

/* Readable text on desktop and mobile. */
body{font-size:15px}
.counts{font-size:14px;color:#64735d}.counts b{font-size:17px}
.route-number{font-size:13px}.route-area{font-size:13px;color:#617159}
.route-points{font-size:13px;line-height:1.8;color:#5c7056}
.route-meta{font-size:13px;gap:10px}.full-day{font-size:12px;color:#66765b}
.endpoint{font-size:13px;color:#607651}.transfer{font-size:12px;color:#65745a}
.stop strong{font-size:14px;line-height:1.5}.stop small{font-size:12px;line-height:1.6;color:#627657}.stop-number{font-size:12px}
.home-marker{width:44px;height:44px;border:3px solid white;border-radius:50%;padding:0;display:grid;place-items:center;background:#2b8b54;color:white;box-shadow:0 3px 12px #183e3650}
.leg-label{font-size:12px}.map-legend{font-size:11px;gap:10px}.map-legend i{border-top-width:3px}
.parking-marker{font-size:12px}.route-tooltip .maplibregl-popup-content{font-size:13px}
.place-location{font-size:13px;color:#64745d}.place-description,.facts li{font-size:15px;line-height:1.85}
.facts li:before{font-size:13px;color:#70865d}.visit-time{font-size:13px;line-height:1.6}.yandex-link{font-size:14px}
.mobile-switch{font-size:14px}#map-error{font-size:14px}
@media(min-width:1001px){main{grid-template-columns:460px 1fr}}
@media(max-width:700px){.map-legend{font-size:10px;gap:7px;padding:10px 8px}.route-meta{column-gap:10px}.place-description,.facts li{font-size:15px}}


/* Split map and catalogue on phones. */
.catalog-subtitle{font-size:14px;line-height:1.7;color:#617159;margin:15px 0 0}
.route-toolbar{position:sticky;top:0;z-index:20;display:flex;justify-content:flex-end;background:var(--paper);padding:10px 20px;border-bottom:1px solid var(--line)}
.route-toolbar[hidden]{display:none}
#close-route{display:flex;align-items:center;gap:7px;min-height:42px;padding:8px 15px;border:1px solid #cbd8c5;border-radius:8px;background:white;font-size:14px;font-weight:600}
#close-route span{font-size:23px;line-height:1}#close-route:hover{background:#edf3e8}
.route-open #routes{padding-top:12px}.route-card{scroll-margin-top:75px}
@media(max-width:700px){
 body{overflow:hidden}
 main{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(0,2fr);height:100dvh;overflow:hidden}
 .map-wrap{position:relative;inset:auto;visibility:visible;grid-row:1;grid-column:1;z-index:1;min-height:0}
 .sidebar{grid-row:2;grid-column:1;height:auto;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;padding:0 0 env(safe-area-inset-bottom);visibility:visible;border-top:1px solid #d3ddce;z-index:2}
 .catalog-header{padding:18px 18px 16px}h1{font-size:36px;line-height:1.05;letter-spacing:-.6px}
 .catalog-subtitle{font-size:13px;line-height:1.65;margin-top:9px}.counts{margin-top:12px;font-size:12px}.counts b{font-size:14px}
 #routes{padding:0 12px 16px}.route-card{margin-bottom:10px}
 .route-head{padding:14px 14px 6px;grid-template-columns:minmax(0,1fr) 65px;gap:10px}.route-head h2{font-size:26px}
 .route-cover{width:65px;height:68px}.route-area{font-size:12px;margin-top:7px}
 .route-card:not(.selected) .route-points,.route-card:not(.selected) .route-meta>span{display:none}
 .route-card:not(.selected) .route-meta{border:0;margin:0;padding:5px 14px 14px}
 .route-open .catalog-header,.route-open .route-card:not(.selected){display:none}
 .route-toolbar{padding:7px 12px}.route-open #routes{padding-top:10px}
 .maplibregl-ctrl-bottom-right>.maplibregl-ctrl-group{margin-bottom:8px;margin-right:10px}
 .map-buttons{top:10px;right:10px}.map-legend{top:10px;left:10px}
 .route-detail{padding-left:14px;padding-right:14px}
}

/* Expandable map, with source credits visible without an information button. */

.maplibregl-ctrl-attrib{max-width:calc(100vw - 20px);font-size:9px;line-height:1.5;padding:3px 6px}
@media(max-width:700px){
 
 .map-expanded .map-wrap{position:fixed;inset:0;width:100%;height:100dvh;z-index:1000}
 .route-card:not(.selected) .route-meta{padding-bottom:5px}
 .route-card:not(.selected) .full-day{display:block;padding:0 14px 14px}
 .maplibregl-ctrl-attrib{font-size:8px}
}

.route-detail .stop{margin-top:14px}.route-yandex{margin-top:22px;line-height:1.6}

.route-open .route-card:not(.selected){display:none}
#close-route{min-height:32px;padding:5px 10px;gap:5px;font-size:12px}
#close-route span{font-size:16px}


