.plc-hub, .plc-place, .plc-about { max-width: 1320px; margin: 0 auto; padding: 32px var(--gutter) 0; }
.plc-title { font-size: var(--t-h1); margin: 0 0 14px; letter-spacing: -0.01em; }
.plc-lede { font-size: var(--t-lede); line-height: 1.5; color: var(--muted); margin: 0 0 20px; max-width: 60ch; }
.plc-sub { color: var(--muted); margin: 0 0 16px; max-width: 66ch; }
.plc-hub-head { display: grid; gap: 8px 48px; margin: 8px 0 24px; }
@media (min-width: 960px) { .plc-hub-head { grid-template-columns: minmax(0, 1fr) 420px; align-items: end; } }
.plc-search { margin: 0 0 4px; }
.plc-search label, .plc-form label { display: block; font-size: var(--t-small); color: var(--muted); margin: 0 0 6px; }
.plc-search-row { display: flex; gap: 8px; }
.plc-search input, .plc-form input, .plc-form textarea {
  flex: 1; min-width: 0; min-height: 48px; border: 1px solid var(--muted); border-radius: 10px; padding: 10px 14px;
  font: inherit; font-size: 1rem; background: var(--paper); color: var(--ink);
}
.plc-search button, .plc-form button, .plc-button {
  display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 0 20px; border: 0; border-radius: 10px;
  background: var(--chlorophyll); color: var(--on-chlorophyll); font: 600 1rem/1 var(--sans); text-decoration: none; cursor: pointer;
}
.plc-button:hover, .plc-search button:hover, .plc-form button:hover { background: var(--ink); color: var(--paper); }
.plc-button-line { background: transparent; color: var(--chlorophyll); border: 1px solid var(--chlorophyll); }
.plc-button-quiet { background: transparent; color: var(--ink); border: 1px solid var(--line); }
.plc-button-leaf { background: var(--new-leaf); color: var(--plate-ink); }
.plc-button[aria-pressed="true"] { background: var(--ink); color: var(--paper); }

.plc-chips { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 28px; }
.plc-chip {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border-radius: 999px; border: 1px solid var(--line);
  background: var(--paper); color: var(--ink); font-size: 0.9375rem; font-weight: 500; text-decoration: none;
}
.plc-chip:hover { border-color: var(--chlorophyll); color: var(--chlorophyll); }
.plc-chip[aria-current="page"] { background: var(--chlorophyll); border-color: var(--chlorophyll); color: var(--on-chlorophyll); }

.plc-browse { display: grid; gap: 28px; margin-bottom: 64px; }
@media (min-width: 960px) {
  .plc-browse { grid-template-columns: minmax(0, 520px) minmax(0, 1fr); gap: 44px; align-items: start; }
  .plc-map { position: sticky; top: 16px; }
}
.plc-map, .plc-locator { margin: 0; }
.plc-map-svg { display: block; width: 100%; height: auto; border-radius: 16px; background: var(--map-water); }
.plc-locator-narrow { display: none; }
@media (max-width: 719px) { .plc-locator-wide { display: none; } .plc-locator-narrow { display: block; } }
.plc-map { position: relative; }
.plc-map-frame { border-radius: 16px; overflow: hidden; }
.plc-map-live .plc-map-frame { touch-action: none; cursor: grab; }
.plc-map-live .plc-map-frame:active { cursor: grabbing; }
.plc-map-frame:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.plc-map-tools { position: absolute; top: 12px; right: 12px; z-index: 1; display: flex; flex-direction: column; gap: 6px; }
.plc-map-tools[hidden] { display: none; }
.plc-map-tool {
  min-width: 44px; min-height: 44px; padding: 0 10px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--paper); color: var(--ink); font: 600 1.25rem/1 var(--sans); cursor: pointer;
}
.plc-map-reset { font-size: 0.8125rem; }
.plc-map-tool:hover { border-color: var(--chlorophyll); color: var(--chlorophyll); }
.plc-count-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 0 0 12px; }
.plc-count-row .plc-count { margin: 0; }
.plc-show-all { min-height: 44px; padding: 0 4px; border: 0; background: none; color: var(--chlorophyll); font: 600 0.9375rem/1 var(--sans); text-decoration: underline; cursor: pointer; }
.plc-show-all[hidden] { display: none; }
.plc-map-credit { margin-top: 6px; font-size: 0.8125rem; color: var(--muted); }
.plc-map-credit a { color: var(--muted); }
.plc-map-water { fill: var(--map-water); }
.plc-map-land { fill: var(--map-land); stroke: var(--map-coast); stroke-width: 1; stroke-linejoin: round; }
.plc-map-park { fill: var(--map-park); }
.plc-map-pin { fill: var(--map-pin); stroke: var(--map-ring); }
.plc-map-label { fill: var(--ink); font-family: var(--sans); font-weight: 600; paint-order: stroke; stroke: var(--map-land); stroke-width: 3px; stroke-linejoin: round; }
.plc-map-caption { fill: var(--muted); font-family: var(--serif); font-style: italic; }
.plc-map-chip rect { fill: var(--map-chip); }
.plc-map-chip text { fill: var(--map-chip-ink); font-family: var(--sans); font-weight: 700; }
.plc-map-chip-dot { fill: var(--new-leaf); }

