body:has(.map-page){overflow:hidden}body:has(.map-page) .foot{display:none}body:has(.map-page) main.wrap{max-width:none;margin:0;padding:0}.map-page{position:relative}.kmap{background:var(--pt-map-ground);--kmap-edge:20px;--kmap-rail-l:396px;--kmap-rail-r:360px;position:fixed;inset:0;overflow:hidden}.kmap .kmap-canvas{background:var(--pt-map-ground);position:absolute;inset:0}.kmap .kmap-canvas .leaflet-control-attribution{color:var(--pt-sand-a75);text-align:right;background:#12211ac7;max-width:min(58vw,460px);font-size:9px}.kmap .kmap-canvas .leaflet-control-attribution a{color:var(--pt-paper)}@media (max-width:900px){.kmap .leaflet-bar a,.kmap .leaflet-touch .leaflet-bar a{width:44px;height:44px;line-height:44px}.kmap .leaflet-top.leaflet-right{top:calc(var(--kmap-nav-h,60px) + var(--kmap-top-h,124px) + 12px)}.kmap .leaflet-bottom{bottom:calc(var(--fg-tabbar-h,56px) + env(safe-area-inset-bottom))}.kmap .kmap-search input[type=search]{font-size:16px}.kmap .kmap-canvas .leaflet-control-attribution{max-width:none}}@media (prefers-reduced-motion:reduce){.kmap .kmap-sheet{transition:none}}.kmap-dot{cursor:pointer}.kmap-dot span{transition:transform .18s cubic-bezier(.34,1.16,.64,1);display:block}.kmap-dot:hover span,.kmap-dot:focus span{transform:scale(1.3)}.kmap-dot:hover,.kmap-dot:focus{z-index:800!important}.kmap-dot:focus-visible{outline:2px solid var(--pt-durian);outline-offset:2px}.kmap-newdev-tag{border-radius:var(--r-pill);background:var(--pt-durian-300);color:var(--pt-ink);letter-spacing:.02em;pointer-events:none;padding:1px 6px;font-size:10px;font-weight:700;line-height:15px;position:absolute;top:-4px;right:-6px;box-shadow:0 1px 3px #00000059}.kmap-newdev-chip{border-radius:var(--r-pill);background:var(--pt-durian-100);border:1px solid var(--pt-durian);color:var(--pt-ink);align-self:flex-start;margin:6px 0 0;padding:2px 8px;font-size:11px;font-weight:600;line-height:16px;display:inline-block}.kmap-list-main .kmap-newdev-chip{margin:2px 0 0;padding:1px 7px;font-size:10.5px}.kmap-card--newdev{box-shadow:0 0 0 3px var(--pt-durian-300),0 2px 4px #17291d14,0 24px 56px #17291d38}.kmap-rail{top:calc(var(--kmap-nav-h,60px) + var(--kmap-edge));bottom:var(--kmap-edge);z-index:600;pointer-events:none;flex-direction:column;gap:14px;display:flex;position:absolute}.kmap-rail--left{left:var(--kmap-edge);width:var(--kmap-rail-l);scrollbar-width:thin;scrollbar-color:var(--pt-line-strong) transparent;min-height:0;overflow-y:auto}.kmap-rail--left>*{flex:none}.kmap-rail--right{right:var(--kmap-edge);width:var(--kmap-rail-r);bottom:calc(var(--kmap-edge) + 96px)}.kmap-rail>*{pointer-events:auto}.kmap-panel{background:var(--pt-surface);border:1px solid var(--pt-line);border-radius:var(--r-16);color:var(--pt-ink);padding:16px;box-shadow:0 1px 2px #17291d14,0 16px 40px #17291d24}.kmap-panel-list{flex-direction:column;gap:12px;max-height:100%;padding:16px 16px 0;display:flex}.kmap-panel-title{font-size:var(--fs-micro);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--pt-brand);margin:0 0 10px;font-weight:700}.kmap-search{flex:none}.kmap-search input{background:var(--pt-surface);border:1px solid var(--pt-line);border-radius:var(--r-10);width:100%;color:var(--pt-ink);font:inherit;min-height:44px;padding:12px 14px;font-size:14px}.kmap-search input::placeholder{color:var(--pt-ink-3)}.kmap-search input:focus{outline:2px solid var(--pt-brand);outline-offset:1px}.kmap-hits{flex-direction:column;margin:6px 0 0;padding:0;list-style:none;display:flex}.kmap-hits button,.kmap-nearby button,.kmap-nearby--light button{width:100%;font:inherit;color:var(--pt-ink-2);text-align:left;cursor:pointer;border:0;border-bottom:1px solid var(--pt-line);background:0 0;align-items:center;gap:12px;min-height:44px;padding:10px 4px;font-size:13px;display:flex}.kmap-hits button:hover,.kmap-nearby button:hover,.kmap-nearby--light button:hover{background:var(--pt-sunken)}.kmap-hit-score,.kmap-nearby-score{font-family:var(--font-sans);flex:0 0 34px;font-size:16px;font-weight:600}.kmap-hit-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--pt-ink);flex:1;overflow:hidden}.kmap-hit-area{color:var(--pt-ink-3);flex:none;font-size:11px}.kmap-nearby-name{min-width:0;color:var(--pt-ink);flex:1}.kmap-nearby-dist{color:var(--pt-ink-3);white-space:nowrap;font-size:11.5px}.kmap-nearby{flex:1;overflow-y:auto}.kmap-nearby--light{margin-top:4px}.kmap-nearby ul,.kmap-nearby--light ul{margin:0;padding:0;list-style:none}.kmap-area-chips{flex-wrap:wrap;gap:6px;display:flex}.kmap-area-chip{border-radius:var(--r-pill);border:1px solid var(--pt-line-strong);background:var(--pt-surface);height:32px;color:var(--pt-ink);cursor:pointer;align-items:center;min-height:32px;padding:0 12px;font-size:13px;font-weight:500;text-decoration:none;display:inline-flex}.kmap-area-chip:hover{border-color:var(--pt-ink);color:var(--pt-ink);text-decoration:none}.kmap-area-chip:focus-visible{outline:2px solid var(--pt-brand);outline-offset:2px}.kmap-area-chip[aria-pressed=true]{border-color:var(--pt-ink);background:var(--pt-ink);color:var(--pt-surface)}@media (pointer:coarse){.kmap-area-chip{min-height:44px}}.kmap-area-chips--scroll{scrollbar-width:none;flex-wrap:nowrap;padding-bottom:2px;overflow-x:auto}.kmap-area-chips--scroll::-webkit-scrollbar{display:none}.kmap-area-chips--scroll .kmap-area-chip{flex:none}.kmap-area-label span{letter-spacing:.14em;text-transform:uppercase;color:var(--pt-sand-a75);white-space:nowrap;pointer-events:none;text-shadow:0 1px 3px var(--pt-map-ground),0 -1px 3px var(--pt-map-ground),1px 0 3px var(--pt-map-ground),-1px 0 3px var(--pt-map-ground);font-size:11px;font-weight:700;position:absolute;top:0;left:0;transform:translate(-50%,-50%)}.kmap-filters{flex-wrap:wrap;gap:8px;display:flex}.kmap-filter-options{flex-direction:column;gap:2px;min-width:180px;display:flex}.kmap-filter-option{color:var(--pt-ink);cursor:pointer;align-items:center;gap:8px;min-height:32px;padding:7px 4px;font-size:13.5px;display:flex}.kmap-filter-option input{width:16px;height:16px;accent-color:var(--pt-brand);flex:none}.kmap-filter-dot{border-radius:50%;flex:none;width:9px;height:9px}.kmap-filter-radio{text-align:left;border-radius:var(--r-10);width:100%;font:inherit;color:var(--pt-ink);cursor:pointer;background:0 0;border:0;min-height:36px;padding:8px;font-size:13.5px;display:block}.kmap-filter-radio:hover{background:var(--pt-sunken)}.kmap-filter-radio[aria-pressed=true]{background:var(--pt-brand-tint);color:var(--pt-brand);font-weight:600}.kmap-list{border-top:1px solid var(--pt-line);flex-direction:column;flex:auto;min-height:0;margin-top:2px;display:flex}.kmap-list-count{color:var(--pt-ink-2);margin:10px 0 4px;font-size:13px}.kmap-list-rows{flex:auto;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}.kmap-list-row{border-radius:var(--r-10);width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:44px;padding:6px;display:grid}.kmap-list-row:hover{background:var(--pt-sunken)}.kmap-list-row[aria-current=true]{background:var(--pt-brand-tint)}.kmap-list-thumb{border-radius:var(--r-10);flex:none;width:44px;height:44px;display:block;overflow:hidden}.kmap-list-thumb img{object-fit:cover;width:100%;height:100%;display:block}.kmap-list-thumb .fg-illustration{border-radius:var(--r-10)}.kmap-list-main{flex-direction:column;gap:2px;min-width:0;display:flex}.kmap-list-name{color:var(--pt-ink);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600;overflow:hidden}.kmap-list-meta{color:var(--pt-ink-3);font-size:11.5px}.kmap-list-score{flex:none}.kmap-list-footer{border-top:1px solid var(--pt-line);color:var(--pt-ink-2);justify-content:space-between;align-items:center;gap:10px;padding:10px 4px;font-size:12.5px;display:flex}.kmap-list-footer a{min-height:24px;color:var(--pt-brand);align-items:center;margin:-2px 0;padding:2px 0;font-weight:600;text-decoration:none;display:inline-flex}.kmap-list-footer a:hover{text-decoration:underline}.kmap-card{background:var(--pt-surface);border-radius:var(--r-16);color:var(--pt-ink);overflow:hidden;box-shadow:0 2px 4px #17291d14,0 24px 56px #17291d38}.kmap-card-photo{background:var(--pt-sunken);height:150px;position:relative}.kmap-card-photo img{object-fit:cover;width:100%;height:100%;display:block}.kmap-card-photo .fg-illustration{border-radius:0}.kmap-card-close{width:32px;height:32px;color:var(--pt-ink);cursor:pointer;background:#fffffff0;border:0;border-radius:50%;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:10px;right:10px}.kmap-card-close:focus-visible{outline:2px solid var(--pt-brand);outline-offset:2px}.kmap-card-body{flex-direction:column;gap:12px;padding:16px 18px 18px;display:flex}.kmap-card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.kmap-card-head h2{font-size:22px;font-family:var(--font-heading,"Prata",Georgia,serif);margin:0;font-weight:400}.kmap-card-area{color:var(--pt-ink-3);margin:4px 0 0;font-size:12px}.kmap-card-score{text-align:right;flex:none}.kmap-card-score>span:first-child{font-family:var(--font-sans);font-variant-numeric:tabular-nums;font-size:30px;font-weight:600;line-height:1;display:block}.kmap-card-band{border-radius:var(--r-pill);background:var(--pt-sunken);color:var(--pt-ink);margin-top:4px;padding:3px 9px;font-size:11.5px;font-weight:600;display:inline-block}.kmap-card-read{color:var(--pt-ink-2);margin:0;font-size:14.5px;line-height:1.6}.kmap-card .sdim{margin:0}.kmap-card-actions{align-items:center;gap:8px;display:flex}.kmap-cta{background:var(--pt-ink);color:var(--pt-surface);border-radius:var(--r-10);flex:1;justify-content:center;align-items:center;min-height:44px;padding:0 20px;font-size:14px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.kmap-cta:hover{color:var(--pt-surface);opacity:.9;text-decoration:none}.kmap-top{top:calc(var(--kmap-nav-h,60px) + 8px);z-index:600;flex-direction:column;gap:8px;padding:0 12px;display:flex;position:absolute;left:0;right:0}.kmap-top:has(.kmap-top-panel){z-index:750}.kmap .kmap-top .kmap-search input{background:var(--pt-surface);border-color:#0000;box-shadow:0 4px 16px #17291d29}.kmap-top-row{align-items:center;gap:8px;display:flex}.kmap-top-row .kmap-area-chips--scroll{flex:auto;min-width:0}.kmap-top-row .kmap-area-chip{background:var(--pt-surface);box-shadow:0 2px 8px #17291d14}.kmap-filters-trigger{border-radius:var(--r-10);background:var(--pt-surface);width:44px;height:44px;color:var(--pt-ink);cursor:pointer;border:0;flex:none;justify-content:center;align-items:center;display:flex;box-shadow:0 4px 16px #17291d29}.kmap-filters-trigger[aria-expanded=true]{background:var(--pt-ink);color:var(--pt-surface)}.kmap-filters-trigger:focus-visible{outline:2px solid var(--pt-brand);outline-offset:2px}.kmap-top-panel{background:var(--pt-surface);border-radius:var(--r-16);max-height:calc(100dvh - var(--kmap-nav-h,60px) - var(--kmap-top-h,124px) - 40px);flex-direction:column;gap:14px;padding:14px;display:flex;overflow-y:auto;box-shadow:0 12px 32px #17291d2e}.kmap-sheet{left:0;right:0;bottom:calc(var(--fg-tabbar-h,56px) + env(safe-area-inset-bottom));z-index:700;background:var(--pt-surface);interpolate-size:allow-keywords;border-radius:20px 20px 0 0;flex-direction:column;height:auto;transition:height .28s cubic-bezier(.32,.72,0,1),max-height .28s cubic-bezier(.32,.72,0,1);display:flex;position:absolute;overflow:hidden;box-shadow:0 -8px 28px #17291d2e}.kmap-sheet--peek{height:112px;max-height:112px}.kmap-sheet--half{height:44vh;max-height:min(44vh,calc(100dvh - var(--kmap-nav-h,60px) - var(--kmap-top-h,124px) - var(--fg-tabbar-h,56px) - 40px))}.kmap-sheet--full{height:78vh;max-height:min(78vh,calc(100dvh - var(--kmap-nav-h,60px) - var(--kmap-top-h,124px) - 24px))}.kmap-grab{cursor:pointer;background:0 0;border:0;flex:none;width:100%;height:28px;min-height:44px;position:relative}.kmap-grab:before{content:"";background:var(--pt-line-strong);border-radius:999px;width:44px;height:4px;position:absolute;top:12px;left:50%;transform:translate(-50%)}.kmap-sheet-body{padding:0 16px calc(16px + env(safe-area-inset-bottom));flex:1;overflow-y:auto}.kmap-sheet .kmap-card{box-shadow:none}.kmap-sheet .kmap-list{border-top:0;margin-top:0}
