:root{--ink:#111;--paper:#fff;--accent:#d9381e;--muted:#666;--max-width:1400px}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5}.container{max-width:var(--max-width);margin:0 auto;padding:clamp(1.5rem,5vw,4rem)}.full{height:100dvh}.hero h1{letter-spacing:-.03em;margin:clamp(1rem,4vw,3rem) 0 1.5rem;font-size:clamp(4rem,10vw,7.5rem);font-weight:800;line-height:1}.intro{max-width:44ch;margin:0 0 .75rem;font-size:1.125rem}.stats{color:var(--muted);margin:0 0 clamp(2rem,5vw,3.5rem);font-size:1rem}.stats a{color:var(--ink)}.featured{margin:0 0 clamp(2.5rem,6vw,4rem)}.featured__media{display:block}.featured__media img{width:auto;max-width:100%;height:auto;max-height:75vh;margin:0 auto;display:block}.featured__caption{margin-top:.75rem;font-size:.95rem}.featured__caption a{color:var(--ink);text-decoration:none}.continent{margin-bottom:clamp(2.5rem,6vw,4rem);scroll-margin-top:1.5rem}.continent h2{margin:0 0 1.25rem;font-size:1.5rem;font-weight:700}.continent__count{color:#999;margin-left:.5rem;font-size:1rem;font-weight:400}.city-cards{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1.5rem .75rem;display:grid}.city-card{color:var(--ink);min-width:0;text-decoration:none;display:block}.city-card__media{aspect-ratio:4/3;background:#f4f4f4;display:block;overflow:hidden}.city-card__media img{object-fit:cover;width:100%;height:100%;transition:transform .35s;display:block}.city-card__body{flex-direction:column;padding-top:.5rem;display:flex}.city-card__name{white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.city-card__count{color:var(--muted);font-size:.85rem}.city-card:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.map-page{height:100%;position:relative}.map-canvas{position:absolute;inset:0}.map-header{z-index:500;pointer-events:none;justify-content:space-between;align-items:center;padding:1rem clamp(1rem,3vw,1.5rem);display:flex;position:absolute;top:0;left:0;right:0}.map-chip{pointer-events:auto;background:var(--paper);color:var(--ink);font:inherit;cursor:pointer;border:1px solid #00000014;padding:.55rem 1rem;font-size:.95rem;text-decoration:none;display:inline-block;box-shadow:0 1px 4px #00000026}.leaflet-marker-icon.map-marker,.leaflet-marker-icon.map-cluster{background:0 0;border:0;justify-content:center;align-items:center;display:flex}.map-marker__dot{background:var(--ink);border:2px solid var(--paper);border-radius:50%;flex:none;width:14px;height:14px;transition:transform .15s,background .15s;display:block;box-shadow:0 1px 3px #00000059}.map-marker--active .map-marker__dot{background:var(--accent);transform:scale(1.35)}.map-cluster__inner{background:var(--ink);width:40px;height:40px;color:var(--paper);border:2px solid var(--paper);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:.85rem;font-weight:600;display:flex;box-shadow:0 1px 4px #00000059}.map-popup .leaflet-popup-content-wrapper{border-radius:0;padding:0;box-shadow:0 2px 14px #0000004d}.map-popup .leaflet-popup-content{margin:0;line-height:1.4;width:220px!important}.leaflet-container .map-popup__link{color:var(--ink);text-decoration:none;display:block}.map-popup__link img{width:100%;height:auto;display:block}.map-popup__body{padding:.65rem .8rem .8rem;display:block}.map-popup__name{font-weight:700;display:block}.map-popup__meta{color:var(--muted);font-size:.82rem;display:block}.place-card{z-index:600;background:var(--paper);align-items:stretch;display:flex;position:absolute;bottom:.75rem;left:.75rem;right:.75rem;box-shadow:0 4px 20px #0000004d}.place-card__link{min-width:0;color:var(--ink);flex:1;align-items:center;gap:.9rem;padding:.7rem;text-decoration:none;display:flex}.place-card__link img{object-fit:cover;flex:none;width:64px;height:64px}.place-card__text{flex-direction:column;min-width:0;display:flex}.place-card__name{white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.place-card__count{color:var(--muted);font-size:.85rem}.place-card__cta{background:var(--ink);color:var(--paper);white-space:nowrap;flex:none;align-self:center;margin-left:auto;padding:.55rem .9rem;font-size:.9rem}.place-card__close{cursor:pointer;color:var(--ink);background:0 0;border:0;flex:none;align-self:flex-start;padding:.7rem .9rem;font-size:1.5rem;line-height:1}.place-list{z-index:700;background:#fffffffa;flex-direction:column;display:flex;position:absolute;inset:0}.place-list__header{border-bottom:1px solid #eee;justify-content:space-between;align-items:center;padding:1rem clamp(1rem,3vw,1.5rem);display:flex}.place-list__header h2{margin:0;font-size:1.4rem}.place-list__close{cursor:pointer;color:var(--ink);background:0 0;border:0;padding:.25rem .5rem;font-size:2rem;line-height:1}.place-list__scroll{width:100%;max-width:720px;margin:0 auto;padding:0 clamp(1rem,3vw,1.5rem) 2rem;overflow-y:auto}.place-list h3{color:var(--muted);margin:1.5rem 0 .25rem;font-size:1rem;font-weight:600}.place-list ul{margin:0;padding:0;list-style:none}.place-list__row{width:100%;font:inherit;text-align:left;cursor:pointer;color:var(--ink);background:0 0;border:0;border-bottom:1px solid #f0f0f0;justify-content:space-between;align-items:baseline;gap:1rem;padding:.8rem 0;font-size:1.05rem;display:flex}.place-list__count{color:#999;font-size:.9rem}.leaflet-container{font:inherit}.leaflet-control-attribution{background:#fffc;padding:2px 6px;font-size:.65rem}.leaflet-bar,.leaflet-bar a,.leaflet-bar a:first-child,.leaflet-bar a:last-child{border-radius:0}.back{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1rem;display:flex}.back a{color:var(--ink);font-size:1rem;text-decoration:none}.city-name{margin:0 0 .25rem;font-size:clamp(2rem,5vw,3rem);font-weight:700}.city-meta{color:var(--muted);margin:0 0 1.5rem}.city-nav{justify-content:space-between;gap:1rem;margin-top:clamp(2.5rem,6vw,4rem);display:flex}.city-nav a{color:var(--ink);font-size:1.05rem;text-decoration:none}.photo-grid{flex-wrap:wrap;gap:8px;display:flex}.photo-item{cursor:pointer;background:0 0;border:0;height:320px;padding:0}.photo-item img{width:auto;height:100%;display:block}.photo-item:focus-visible{outline:2px solid var(--ink);outline-offset:2px}@media (hover:hover){.featured__caption a:hover,.stats a:hover,.back a:hover,.city-nav a:hover{color:var(--accent)}.city-card:hover .city-card__media img{transform:scale(1.04)}.city-card:hover .city-card__name{color:var(--accent)}.map-chip:hover{background:var(--ink);color:var(--paper)}.map-marker:hover .map-marker__dot{background:var(--accent);transform:scale(1.35)}.map-cluster:hover .map-cluster__inner{background:var(--accent)}.place-list__row:hover{color:var(--accent)}.place-card__close:hover,.place-list__close:hover{opacity:.6}}@keyframes fade-in{0%{opacity:0}}@keyframes slide-up{0%{opacity:.5;transform:translateY(12px)}}@media (prefers-reduced-motion:no-preference){.photo-item img,.city-card__media img,.featured__media img{animation:.45s ease-out fade-in}.place-card{animation:.25s ease-out slide-up}}@media (width<=640px){.hero h1{font-size:3.5rem}.intro{font-size:1rem}.photo-grid{flex-direction:column}.photo-item,.photo-item img{width:100%;height:auto}.lightbox button{padding:.75rem;font-size:1.5rem}.lightbox-close{font-size:2rem}.back,.city-nav{font-size:.95rem}}@media (width>=768px){.city-cards{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.75rem 1rem}}.lightbox{z-index:1000;overscroll-behavior:contain;background:#000000f0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox figure{margin:0}.lightbox img{width:auto;max-width:90vw;height:auto;max-height:86vh}.lightbox button{color:#fff;cursor:pointer;background:0 0;border:0;padding:1rem;font-size:2rem;line-height:1;position:absolute}.lightbox button:hover{opacity:.6}.lightbox-close{font-size:2.5rem;top:.5rem;right:.5rem}.lightbox-prev{top:50%;left:.5rem;transform:translateY(-50%)}.lightbox-next{top:50%;right:.5rem;transform:translateY(-50%)}footer{margin-top:clamp(3rem,8vw,5rem)}.socials{gap:1.5rem;display:flex}.socials a{color:var(--ink);display:inline-flex}.socials a:hover{opacity:.6}.socials svg{width:28px;height:28px}
