/*
 * Styles for both [yin_apply_form] and [yin_locator]. Everything is scoped
 * under .yin-locator-wrap (never :root) and every custom property is
 * prefixed --yin- so this can't collide with the active theme's own design
 * tokens. Swap the values below to match your site's branding — nothing
 * else in the plugin needs to change if you do.
 */
.yin-locator-wrap {
  --yin-bg: #EDEAE1;
  --yin-surface: #F8F6F0;
  --yin-surface-raised: #FFFFFF;
  --yin-text: #1B1F2A;
  --yin-text-muted: #5C6070;
  --yin-border: rgba(27, 31, 42, .14);
  --yin-border-strong: rgba(27, 31, 42, .28);

  --yin-teal: #2F5D62;
  --yin-teal-tint: #DEE9E8;
  --yin-teal-ink: #0F2C2F;

  --yin-ochre: #A9782F;
  --yin-ochre-tint: #F1E3C6;
  --yin-ochre-ink: #3A2A0C;

  --yin-moss: #4F7350;
  --yin-brick: #A65B4A;
  --yin-brick-tint: #F1DFDA;

  --yin-radius-s: 6px;
  --yin-radius-m: 10px;
  --yin-shadow-card: 0 1px 2px rgba(27, 31, 42, .06), 0 6px 20px -12px rgba(27, 31, 42, .25);
  --yin-font-display: "Fraunces", Georgia, "Times New Roman", serif;
  --yin-font-body: "Karla", "Segoe UI", Helvetica, Arial, sans-serif;
  --yin-font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;

  font-family: var(--yin-font-body);
  color: var(--yin-text);
  font-size: 15px;
  line-height: 1.5;
  max-width: 1180px;
  margin: 0 auto;
}
.yin-locator-wrap *, .yin-locator-wrap *::before, .yin-locator-wrap *::after { box-sizing: border-box; }
.yin-locator-wrap h1, .yin-locator-wrap h2, .yin-locator-wrap h3, .yin-locator-wrap h4 {
  font-family: var(--yin-font-display); font-weight: 600; margin: 0; color: var(--yin-text);
}
.yin-locator-wrap a { color: var(--yin-teal); }
.yin-locator-wrap button { font-family: inherit; }

/* ---------- intro / stats ---------- */
.yin-intro p { color: var(--yin-text-muted); margin: 0 0 16px; }
.yin-intro span[data-yin-stat] { font-family: var(--yin-font-mono); color: var(--yin-text); font-variant-numeric: tabular-nums; }

/* ---------- controls ---------- */
.yin-controls { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; margin-bottom: 10px; }
.yin-search-input {
  flex: 1 1 220px; max-width: 280px; padding: 10px 14px; border-radius: var(--yin-radius-s);
  border: 1px solid var(--yin-border-strong); background: var(--yin-surface-raised); color: var(--yin-text); font-size: 14px;
}
.yin-specialty-filters { margin-bottom: 22px; }
.yin-chip-group { display: flex; flex-wrap: wrap; gap: 7px; }
.yin-chip {
  border: 1px solid var(--yin-border-strong); background: var(--yin-surface-raised); color: var(--yin-text-muted);
  padding: 7px 13px; border-radius: 999px; font-size: 12.5px; font-weight: 600; cursor: pointer;
}
.yin-chip:hover { border-color: var(--yin-text-muted); color: var(--yin-text); }
.yin-chip.yin-is-active { background: var(--yin-text); border-color: var(--yin-text); color: var(--yin-bg); }
.yin-chip.yin-role-chip-therapeut.yin-is-active { background: var(--yin-teal); border-color: var(--yin-teal); color: var(--yin-teal-ink); }
.yin-chip.yin-role-chip-teacher.yin-is-active { background: var(--yin-ochre); border-color: var(--yin-ochre); color: var(--yin-ochre-ink); }

/* ---------- layout ---------- */
.yin-layout { display: grid; grid-template-columns: 1.15fr 1fr; gap: 26px; align-items: start; }
@media (max-width: 880px) { .yin-layout { grid-template-columns: 1fr; } }
.yin-map-col { position: sticky; top: 20px; }
@media (max-width: 880px) { .yin-map-col { position: static; } }

/* ---------- map ---------- */
.yin-map-frame {
  width: 100%; height: 520px; border-radius: var(--yin-radius-m); border: 1px solid var(--yin-border);
  overflow: hidden; box-shadow: var(--yin-shadow-card);
}
@media (max-width: 880px) { .yin-map-frame { height: 380px; } }
.yin-map-frame .leaflet-container { width: 100%; height: 100%; font-family: var(--yin-font-body); background: #DCE6E4; }
.yin-map-caption { font-size: 12px; color: var(--yin-text-muted); margin: 9px 2px 0; font-family: var(--yin-font-mono); }
.yin-legend { display: flex; gap: 16px; flex-wrap: wrap; margin-top: 12px; font-size: 12.5px; color: var(--yin-text-muted); }
.yin-legend span { display: inline-flex; align-items: center; gap: 6px; }
.yin-legend-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.yin-legend-dot.yin-legend-therapeut { background: var(--yin-teal); }
.yin-legend-dot.yin-legend-teacher { background: var(--yin-ochre); }
.yin-legend-dot.yin-legend-both { background: conic-gradient(from 135deg, var(--yin-teal) 0 50%, var(--yin-ochre) 50% 100%); }

.yin-pin-icon { filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .3)); transition: transform .15s ease; }
.yin-pin-icon.yin-pin-active { transform: scale(1.2); }
.yin-map-popover-inner { font-family: var(--yin-font-body); font-size: 12.5px; min-width: 160px; }
.yin-map-popover-inner h4 { font-size: 14px; margin-bottom: 2px; }
.yin-map-popover-inner .yin-card-city { display: block; margin-bottom: 7px; }

