
      :root {
        color-scheme: light dark;
        --bg: #FBF3E4;
        --surface: #FFFDF8;
        --surface-2: #F3E6D4;
        --ink: #201D18;
        --ink-2: #5A5046;
        --ink-3: #5A5046;
        --brand-text: #B83A17;
        --line: #E7E3DA;
        --line-strong: #D6D1C5;
        --brand: #C2441F;
        --brand-hover: #C9481F;
        --brand-ink: #ffffff;
        --accent-soft: #FBEDE7;
        --ok: #2F6B3A;
        --ok-bg: #EAF3EA;
        --ok-line: #BCD7BF;
        --warn-bg: #FBF3E4;
        --warn-ink: #7C5410;
        --warn-line: #EDDCBB;
        --stay: #E4572E;
        --food: #96762F;
        --park: #5F7161;
        --hospital: #C62F3B;
        --hospital-soft: #FAEAEA;
        --hospital-ink: #A92330;
        --emg: #C1272D;
        --chip-off-bg: #ffffff;
        --shadow: 0 10px 28px rgba(26, 26, 26, 0.14);
        --radius: 12px;
      }
      @media (prefers-color-scheme: dark) {
        :root {
          --bg: #171512;
          --surface: #201D18;
          --surface-2: #26231D;
          --ink: #F2EFE9;
          --ink-2: #C7C2B8;
          --ink-3: #99948A;
          --line: #37332B;
          --line-strong: #4A463C;
          --brand: #EE6C3D;
          --brand-text: #FFB089;
          --brand-hover: #F2825A;
          --brand-ink: #ffffff;
          --accent-soft: #33231B;
          --ok: #9DDBA8;
          --ok-bg: #1C2B20;
          --ok-line: #3E6B48;
          --warn-bg: #2C2413;
          --warn-ink: #EBCB8F;
          --warn-line: #57491F;
          --stay: #EE6C3D;
          --food: #C4A355;
          --park: #93A892;
          --hospital: #E85D66;
          --hospital-soft: #3A2023;
          --hospital-ink: #F2A6AC;
          --emg: #CE3B3B;
          --chip-off-bg: #201D18;
          --shadow: 0 12px 32px rgba(0, 0, 0, 0.55);
        }
      }
      @font-face {
        font-family: "DoHyeon";
        src: url("/fonts/DoHyeon-Regular.woff2") format("woff2");
        font-weight: 400;
        font-style: normal;
        font-display: swap;
      }
      @font-face {
        font-family: "Gothic A1";
        src: url("/fonts/GothicA1-Regular.woff2") format("woff2");
        font-weight: 400;
        font-style: normal;
        font-display: swap;
      }
      @font-face {
        font-family: "Gothic A1";
        src: url("/fonts/GothicA1-Bold.woff2") format("woff2");
        font-weight: 700;
        font-style: normal;
        font-display: swap;
      }
      * { box-sizing: border-box; }
      button, input, select, textarea { font-family: inherit; }
      html, body { height: auto; }
      body {
        margin: 0;
        font-family: "Gothic A1", sans-serif;
        font-size: 16px;
        font-weight: 400;
        font-synthesis: none;
        background: var(--bg);
        color: var(--ink);
        display: flex;
        flex-direction: column;
        min-height: 100dvh;
      }

      /* ---------- shared site bar ---------- */
      .site-bar {
        position: sticky;
        top: 0;
        z-index: 40;
        display: flex;
        align-items: center;
        gap: 12px;
        height: 56px;
        min-height: 56px;
        max-width: 100%;
        padding: 0 16px;
        background: var(--bg);
        border-bottom: 1px solid var(--line);
      }
      header.site-bar { padding: 0 16px; }
      .site-bar .brand {
        font-size: 17px;
        text-decoration: none;
        color: inherit;
      }
      .site-bar .proto-badge { margin-left: 0; }
      .site-nav {
        display: flex;
        gap: 2px;
        margin-left: auto;
        min-width: 0;
        overflow-x: auto;
        scrollbar-width: none;
      }
      .site-bar .brand { font-family: "DoHyeon", sans-serif; font-size: 22px; font-weight: 400; display: flex; align-items: center; box-sizing: border-box; height: 44px; min-height: 44px; }
      .site-nav a {
        font-size: 14px;
        font-weight: 700;
        color: var(--ink);
        text-decoration: none;
        box-sizing: border-box;
        height: 44px;
        min-height: 44px;
        min-width: 44px;
        padding: 0 12px;
        display: inline-flex;
        align-items: center;
        border-radius: 999px;
        white-space: nowrap;
      }
      .sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
      :focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
      .site-nav a:hover,
      .site-nav a[aria-current="page"] { background: var(--surface-2); }
      .trust-nav {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 8px 14px;
        margin: 0 0 8px;
      }
      .trust-nav a {
        color: var(--ink-2);
        font-size: 15px;
        font-weight: 700;
        text-decoration: none;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
        min-width: 44px;
        min-height: 44px;
        padding: 0 8px;
      }
      .trust-nav a:hover { color: var(--brand-text); }
      .facts { margin-top: 20px; }
      .facts h2 { margin: 0 0 8px; font-size: 18px; line-height: 26px; }
      .facts dl { margin: 0; }
      .facts div { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--line); }
      .facts dt { color: var(--ink-3); font-size: 14px; }
      .facts dd { margin: 0; font-size: 15px; }
      .crawl-catalog {
        content-visibility: auto;
        contain-intrinsic-size: auto 800px;
        padding: 8px 16px 12px;
        background: var(--bg);
        border-top: 1px solid var(--line);
      }
      .crawl-catalog.is-hidden { display: none; }
      .crawl-catalog-inner { max-width: 980px; margin: 0 auto; }
      .crawl-catalog h2 {
        margin: 22px 0 10px;
        font-size: 20px;
        letter-spacing: -0.03em;
      }
      .crawl-note { margin: 0 0 10px; color: var(--ink-2); font-size: 14px; }
      .region-counts, .rep-places, .guide-links {
        display: grid;
        gap: 8px;
        margin: 0;
        padding: 0;
        list-style: none;
      }
      .region-counts { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
      .rep-places { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
      .guide-links { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
      .region-counts a, .rep-places li, .guide-links a {
        display: flex;
        justify-content: space-between;
        gap: 8px;
        align-items: center;
        box-sizing: border-box;
        min-height: 44px;
        padding: 10px 12px;
        border: 1px solid var(--line);
        border-radius: 12px;
        background: var(--surface);
        color: var(--ink);
        font-weight: 700;
        text-decoration: none;
      }
      .rep-places li { display: flex; align-items: center; }
      .rep-places a { color: var(--ink); font-weight: 800; text-decoration: none; display: inline-flex; align-items: center; box-sizing: border-box; flex: 1 1 auto; min-width: 44px; min-height: 44px; }
      .region-counts span, .rep-places span { color: var(--ink-3); font-weight: 600; font-size: 13px; }
      .pd-enrich .pd-row dt { width: 7.6em; }
      .pd-ico { vertical-align: -2px; margin-right: 4px; color: var(--ink-2); }
      .pd-checked { margin: 8px 0 0; }
      .pd-badge {
        display: inline-block;
        padding: 4px 10px;
        border-radius: 999px;
        background: var(--accent-soft);
        color: var(--brand-hover);
        font-size: 13px;
        font-weight: 800;
      }
      .pd-correct { margin: 16px 0; }
      .pd-correct a {
        display: inline-block;
        font-weight: 800;
        text-decoration: none;
        color: var(--ink);
        border: 1.5px solid var(--line-strong);
        border-radius: 999px;
        padding: 8px 14px;
        background: var(--surface);
      }
      .pd-related { margin: 0 0 8px; padding-left: 18px; }
      .pd-related a { font-weight: 700; color: var(--brand-text); text-decoration: none; }
      body.place-doc { height: auto; overflow: visible; }
      body.place-doc .page-detail { display: block; overflow: visible; flex: none; }

      /* ---------- hero header ---------- */
      header {
        background: var(--bg);
        color: var(--ink);
        padding: 22px 20px 20px;
        border-bottom: 1px solid var(--line);
      }
      .hero-top {
        display: flex;
        align-items: center;
        gap: 10px;
      }
      .brand {
        display: flex;
        align-items: center;
        gap: 8px;
        font-size: 19px;
        font-weight: 800;
        letter-spacing: -0.02em;
        white-space: nowrap;
      }
      .brand .paw {
        width: 23px; height: 23px;
        display: grid; place-items: center;
        flex: none;
      }
      .brand .paw svg { width: 23px; height: 23px; fill: var(--brand); }
      .brand small {
        display: block;
        font-size: 13px;
        font-weight: 500;
        color: var(--ink-3);
        letter-spacing: 0;
      }
      .proto-badge {
        margin-left: auto;
        font-size: 13px;
        font-weight: 600;
        color: var(--ink-3);
        white-space: nowrap;
      }
      .hero-title {
        margin: 22px 0 9px;
        font-size: 32px;
        font-weight: 800;
        letter-spacing: -0.03em;
        line-height: 1.22;
      }
      .hero-sub {
        margin: 0;
        font-size: 16px;
        line-height: 1.65;
        color: var(--ink-2);
        max-width: 600px;
      }
      .hero-sub b { color: var(--ink); font-weight: 700; }
      .hero-stats {
        display: flex;
        flex-wrap: wrap;
        gap: 6px 8px;
        margin-top: 16px;
        font-size: 14px;
        font-weight: 600;
        color: var(--ink-2);
      }
      .hero-stats span { white-space: nowrap; }
      .hero-stats span + span::before {
        content: "·";
        margin-right: 8px;
        color: var(--ink-3);
      }

      /* ---------- toolbar ---------- */
      .toolbar {
        padding: 14px 20px;
        display: flex;
        flex-direction: column;
        gap: 10px;
        background: var(--bg);
        border-bottom: 1px solid var(--line);
        z-index: 5;
      }
      .search-box {
        display: flex;
        align-items: center;
        gap: 8px;
        background: var(--surface);
        border: 1px solid var(--line-strong);
        border-radius: 10px;
        padding: 0 12px;
        height: 46px;
      }
      .search-box:focus-within { border-color: var(--ink); }
      .search-box svg { width: 18px; height: 18px; fill: var(--ink-3); flex: none; }
      .search-box input {
        border: 0; outline: 0; background: transparent;
        font: inherit; font-size: 16px;
        color: var(--ink);
        width: 100%;
        min-width: 0;
      }
      .search-box input::placeholder { color: var(--ink-3); }
      .search-clear {
        border: 0; background: var(--surface-2); color: var(--ink-2);
        width: 24px; height: 24px; border-radius: 50%;
        font-size: 14px; line-height: 1; cursor: pointer; flex: none;
        display: none;
      }
      .list-filters {
        padding: 12px 20px 0;
        display: flex;
        flex-direction: column;
        gap: 8px;
      }
      .filter-row { display: flex; gap: 8px; }
      .filter-select { flex: 1; min-width: 0; }
      .filter-select select {
        width: 100%;
        min-height: 44px;
        font: inherit;
        font-size: 16px;
        font-weight: 650;
        color: var(--ink);
        background: var(--surface);
        border: 1px solid var(--line-strong);
        border-radius: 10px;
        padding: 0 10px;
      }
      .filter-select select:disabled { color: var(--ink-3); }
      .chips {
        display: flex;
        flex-wrap: nowrap;
        gap: 8px;
        max-width: 100%;
        min-width: 0;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        padding-bottom: 2px;
      }
      .chips::-webkit-scrollbar { display: none; }
      .dot {
        width: 8px; height: 8px;
        border-radius: 50%;
        flex: none;
      }
      .dot--stay { background: var(--stay); }
      .dot--food { background: var(--food); }
      .dot--park { background: var(--park); }
      .dot--hospital { background: var(--hospital); }
      .chip {
        font: inherit;
        font-size: 15px;
        font-weight: 700;
        border-radius: 999px;
        box-sizing: border-box;
        height: 44px;
        min-height: 44px;
        min-width: 44px;
        padding: 0 14px;
        cursor: pointer;
        border: 1px solid var(--line-strong);
        background: var(--chip-off-bg);
        color: var(--ink-2);
        display: inline-flex;
        align-items: center;
        gap: 7px;
        flex: none;
        white-space: nowrap;
        transition: background 0.15s, color 0.15s, border-color 0.15s;
      }
      .chip .cnt {
        font-size: 13px;
        font-weight: 600;
        color: var(--ink-3);
      }
      .chip[aria-pressed="true"] {
        background: var(--ink);
        border-color: var(--ink);
        color: var(--bg);
      }
      .chip[aria-pressed="true"] .cnt { color: inherit; opacity: 1; }

      /* ---------- main split ---------- */
      main {
        flex: none;
        height: auto;
        display: flex;
        flex-direction: column;
        min-height: 0;
      }
      .map-wrap {
        position: relative;
        flex: none;
        width: 100%;
        height: 40dvh;
        min-height: 0;
        background: var(--surface-2);
        border-block: 1px solid var(--line);
        overflow: hidden;
      }
      #map { position: absolute; inset: 0; z-index: 1; max-width: 100%; background: var(--surface-2); }
      .map-placeholder {
        position: absolute;
        inset: 0;
        z-index: 2;
        display: flex;
        align-items: center;
        justify-content: center;
        margin: 0;
        padding: 16px;
        background: var(--surface-2);
        color: var(--ink-2);
        font-family: "Gothic A1", sans-serif;
        font-size: 15px;
        font-weight: 400;
        line-height: 22px;
        text-align: center;
        pointer-events: none;
      }
      .map-wrap.is-live .map-placeholder,
      body.no-map .map-placeholder { visibility: hidden; }
      .leaflet-control-attribution { max-width: calc(100% - 10px); white-space: normal; }
      .map-wrap .leaflet-container,
      .map-wrap .leaflet-bar a,
      .map-wrap .leaflet-control-attribution,
      .map-wrap .leaflet-control-attribution a {
        font-family: "Gothic A1", sans-serif;
      }
      .map-wrap .leaflet-control-zoom.leaflet-bar a {
        width: 44px;
        height: 44px;
        line-height: 44px;
        font-size: 22px;
      }
      .map-wrap .leaflet-control-attribution {
        margin: 0;
        padding: 0 6px;
        background: rgba(255, 253, 248, 0.92);
        color: #5A5046;
        font-size: 12px;
        line-height: 16px;
        max-width: calc(100% - 8px);
        max-height: 16px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
      }
      .map-wrap .leaflet-control-attribution a {
        color: #5A5046;
      }
      @media (prefers-color-scheme: dark) {
        .map-wrap .leaflet-control-attribution { background: rgba(32, 29, 24, 0.92); color: #C7C2B8; }
        .map-wrap .leaflet-control-attribution a { color: #C7C2B8; }
      }
      .map-fallback { display: none; }
      body.no-map #map { display: none; }
      body.no-map main { height: auto; align-items: flex-start; }
      body.no-map .map-wrap { position: relative; flex: 1 1 auto; height: auto; min-height: 0; }
      body.no-map .map-fallback {
        position: relative;
        display: block;
        inset: auto;
        padding: 12px;
        text-align: left;
        color: var(--ink);
      }
      .leaflet-container { font: inherit; background: var(--surface-2); }
      .leaflet-tile-pane { filter: saturate(0.55) brightness(1.02); }
      .mpin-icon { background: transparent; border: 0; }
      .mpin {
        width: 16px; height: 16px; border-radius: 50%;
        border: 2.5px solid #fff; box-shadow: 0 1px 5px rgba(0,0,0,0.35); cursor: pointer;
      }
      .mpin--stay { background: var(--stay); }
      .mpin--food { background: var(--food); }
      .mpin--park { background: var(--park); }
      .mpin--hospital { background: var(--hospital); }
      .cluster-icon { background: transparent; border: 0; }
      .mcluster {
        border-radius: 50%; border: 2.5px solid #fff; box-shadow: 0 1px 6px rgba(0,0,0,0.35);
        background: var(--ink); color: var(--bg);
        display: grid; place-items: center; font-weight: 800; letter-spacing: -0.01em; cursor: pointer;
      }
        .mcluster--s { width: 36px; height: 36px; font-size: 13px; background: #C2441F; color: #fff; }
        .mcluster--m { width: 44px; height: 44px; font-size: 14px; background: #C2441F; color: #fff; }
        .mcluster--l { width: 52px; height: 52px; font-size: 14px; background: #C2441F; color: #fff; }

      /* ---------- detail page (#/place/{id}) ---------- */
      .page-detail {
        display: none;
        flex: 1;
        min-height: 0;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        background: var(--bg);
      }
      body.view-detail header,
      body.view-detail .toolbar,
      body.view-detail main { display: none; }
      body.view-detail .page-detail { display: block; }
      .pd-inner {
        max-width: 720px;
        margin: 0 auto;
        padding: 16px 16px 32px;
      }
      .pd-back {
        font: inherit;
        font-size: 13.5px;
        font-weight: 700;
        color: var(--ink-2);
        background: var(--surface);
        border: 1.5px solid var(--line);
        border-radius: 999px;
        padding: 8px 14px;
        cursor: pointer;
      }
      .pd-back:hover { border-color: var(--line-strong); color: var(--ink); }
      .pd-photo {
        margin-top: 14px;
        height: 210px;
        border-radius: var(--radius);
        border: 1px solid var(--line);
        background: var(--surface-2);
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 8px;
      }
      .pd-photo-paw { width: 84px; height: 84px; fill: var(--line-strong); opacity: 0.55; }
      .pd-photo-cap { font-size: 12px; font-weight: 600; color: var(--ink-3); }
      .pd-title {
        margin: 18px 0 8px;
        font-size: 26px;
        font-weight: 800;
        letter-spacing: -0.02em;
        line-height: 1.3;
      }
      .pd-card {
        margin-top: 14px;
        background: var(--surface);
        border: 1.5px solid var(--line);
        border-radius: var(--radius);
        padding: 8px 16px;
      }
      .pd-row {
        display: flex;
        gap: 10px;
        align-items: flex-start;
        padding: 9px 0;
        font-size: 16px;
      }
      .pd-row + .pd-row { border-top: 1px solid var(--line); }
      .pd-row dt { color: var(--ink-3); font-weight: 700; flex: none; width: 72px; padding-top: 1px; }
      .pd-row dd { margin: 0; color: var(--ink); line-height: 1.5; flex: 1; min-width: 0; }
      .pd-row dd a { color: var(--brand-text); font-weight: 700; text-decoration: none; }
      .copy-btn {
        font: inherit;
        flex: none;
        font-size: 12px;
        font-weight: 700;
        color: var(--brand);
        background: var(--surface-2);
        border: 1px solid var(--line);
        border-radius: 8px;
        padding: 5px 10px;
        cursor: pointer;
      }
      .copy-btn:active { filter: brightness(0.95); }
      .pd-sec-title { font-size: 17px; font-weight: 800; letter-spacing: -0.01em; margin: 26px 0 9px; }
      .pd-warn {
        margin-top: 12px;
        background: var(--warn-bg);
        border: 1px solid var(--warn-line);
        color: var(--warn-ink);
        border-radius: 12px;
        padding: 11px 13px;
        font-size: 15px;
        font-weight: 700;
        line-height: 1.55;
      }
      .access-note { margin: 12px 0 0; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface-2); }
      .access-note--restricted { border-color: #E7C4B8; background: var(--accent-soft); }
      .access-note h2 { margin: 0; font-size: 18px; line-height: 26px; font-weight: 800; }
      .access-note p { margin: 8px 0 0; font-size: 15px; line-height: 1.6; font-weight: 500; color: var(--ink); }
      .access-note--unverified h2 { color: var(--ink-2); }
      .access-src { font-size: 13px; color: var(--ink-2); word-break: break-all; }
      .access-pill { display: inline-flex; align-items: center; min-height: 28px; padding: 2px 10px; border-radius: 999px; background: var(--surface-2); border: 1px solid var(--line); font-size: 13px; font-weight: 700; color: var(--ink-2); }
      .pd-figure { margin: 14px 0 0; }
      .pd-figure img {
        display: block;
        width: 100%;
        height: auto;
        border-radius: var(--radius);
        border: 1px solid var(--line);
        background: var(--surface-2);
      }
      .pd-figure--type3 { background: #F2F2F2; border-radius: var(--radius); }
      .pd-figure--type3 img {
        height: 240px;
        object-fit: contain;
        object-position: center;
        background: #F2F2F2;
      }
      .place-credit { margin: 14px 0 0; color: var(--ink-3); font-size: 14px; line-height: 1.6; }
      .pd-caption {
        margin: 8px 0 0;
        color: var(--ink-3);
        font-size: 15px;
        font-weight: 500;
        line-height: 1.55;
      }
      .pd-official { margin: 14px 0 0; }
      .pd-official img {
        display: block;
        width: 100%;
        height: auto;
        aspect-ratio: 16 / 9;
        object-fit: cover;
        border-radius: var(--radius);
        border: 1px solid var(--line);
        background: var(--surface-2);
      }
      .pd-photo-credit {
        margin: 6px 2px 0;
        color: var(--ink-3);
        font-size: 12px;
        font-weight: 600;
        line-height: 1.45;
      }
      .pd-overview {
        margin: 14px 0 0;
        color: var(--ink);
        font-size: 16px;
        line-height: 1.7;
      }
      .pd-pet .pd-row dt { width: 108px; }
      .pd-maps { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
      .pd-maps .site-btn { flex: 1; min-width: 140px; }
      .pd-source-note {
        margin: 22px 0 0;
        color: var(--ink-3);
        font-size: 15px;
        font-weight: 500;
        line-height: 1.55;
      }
      .pd-map {
        height: 220px;
        border-radius: var(--radius);
        border: 1px solid var(--line);
        overflow: hidden;
        z-index: 1;
        background: var(--surface-2);
      }
      .pd-dir {
        display: inline-block;
        margin-top: 10px;
        font: inherit;
        font-size: 15px;
        font-weight: 700;
        color: var(--brand-text);
        text-decoration: none;
        background: none;
        border: 0;
        padding: 0;
        cursor: pointer;
        text-align: left;
      }
      .pd-dir:hover { color: var(--brand-hover); }
      .pd-nearby { display: grid; gap: 8px; }
      .near-card {
        display: flex;
        gap: 11px;
        align-items: flex-start;
        background: var(--surface);
        border: 1.5px solid var(--line);
        border-radius: var(--radius);
        padding: 12px 13px;
        text-decoration: none;
        color: inherit;
      }
      .near-card:hover { border-color: var(--line-strong); }
      .near-dist {
        margin-left: auto;
        flex: none;
        font-size: 12px;
        font-weight: 700;
        color: var(--ink-2);
        background: var(--surface-2);
        border-radius: 999px;
        padding: 3px 9px;
      }

      .badge {
        display: inline-flex; align-items: center; gap: 6px;
        font-size: 12px; font-weight: 600;
        color: var(--ink-2);
        vertical-align: 2px;
      }
      .call-btn {
        display: block;
        margin-top: 12px;
        background: var(--brand);
        color: #1A1A1A;
        text-align: center;
        font-size: 16px;
        font-weight: 800;
        text-decoration: none;
        border-radius: 12px;
        padding: 12px 14px;
      }
      .call-btn:active { filter: brightness(0.92); }
      .call-btn--emg { background: var(--emg); color: #fff; }
      .pd-actions { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
      .pd-actions .site-btn { font: inherit; cursor: pointer; }
      .pd-actions .call-btn { margin-top: 0; flex: 1; }
      .site-btn {
        display: block;
        flex: 1;
        background: var(--surface);
        color: var(--ink);
        border: 1.5px solid var(--line-strong);
        text-align: center;
        font-size: 16px;
        font-weight: 800;
        text-decoration: none;
        border-radius: 12px;
        padding: 12px 14px;
      }
      .site-btn:hover { border-color: var(--ink); }
      .site-btn:active { filter: brightness(0.97); }

      /* ---------- list panel ---------- */
      aside {
        width: 372px;
        flex: none;
        border-left: 1px solid var(--line);
        background: var(--bg);
        display: flex;
        flex-direction: column;
        min-height: 0;
      }
      .list-head {
        padding: 14px 20px 4px;
        font-size: 13px;
        font-weight: 700;
        color: var(--ink-2);
        display: flex;
        justify-content: space-between;
        align-items: baseline;
        gap: 4px 12px;
        flex-wrap: wrap;
      }
      .list-head b { color: var(--ink); font-size: 14.5px; }
      #resultCount { margin-left: auto; }
      .list {
        overflow-y: auto;
        padding: 0 20px 16px;
        display: flex;
        flex-direction: column;
        -webkit-overflow-scrolling: touch;
      }
      .region-head {
        position: sticky;
        top: 0;
        z-index: 2;
        display: flex;
        align-items: baseline;
        gap: 8px;
        background: var(--bg);
        padding: 18px 2px 8px;
        font-size: 15px;
        font-weight: 800;
        letter-spacing: -0.01em;
        color: var(--ink);
      }
      .region-head:first-child { padding-top: 6px; }
      .region-head .rcount {
        font-size: 12px;
        font-weight: 600;
        color: var(--ink-3);
      }
      .place-row {
        text-align: left;
        font: inherit;
        text-decoration: none;
        color: inherit;
        background: transparent;
        border: 0;
        border-bottom: 1px solid var(--line);
        border-radius: 0;
        padding: 13px 2px;
        cursor: pointer;
        display: flex;
        gap: 11px;
        width: 100%;
      }
      .place-row:hover { background: var(--surface); }
      .near-card .dot { margin-top: 7px; }
      .row-body { min-width: 0; flex: 1; }
      .row-top {
        display: flex; align-items: center; gap: 7px; flex-wrap: wrap;
      }
      .row-name { font-size: 16px; font-weight: 800; letter-spacing: -0.01em; }
      .row-addr {
        margin-top: 4px;
        font-size: 15px;
        color: var(--ink-2);
        line-height: 1.45;
      }
      .row-meta {
        margin-top: 5px;
        font-size: 14px;
        color: var(--ink-3);
        display: flex; gap: 10px; flex-wrap: wrap;
      }
      /* ---------- 페이지 번호 ---------- */
      .pager { margin-top: 18px; }
      .pager-info {
        text-align: center;
        font-size: 12.5px;
        font-weight: 600;
        color: var(--ink-3);
        margin-bottom: 10px;
      }
      .pager-row {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
        justify-content: center;
        align-items: center;
      }
      .pager-btn {
        font: inherit;
        font-size: 13.5px;
        font-weight: 700;
        color: var(--ink-2);
        background: var(--surface);
        border: 1px solid var(--line-strong);
        border-radius: 999px;
        min-width: 44px;
        height: 44px;
        padding: 0 10px;
        cursor: pointer;
      }
      .pager-btn:hover:not(:disabled) { border-color: var(--ink); color: var(--ink); }
      .pager-btn.is-current {
        background: var(--ink);
        border-color: var(--ink);
        color: var(--bg);
        cursor: default;
      }
      .pager-btn:disabled { opacity: 0.4; cursor: default; }
      .pager-ellipsis {
        color: var(--ink-3);
        font-size: 13px;
        padding: 0 2px;
      }
      .list-msg {
        padding: 30px 18px;
        text-align: center;
        color: var(--ink-3);
        font-size: 16px;
        line-height: 1.7;
      }
      .empty {
        padding: 34px 18px;
        text-align: center;
        color: var(--ink-3);
        font-size: 16px;
        line-height: 1.7;
        display: none;
      }
      .empty.show { display: block; }

      footer {
        padding: 14px 16px calc(14px + env(safe-area-inset-bottom));
        font-size: 14px;
        color: var(--ink-3);
        background: var(--bg);
        border-top: 1px solid var(--line);
        text-align: center;
        line-height: 1.5;
        overflow-wrap: anywhere;
      }
      footer a { color: inherit; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; min-width: 44px; min-height: 44px; padding: 0 4px; }

      .pm-hero { display: flex; align-items: flex-end; gap: 12px; padding: 12px 16px 4px; max-width: 100%; }
      .pm-hero .big { font-family: "DoHyeon", sans-serif; font-size: clamp(3.5rem, 17vw, 4.5rem); line-height: 0.95; letter-spacing: -0.02em; color: var(--ink); font-weight: 400; }
      .pm-hero h1 { margin: 0; font-weight: 700; font-size: 16px; line-height: 22px; padding-bottom: 6px; }
      .pm-hero h1 small { display: block; font-weight: 400; font-size: 13px; line-height: 20px; color: var(--ink-2); }
      .pm-find { display: grid; grid-template-columns: minmax(0, 1fr) 96px 44px; gap: 8px; padding: 8px 16px 0; max-width: 100%; }
      .pm-find .search-box { position: relative; height: 44px; min-width: 0; padding: 0; border: 0; box-shadow: inset 0 0 0 1px var(--line-strong); }
      .pm-find .search-box:focus-within { box-shadow: inset 0 0 0 2px var(--ink); }
      .pm-find .search-box input { height: 44px; padding: 0 44px 0 12px; }
      .pm-find select, .pm-local select { height: 44px; width: 100%; min-width: 0; border: 1px solid rgba(32, 29, 24, 0.4); background: var(--surface); border-radius: 10px; padding: 0 8px; font: inherit; font-size: 15px; color: var(--ink); }
      .pm-find button[type="submit"] { height: 44px; width: 44px; border: 0; border-radius: 10px; background: var(--ink); color: var(--bg); display: flex; align-items: center; justify-content: center; cursor: pointer; }
      .pm-local { padding: 8px 16px 0; }
      .pm-local:has(select:disabled) { display: none; }
      .pm-find + .chips, .chips { padding: 8px 16px; min-width: 0; max-width: 100%; }
      .pm-find .search-clear {
        position: absolute;
        right: 0;
        top: 0;
        width: 44px;
        height: 44px;
        display: none;
        align-items: center;
        justify-content: center;
      }
      .site-bar, .pm-hero, .pm-find, .pm-local, main, footer { min-width: 0; max-width: 100%; }
      .pm-hero h1 { min-width: 0; }
      .pm-story { padding: 16px 16px 8px; max-width: 720px; }
      .pm-story h2 { margin: 0; font-family: "DoHyeon", sans-serif; font-weight: 400; font-size: 26px; line-height: 32px; }
      .pm-story .sub { margin: 0; font-size: 13px; line-height: 20px; color: var(--ink-2); }
      .pm-story ul { list-style: none; margin: 8px 0 0; padding: 0; border-top: 1px solid var(--ink); }
      .pm-story li a { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0 8px; padding: 8px 0; border-bottom: 1px solid var(--line); min-height: 44px; color: inherit; text-decoration: none; }
      .pm-story li b { font-size: 15px; line-height: 22px; font-weight: 700; }
      .pm-story li em { font-style: normal; font-size: 13px; line-height: 22px; color: var(--brand-text); font-weight: 700; }
      .pm-story li span { grid-column: 1 / 3; font-size: 13px; line-height: 20px; color: var(--ink-2); overflow-wrap: anywhere; }
      .pm-story .src { font-size: 13px; line-height: 20px; color: var(--ink-2); margin: 8px 0 0; }
      body.view-detail .home-only { display: none; }
      aside { width: auto; border-left: 0; }

      /* ---------- mobile ---------- */
      @media (max-width: 840px) {
        /* 모바일은 페이지 전체가 스크롤된다.
           지도 높이는 뷰포트의 40%이고, 한 손가락 세로 스와이프는 페이지를 스크롤한다. */
        html, body { height: auto; overflow: visible; }
        main { flex-direction: column; flex: none; height: auto; }
        .map-wrap { flex: none; height: 40dvh; max-height: none; min-height: 0; }
        .site-bar { gap: 8px; padding: 0 12px; }
        .site-bar .brand { font-size: 20px; min-width: 0; }
        .site-nav { flex: none; }
        .site-nav a { height: 44px; min-height: 44px; padding: 0 12px; }
        .map-wrap .leaflet-container,
        .map-wrap .leaflet-container.leaflet-touch-drag,
        .map-wrap .leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
          touch-action: pan-y;
        }
        aside {
          width: auto;
          flex: none;
          border-left: 0;
          border-top: 1px solid var(--line);
          min-height: 0;
        }
        .list { overflow-y: visible; }
        .brand { font-size: 19px; }
        .brand small { display: none; }
        header { padding: 18px 16px 16px; }
        .toolbar { padding: 12px 16px; }
        .list { padding: 0 16px 14px; }
        .list-filters { padding: 12px 16px 0; }
        .list-head { padding: 12px 16px 4px; }
        .hero-title { font-size: 25px; margin-top: 16px; }
        .hero-sub { font-size: 16px; }
        .proto-badge { display: none; }
        .page-detail { overflow-y: visible; }
        .pd-photo { height: 168px; }
        .pd-title { font-size: 23px; }
      }
      /* 목록 행 안의 바로 전화 버튼 (상세페이지 없이 1~2탭에 통화) */
      .row-main {
        flex: 1;
        min-width: 0;
        display: flex;
        gap: 11px;
        text-decoration: none;
        color: inherit;
      }
      .row-call {
        flex: none;
        align-self: center;
        background: var(--emg);
        color: #fff;
        font-size: 13.5px;
        font-weight: 700;
        text-decoration: none;
        border-radius: 999px;
        min-height: 44px;
        padding: 0 15px;
        display: inline-flex;
        align-items: center;
        white-space: nowrap;
      }
      .row-call:active { filter: brightness(0.9); }
      /* ---------- toast ---------- */
      .toast {
        position: fixed;
        left: 50%;
        bottom: calc(22px + env(safe-area-inset-bottom));
        transform: translateX(-50%) translateY(16px);
        z-index: 1200;
        max-width: min(92vw, 480px);
        background: var(--ink);
        color: var(--bg);
        font-size: 14px;
        font-weight: 700;
        line-height: 1.5;
        text-align: center;
        border-radius: 12px;
        padding: 12px 18px;
        box-shadow: var(--shadow);
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.25s, transform 0.25s;
      }
      .toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

      /* ---------- directions sheet ---------- */
      .sheet-backdrop {
        position: fixed; inset: 0;
        z-index: 1100;
        background: rgba(20, 18, 14, 0.45);
        display: none;
        align-items: flex-end;
        justify-content: center;
      }
      .sheet-backdrop.open { display: flex; }
      .sheet {
        background: var(--surface);
        width: 100%;
        max-width: 520px;
        border-radius: 18px 18px 0 0;
        padding: 20px 18px calc(16px + env(safe-area-inset-bottom));
        box-shadow: var(--shadow);
      }
      .sheet-title { font-size: 16.5px; font-weight: 800; letter-spacing: -0.01em; }
      .sheet-sub { margin-top: 4px; font-size: 13px; color: var(--ink-2); line-height: 1.5; }
      .sheet-btn {
        display: block;
        margin-top: 10px;
        background: var(--surface-2);
        color: var(--ink);
        border: 1px solid var(--line);
        text-align: center;
        font-size: 15px;
        font-weight: 800;
        text-decoration: none;
        border-radius: 12px;
        padding: 13px 14px;
        cursor: pointer;
        font-family: inherit;
        width: 100%;
      }
      .sheet-btn:active { filter: brightness(0.96); }
      .sheet-cancel {
        display: block;
        width: 100%;
        margin-top: 10px;
        font: inherit;
        font-size: 14.5px;
        font-weight: 700;
        color: var(--ink-2);
        background: transparent;
        border: 0;
        min-height: 44px;
        padding: 10px;
        cursor: pointer;
      }
      @media (min-width: 841px) {
        .sheet-backdrop { align-items: center; padding: 20px; }
        .sheet { border-radius: 18px; }
      }

      @media (prefers-reduced-motion: reduce) {
        .chip { transition: none; }
        .toast { transition: none; }
      }

      /* map failure list — replaces the map, no ad slot */
      .fb {
        border: 1px solid var(--line-strong);
        border-radius: 16px;
        background: var(--surface);
        overflow: hidden;
      }
      .fb-msg {
        display: flex;
        gap: 16px;
        align-items: center;
        padding: 20px 24px;
        background: var(--surface-2);
        border-bottom: 1px solid var(--line);
      }
      .fb-msg .mi {
        flex: 0 0 48px;
        width: 48px;
        height: 48px;
        border-radius: 12px;
        background: var(--surface);
        border: 1px solid var(--line);
        display: flex;
        align-items: center;
        justify-content: center;
        color: var(--ink-2);
      }
      .fb-msg h2 { margin: 0; font-size: 18px; line-height: 26px; font-weight: 800; letter-spacing: -0.01em; }
      .fb-msg p { margin: 2px 0 0; font-size: 14px; line-height: 22px; color: var(--ink-2); }
      .fb-retry {
        margin-left: auto;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 6px;
        height: 44px;
        padding: 0 18px;
        border-radius: 10px;
        border: 1px solid var(--brand-text);
        background: var(--brand-text);
        color: #fff;
        font: 700 15px/1 inherit;
        cursor: pointer;
        white-space: nowrap;
      }
      .fb-meta {
        display: flex;
        justify-content: space-between;
        align-items: center;
        gap: 12px;
        padding: 14px 24px;
        font-size: 14px;
        color: var(--ink-2);
        border-bottom: 1px solid var(--line);
      }
      .fb-meta b { color: var(--ink); }
      .plist { list-style: none; display: grid; grid-template-columns: 1fr 1fr; margin: 0; padding: 0; }
      .plist li {
        padding: 16px 24px;
        border-bottom: 1px solid var(--line);
        display: flex;
        gap: 12px;
        align-items: flex-start;
      }
      .plist li:nth-child(odd) { border-right: 1px solid var(--line); }
      .plist .t { flex: 1; min-width: 0; }
      .plist .t a { color: var(--ink); font-size: 16px; font-weight: 700; text-decoration: none; }
      .plist .c { display: inline-flex; align-items: center; gap: 4px; margin-left: 8px; font-size: 13px; font-weight: 500; color: var(--ink-2); }
      .plist .a { font-size: 14px; color: var(--ink-2); margin-top: 2px; }
      .plist .p { font-size: 13px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
      .plist .acts { display: flex; gap: 8px; }
      .ibtn {
        width: 40px;
        height: 40px;
        border-radius: 10px;
        border: 1px solid var(--line-strong);
        background: var(--surface);
        display: flex;
        align-items: center;
        justify-content: center;
        color: var(--ink);
        text-decoration: none;
      }
      .fb-more { display: flex; justify-content: center; padding: 16px; }
      .fb-more button, .fb-empty {
        font: 700 15px/1 inherit;
      }
      .fb-more button {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        height: 44px;
        padding: 0 18px;
        border-radius: 10px;
        border: 1px solid var(--line-strong);
        background: var(--surface);
        color: var(--ink);
        cursor: pointer;
      }
      .fb-empty { margin: 0; padding: 28px 24px; color: var(--ink-2); font-weight: 600; line-height: 1.6; }
      @media (max-width: 840px) {
        body.no-map .map-wrap { height: auto; }
        .fb-msg { flex-wrap: wrap; padding: 20px 16px; }
        .fb-retry { margin-left: 0; width: 100%; }
        .fb-meta, .plist li { padding-left: 16px; padding-right: 16px; }
        .plist { grid-template-columns: 1fr; }
        .plist li:nth-child(odd) { border-right: 0; }
      }
      @media (min-width: 841px) {
        body.no-map aside { max-height: 100dvh; position: sticky; top: 0; }
      }
      @media (prefers-color-scheme: dark) {
        .fb-retry { background: var(--brand); border-color: var(--brand); color: #1A1A1A; }
      }

      /* static place page */
      body.place-doc { height: auto; overflow: visible; background: var(--bg); }
      body.place-doc main.page-detail { display: block; height: auto; overflow: visible; flex: none; }
      body.place-doc .pd-wrap { max-width: 1120px; margin: 0 auto; padding: 24px 32px 48px; }
      body.place-doc .pd-crumb { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-size: 13px; color: var(--ink-3); }
      body.place-doc .pd-crumb a { color: var(--ink-2); font-weight: 600; text-decoration: none; }
      body.place-doc .pd-crumb b { color: var(--ink-2); font-weight: 700; }
      body.place-doc .pd-crumb .sep { display: inline-flex; color: var(--ink-3); }
      body.place-doc .pd-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 32px; align-items: start; margin-top: 16px; }
      body.place-doc .pd-title { margin: 0; font-size: 32px; line-height: 40px; font-weight: 800; letter-spacing: -0.02em; }
      body.place-doc .pd-cat { display: flex; align-items: center; gap: 6px; margin: 8px 0 0; font-size: 14px; color: var(--ink-2); }
      body.place-doc .pd-live { position: relative; z-index: 0; isolation: isolate; margin: 20px 0 0; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: #E9ECE4; }
      body.place-doc .pd-live .pd-map { height: 220px; background: #E9ECE4; }
      body.place-doc .pd-map-addr { position: absolute; left: 12px; bottom: 28px; z-index: 500; max-width: min(68%, calc(100% - 96px)); margin: 0; pointer-events: none; background: rgba(255,255,255,.94); color: var(--ink-2); font-size: 12px; line-height: 1.4; padding: 4px 8px; border-radius: 6px; border: 1px solid var(--line); word-break: keep-all; overflow-wrap: anywhere; }
      body.place-doc .pd-live--fallback { padding: 16px; }
      body.place-doc .pd-map-fallback, body.place-doc .pd-map-fail { margin: 0; padding: 28px 16px; color: var(--ink-2); font-size: 14px; line-height: 1.5; word-break: keep-all; overflow-wrap: anywhere; }
      body.place-doc .pd-dirs { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 10px 0 0; }
      body.place-doc .pd-dir { display: inline-flex; align-items: center; min-height: 44px; color: var(--brand-text); font-size: 14px; font-weight: 700; text-decoration: none; }
      body.place-doc .pd-pin { background: transparent; border: 0; }
      body.place-doc .pd-pin-body { display: block; width: 28px; height: 36px; background: center / contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='36' viewBox='0 0 28 36'%3E%3Cpath fill='%23C2410C' d='M14 1.2C7.1 1.2 1.6 6.7 1.6 13.6 1.6 22.8 14 34.8 14 34.8s12.4-12 12.4-21.2C26.4 6.7 20.9 1.2 14 1.2z'/%3E%3Ccircle fill='%23fff' cx='14' cy='13.4' r='4.6'/%3E%3C/svg%3E"); filter: drop-shadow(0 1px 2px rgba(0,0,0,.35)); }
      body.place-doc .pd-live .leaflet-control-zoom a { width: 44px; height: 44px; line-height: 44px; font-size: 22px; }
      body.place-doc .pd-live .leaflet-control-attribution { max-width: calc(100% - 12px); font-size: 10px; line-height: 14px; white-space: normal; }
      body.place-doc .pd-info { margin-top: 20px; border-top: 1px solid var(--ink); }
      body.place-doc .pd-info dl { display: block; margin: 0; }
      body.place-doc .pd-info .pd-row { display: grid; grid-template-columns: 88px minmax(0, 1fr); column-gap: 12px; align-items: start; border-top: 0; border-bottom: 1px solid var(--line); }
      body.place-doc .pd-info .pd-row + .pd-row { border-top: 0; }
      body.place-doc .pd-info dt, body.place-doc .pd-info dd { margin: 0; padding: 12px 0; border-bottom: 0; min-width: 0; font-size: 15px; line-height: 24px; }
      body.place-doc .pd-info dt { width: auto; color: var(--ink-3); font-size: 14px; font-weight: 500; }
      body.place-doc .pd-info dd { word-break: keep-all; overflow-wrap: anywhere; }
      body.place-doc .pd-mact { display: none; }
      body.place-doc .enr { margin-top: 32px; background: var(--surface); border: 1px solid var(--line); border-radius: 16px; padding: 24px; }
      body.place-doc .enr-h { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
      body.place-doc .enr-h h2 { margin: 0; font-size: 20px; line-height: 28px; font-weight: 800; letter-spacing: -0.01em; }
      body.place-doc .vbadge { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; font-weight: 700; color: var(--ok); background: var(--ok-bg); border: 1px solid var(--ok-line); padding: 2px 10px 2px 8px; border-radius: 999px; line-height: 20px; }
      body.place-doc .vbadge.is-stale { color: var(--ink-3); background: var(--surface-2); border-color: var(--line); }
      body.place-doc .enr-sub { margin: 4px 0 0; font-size: 14px; color: var(--ink-3); }
      body.place-doc .conds { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 20px 0 0; padding: 0; list-style: none; }
      body.place-doc .cond { display: flex; gap: 12px; align-items: flex-start; padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg); }
      body.place-doc .cond .ci { flex: 0 0 40px; width: 40px; height: 40px; border-radius: 10px; display: flex; align-items: center; justify-content: center; background: var(--surface); border: 1px solid var(--line); color: var(--ink); }
      body.place-doc .cond b { display: block; font-size: 15px; line-height: 22px; font-weight: 700; }
      body.place-doc .cond .st { display: inline-flex; align-items: center; gap: 4px; margin-top: 2px; font-size: 13px; font-weight: 700; line-height: 20px; }
      body.place-doc .cond.yes .st { color: var(--ok); }
      body.place-doc .cond.must .st { color: var(--brand-text); }
      body.place-doc .cond.must .ci { color: var(--brand-text); border-color: #F1C7B6; background: var(--accent-soft); }
      body.place-doc .cond.no { background: var(--surface); }
      body.place-doc .cond.no b, body.place-doc .cond.no .st, body.place-doc .cond.no .ci { color: var(--ink-3); }
      body.place-doc .cond.no .ci { border-style: dashed; }
      body.place-doc .cond small { display: block; margin-top: 2px; font-size: 13px; line-height: 18px; color: var(--ink-3); }
      body.place-doc .enr-f { display: flex; align-items: center; gap: 16px; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line); flex-wrap: wrap; }
      body.place-doc .enr-f p { margin: 0; flex: 1; min-width: 220px; font-size: 13px; line-height: 20px; color: var(--ink-3); }
      body.place-doc .pd-btn, body.place-doc .pd-fix {
        display: inline-flex; align-items: center; justify-content: center; gap: 6px;
        height: 44px; padding: 0 18px; border-radius: 10px; border: 1px solid var(--line-strong);
        background: var(--surface); color: var(--ink); font: 700 15px/1 inherit; text-decoration: none; white-space: nowrap;
      }
      body.place-doc .pd-btn.pri { background: #C2410C; border-color: #C2410C; color: #fff; }
      body.place-doc .pd-fix { border-color: var(--ink); }
      body.place-doc .pd-side { position: sticky; top: 16px; display: flex; flex-direction: column; gap: 12px; }
      body.place-doc .pd-side .pd-card { margin: 0; padding: 20px; }
      body.place-doc .pd-side h2 { margin: 0 0 12px; font-size: 13px; line-height: 1.4; font-weight: 700; color: var(--ink-3); letter-spacing: 0.04em; }
      body.place-doc .pd-actions-card .pd-btn { width: 100%; }
      body.place-doc .pd-btn-row { display: flex; gap: 8px; margin-top: 8px; }
      body.place-doc .pd-btn-row .pd-btn { flex: 1; }
      body.place-doc .pd-maplinks { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
      body.place-doc .pd-maplinks a { color: var(--brand-text); font-size: 14px; font-weight: 700; text-decoration: none; }
      body.place-doc .pd-source-card p { margin: 0; font-size: 13px; line-height: 20px; color: var(--ink-2); }
      body.place-doc .pd-source-card b { display: block; margin-top: 8px; color: var(--ink); font-size: 14px; }
      body.place-doc .pd-source-card p:first-of-type b { margin-top: 0; }
      body.place-doc .pd-near { margin-top: 40px; }
      body.place-doc .pd-near h2 { margin: 0 0 4px; font-size: 20px; line-height: 28px; font-weight: 800; letter-spacing: -0.01em; }
      body.place-doc .pd-near .s { margin: 0; font-size: 14px; color: var(--ink-3); }
      body.place-doc .near { list-style: none; margin: 12px 0 0; padding: 0; border-top: 1px solid var(--line); }
      body.place-doc .near a { display: flex; align-items: center; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--line); color: inherit; text-decoration: none; }
      body.place-doc .near b { display: block; font-size: 16px; font-weight: 700; }
      body.place-doc .near .m { display: block; font-size: 13px; color: var(--ink-3); font-weight: 500; }
      body.place-doc .near .km { margin-left: auto; font-size: 13px; color: var(--ink-2); font-variant-numeric: tabular-nums; }
      body.place-doc .facts { margin-top: 20px; }
      body.place-doc .facts h2 { margin: 0 0 8px; font-size: 18px; line-height: 26px; }
      body.place-doc .facts dl { margin: 0; }
      body.place-doc .facts div { display: grid; grid-template-columns: minmax(8.75em, 11em) minmax(0, 1fr); gap: 8px 12px; align-items: start; padding: 8px 0; border-bottom: 1px solid var(--line); }
      body.place-doc .facts dt, body.place-doc .facts dd { margin: 0; min-width: 0; word-break: keep-all; overflow-wrap: anywhere; }
      body.place-doc .facts dt { color: var(--ink-3); font-size: 14px; line-height: 22px; }
      body.place-doc .facts dd { font-size: 15px; line-height: 24px; }
      body.place-doc .facts dd a { overflow-wrap: anywhere; word-break: break-all; }
      body.place-doc .facts-empty { margin: 0; font-size: 15px; line-height: 24px; color: var(--ink-2); word-break: keep-all; overflow-wrap: anywhere; }
      body.place-doc .pd-back { display: inline-flex; margin-top: 24px; text-decoration: none; }
      @media (max-width: 840px) {
        body.place-doc .pd-wrap { padding: 16px 16px 32px; }
        body.place-doc .pd-grid { grid-template-columns: minmax(0, 1fr); gap: 0; }
        body.place-doc .pd-title { font-size: 26px; line-height: 34px; }
        body.place-doc .pd-live .pd-map { height: 220px; }
        body.place-doc .pd-mact { display: flex; gap: 8px; margin-top: 16px; min-width: 0; max-width: 100%; }
        body.place-doc .pd-mact .pd-btn { flex: 1; min-width: 0; padding: 0 6px; font-size: 14px; }
        body.place-doc .pd-actions-card { display: none; }
        body.place-doc .pd-side { position: static; margin-top: 24px; }
        body.place-doc .conds { grid-template-columns: 1fr 1fr; gap: 8px; }
        body.place-doc .cond { flex-direction: column; gap: 8px; padding: 12px; }
        body.place-doc .enr { margin-top: 24px; padding: 20px 16px; }
        body.place-doc .enr-f .pd-fix { width: 100%; }
      }
      @media (prefers-color-scheme: dark) {
        body.place-doc .pd-btn.pri { background: var(--brand); border-color: var(--brand); color: #1A1A1A; }
        body.place-doc .pd-map-addr { background: rgba(32, 29, 24, .94); }
      }
    