.places-page{max-width:1100px;margin:0 auto;padding:80px 24px}.places-header{max-width:640px;margin-bottom:28px}.places-title{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.02em;color:#1a1a1a;margin-bottom:10px;font-weight:600;line-height:1.05}.places-subtitle{font-family:var(--font-display);font-size:var(--text-base);color:#555;font-style:italic;line-height:1.6}.city-tabs{border-bottom:1px solid #d4d0cb;flex-wrap:wrap;margin-bottom:28px;display:flex}.city-tab{font-size:var(--text-base);color:#888;cursor:pointer;transition:color .16s var(--ease-out), border-color .16s var(--ease-out);background:0 0;border:none;border-bottom:2px solid #0000;align-items:baseline;gap:7px;margin-bottom:-1px;padding:8px 16px 10px;font-family:inherit;display:inline-flex}@media (hover:hover) and (pointer:fine){.city-tab:hover{color:#1a1a1a}}.city-tab--active{color:#1a1a1a;border-bottom-color:#1a1a1a;font-weight:500}.city-tab-count{font-family:var(--font-mono);font-size:var(--text-xs);color:#a8a49f;letter-spacing:.02em}.city-tab--active .city-tab-count{color:#1a1a1a}.places-layout{grid-template-columns:minmax(0,1fr) 380px;align-items:start;gap:32px;margin-bottom:80px;display:grid}.places-map-wrap{position:sticky;top:24px}.city-map{background:#e8e5e0;border:1px solid #d4d0cb;border-radius:8px;width:100%;height:560px;overflow:hidden}.city-map--placeholder{color:#888;font-size:var(--text-sm);text-align:center;justify-content:center;align-items:center;padding:24px;display:flex}.city-map--placeholder code{font-family:var(--font-mono);background:#f5f3f0;border-radius:4px;margin:0 4px;padding:2px 6px}.places-list{min-width:0}.places-items{border-top:1px solid #d4d0cb;list-style:none}.place{transition:background .2s var(--ease-out);opacity:0;animation:place-enter .28s var(--ease-out) forwards;animation-delay:calc(var(--i,0) * 40ms);border-bottom:1px solid #d4d0cb;flex-direction:column;align-items:stretch;display:flex;position:relative;transform:translateY(4px)}@keyframes place-enter{to{opacity:1;transform:translateY(0)}}@media (hover:hover) and (pointer:fine){.place:hover{background:#1a1a1a06}}.place--active{background:#e8e5e0}.place--active:before{content:"";background:#1a1a1a;width:2px;position:absolute;top:-1px;bottom:-1px;left:0}.place-btn{text-align:left;cursor:pointer;min-width:0;color:inherit;transition:transform .12s var(--ease-out);background:0 0;border:none;padding:16px 14px 6px 18px;font-family:inherit;display:block}.place-btn:active{transform:scale(.99)}.place-address{font-size:var(--text-xs);color:#888;transition:color .16s var(--ease-out);align-self:flex-start;align-items:center;gap:4px;padding:0 18px 14px;line-height:1.4;display:inline-flex}.place-address-arrow{transition:transform .16s var(--ease-out);flex-shrink:0;font-size:13px}@media (hover:hover) and (pointer:fine){.place-address:hover{color:#1a1a1a}.place-address:hover .place-address-arrow{transform:translate(1px,-1px)}}.place-address:active .place-address-arrow{transform:translate(0)}.place--active .place-address{color:#666}.place--active .place-address:hover{color:#1a1a1a}.place-name{font-family:var(--font-display);font-size:var(--text-base);color:#1a1a1a;margin-bottom:3px;font-weight:500;line-height:1.35;display:block}.place-note{font-family:var(--font-display);font-size:var(--text-base);color:#555;font-style:italic;line-height:1.55;display:block}.place-external{color:#a8a49f;transition:color .16s var(--ease-out), transform .12s var(--ease-out);justify-content:center;align-self:flex-start;align-items:center;padding:0 18px 14px;font-size:14px;display:inline-flex}@media (hover:hover) and (pointer:fine){.place-external:hover{color:#1a1a1a}}.place-external:active{transform:scale(.97)}.place--active .place-external{color:#1a1a1a}.places-empty{font-family:var(--font-display);font-style:italic;font-size:var(--text-base);color:#888;border-top:1px solid #d4d0cb;padding:20px 0}@media (prefers-reduced-motion:reduce){.place{opacity:1;animation:none;transform:none}.place-btn,.place-external,.city-tab{transition-duration:0s}.place-btn:active,.place-external:active{transform:none}}@media (width<=880px){.places-layout{grid-template-columns:1fr;gap:24px}.places-map-wrap{position:static}.city-map{height:420px}}@media (width<=640px){.places-page{padding:48px 20px}.city-map{height:340px}.place-btn{padding:14px 12px 14px 16px}}
