.place-markers { position:absolute; inset:0; pointer-events:none; }
.place-markers[hidden],.place-legend[hidden],.place-hero[hidden] { display:none; }
.place-marker { position:absolute; left:0; top:0; pointer-events:auto; width:24px; height:24px; padding:3px; border-radius:50%; background:#fffdf4f2; border:1px solid currentColor; box-shadow:0 2px 6px #183c3828; color:#286b60; display:flex; align-items:center; justify-content:center; cursor:pointer; transition:box-shadow .15s; }
.place-marker[hidden] { display:none; }
.place-marker-landmark { color:#9b6829; background:#fff7e8f5; }
.place-marker::after { content:''; position:absolute; inset:-7px; border-radius:50%; }
.place-marker svg { width:16px; height:16px; flex:none; pointer-events:none; }
.place-marker-name { position:absolute; height:24px; max-width:140px; padding:4px 8px; box-sizing:border-box; border-radius:5px; background:#fffdf5f2; color:#294338; font:600 12px/16px "Segoe UI",system-ui,sans-serif; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; box-shadow:0 1px 4px #183c3828; pointer-events:none; visibility:hidden; }
.place-name-visible .place-marker-name,.place-marker:hover .place-marker-name[data-clear="true"],.place-marker:focus-visible .place-marker-name[data-clear="true"] { visibility:visible; }
.place-markers:not(.place-labels) .place-marker:focus-visible .place-marker-name { visibility:visible; }
.place-marker:hover, .place-marker:focus-visible { box-shadow:0 0 0 4px #fffdf3c9,0 3px 13px #183c3844; z-index:5; background:white; }
.place-marker:focus-visible { outline:2px solid #286b60; outline-offset:3px; }
.place-legend { position:absolute; bottom:52px; left:14px; display:flex; gap:16px; align-items:center; padding:8px 12px; border:1px solid #c2d1c2; border-radius:9px; background:#fffdf2ee; box-shadow:0 2px 10px #1f44351a; pointer-events:none; font-size:11px; }
.place-legend span { display:flex; gap:6px; align-items:center; font-weight:600; }
.place-legend svg { width:16px; height:16px; }
.place-legend-city { color:#286b60; }.place-legend-landmark { color:#9b6829; }
.place-dialog { position:fixed; width:min(460px,calc(100vw - 28px)); max-height:calc(100dvh - 48px); padding:0; border:1px solid #dddec8; border-radius:22px; background:#fffdf5; color:#294338; box-shadow:0 24px 100px #163c3460; overflow:hidden; }
/* The card scrolls inside its wrapper, so the rounded corners clip the scrollbar as well. */
.place-dialog[open] { display:flex; flex-direction:column; }
.place-dialog-scroll { flex:1 1 auto; min-height:0; overflow:auto; overscroll-behavior:contain; }
.place-dialog::backdrop { background:#18362f55; backdrop-filter:blur(4px); }
.place-dialog-close { position:absolute; right:13px; top:13px; width:34px; height:34px; display:grid; place-items:center; padding:0; border-radius:50%; border:1px solid #cbd7c8; background:#fffef4eb; color:#294338; font:26px/1 Georgia,serif; z-index:1; }
.place-hero { height:245px; padding:20px 28px 2px; display:flex; justify-content:center; background:radial-gradient(ellipse at 50% 75%,#d8e5c5 0%,#eff1dc 45%,#fbf8ed 80%); border-bottom:1px solid #e6e6d6; }
.place-picture { max-width:100%; max-height:100%; object-fit:contain; align-self:center; }
.place-hero.loading { background:linear-gradient(120deg,#f7f2e5,#e9efdc); }
.place-dialog-body { padding:24px 28px 27px; }
.place-depicted { margin-top:20px; border-top:1px solid #dddec8; }
.place-depicted[hidden] { display:none; }
.place-badges { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.place-country { display:inline-flex; padding:5px 10px; border-radius:999px; cursor:default; background:#e5edf7; color:#345a80; font:700 10px/1.4 "Segoe UI",system-ui,sans-serif; text-transform:uppercase; letter-spacing:.08em; }
.place-category { display:inline-flex; font:700 10px/1.4 "Segoe UI",system-ui,sans-serif; text-transform:uppercase; letter-spacing:.14em; color:#2b7464; padding:5px 10px; border-radius:999px; cursor:default; background:#e8f1e5; }
.place-category[data-kind="landmark"] { color:#805618; background:#f6ecd9; }
.place-dialog-title { margin:10px 0 9px; font:700 30px/1.08 Georgia,serif; letter-spacing:-.03em; }
.place-summary { margin:0; font:15px/1.6 "Segoe UI",system-ui,sans-serif; color:#587063; }
.place-dialog h3 { margin:21px 0 7px; font:700 16px/1.3 Georgia,serif; }
.place-significance { margin:0; font-size:14px; line-height:1.65; color:#496657; }
.place-facts { margin:8px 0 0; padding-left:20px; color:#496657; font-size:13px; line-height:1.6; }
.place-facts li+li { margin-top:7px; }
.place-sources { border-top:1px solid #e0e5d5; padding-top:14px; margin-top:23px; color:#698172; font-size:11px; }
.place-sources summary { cursor:pointer; }.place-sources a { display:block; margin-top:8px; text-decoration-thickness:1px; text-underline-offset:3px; }
@media(max-width:620px) { .place-search { grid-column:1 / -1; }.place-search input { min-width:0; width:100%; }.place-hero { height:210px; }.place-dialog-body { padding:20px 23px; } }
@media(pointer:coarse) { .place-marker::after { inset:-10px; } }
@media(prefers-reduced-motion:reduce) { .place-marker { transition:none; } }

/* Popup readability: source content and picture fitting remain intact. */
.place-dialog { width:min(520px,calc(100vw - 28px)); }
.place-dialog-close { position:sticky; top:12px; margin:0 12px -40px auto; width:40px; height:40px; z-index:2; cursor:pointer; }
.place-dialog-close:focus-visible { outline:2px solid #286b60; outline-offset:3px; }
.place-dialog-body { padding:24px 30px 30px; font-family:"Segoe UI",system-ui,sans-serif; }
.place-dialog-title { font-size:clamp(30px,3vw,34px); line-height:1.12; overflow-wrap:anywhere; }
.place-pronunciation { margin:0 0 16px; color:#52695e; font-size:13px; line-height:1.5; }
.place-simple-intro { margin:16px 0 18px; padding:14px 16px; border-left:3px solid #88a88c; border-radius:0 8px 8px 0; background:#edf2e6; color:#294338; font-size:16px; line-height:1.55; }
.place-more { margin-top:2px; border-top:1px solid #e0e5d5; color:#4f675b; }
.place-more>summary { padding:15px 2px; cursor:pointer; color:#365b4a; font-size:15px; font-weight:700; }
.place-more>summary:focus-visible { outline:2px solid #286b60; outline-offset:3px; border-radius:3px; }
.place-more-content { padding:1px 2px 3px; }
.place-summary { margin:2px 0 0; font-size:15px; line-height:1.65; color:#4f675b; }
.place-info-section,.place-depicted { margin-top:24px; padding-top:18px; border-top:1px solid #e0e5d5; }
.place-info-section[hidden],.place-pronunciation[hidden],.place-simple-intro[hidden],.place-summary[hidden],.place-more[hidden] { display:none; }
.place-dialog h3 { margin:0 0 10px; font:700 14px/1.45 "Segoe UI",system-ui,sans-serif; color:#294338; }
.place-significance { font-size:15px; line-height:1.65; color:#4f675b; }
.place-facts { margin:0; padding-left:20px; font-size:15px; line-height:1.65; color:#4f675b; }
.place-facts li { padding-left:4px; }
.place-facts li+li { margin-top:12px; }
.place-facts li::marker { color:#71947b; }
.place-depicted .place-facts { margin-top:14px; }
.place-sources { margin-top:22px; padding-top:14px; color:#4f675b; font-size:13px; }
.place-sources summary { padding:8px 0; font-weight:700; color:#4f675b; }
.place-sources summary:focus-visible,.place-source-link:focus-visible { outline:2px solid #286b60; outline-offset:3px; }
.place-sources .place-source-link { display:flex; flex-direction:column; gap:4px; margin-top:10px; padding:11px 12px; border:1px solid #dce3d5; border-radius:8px; background:#f6f7ed; color:#4f675b; overflow-wrap:anywhere; line-height:1.5; text-decoration:none; }
.place-source-title { text-decoration:underline; text-underline-offset:3px; }
.place-source-host { font-size:11px; color:#4f675b; }
@media(max-width:620px) { .place-dialog-body { padding:22px 20px 26px; }.place-dialog-title { font-size:28px; }.place-simple-intro { padding:12px 14px; }.place-more>summary { padding:14px 2px; } }

/* Public label targets have no separate icon or chip. Scripts without italics (Han, kana, Hangul) stay
   upright instead of a slanted fake; per-script fonts come from the page lang. */
.place-labels .place-label-button{position:absolute;display:block;padding:0;border:0;border-radius:0;min-height:44px;background:transparent;color:#294338;box-shadow:none;cursor:pointer;transition:none}
.place-labels .place-label-button[hidden]{display:none}.place-labels .place-label-button::after{display:none}
.place-labels .place-marker-name{position:absolute;height:22px;max-width:none;padding:0;border:0;border-radius:0;background:transparent;visibility:visible;overflow:visible;font:var(--place-label-style,italic) var(--place-label-weight,400) var(--place-label-size,13px)/22px var(--place-label-family,Georgia,"Times New Roman",serif);font-synthesis:weight;text-align:center;white-space:nowrap;box-shadow:none;color:#294338;text-shadow:0 0 2px #fffdf5,0 0 4px #fffdf5,1px 0 2px #fffdf5,-1px 0 2px #fffdf5}
.place-labels .place-label-button:hover,.place-labels .place-label-button:focus-visible{background:transparent;box-shadow:none;z-index:5}.place-labels .place-label-button:hover .place-marker-name,.place-labels .place-label-button:focus-visible .place-marker-name{color:#173d31;text-shadow:0 0 2px #fffdf5,0 0 4px #fffdf5,0 0 6px #fffdf5}
.place-share-footer{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:22px;padding-top:14px;border-top:1px solid #e0e5d5}.place-share{min-height:44px;cursor:pointer;padding:9px 14px;border:1px solid #6f8a7b;border-radius:8px;background:#f6f7ed;color:#294338;font:600 14px system-ui,sans-serif}.place-share-status{margin:0;font:13px/1.5 system-ui,sans-serif;color:#4f675b}.place-share-status:empty{display:none}.place-share-url{flex:1 1 100%;width:100%;margin-top:0;padding:10px;font:14px system-ui,sans-serif;border:1px solid #6f8a7b;border-radius:6px}
.place-labels .place-label-selected .place-marker-name{color:#173d31;font-weight:700;text-shadow:0 0 2px #fffdf5,0 0 4px #fffdf5,0 0 7px #fffdf5}
/* Ideographic scripts (Hangul, Japanese, Chinese): names stay upright and semibold (place-explorer measures them so)
   under a thin two-layer halo; a four-layer halo makes their strokes read hollow. The card title takes the language's
   face, its chips drop the letter-spacing that splits 都市, and Korean keeps its words whole. */
.place-labels-ideographic .place-marker-name,.place-labels-ideographic .place-label-button:hover .place-marker-name,.place-labels-ideographic .place-label-button:focus-visible .place-marker-name,.place-labels-ideographic .place-label-selected .place-marker-name{font-style:normal;text-shadow:0 0 1px #fffdf5,0 0 1px #fffdf5}
.place-dialog-ideographic .place-dialog-title{font-family:var(--place-heading-family,sans-serif);letter-spacing:0}
.place-dialog-ideographic .place-category,.place-dialog-ideographic .place-country{letter-spacing:0}
:lang(ko) .place-dialog-title{word-break:keep-all}