.plc-count { color: var(--muted); font: 400 0.9375rem/1.4 var(--sans); letter-spacing: 0; margin: 0 0 12px; }
.plc-rows { list-style: none; margin: 0; padding: 0; border-bottom: 1px solid var(--line); }
.plc-row { padding: 18px 0; border-top: 1px solid var(--line); }
.plc-row-name { font-size: 1.5rem; font-weight: 500; margin: 0; }
.plc-row-name a { color: var(--ink); text-decoration: none; }
.plc-row-name a:hover { color: var(--chlorophyll); text-decoration: underline; }
.plc-row-meta { display: flex; justify-content: space-between; gap: 12px; margin: 4px 0 6px; color: var(--muted); font-size: 0.9375rem; }
.plc-row-dist { white-space: nowrap; }
.plc-row-line { margin: 0; font-size: 0.9375rem; max-width: 60ch; }
.plc-bloom-note { color: var(--chlorophyll); font-weight: 600; }
.plc-more { margin-top: 0; }
.plc-more summary { min-height: 48px; display: flex; align-items: center; font-weight: 600; color: var(--chlorophyll); cursor: pointer; }
.plc-more[open] summary { border-bottom: 1px solid var(--line); }
.plc-more summary[hidden] { display: none; }
@media (max-width: 719px) {
  .plc-map:not(.plc-map-live) .plc-map-label { display: none; }
  .plc-map:not(.plc-map-live) .plc-map-pin { r: 9px; }
  .plc-chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: 4px; }
  .plc-chip { flex: none; }
}
.plc-empty { padding: 24px; background: var(--vellum); border-radius: 14px; }
.plc-empty p { margin: 0 0 8px; }

.plc-gems-wrap, .plc-section { margin: 0 0 56px; }
.plc-gems-wrap h2, .plc-section h2, .plc-suggest h2, .plc-band h2, .plc-cta h2 { font-size: var(--t-h2); margin: 0 0 8px; }
.plc-gems { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.plc-gem { padding: 18px; background: var(--paper); border: 1px solid var(--line); border-radius: 14px; }
.plc-gem p { margin: 4px 0 0; font-size: var(--t-small); color: var(--muted); }
.plc-gem-name { font: 500 1.25rem/1.25 var(--serif); color: var(--ink); text-decoration: none; }
.plc-gem-name:hover { text-decoration: underline; color: var(--chlorophyll); }
.plc-gem-suggest { border-style: dashed; border-color: var(--muted); display: flex; align-items: center; }
.plc-gem-suggest a { font-weight: 600; }

.plc-band, .plc-cta { display: grid; gap: 20px; align-items: center; margin: 0 0 56px; padding: 32px; border-radius: 16px; }
.plc-band { background: var(--vellum); }
.plc-band p { margin: 0; color: var(--muted); max-width: 60ch; }
.plc-cta { background: var(--ink); color: var(--paper); }
.plc-cta p { margin: 0; max-width: 56ch; }
@media (min-width: 720px) { .plc-band, .plc-cta { grid-template-columns: minmax(0, 1fr) auto; } }

.plc-suggest { display: grid; gap: 16px 48px; margin: 0 0 40px; padding: 32px 0 0; border-top: 1px solid var(--line); }
@media (min-width: 900px) { .plc-suggest { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); } }
.plc-form { display: grid; gap: 4px; }
.plc-form input, .plc-form textarea { width: 100%; margin-bottom: 12px; }
.plc-form button { justify-self: start; }
.plc-sent { padding: 12px 16px; border-radius: 10px; background: var(--vellum); font-weight: 600; max-width: 56ch; }
.plc-attrib { color: var(--muted); font-size: var(--t-small); max-width: 70ch; }

.plc-place-head { display: grid; gap: 28px 56px; margin: 12px 0 36px; }
@media (min-width: 960px) { .plc-place-head { grid-template-columns: minmax(0, 1fr) 440px; align-items: start; } }
.plc-kindline { color: var(--muted); font-size: 1.125rem; margin: 0 0 16px; }
.plc-place .plc-lede { color: var(--ink); }
.plc-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.plc-visit { background: var(--vellum); border-radius: 16px; padding: 24px; }
.plc-visit h2 { font-size: 1.375rem; font-weight: 500; margin: 0 0 12px; }
.plc-visit dl { display: grid; grid-template-columns: minmax(0, 6.5rem) minmax(0, 1fr); gap: 10px 16px; margin: 0; font-size: 0.9375rem; }
.plc-visit dt { color: var(--muted); }
.plc-visit dd { margin: 0; }
.plc-hours { display: grid; gap: 2px; font-variant-numeric: tabular-nums; }
.plc-hours-row { display: grid; grid-template-columns: 5.25rem minmax(0, 1fr); gap: 12px; }
.plc-hours-day { color: var(--muted); white-space: nowrap; }
.plc-hours-time { overflow-wrap: anywhere; }
.plc-hours-row.plc-today .plc-hours-day, .plc-hours-row.plc-today .plc-hours-time { color: var(--ink); font-weight: 700; }
.plc-hours-raw { list-style: none; margin: 0; padding: 0; }
.plc-google { margin: 14px 0 0; font-size: 0.8125rem; color: var(--muted); }
.plc-locator { margin: 0 0 56px; }