/* ---------- directory ---------- */
.yin-directory-list { display: flex; flex-direction: column; gap: 12px; max-height: 560px; overflow-y: auto; padding-right: 4px; }
.yin-card {
  background: var(--yin-surface-raised); border: 1px solid var(--yin-border); border-radius: var(--yin-radius-m);
  padding: 16px 18px; box-shadow: var(--yin-shadow-card); cursor: pointer;
}
.yin-card:hover, .yin-card.yin-is-active { border-color: var(--yin-border-strong); }
.yin-card.yin-is-active { outline: 2px solid var(--yin-teal); outline-offset: -1px; }
.yin-card-top { display: flex; align-items: flex-start; gap: 12px; }
.yin-avatar {
  flex: none; width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-family: var(--yin-font-display); font-weight: 600; font-size: 14px; color: var(--yin-teal-ink); background: var(--yin-teal-tint);
}
.yin-card-heading { flex: 1; min-width: 0; }
.yin-card-heading h3 { font-size: 16.5px; }
.yin-card-city { font-size: 12.5px; color: var(--yin-text-muted); font-family: var(--yin-font-mono); }
.yin-role-badges { display: flex; flex-direction: column; gap: 4px; align-items: flex-end; }
.yin-role-badge { font-size: 10.5px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; padding: 3px 8px; border-radius: 5px; white-space: nowrap; }
.yin-role-badge.yin-role-therapeut { background: var(--yin-teal-tint); color: var(--yin-teal-ink); }
.yin-role-badge.yin-role-teacher { background: var(--yin-ochre-tint); color: var(--yin-ochre-ink); }
.yin-card-bio { font-size: 13.5px; color: var(--yin-text-muted); margin: 10px 0; }
.yin-tag-row { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.yin-tag { font-size: 11px; color: var(--yin-text-muted); background: var(--yin-surface); border: 1px solid var(--yin-border); border-radius: 5px; padding: 3px 7px; }
.yin-card-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.yin-card-contact { font-size: 12.5px; font-family: var(--yin-font-mono); }
.yin-directions-link { display: inline-flex; align-items: center; gap: 4px; font-size: 12.5px; font-weight: 700; color: var(--yin-teal); text-decoration: none; }
.yin-directions-link:hover { text-decoration: underline; }
.yin-empty-state { padding: 40px 16px; text-align: center; color: var(--yin-text-muted); font-size: 14px; }

/* ---------- application form ---------- */
.yin-form-title { margin-bottom: 6px; font-size: 22px; }
.yin-form-intro { color: var(--yin-text-muted); margin: 0 0 18px; max-width: 640px; }
.yin-apply-form { display: flex; flex-direction: column; gap: 20px; max-width: 640px; }
.yin-char-count { align-self: flex-end; font-size: 11px; color: var(--yin-text-muted); font-family: var(--yin-font-mono); }
.yin-field-group { display: flex; flex-direction: column; gap: 6px; }
.yin-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 520px) { .yin-field-row { grid-template-columns: 1fr; } }
.yin-locator-wrap label { font-size: 12.5px; font-weight: 600; color: var(--yin-text-muted); }
.yin-apply-form input[type=text], .yin-apply-form input[type=email], .yin-apply-form input[type=tel],
.yin-apply-form input[type=url], .yin-apply-form select, .yin-apply-form textarea {
  padding: 10px 12px; border-radius: var(--yin-radius-s); border: 1px solid var(--yin-border-strong);
  background: var(--yin-surface-raised); color: var(--yin-text); font-size: 14px; font-family: inherit; width: 100%;
}
.yin-apply-form textarea { resize: vertical; min-height: 84px; }
.yin-fieldset { border: 1px solid var(--yin-border); border-radius: var(--yin-radius-s); padding: 12px 14px; margin: 0; }
.yin-fieldset legend { font-size: 12.5px; font-weight: 600; color: var(--yin-text-muted); padding: 0 4px; }
.yin-check-row { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 6px; }
.yin-check-row label, .yin-check-inline { display: flex; align-items: center; gap: 6px; font-weight: 400; color: var(--yin-text); font-size: 13.5px; }
.yin-hint { font-size: 12px; color: var(--yin-text-muted); }
.yin-required { color: var(--yin-brick); }
.yin-hp-field { position: absolute; left: -9999px; top: -9999px; }

.yin-btn {
  border: 1px solid var(--yin-border-strong); background: var(--yin-surface-raised); color: var(--yin-text);
  padding: 10px 18px; border-radius: var(--yin-radius-s); font-size: 13.5px; font-weight: 700; cursor: pointer;
}
.yin-btn-primary { background: var(--yin-text); color: var(--yin-bg); border-color: var(--yin-text); }
.yin-btn-primary:hover { opacity: .88; }

.yin-form-banner {
  border-radius: var(--yin-radius-s); padding: 12px 14px; font-size: 13.5px;
  background: #E1EADF; color: var(--yin-moss); border: 1px solid var(--yin-moss);
}
.yin-form-error-banner {
  border-radius: var(--yin-radius-s); padding: 12px 14px; font-size: 13.5px;
  background: var(--yin-brick-tint); color: var(--yin-brick); border: 1px solid var(--yin-brick);
}
.yin-form-error-banner ul { margin: 0; padding-left: 18px; }

@media (prefers-reduced-motion: reduce) {
  .yin-locator-wrap * { transition: none !important; animation: none !important; }
}
