/* Nerdschmie.de City Frontend Phase 2A 20260826 */
.page-cities #body-wrapper,
.page-city #body-wrapper { background: #07120f; }

.nsd-cities-page,
.nsd-city-page { max-width: 1180px; margin: 0 auto; padding-top: 1.4rem; padding-bottom: 3rem; color: #e9f4ef; }
.nsd-city-hero { position: relative; overflow: hidden; margin: 0 0 1.25rem; padding: clamp(1.35rem, 3vw, 2.35rem); border: 1px solid rgba(111,196,157,.25); border-radius: 18px; background: linear-gradient(145deg, rgba(17,49,38,.92), rgba(8,25,20,.96)); box-shadow: 0 14px 34px rgba(0,0,0,.18); }
.nsd-city-hero::after { content:""; position:absolute; inset:auto -70px -100px auto; width:250px; height:250px; border-radius:50%; background:radial-gradient(circle,rgba(78,190,137,.14),transparent 68%); pointer-events:none; }
.nsd-city-eyebrow { margin:0 0 .38rem; color:#8bd3b2; font-size:.76rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; }
.nsd-city-hero h1 { margin:.1rem 0 .6rem; max-width:900px; color:#fff; font-size:clamp(1.75rem,5vw,3.25rem); line-height:1.05; overflow-wrap:anywhere; }
.nsd-city-lead,.nsd-city-fact-lead { max-width:820px; margin:.55rem 0 0; color:#c9d9d2; line-height:1.6; }
.nsd-city-state-line { margin:.25rem 0; font-weight:600; color:#b8d8c9; }
.nsd-city-state-line a { color:inherit; text-decoration:underline; text-decoration-color:rgba(184,216,201,.45); }
.nsd-city-hero-counts { margin:.8rem 0 0; }
.nsd-city-counts { display:inline-flex; flex-wrap:wrap; gap:.25rem; color:#eef9f4; font-weight:600; }

.nsd-city-section,.nsd-city-tools-panel { margin:1.35rem 0; padding:clamp(1rem,2.5vw,1.5rem); border:1px solid rgba(126,176,153,.18); border-radius:16px; background:rgba(12,31,25,.72); }
.nsd-city-section-head { margin-bottom:1rem; }
.nsd-city-section-head h2 { margin:.1rem 0 .3rem; color:#fff; font-size:clamp(1.3rem,3vw,1.8rem); }
@media (min-width: 701px) { .page-cities .nsd-city-section-head h2 { margin-bottom:var(--nsd-space-heading-after); color:var(--nsd-color-text); font-size:var(--nsd-type-section-size); font-weight:var(--nsd-type-section-weight); line-height:var(--nsd-type-section-line); letter-spacing:var(--nsd-type-section-tracking); text-transform:none; } }
.nsd-city-section-head p:last-child { margin:.35rem 0 0; color:#aebfb7; }

.nsd-city-search-row { display:flex; gap:.7rem; align-items:center; }
.nsd-city-search-field { flex:1 1 28rem; }
.nsd-city-search-field input,.nsd-city-state-filter select { width:100%; min-height:44px; border:1px solid rgba(132,194,165,.3); border-radius:10px; background:#081913; color:#f1f8f5; padding:.65rem .8rem; }
.nsd-city-search-field input:focus,.nsd-city-state-filter select:focus { outline:2px solid rgba(94,207,154,.55); outline-offset:1px; }
.nsd-city-reset,.nsd-city-filter-chip { min-height:40px; border:1px solid rgba(112,186,152,.32); border-radius:999px; background:#0d261d; color:#dcebe4; padding:.48rem .86rem; cursor:pointer; }
.nsd-city-filter-chip.is-active { background:#1b5d43; border-color:#4fc18d; color:#fff; }
.nsd-city-filter-row { display:flex; flex-wrap:wrap; gap:.5rem; margin:.9rem 0; }
.nsd-city-state-filter { display:grid; gap:.35rem; max-width:340px; color:#c9d8d1; }
.nsd-city-filter-status { min-height:1.3em; margin:.7rem 0 0; color:#9fb7ac; }

.nsd-city-hotspot-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.8rem; }
.nsd-city-hotspot-card { position:relative; display:flex; min-width:0; flex-direction:column; gap:.4rem; padding:1rem; border:1px solid rgba(91,188,143,.28); border-radius:13px; background:#0a2018; color:#eaf6f0; text-decoration:none; transition:transform .16s ease,border-color .16s ease,background .16s ease; }
.nsd-city-hotspot-card:hover,.nsd-city-list-card:hover,.nsd-city-entity-card:hover { transform:translateY(-2px); border-color:rgba(89,209,153,.55); background:#0d281e; }
.nsd-city-hotspot-card__rank { position:absolute; top:.8rem; right:.8rem; color:#6da58b; font-size:.78rem; }
.nsd-city-hotspot-card__name { padding-right:2.5rem; font-size:1.2rem; overflow-wrap:anywhere; }
.nsd-city-hotspot-card__state,.nsd-city-list-card__state { color:#91aa9f; font-size:.88rem; }
.nsd-city-hotspot-card__counts,.nsd-city-list-card__counts { color:#c9ddd3; font-size:.9rem; line-height:1.45; }
.nsd-city-hotspot-card__score { margin-top:.25rem; color:#75d6aa; font-size:.86rem; font-weight:600; }

.nsd-city-az-nav,.nsd-city-anchor-nav { display:flex; gap:.35rem; overflow-x:auto; scrollbar-width:thin; padding:.25rem 0 .65rem; }
.nsd-city-az-nav a,.nsd-city-anchor-nav a { flex:0 0 auto; border:1px solid rgba(108,181,147,.28); border-radius:999px; padding:.36rem .65rem; background:#0a2119; color:#dcebe4; text-decoration:none; }
.nsd-city-anchor-nav { position:sticky; top:4.5rem; z-index:4; margin:1rem 0; padding:.6rem; border-radius:12px; background:rgba(6,20,15,.95); border:1px solid rgba(103,172,140,.18); }
.nsd-city-letter-group { scroll-margin-top:6rem; margin:1rem 0 1.5rem; }
.nsd-city-letter-group > h3 { margin:0 0 .55rem; color:#7fd4ac; font-size:1.4rem; }
.nsd-city-list-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.65rem; }
.nsd-city-list-card { min-width:0; display:flex; flex-direction:column; gap:.2rem; padding:.8rem .9rem; border:1px solid rgba(109,171,144,.2); border-radius:11px; background:#091c16; color:#edf7f2; text-decoration:none; transition:.16s ease; }
.nsd-city-list-card strong { overflow-wrap:anywhere; }
.nsd-city-empty-filter { padding:1rem; border-radius:10px; background:#10241d; color:#c4d3cc; }

.nsd-city-breadcrumb { display:flex; flex-wrap:wrap; gap:.4rem; margin:.25rem 0 .8rem; color:#8fa69b; font-size:.88rem; }
.nsd-city-breadcrumb a { color:#b7d6c8; }
.nsd-city-section { scroll-margin-top:6rem; }
.nsd-city-upcoming-list { display:grid; gap:.65rem; }
.nsd-city-upcoming-card { padding:.85rem 1rem; border-left:3px solid #3e9e72; border-radius:8px; background:#091d16; }
.nsd-city-upcoming-card__meta { display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; color:#9eb2a9; font-size:.85rem; }
.nsd-city-upcoming-card h3 { margin:.35rem 0 .1rem; font-size:1.05rem; }
.nsd-city-upcoming-card h3 a { color:#edf8f3; }
.nsd-city-type-badge,.nsd-city-status-chip,.nsd-city-running { display:inline-flex; align-items:center; min-height:22px; padding:.12rem .42rem; border-radius:999px; background:#153d2e; color:#8ce0b8; font-size:.7rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }

.nsd-city-entity-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.75rem; }
.nsd-city-entity-card { min-width:0; padding:.9rem 1rem; border:1px solid rgba(115,177,149,.2); border-radius:12px; background:#091d16; transition:.16s ease; }
.nsd-city-entity-card__head { display:flex; align-items:flex-start; justify-content:space-between; gap:.6rem; }
.nsd-city-entity-card h3 { margin:0 0 .45rem; color:#eef8f3; font-size:1.05rem; overflow-wrap:anywhere; }
.nsd-city-entity-card h3 a { color:inherit; }
.nsd-city-entity-card p { margin:.32rem 0; color:#b6c8bf; line-height:1.45; overflow-wrap:anywhere; }
.nsd-city-muted { color:#829a8f !important; }
.nsd-city-entity-actions { display:flex; flex-wrap:wrap; gap:.65rem; margin-top:.65rem; }
.nsd-city-entity-actions a { color:#7bd5aa; font-weight:600; }

.nsd-city-more { margin-top:.8rem; }
.nsd-city-more summary { display:inline-flex; cursor:pointer; border:1px solid rgba(111,184,150,.32); border-radius:999px; padding:.45rem .75rem; color:#d5e7de; background:#0c261c; }
.nsd-city-more[open] summary { margin-bottom:.8rem; }
.nsd-city-score-components { display:flex; flex-wrap:wrap; gap:.5rem; }
.nsd-city-score-components span { padding:.38rem .6rem; border-radius:8px; background:#0b241a; color:#c6ddd2; font-size:.88rem; }
.nsd-city-shared-eventcards { min-width:0; }

@media (max-width: 900px) {
  .nsd-city-hotspot-grid,.nsd-city-list-grid,.nsd-city-entity-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 620px) {
  .nsd-cities-page,.nsd-city-page { padding-top:.75rem; }
  .nsd-city-hero,.nsd-city-section,.nsd-city-tools-panel { border-radius:12px; }
  .nsd-city-search-row { align-items:stretch; flex-direction:column; }
  .nsd-city-hotspot-grid,.nsd-city-list-grid,.nsd-city-entity-grid { grid-template-columns:1fr; }
  .nsd-city-anchor-nav { top:3.7rem; margin-left:-.25rem; margin-right:-.25rem; border-radius:9px; }
  .nsd-city-hotspot-card__name { font-size:1.1rem; }
}

/* Desktop Design Phase 8 – live City directory/detail corrections. */
@media (min-width: 701px) {
  .page-cities #body-wrapper,
  .page-city #body-wrapper { background: var(--nsd-color-bg) !important; }
  .page-cities .nsd-cities-page,
  .page-city .nsd-city-page { padding-top: 0; }
  .page-cities .nsd-city-tools-panel {
    margin-block: var(--nsd-space-4) var(--nsd-space-5) !important;
    padding: var(--nsd-space-3) 0 !important;
    border-width: 1px 0 !important;
    border-color: var(--nsd-border-subtle) !important;
  }
  .page-cities .nsd-city-search-row { gap: var(--nsd-space-2); align-items: end; }
  .page-cities .nsd-city-filter-row { margin: var(--nsd-space-2) 0; gap: var(--nsd-space-2); }
  .page-cities .nsd-city-reset,
  .page-cities .nsd-city-filter-chip { min-height: 2rem; padding: .3rem .6rem; border-radius: var(--nsd-radius-control); background: transparent; }
  .page-city .nsd-city-anchor-nav {
    position: static;
    margin: var(--nsd-space-4) 0 var(--nsd-space-5);
    padding: 0 0 var(--nsd-space-2);
    border: 0;
    border-bottom: 1px solid var(--nsd-border-subtle);
    border-radius: 0;
    background: transparent;
  }
  .page-city .nsd-city-anchor-nav a { border: 0; border-radius: 0; padding: .3rem .2rem; background: transparent; color: var(--nsd-color-text-muted); }
  .page-city .nsd-city-anchor-nav a:hover,
  .page-city .nsd-city-anchor-nav a:focus-visible { color: var(--nsd-color-accent); }
  .page-city .nsd-city-shared-storecards .csv-group > .nsd-section-heading--group { display: none; }
  .page-city .nsd-city-shared-storecards .ns-card-list--stores { width: 100%; grid-template-columns: repeat(auto-fit, minmax(min(100%, 28rem), 1fr)); }
  .page-city .nsd-city-shared-storecards .ns-card--store { width: 100%; min-width: 0; grid-template-columns: 70px minmax(0,1fr); }
  .page-city .nsd-city-shared-storecards .ns-card__content--store { grid-column: 2; min-width: 0; width: auto; }
}

/* ========================================================================
   NSD City Detail Profile Parity V1 20260914-134500
   City detail only: align hero, glance and section rhythm with Club/DJ/Event
   detail pages. Uses only existing build-time city payload fields.
   ======================================================================== */
body.nsd.page-city .nsd-city-detail-profile-v1 {
  margin-bottom: var(--nsd-space-section);
  padding: var(--nsd-space-5);
  background: linear-gradient(135deg, rgba(13,18,17,.98), rgba(10,10,10,.98));
}
body.nsd.page-city .nsd-city-detail-profile-v1::after { display: none; }
body.nsd.page-city .nsd-city-detail-profile-v1 .nsd-city-detail-profile-v1__media {
  display: grid;
  place-items: center;
  min-height: 8.5rem;
  padding: 0;
  border: 0;
  border-radius: var(--nsd-radius-card);
  background:
    radial-gradient(circle at 25% 20%, rgba(119,255,168,.18), transparent 34%),
    radial-gradient(circle at 78% 76%, rgba(122,87,255,.16), transparent 38%),
    rgba(7,13,11,.54);
  box-shadow: none;
}
body.nsd.page-city .nsd-city-detail-profile-v1__identity {
  gap: .28rem;
  min-height: 8.5rem;
  padding: var(--nsd-space-3);
}
body.nsd.page-city .nsd-city-detail-profile-v1__eyebrow {
  color: rgba(129,244,164,.88);
  font-size: .82rem;
  font-weight: 900;
  letter-spacing: .16em;
  text-transform: uppercase;
}
body.nsd.page-city .nsd-city-detail-profile-v1__mark {
  display: grid;
  place-items: center;
  width: clamp(4.25rem, 7vw, 5.25rem);
  height: clamp(4.25rem, 7vw, 5.25rem);
  margin: .05rem 0 .2rem;
  border: 1px solid rgba(129,244,164,.22);
  border-radius: 999px;
  background:
    radial-gradient(circle at 38% 28%, rgba(255,255,255,.12), transparent 30%),
    rgba(129,244,164,.075);
  color: rgba(168,255,194,.92);
  box-shadow: inset 0 0 24px rgba(129,244,164,.055), 0 0 26px rgba(129,244,164,.13);
  line-height: 0;
}
body.nsd.page-city .nsd-city-detail-profile-v1__mark-icon {
  display: block;
  width: clamp(1.55rem, 2.7vw, 1.9rem);
  height: clamp(1.55rem, 2.7vw, 1.9rem);
  fill: none;
  stroke: currentColor;
  stroke-width: 1.65;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
body.nsd.page-city .nsd-city-detail-profile-v1__state {
  color: rgba(255,255,255,.78);
  font-size: .9rem;
  font-weight: 800;
  letter-spacing: .015em;
  text-align: center;
}
body.nsd.page-city .nsd-city-detail-profile-v1 h1 {
  margin: .18rem 0 .55rem;
  max-width: none;
  color: var(--nsd-color-accent);
  font-family: var(--nsd-font-body);
  font-size: var(--nsd-type-hero-h1-size);
  font-weight: var(--nsd-type-hero-h1-weight);
  line-height: var(--nsd-type-hero-h1-line);
}
body.nsd.page-city .nsd-city-detail-profile-v1__meta {
  margin: 0;
  color: var(--nsd-color-text-body);
  font-size: var(--nsd-type-body-size);
  line-height: var(--nsd-type-body-line);
}
body.nsd.page-city .nsd-city-detail-profile-v1__meta a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px solid rgba(129,244,164,.38);
}
body.nsd.page-city .nsd-city-detail-profile-v1__meta a:hover,
body.nsd.page-city .nsd-city-detail-profile-v1__meta a:focus-visible {
  color: var(--nsd-color-accent);
  border-bottom-color: currentColor;
}
body.nsd.page-city .nsd-city-detail-profile-v1__chips { margin-top: .72rem; }
body.nsd.page-city .nsd-city-detail-profile-v1 .nsd-city-counts {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
}
body.nsd.page-city .nsd-city-detail-profile-v1 .nsd-city-counts { color: var(--nsd-color-text-muted); }

/* NSD City Detail Glance Merge V1 20260920-121500:
   one compact facts section; replaces the former large glance cards + separate score block. */
body.nsd.page-city .nsd-city-glance {
  margin-block: var(--nsd-space-section);
}
body.nsd.page-city .nsd-city-glance__head {
  margin-bottom: .72rem;
}
body.nsd.page-city .nsd-city-glance__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--nsd-space-3);
}
body.nsd.page-city .nsd-city-glance__card,
body.nsd.page-city .nsd-kpi-grid .nsd-city-glance__card {
  display: flex;
  min-width: 0;
  min-height: 4rem;
  align-items: center;
  flex-wrap: wrap;
  gap: .22rem .32rem;
  padding: .72rem .9rem;
  border: 1px solid var(--nsd-border-subtle);
  border-radius: var(--nsd-radius-card);
  background: var(--nsd-color-surface-soft);
  color: var(--nsd-color-text);
  text-decoration: none;
  box-shadow: none;
  transition: border-color .15s ease, background-color .15s ease, transform .15s ease, box-shadow .15s ease;
}
body.nsd.page-city .nsd-city-glance__card .ns-event-glance-icon,
body.nsd.page-city .nsd-kpi-grid .nsd-city-glance__card .ns-event-glance-icon {
  flex: 0 0 auto;
  margin: 0;
  color: var(--nsd-color-accent);
  opacity: .88;
  font-size: .88rem;
  line-height: 1;
}
body.nsd.page-city .nsd-city-glance__card strong,
body.nsd.page-city .nsd-kpi-grid .nsd-city-glance__card > strong {
  display: inline;
  min-width: 0;
  color: var(--nsd-color-text);
  font-size: .96rem;
  font-weight: 780;
  line-height: 1.25;
  overflow-wrap: anywhere;
}
body.nsd.page-city .nsd-city-glance__card > span:not(.ns-event-glance-icon),
body.nsd.page-city .nsd-kpi-grid .nsd-city-glance__card > span:last-child {
  display: inline;
  min-width: 0;
  margin: 0;
  color: var(--nsd-color-text-muted);
  font-size: .78rem;
  line-height: 1.3;
  overflow-wrap: anywhere;
}
body.nsd.page-city .nsd-city-glance__card--linked:hover,
body.nsd.page-city .nsd-city-glance__card--linked:focus-visible {
  border-color: rgba(129,244,164,.48);
  background: rgba(129,244,164,.055);
  outline: none;
  transform: translateY(-1px);
}
body.nsd.page-city .nsd-city-glance__card--linked:focus-visible {
  box-shadow: 0 0 0 3px rgba(129,244,164,.16);
}

/* Detail section hierarchy: same calm compact heading level as the current
   Event/Club/DJ detail pages. Historical city eyebrows are redundant here. */
body.nsd.page-city .nsd-city-section-head > .nsd-city-eyebrow { display: none; }
body.nsd.page-city .nsd-city-section-head { margin-bottom: .72rem; }
body.nsd.page-city .nsd-city-section-head > h2,
body.nsd.page-city .nsd-city-detail-heading {
  margin: 0 0 .18rem !important;
  color: rgba(238,255,248,.86) !important;
  font-family: var(--nsd-font-body) !important;
  font-size: clamp(.94rem, 1.15vw, 1.04rem) !important;
  font-weight: 680 !important;
  line-height: 1.25 !important;
  letter-spacing: .012em !important;
  text-transform: none !important;
  text-shadow: none !important;
}
body.nsd.page-city .nsd-city-section-head p:last-child {
  margin: .18rem 0 0;
  color: var(--nsd-color-text-muted);
}

@media (max-width: 900px) {
  body.nsd.page-city .nsd-city-glance__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  body.nsd.page-city .nsd-city-detail-profile-v1 { grid-template-columns: 1fr; }
  body.nsd.page-city .nsd-city-detail-profile-v1 .nsd-city-detail-profile-v1__media { min-height: 7.5rem; }
  body.nsd.page-city .nsd-city-glance__grid { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  body.nsd.page-city .nsd-city-glance__card--linked:hover,
  body.nsd.page-city .nsd-city-glance__card--linked:focus-visible { transform: none; }
}

/* NSD City DJ Tiles V1 20260920 */
body.nsd.page-city .nsd-city-section--djs {
  scroll-margin-top: 6rem;
}
body.nsd.page-city .nsd-city-dj-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .75rem;
}
body.nsd.page-city .nsd-city-dj-card {
  min-width: 0;
  min-height: 92px;
  padding: .9rem 1rem;
  border: 1px solid rgba(126,176,153,.18);
  border-radius: 14px;
  background: rgba(11,18,16,.72);
  display: grid;
  grid-template-columns: auto minmax(0,1fr);
  grid-template-rows: auto auto;
  column-gap: .7rem;
  row-gap: .18rem;
  align-items: center;
  color: inherit;
  text-decoration: none;
}
body.nsd.page-city .nsd-city-dj-card__icon {
  grid-row: 1 / 3;
  color: var(--nsd-color-accent, #20e3a2);
  font-size: 1.05rem;
  line-height: 1;
}
body.nsd.page-city .nsd-city-dj-card strong {
  min-width: 0;
  color: var(--nsd-color-text, #eef7f2);
  font-size: 1rem;
  line-height: 1.25;
  overflow-wrap: anywhere;
}
body.nsd.page-city .nsd-city-dj-card__meta {
  color: #9fb3aa;
  font-size: .82rem;
  line-height: 1.25;
}
body.nsd.page-city .nsd-city-dj-card--linked {
  transition: border-color .16s ease, background .16s ease, transform .16s ease;
}
body.nsd.page-city .nsd-city-dj-card--linked:hover,
body.nsd.page-city .nsd-city-dj-card--linked:focus-visible {
  border-color: rgba(32,227,162,.52);
  background: rgba(15,31,25,.92);
  transform: translateY(-1px);
}
body.nsd.page-city .nsd-city-dj-card--linked:focus-visible {
  outline: 2px solid rgba(32,227,162,.65);
  outline-offset: 2px;
}
@media (max-width: 520px) {
  body.nsd.page-city .nsd-city-dj-grid { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  body.nsd.page-city .nsd-city-dj-card--linked { transition: none; }
  body.nsd.page-city .nsd-city-dj-card--linked:hover,
  body.nsd.page-city .nsd-city-dj-card--linked:focus-visible { transform: none; }
}

/* ========================================================================
   City Index 2.0 V1-C – Search / Autocomplete / Search State 20260924
   Uses the existing server-rendered A-Z city cards as the client search index.
   ======================================================================== */
.nsd-city-search-control {
  position: relative;
  flex: 1 1 28rem;
  min-width: 0;
}

.nsd-city-search-control .nsd-city-search-field {
  display: block;
  width: 100%;
}

.nsd-city-autocomplete {
  position: absolute;
  z-index: 20;
  top: calc(100% + .35rem);
  right: 0;
  left: 0;
  max-height: min(24rem, 58vh);
  overflow-y: auto;
  padding: .35rem;
  border: 1px solid rgba(112,186,152,.34);
  border-radius: 12px;
  background: rgba(7,21,16,.985);
  box-shadow: 0 18px 42px rgba(0,0,0,.36);
}

.nsd-city-autocomplete[hidden] {
  display: none;
}

.nsd-city-autocomplete__option,
.nsd-city-search-result {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto 1rem;
  gap: .65rem;
  align-items: center;
  min-width: 0;
  color: #eaf6f0;
  text-decoration: none;
}

.nsd-city-autocomplete__option {
  padding: .62rem .72rem;
  border-radius: 9px;
}

.nsd-city-autocomplete__option:hover,
.nsd-city-autocomplete__option:focus-visible,
.nsd-city-autocomplete__option.is-active {
  outline: 0;
  background: rgba(73,169,124,.18);
}

.nsd-city-autocomplete__option__name,
.nsd-city-search-result__name {
  min-width: 0;
  overflow-wrap: anywhere;
  font-weight: 700;
}

.nsd-city-autocomplete__option__state,
.nsd-city-search-result__state {
  color: #9fb7ac;
  font-size: .82rem;
  text-align: right;
}

.nsd-city-autocomplete__option__arrow,
.nsd-city-search-result__arrow {
  color: #7bd5aa;
  font-size: 1.08rem;
  line-height: 1;
  text-align: right;
}

.nsd-city-search-results {
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(126,176,153,.18);
}

.nsd-city-search-results[hidden] {
  display: none;
}

.nsd-city-search-results__head {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: .75rem;
}

.nsd-city-search-results__title {
  margin: .08rem 0 .2rem;
  color: #fff;
  font-size: 1.08rem;
}

.nsd-city-search-results__count {
  margin: 0;
  color: #9fb7ac;
  font-size: .88rem;
}

.nsd-city-search-clear {
  flex: 0 0 auto;
  min-height: 2rem;
  padding: .3rem .65rem;
  border: 1px solid rgba(112,186,152,.32);
  border-radius: 999px;
  background: transparent;
  color: #dcebe4;
  cursor: pointer;
}

.nsd-city-search-results__list {
  display: grid;
  gap: .15rem;
}

.nsd-city-search-result {
  min-height: 2.75rem;
  padding: .55rem .62rem;
  border-top: 1px solid rgba(126,176,153,.11);
}

.nsd-city-search-result:first-child {
  border-top: 0;
}

.nsd-city-search-result:hover,
.nsd-city-search-result:focus-visible {
  outline: 0;
  background: rgba(73,169,124,.08);
}

.nsd-city-search-empty {
  margin: .4rem 0 0;
  padding: .8rem;
  border-radius: 10px;
  background: rgba(16,36,29,.78);
  color: #c4d3cc;
}

.nsd-city-search-empty[hidden] {
  display: none;
}

/* Search state only changes visibility client-side. The complete server-rendered
   A-Z linkgraph stays in the HTML for Browse/SEO. */
.nsd-cities-page.is-city-search-state > .nsd-city-hotspots,
.nsd-cities-page.is-city-search-state > .nsd-city-directory {
  display: none;
}

.nsd-cities-page.is-city-search-state .nsd-city-filter-status {
  display: none;
}

@media (max-width: 900px) {
  .nsd-city-autocomplete__option,
  .nsd-city-search-result {
    grid-template-columns: minmax(0,1fr) minmax(6.5rem,auto) .9rem;
    gap: .5rem;
  }
}

@media (max-width: 620px) {
  .nsd-city-search-control {
    width: 100%;
    flex-basis: auto;
  }

  .nsd-city-autocomplete {
    max-height: min(21rem, 52vh);
  }

  .nsd-city-search-results__head {
    align-items: stretch;
    flex-direction: column;
    gap: .55rem;
  }

  .nsd-city-search-clear {
    align-self: flex-start;
  }

  .nsd-city-autocomplete__option,
  .nsd-city-search-result {
    grid-template-columns: minmax(0,1fr) .8rem;
    gap: .35rem .45rem;
  }

  .nsd-city-autocomplete__option__state,
  .nsd-city-search-result__state {
    grid-column: 1;
    grid-row: 2;
    text-align: left;
  }

  .nsd-city-autocomplete__option__arrow,
  .nsd-city-search-result__arrow {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
  }
}

/* ========================================================================
   City Index 2.0 V1-D – Filter / URL History / Responsive Completion
   ======================================================================== */
.nsd-city-reset:disabled {
  cursor: default;
  opacity: .45;
}

.nsd-city-state-filter,
.nsd-city-state-filter select {
  min-width: 0;
  max-width: 100%;
}

.nsd-city-autocomplete,
.nsd-city-search-results,
.nsd-city-search-result,
.nsd-city-autocomplete__option {
  box-sizing: border-box;
  max-width: 100%;
}

.nsd-city-autocomplete {
  overscroll-behavior: contain;
}

.nsd-city-autocomplete__option,
.nsd-city-search-result {
  min-height: 44px;
}

.nsd-city-autocomplete__option__name,
.nsd-city-autocomplete__option__state,
.nsd-city-search-result__name,
.nsd-city-search-result__state {
  overflow-wrap: anywhere;
}

@media (max-width: 900px) {
  .nsd-city-search-row {
    min-width: 0;
  }

  .nsd-city-search-control {
    max-width: 100%;
  }

  .nsd-city-state-filter {
    width: min(100%, 24rem);
  }
}

@media (max-width: 620px) {
  .nsd-city-filter-row {
    flex-wrap: nowrap;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    padding-bottom: .35rem;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
  }

  .nsd-city-filter-chip {
    flex: 0 0 auto;
    min-height: 44px;
    touch-action: manipulation;
  }

  .nsd-city-state-filter {
    width: 100%;
    max-width: none;
  }

  .nsd-city-state-filter select,
  .nsd-city-search-field input,
  .nsd-city-reset,
  .nsd-city-search-clear {
    min-height: 44px;
  }

  .nsd-city-autocomplete {
    right: 0;
    left: 0;
    width: 100%;
    max-width: 100%;
  }

  .nsd-city-search-result {
    padding-block: .7rem;
  }
}


/* ========================================================================
   City Filter + Nearby Copy Visual Polish V1a 20260929
   Current-baseline-safe overrides only: compact control grid, no duplicate
   visible labels, preserved autocomplete/search-results behavior.
   ======================================================================== */
.page-cities .nsd-city-search-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(14rem, 19rem) auto;
  gap: var(--nsd-space-2, .7rem);
  align-items: stretch;
  min-width: 0;
}

.page-cities .nsd-city-search-control,
.page-cities .nsd-city-search-field,
.page-cities .nsd-city-state-filter {
  min-width: 0;
  width: 100%;
}

.page-cities .nsd-city-state-filter {
  display: block;
  max-width: none;
}

.page-cities .nsd-city-search-field input,
.page-cities .nsd-city-state-filter select {
  min-height: 2.85rem;
}

.page-cities .nsd-city-reset {
  min-height: 2.85rem;
  align-self: stretch;
  padding-inline: .72rem;
  border-color: transparent;
  background: transparent;
  color: var(--nsd-color-text-muted, #9fb7ac);
  white-space: nowrap;
}

.page-cities .nsd-city-reset:not(:disabled):hover,
.page-cities .nsd-city-reset:not(:disabled):focus-visible {
  border-color: var(--nsd-border-subtle, rgba(126,176,153,.18));
  background: rgba(255,255,255,.025);
  color: var(--nsd-color-text, #e9f4ef);
}

.page-cities .nsd-city-filter-row {
  margin: var(--nsd-space-3, .85rem) 0 var(--nsd-space-2, .65rem);
}

@media (min-width: 621px) and (max-width: 800px) {
  .page-cities .nsd-city-search-row {
    grid-template-columns: minmax(0, 1fr) minmax(13rem, 17rem);
  }

  .page-cities .nsd-city-reset {
    grid-column: 1 / -1;
    justify-self: end;
    min-height: 2.2rem;
  }
}

@media (max-width: 620px) {
  .page-cities .nsd-city-search-row {
    grid-template-columns: minmax(0, 1fr);
    gap: .6rem;
  }

  .page-cities .nsd-city-reset {
    justify-self: start;
    width: auto;
    min-height: 2.2rem;
  }
}

/* ========================================================================
   City Filter / Autocomplete Alignment V1c 20260929
   Keep the city filter as one left-aligned vertical block and prevent short
   city names from collapsing when longer state names are displayed.
   ======================================================================== */
body.nsd.page-cities .nsd-city-tools-panel.nsd-filter-bar {
  display: block;
}

body.nsd.page-cities .nsd-city-section-head,
body.nsd.page-cities .nsd-city-search-row,
body.nsd.page-cities .nsd-city-filter-row,
body.nsd.page-cities .nsd-city-filter-status,
body.nsd.page-cities .nsd-city-search-results {
  width: 100%;
}

@media (min-width: 901px) {
  body.nsd.page-cities .nsd-city-search-row {
    grid-template-columns: minmax(18rem, 30rem) minmax(14rem, 18rem) auto;
    justify-content: start;
  }
}

@media (min-width: 621px) and (max-width: 900px) {
  body.nsd.page-cities .nsd-city-search-row {
    grid-template-columns: minmax(0, 1fr) minmax(13rem, 17rem);
    justify-content: start;
  }

  body.nsd.page-cities .nsd-city-reset {
    grid-column: 1 / -1;
    justify-self: start;
  }
}

body.nsd.page-cities .nsd-city-autocomplete__option,
body.nsd.page-cities .nsd-city-search-result {
  grid-template-columns: minmax(0, 1fr) minmax(0, 40%) .85rem;
  column-gap: .6rem;
}

body.nsd.page-cities .nsd-city-autocomplete__option__name,
body.nsd.page-cities .nsd-city-search-result__name {
  min-width: 0;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: auto;
}

body.nsd.page-cities .nsd-city-autocomplete__option__state,
body.nsd.page-cities .nsd-city-search-result__state {
  min-width: 0;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: auto;
}

@media (max-width: 620px) {
  body.nsd.page-cities .nsd-city-autocomplete__option,
  body.nsd.page-cities .nsd-city-search-result {
    grid-template-columns: minmax(0, 1fr) .85rem;
    gap: .15rem .45rem;
  }

  body.nsd.page-cities .nsd-city-autocomplete__option__state,
  body.nsd.page-cities .nsd-city-search-result__state {
    grid-column: 1;
    grid-row: 2;
    text-align: left;
  }

  body.nsd.page-cities .nsd-city-autocomplete__option__arrow,
  body.nsd.page-cities .nsd-city-search-result__arrow {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
  }
}

/* ========================================================================
   City Index 2.0 V1.1-G – Browser Geolocation Radius Search 20261001
   Reuses the existing rendered City cards; no duplicate result collection.
   Range/button geometry follows the productive Party nearby interaction while
   retaining City page tokens and responsive rules.
   ======================================================================== */
body.nsd.page-cities .nsd-city-radius-panel {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}

body.nsd.page-cities .nsd-city-radius-panel__help,
body.nsd.page-cities .nsd-city-radius-status {
  color: var(--nsd-color-text-muted, #9fb7ac);
  line-height: 1.5;
}

body.nsd.page-cities .nsd-city-radius-panel__help {
  margin: var(--nsd-space-2, .65rem) 0 0;
}

body.nsd.page-cities .nsd-city-radius-controls {
  display: flex;
  align-items: center;
  gap: var(--nsd-space-3, .85rem);
  min-width: 0;
  margin-top: 0;
}

body.nsd.page-cities .nsd-city-radius-control {
  display: flex;
  align-items: center;
  gap: var(--nsd-space-3, .85rem);
  min-width: 0;
  margin: 0;
}

body.nsd.page-cities .nsd-city-radius-control__label {
  color: var(--nsd-color-text-body, #c9ddd3);
  font-weight: 700;
  white-space: nowrap;
}

body.nsd.page-cities .nsd-city-radius-control__range {
  width: clamp(220px, 30vw, 360px);
  max-width: 100%;
  height: 24px;
  margin: 0;
  accent-color: var(--nsd-color-accent, #7bd5aa);
  cursor: pointer;
}

body.nsd.page-cities .nsd-city-radius-control__range:focus-visible {
  outline: 2px solid var(--nsd-color-accent, #7bd5aa);
  outline-offset: 3px;
  border-radius: 999px;
}

body.nsd.page-cities .nsd-city-radius-control__value {
  min-width: 4.3rem;
  color: var(--nsd-color-text-body, #c9ddd3);
  font-size: var(--nsd-type-meta-size, .88rem);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

body.nsd.page-cities .nsd-city-radius-action {
  min-height: 44px;
  margin: 0;
  cursor: pointer;
  white-space: nowrap;
}

body.nsd.page-cities .nsd-city-radius-action:disabled {
  cursor: wait;
  opacity: .65;
}

body.nsd.page-cities .nsd-city-radius-status {
  min-height: 1.5em;
  margin-top: var(--nsd-space-2, .65rem);
}

body.nsd.page-cities .nsd-city-radius-distance {
  display: inline-flex;
  align-self: flex-start;
  margin-top: auto;
  padding-top: .35rem;
  color: var(--nsd-color-accent, #7bd5aa);
  font-size: .82rem;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
}

body.nsd.page-cities .nsd-cities-page.is-city-radius-state > .nsd-city-hotspots,
body.nsd.page-cities .nsd-cities-page.is-city-radius-state .nsd-city-az-nav,
body.nsd.page-cities .nsd-cities-page.is-city-radius-state .nsd-city-letter-group > h3,
body.nsd.page-cities .nsd-cities-page.is-city-radius-state .nsd-city-directory .nsd-city-eyebrow,
body.nsd.page-cities .nsd-cities-page.is-city-radius-state .nsd-city-directory .nsd-city-section-head > p:not(.nsd-city-eyebrow) {
  display: none;
}

body.nsd.page-cities .nsd-cities-page.is-city-radius-state .nsd-city-letter-group {
  margin-top: 0;
}

@media (max-width: 700px) {
  body.nsd.page-cities .nsd-city-radius-controls {
    align-items: stretch;
    flex-direction: column;
  }

  body.nsd.page-cities .nsd-city-radius-control {
    width: 100%;
    justify-content: space-between;
  }

  body.nsd.page-cities .nsd-city-radius-control__range {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
  }

  body.nsd.page-cities .nsd-city-radius-action {
    width: 100%;
  }
}

@media (max-width: 440px) {
  body.nsd.page-cities .nsd-city-radius-control {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: .45rem .7rem;
  }

  body.nsd.page-cities .nsd-city-radius-control__range {
    grid-column: 1 / -1;
    grid-row: 2;
    width: 100%;
  }

  body.nsd.page-cities .nsd-city-radius-control__value {
    justify-self: end;
  }
}

/* NSD_PATCH_CITY_RADIUS_HIDDEN_CARD_CONTRACT_20261001
 * Radius mode marks every non-result card with the native hidden attribute.
 * Entity cards use display:flex, so enforce the HTML hidden contract in City scope.
 */
body.nsd.page-cities [data-city-card][hidden] {
  display: none !important;
}

/* NSD_PATCH_CITY_HOTSPOTS_ACTIVE_FILTER_VISIBILITY_20261001
   Top-Städte are an unfiltered discovery block. Hide them whenever a semantic
   Bundesland/type filter is active; normal browse/reset restores them. */
body.nsd.page-cities .nsd-cities-page.has-city-filter-state > .nsd-city-hotspots {
  display: none;
}

/* NSD_PATCH_CITY_FILTER_IN_HERO_UI_POLISH_20261001
   The complete City filter stays inside the shared City landing hero. The
   filter markup remains unchanged; only its placement/presentation changes. */
body.nsd.page-cities .nsd-page-hero--cities {
  overflow: visible;
  min-height: 0;
}

body.nsd.page-cities .nsd-page-hero--cities .nsd-page-hero__overlay {
  width: min(1180px, 100%);
  max-width: 1180px;
  margin-bottom: 0;
}

body.nsd.page-cities .nsd-page-hero--cities .nsd-page-hero__after-content {
  margin-top: clamp(1rem, 2.2vw, 1.5rem);
}

body.nsd.page-cities .nsd-page-hero--cities .nsd-city-tools-panel.nsd-filter-bar {
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

body.nsd.page-cities .nsd-page-hero--cities .nsd-city-tools-panel .nsd-city-section-head {
  margin-bottom: var(--nsd-space-3, .85rem);
}

body.nsd.page-cities .nsd-page-hero--cities .nsd-city-autocomplete {
  z-index: 40;
}

@media (max-width: 700px) {
  body.nsd.page-cities .nsd-page-hero--cities .nsd-page-hero__overlay {
    width: 100%;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-page-hero__after-content {
    margin-top: .9rem;
  }
}

/* NSD_PATCH_CITY_HERO_COMPOSITION_POLISH_V2_20261001
   Graphic-design pass: restore a focused hero proportion after moving the
   complete filter UI into the shared landing hero. No filter/geo logic change. */
@media (min-width: 981px) {
  body.nsd.page-cities .nsd-page-hero--cities .nsd-page-hero__overlay {
    width: min(960px, calc(100% - 3rem));
    max-width: 960px;
    padding: 1.55rem 2.15rem 1.45rem;
  }

  body.nsd.page-cities .nsd-page-hero--cities h1 {
    max-width: 46rem;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-page-hero__subtitle {
    max-width: 44rem;
    margin-bottom: .72rem;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-page-hero__after-content {
    margin-top: 1.05rem;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-tools-panel .nsd-city-section-head {
    margin-bottom: .7rem;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-search-row {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(13.5rem, .86fr) auto;
    gap: .55rem;
    align-items: end;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-search-field,
  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-state-filter {
    min-width: 0;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-state-filter {
    max-width: none;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-filter-row {
    margin: .68rem 0 .62rem;
    gap: .42rem;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-radius-controls,
  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-radius-control {
    gap: .72rem;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-radius-control__range {
    width: clamp(190px, 22vw, 285px);
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-radius-panel__help {
    margin-top: .42rem;
    font-size: var(--nsd-type-meta-size, .88rem);
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-filter-status {
    margin-top: .82rem;
  }
}

@media (min-width: 701px) and (max-width: 980px) {
  body.nsd.page-cities .nsd-page-hero--cities .nsd-page-hero__overlay {
    width: calc(100% - 2rem);
    max-width: 900px;
    padding: 1.35rem 1.6rem 1.3rem;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-search-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(13rem, .72fr);
    gap: .55rem;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-state-filter {
    max-width: none;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-reset {
    grid-column: 2;
    justify-self: end;
  }

  body.nsd.page-cities .nsd-page-hero--cities .nsd-city-radius-control__range {
    width: clamp(170px, 28vw, 260px);
  }
}