.plc-blooms { display: grid; gap: 20px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 900px) { .plc-blooms { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.plc-bloom { margin: 0; }
.plc-bloom img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 12px; background: var(--vellum); }
.plc-bloom figcaption { margin-top: 8px; font-size: 0.9375rem; line-height: 1.4; }
.plc-bloom i { color: var(--muted); }
.plc-credit { display: block; margin-top: 2px; font-size: 0.8125rem; color: var(--muted); }
.plc-credit a { color: var(--muted); }

.plc-guide { display: grid; gap: 0 48px; }
@media (min-width: 900px) { .plc-guide { grid-template-columns: repeat(2, minmax(0, 1fr)); } .plc-sources { grid-column: 1 / -1; } }
.plc-see { margin: 0; padding-left: 1.2em; }
.plc-see li { margin-bottom: 8px; }
.plc-plants { list-style: none; margin: 0 0 12px; padding: 0; }
.plc-plants li { padding: 8px 0; border-bottom: 1px solid var(--line); }
.plc-plants i { color: var(--muted); margin-left: 6px; }
.plc-sources ul { margin: 0 0 8px; padding-left: 1.2em; }

.plc-credits { list-style: none; margin: 24px 0; padding: 0; display: grid; gap: 24px; max-width: 70ch; }
.plc-credits h2 { font-size: 1.5rem; margin: 0 0 4px; }
.plc-credits p { margin: 0 0 6px; }

.plc-map-hit { cursor: pointer; }
.plc-map-hit-area { fill: transparent; stroke: none; }
.plc-map-hit:focus { outline: none; }
.plc-map-hit:focus-visible .plc-map-pin, .plc-map-hit:hover .plc-map-pin { stroke: var(--ink); }
.plc-map-visited .plc-map-pin { fill: var(--map-visited); }
.plc-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin: 0 0 4px; }
.plc-legend-dot { display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: var(--map-pin); border: 2px solid var(--map-ring); box-shadow: 0 0 0 1px var(--line); }
.plc-legend-visited { margin-left: 12px; background: var(--map-visited); }
.plc-tip {
  position: absolute; z-index: 2; width: 240px; padding: 12px; border: 1px solid var(--line); border-radius: 14px;
  background: var(--paper); color: var(--ink); box-shadow: 0 6px 24px color-mix(in srgb, var(--ink) 18%, transparent);
}
.plc-tip[hidden] { display: none; }
.plc-tip-img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 10px; margin-bottom: 8px; background: var(--vellum); }
.plc-tip-name { margin: 0; font: 500 1.125rem/1.25 var(--serif); }
.plc-tip-meta { margin: 2px 0 10px; color: var(--muted); font-size: 0.875rem; }
.plc-tip-actions { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; }
.plc-tip-open { display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px; border-radius: 999px; background: var(--chlorophyll); color: var(--on-chlorophyll); font-weight: 600; font-size: 0.875rem; text-decoration: none; }
.plc-tip .sv { width: auto; min-height: 36px; padding: 0 12px; font-size: 0.8125rem; }
.plc-chip-visited[hidden] { display: none; }
.plc-chip-visited { cursor: pointer; font-family: var(--sans); }
.plc-chip-visited[aria-pressed="true"] { background: var(--map-visited); border-color: var(--map-visited); color: var(--paper); }
.plc-thumbs { display: flex; gap: 6px; margin: 6px 0 8px; }
.plc-thumbs img { width: 132px; max-width: 32%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 8px; background: var(--vellum); }
.plc-photo-credit { margin: 6px 0 0; font-size: 0.75rem; color: var(--muted); }
.plc-photo-credit a { color: var(--muted); }
.plc-strip { display: grid; gap: 10px; margin: 12px 0 24px; grid-template-columns: 1fr; }
@media (max-width: 719px) {
  .plc-strip { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; margin-right: calc(-1 * var(--gutter)); padding-right: var(--gutter); }
  .plc-shot { flex: 0 0 86%; scroll-snap-align: start; }
  .plc-strip-1 .plc-shot { flex-basis: 100%; }
  .plc-shot img { height: 220px; }
}
@media (min-width: 720px) { .plc-strip-2 { grid-template-columns: 3fr 2fr; } .plc-strip-3 { grid-template-columns: 2fr 1fr 1fr; } }
.plc-shot { margin: 0; }
.plc-shot img { display: block; width: 100%; height: 260px; object-fit: cover; border-radius: 14px; background: var(--vellum); }
@media (min-width: 720px) { .plc-shot img { height: 340px; } }
.plc-shot figcaption { margin-top: 4px; font-size: 0.75rem; color: var(--muted); }
.plc-shot figcaption a { color: var(--muted); }
