@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-vietnamese-opsz-italic-DTr-ymY4.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-ext-opsz-italic-CSPGnFdO.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-opsz-italic-kJKFiXvB.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.app{--panel-w:clamp(360px, 31vw, 440px);--gutter:28px;height:100dvh;position:relative;overflow:hidden}.panel{background:var(--paper);flex-direction:column;display:flex}.masthead{padding:30px var(--gutter) 0}.masthead__byline{letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);font-size:12px;font-weight:500;text-decoration:none}.masthead__byline:hover{color:var(--ink)}.wordmark{font-family:var(--serif);letter-spacing:-.025em;margin:16px 0 12px;font-size:60px;font-weight:460;line-height:.92}.masthead__dek{font-family:var(--serif);color:var(--ink-2);max-width:24em;margin:0 0 24px;font-size:18px;line-height:1.35}.stats{border-top:1px solid var(--rule);flex-wrap:wrap;gap:4px 30px;margin:0;padding:16px 0 0;display:flex}.stats div{flex-direction:column-reverse;display:flex}.stats dd{font-family:var(--serif);font-variant-numeric:lining-nums tabular-nums;margin:0;font-size:28px;font-weight:450;line-height:1}.stats dt{color:var(--ink-3);margin-top:6px;font-size:12px}.histo{margin:26px var(--gutter) 6px}.histo__caption{color:var(--ink-3);font-variant-numeric:tabular-nums;min-height:1.45em;margin-bottom:8px;font-size:12px}.histo__bars{align-items:flex-end;gap:2px;height:52px;display:flex}.histo__bar{cursor:pointer;background:0 0;border:0;border-radius:4px 4px 0 0;flex:1;align-items:flex-end;height:100%;padding:0;display:flex}.histo__fill{width:100%;transition:opacity .2s var(--ease), filter .2s var(--ease);border-radius:4px 4px 0 0}.histo__bar:hover .histo__fill,.histo__bar:focus-visible .histo__fill{filter:brightness(1.12)saturate(1.1)}.histo__bar.is-muted .histo__fill{opacity:.22}.histo__bar--below{margin-right:6px}.histo__axis{border-top:1px solid var(--rule-strong);color:var(--ink-3);font-variant-numeric:tabular-nums;justify-content:space-between;padding-top:5px;font-size:11px;display:flex}.controls{z-index:2;background:var(--paper);padding:18px var(--gutter) 0;position:sticky;top:0}.search{align-items:center;display:flex;position:relative}.search__icon{fill:none;width:16px;height:16px;stroke:var(--ink-3);stroke-width:1.6px;stroke-linecap:round;pointer-events:none;position:absolute;left:14px}.search__input{border:1px solid var(--rule-strong);background:var(--card);width:100%;height:44px;box-shadow:var(--shadow-1);border-radius:12px;padding:0 40px;font-size:15px;transition:border-color .15s,box-shadow .15s}.search__input::placeholder{color:var(--ink-3)}.search__input:focus{border-color:var(--ink-2);box-shadow:0 0 0 3px #1e1a1614, var(--shadow-1);outline:none}.search__input::-webkit-search-cancel-button{display:none}.search__clear,.search__key{position:absolute;right:8px}.search__clear{cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;width:28px;height:28px;display:grid}.search__clear:hover{background:var(--paper-sunk)}.search__clear svg{width:14px;height:14px;stroke:var(--ink-2);stroke-width:1.6px;stroke-linecap:round}.search__key{border:1px solid var(--rule-strong);min-width:22px;height:22px;font:500 12px/1 var(--sans);color:var(--ink-3);background:var(--paper);pointer-events:none;border-bottom-width:2px;border-radius:6px;place-items:center;display:grid;right:12px}.search__input:focus~.search__key{opacity:0}.toolbar{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;gap:12px;padding:12px 0 10px;display:flex}.toolbar__count{color:var(--ink-3);white-space:nowrap;margin:0;font-size:13px}.toolbar__count strong{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600}.toolbar__actions{align-items:center;gap:6px;min-width:0;display:flex}.chip{border:1px solid var(--rule-strong);background:var(--card);white-space:nowrap;cursor:pointer;font-variant-numeric:tabular-nums;border-radius:999px;height:28px;padding:0 10px;font-size:12.5px;font-weight:500}.chip:hover{border-color:var(--ink-2)}.sort select{appearance:none;height:28px;color:var(--ink-2);cursor:pointer;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 6.5 8 10l3.5-3.5' fill='none' stroke='%23554d46' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 6px center/14px no-repeat;border:1px solid #0000;border-radius:8px;padding:0 26px 0 10px;font-size:13px;font-weight:500}.sort select:hover{background-color:var(--paper-sunk)}.list{margin:0;padding:0;list-style:none}.panel>.list,.panel>.list--grouped{padding:6px calc(var(--gutter) - 14px) 8px}.list li+li{border-top:1px solid var(--rule)}.list li:has(.row:hover,.row.is-selected,.row.is-hovered){border-top-color:#0000}.list li:has(.row:hover,.row.is-selected,.row.is-hovered)+li{border-top-color:#0000}.row{text-align:left;cursor:pointer;content-visibility:auto;contain-intrinsic-size:auto 64px;background:0 0;border:0;border-radius:10px;grid-template-columns:30px 1fr auto;align-items:center;gap:12px;width:100%;padding:12px 14px 12px 8px;transition:background-color .12s;display:grid}.row:hover,.row.is-hovered{background:var(--paper-sunk)}.row.is-selected{background:var(--card);box-shadow:inset 0 0 0 1px var(--rule-strong), var(--shadow-1)}.row__rank{color:var(--ink-3);text-align:right;font-variant-numeric:tabular-nums;font-size:12px}.row__main{min-width:0}.row__name{-webkit-line-clamp:2;font-family:var(--serif);letter-spacing:-.005em;-webkit-box-orient:vertical;font-size:17.5px;font-weight:480;line-height:1.22;display:-webkit-box;overflow:hidden}.row__meta{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;margin-top:3px;font-size:13px;display:block;overflow:hidden}.row__flag{font-style:italic}.row__score{align-items:center;gap:9px;display:flex}.row__value{font-family:var(--serif);text-align:right;font-variant-numeric:lining-nums tabular-nums;min-width:2.1em;font-size:21px;font-weight:460;line-height:1}.swatch{border-radius:3px;flex:none;width:9px;height:9px}.group{border-bottom:1px solid var(--ink);justify-content:space-between;align-items:baseline;gap:12px;margin:22px 8px 6px;padding-bottom:6px;display:flex}.group:first-child{margin-top:12px}.group__city{font-family:var(--serif);font-size:20px;font-weight:500}.group__meta{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:12px;font-weight:400}.empty{padding:40px var(--gutter);text-align:center;color:var(--ink-2)}.empty p{font-family:var(--serif);margin:0 0 16px;font-size:18px}.colophon{padding:28px var(--gutter) 32px;color:var(--ink-3);margin-top:auto;font-size:12px}.colophon p{margin:0 0 4px}.button{border:1px solid var(--rule-strong);background:var(--card);cursor:pointer;white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;height:38px;padding:0 14px;font-size:14px;font-weight:500;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.button:hover{border-color:var(--ink-2)}.button--primary{background:var(--ink);border-color:var(--ink);color:var(--paper)}.button--primary:hover{background:color-mix(in srgb, var(--ink) 85%, var(--paper))}.button--quiet{color:var(--ink-2);background:0 0;border-color:#0000}.button--quiet:hover{background:var(--paper-sunk);border-color:#0000}.icon-button{cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;width:32px;height:32px;margin:-6px -8px 0 0;display:grid}.icon-button:hover{background:var(--paper-sunk)}.icon-button svg{width:16px;height:16px;stroke:var(--ink-2);stroke-width:1.6px;stroke-linecap:round}.stage{position:relative;overflow:hidden}.map,.map .map__canvas{position:absolute;inset:0}.map .map__canvas,.map--loading{background:var(--map-water)}.map__controls{top:calc(var(--map-top,0px) + 16px);z-index:2;flex-direction:column;gap:8px;display:flex;position:absolute;right:16px}.control-group{background:var(--card);box-shadow:0 0 0 1px #1e1a161a, var(--shadow-1);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.control{cursor:pointer;background:0 0;border:0;place-items:center;width:36px;height:36px;display:grid}.control+.control{border-top:1px solid var(--rule)}.control:hover{background:var(--paper-sunk)}.control svg{fill:none;width:16px;height:16px;stroke:var(--ink);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.map__toast{left:50%;top:calc(var(--map-top,0px) + 16px);background:var(--ink);color:var(--paper);z-index:3;border-radius:8px;margin:0;padding:8px 12px;font-size:13px;position:absolute;transform:translate(-50%)}.legend{z-index:1;background:color-mix(in srgb, var(--card) 92%, transparent);box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 8%, transparent), var(--shadow-1);color:var(--ink-2);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:10px;align-items:center;gap:10px;padding:8px 12px;font-size:11.5px;display:flex;position:absolute;bottom:16px;left:16px}.legend__ramp{gap:2px;display:flex}.legend__step{font-variant-numeric:tabular-nums;flex-direction:column;align-items:center;gap:4px;display:flex}.legend__step i{border-radius:2px;width:22px;height:8px;display:block}.legend__step:first-child i{border-radius:4px 2px 2px 4px}.legend__step:last-child i{border-radius:2px 4px 4px 2px}.map .maplibregl-ctrl-attrib.maplibregl-compact{background:color-mix(in srgb, var(--card) 85%, transparent);color:var(--ink-3);font-size:11px}.map .maplibregl-ctrl-attrib a{color:var(--ink-2)}@media (prefers-color-scheme:dark){.map .maplibregl-ctrl-attrib-button{filter:invert()}}.map .maplibregl-ctrl-bottom-right{bottom:var(--map-bottom,0px)}.pin{cursor:pointer;background:0 0;border:0;place-items:center;width:14px;height:14px;padding:0;display:grid;position:relative}.pin:before{content:"";background:var(--pin-color);box-shadow:0 0 0 2px var(--card), 0 1px 4px #1e1a1666;transition:transform .18s var(--ease), box-shadow .18s var(--ease);border-radius:999px;position:absolute;inset:0}.pin__score{font:600 12px/1 var(--sans);letter-spacing:.01em;color:var(--pin-ink);font-variant-numeric:tabular-nums;display:none;position:relative}.pin--pill{width:auto;min-width:36px;height:22px;padding:0 7px}.pin--pill .pin__score{display:block}.pin:hover:before,.pin.is-hovered:before{transform:scale(1.35)}.pin--pill:hover:before,.pin--pill.is-hovered:before{transform:scale(1.1)}.pin.is-selected:before{box-shadow:0 0 0 2px var(--card), 0 0 0 3.5px var(--ink), 0 6px 16px #1e1a1659;transform:scale(1.45)}.pin--pill.is-selected:before{transform:scale(1.12)}.pin--approx:before{background:var(--card);box-shadow:inset 0 0 0 2.5px var(--pin-color), 0 0 0 1.5px var(--card), 0 1px 4px #1e1a164d}.pin--approx .pin__score{color:var(--ink)}.pin__label{background:var(--ink);max-width:220px;color:var(--paper);font:500 12.5px/1.2 var(--sans);white-space:nowrap;text-overflow:ellipsis;opacity:0;pointer-events:none;transition:opacity .14s, transform .14s var(--ease);border-radius:7px;padding:6px 9px;position:absolute;bottom:calc(100% + 9px);left:50%;overflow:hidden;transform:translate(-50%,3px)}.pin:hover .pin__label,.pin.is-hovered .pin__label,.pin.is-selected .pin__label{opacity:1;transform:translate(-50%)}.cluster{width:var(--size);height:var(--size);background:var(--card);color:var(--ink);font:600 13px/1 var(--sans);font-variant-numeric:tabular-nums;box-shadow:inset 0 0 0 1.5px var(--ink), 0 0 0 3px color-mix(in srgb, var(--card) 55%, transparent), 0 3px 10px #1e1a1638;cursor:pointer;transition:transform .18s var(--ease);border:0;border-radius:999px;place-items:center;padding:0;display:grid}.cluster:hover,.cluster.is-hovered{transform:scale(1.1)}.cluster.is-hovered{background:var(--ink);color:var(--paper)}.me-dot{background:var(--focus);width:14px;height:14px;box-shadow:0 0 0 3px var(--card), 0 0 0 9px color-mix(in srgb, var(--focus) 22%, transparent);border-radius:999px}.sheet{z-index:4;position:absolute}.detail{background:var(--card);animation:rise .28s var(--ease);padding:22px 24px}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.detail__top{justify-content:space-between;align-items:flex-start;display:flex}.detail__rank{letter-spacing:.09em;text-transform:uppercase;color:var(--ink);font-variant-numeric:tabular-nums;margin:0;font-size:12px;font-weight:600}.detail__of{color:var(--ink-3);font-weight:500}.detail__name{font-family:var(--serif);letter-spacing:-.018em;text-wrap:balance;margin:10px 0 6px;font-size:34px;font-weight:470;line-height:1.05}.detail__place{color:var(--ink-2);margin:0;font-size:14px}.detail__score{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);grid-template-columns:auto 1fr;align-items:end;gap:18px;margin:20px 0 6px;padding:16px 0 18px;display:grid}.detail__numeral{font-family:var(--serif);letter-spacing:-.03em;font-variant-numeric:lining-nums;margin:0;font-size:68px;font-weight:380;line-height:.8}.detail__outof{letter-spacing:0;color:var(--ink-3);margin-left:4px;font-size:20px}.gauge{padding-bottom:2px}.gauge__track{background:var(--paper-sunk);border-radius:3px;height:6px;position:relative}.gauge__band{opacity:.9;position:absolute;top:0;bottom:0}.gauge__band:first-child{border-radius:3px 0 0 3px}.gauge__band:last-of-type{border-radius:0 3px 3px 0}.gauge__mark{background:var(--card);border:3.5px solid;border-radius:999px;width:16px;height:16px;margin:-8px 0 0 -8px;position:absolute;top:50%;box-shadow:0 1px 4px #1e1a164d}.gauge__ticks{color:var(--ink-3);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:8px;font-size:11px;display:flex}.detail__note{border-left:2px solid var(--rule-strong);font-family:var(--serif);color:var(--ink-2);margin:18px 0 0;padding:0 0 0 14px;font-size:17px;font-style:italic;line-height:1.4}.facts{margin:16px 0 0}.facts div{grid-template-columns:76px 1fr;gap:12px;padding:7px 0;display:grid}.facts dt{color:var(--ink-3);padding-top:2px;font-size:12px}.facts dd{margin:0;font-size:14px}.visits{margin:0;padding:0;list-style:none}.visits li{gap:10px;display:flex}.visits__score{font-family:var(--serif);font-variant-numeric:lining-nums tabular-nums;min-width:2em;font-size:15px}.visits__date{color:var(--ink-3)}.detail__actions{flex-wrap:wrap;gap:8px;margin-top:20px;display:flex}.switch{display:none}@media (width>=900px){.app{grid-template-columns:var(--panel-w) 1fr;display:grid}.topbar{display:contents}.masthead{order:1}.histo{order:2}.controls{order:3}.panel>.list,.panel>.list--grouped,.panel>.empty{order:4}.colophon{order:5}.panel{overscroll-behavior:contain;border-right:1px solid var(--rule-strong);scrollbar-width:thin;scrollbar-color:var(--rule-strong) transparent;overflow-y:auto}.sheet{width:372px;max-height:calc(100% - 32px);box-shadow:0 0 0 1px #1e1a1614, var(--shadow-2);scrollbar-width:thin;border-radius:16px;top:16px;left:16px;overflow-y:auto}.detail{padding:24px 26px}.app[data-detail=open] .legend{display:none}}@media (width<=899.98px){.app{--gutter:16px}.stage{position:absolute;inset:0}.panel{z-index:3;max-height:100%;box-shadow:0 1px 0 var(--rule-strong);position:absolute;top:0;left:0;right:0}.app[data-view=list] .panel{overscroll-behavior:contain;padding-bottom:calc(84px + env(safe-area-inset-bottom));bottom:0;overflow-y:auto}.topbar{background:var(--paper)}.app[data-view=map] .panel>:not(.topbar),.app[data-view=map] .toolbar{display:none}.app[data-view=map] .controls{padding-bottom:12px}.masthead{padding:calc(14px + env(safe-area-inset-top)) var(--gutter) 0;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.masthead__byline,.masthead__dek{display:none}.wordmark{margin:0;font-size:30px}.stats{border:0;flex-wrap:nowrap;gap:12px;padding:0}.stats div{flex-direction:row-reverse;align-items:baseline;gap:4px}.stats div:nth-child(n+3){display:none}.stats dd{font-size:17px}.stats dt{margin:0;font-size:12px}.controls{padding-top:12px}.histo{margin-top:18px}.search__key{display:none}.sheet{border-radius:18px 18px 0 0;max-height:min(68%,560px);bottom:0;left:0;right:0;overflow-y:auto;box-shadow:0 -1px #1e1a1614,0 -16px 40px -20px #1e1a1666}.detail{padding:14px var(--gutter) calc(20px + env(safe-area-inset-bottom))}.detail:before{content:"";background:var(--rule-strong);border-radius:2px;width:36px;height:4px;margin:0 auto 12px;display:block}.detail__name{font-size:28px}.detail__numeral{font-size:54px}.switch{left:50%;bottom:calc(16px + env(safe-area-inset-bottom));z-index:5;background:var(--ink);border-radius:999px;padding:4px;display:flex;position:absolute;transform:translate(-50%);box-shadow:0 8px 24px -8px #1e1a1680}.switch button{height:38px;color:var(--paper);cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;padding:0 18px;font-size:14px;font-weight:500;display:flex}.switch button[aria-pressed=true]{background:var(--paper);color:var(--ink)}.switch__count{opacity:.75;font-variant-numeric:tabular-nums;font-size:12px}.app[data-detail=open] .switch,.app[data-detail=open] .legend{display:none}.legend{top:calc(var(--map-top,0px) + 12px);padding:6px 10px;bottom:auto;left:12px}.map__controls{right:12px}}
