/* ============================================================
   Provider Portal — profile (trust signals + travel-rule map)
   ============================================================ */
.profile-head { margin-top: var(--ha-space-4); }
.profile-intro {
  font-size: var(--ha-fs-small);
  color: var(--ha-ink-muted);
  margin: var(--ha-space-1) 0 0;
}
/* Lead line under the page title reads as the storefront pitch — a touch larger
   and roomier than a plain hint. */
.profile-lead {
  font-size: var(--ha-fs-body);
  line-height: var(--ha-lh-body);
  margin-top: var(--ha-space-2);
  max-width: 52ch;
}

/* Quiet info callout (not loud gold): accent-tint surface + primary navy text,
   icon paired with its text. */
.profile-nudge {
  margin-top: var(--ha-space-5);
  padding: var(--ha-space-3) var(--ha-space-4);
  border-radius: var(--ha-radius-md);
  background: var(--ha-portal-accent-tint);
  color: var(--ha-blue-primary);
  font-size: var(--ha-fs-small);
  display: flex;
  align-items: flex-start;
  gap: var(--ha-space-2);
}
.profile-nudge svg {
  width: 18px;
  height: 18px;
  flex: none;
  color: var(--ha-blue-accent);
  margin-top: 1px;
}

/* Sections sit apart with generous rhythm and a calm hairline between them. */
.trust-section {
  padding-bottom: var(--ha-space-6);
  margin-bottom: var(--ha-space-6);
  border-bottom: 1px solid var(--ha-border-strong);
}
.trust-section:last-child {
  padding-bottom: 0;
  margin-bottom: 0;
  border-bottom: 0;
}
.trust-section > h3 {
  font-size: var(--ha-fs-body-lg);
  line-height: var(--ha-lh-body-lg);
  font-weight: var(--ha-weight-bold);
  color: var(--ha-blue-primary);
  margin: 0 0 var(--ha-space-4);
}
/* An intro line inside a section (e.g. the travel-rule lede). */
.trust-section > .profile-intro { margin: calc(-1 * var(--ha-space-2)) 0 var(--ha-space-4); }

/* Honest insurance/license status row. Color is always paired with a label. */
.trust-status {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: var(--ha-space-2);
  margin: 0 0 var(--ha-space-4);
  padding: 0;
}
.trust-status-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px var(--ha-space-3);
  border-radius: var(--ha-radius-pill);
  font-size: var(--ha-fs-caption);
  font-weight: var(--ha-weight-medium);
}
.trust-status-item svg { width: 15px; height: 15px; flex: none; }
/* Verified = real COI boolean, so the teal affirmation is honest here. */
.trust-status-item.is-verified {
  background: var(--ha-portal-won-tint);
  color: var(--ha-success);
}
/* "On file" = a license number is present; we do NOT imply verification. */
.trust-status-item.is-on-file {
  background: var(--ha-portal-hover);
  color: var(--ha-blue-primary);
}

.field { margin-bottom: var(--ha-space-4); }
.field > label {
  display: block;
  font-size: var(--ha-fs-small);
  color: var(--ha-blue-primary);
  font-weight: var(--ha-weight-medium);
  margin-bottom: 6px;
}
.field input[type="text"],
.field input[type="number"],
.field input[type="date"] {
  width: 100%;
  height: 46px;
  border: 1px solid var(--ha-border);
  border-radius: var(--ha-radius-md);
  padding: 0 14px;
  font: inherit;
  font-size: var(--ha-fs-body);
  color: var(--ha-blue-primary);
  outline: none;
}
.field input:focus { border-color: var(--ha-blue-accent); box-shadow: var(--ha-portal-focus); }
.field .hint { font-size: var(--ha-fs-caption); color: var(--ha-ink-muted); margin: 6px 0 0; }
/* Affirmative hint (e.g. years in business) — same scale, a steadier ink. */
.field .hint-affirm { color: var(--ha-blue-primary); }

/* File inputs are unstyled by browsers and overrun the row on mobile with long
   filenames; constrain them and give the picker button a quiet pill. */
.field input[type="file"] {
  display: block;
  width: 100%;
  max-width: 100%;
  font: inherit;
  font-size: var(--ha-fs-small);
  color: var(--ha-ink-muted);
}
.field input[type="file"]::file-selector-button {
  margin-right: var(--ha-space-3);
  padding: 8px 16px;
  border: 1px solid var(--ha-border);
  border-radius: var(--ha-radius-pill);
  background: var(--ha-surface);
  color: var(--ha-blue-primary);
  font: inherit;
  font-size: var(--ha-fs-small);
  font-weight: var(--ha-weight-medium);
  cursor: pointer;
}
.field input[type="file"]::file-selector-button:hover { background: var(--ha-portal-hover); }

/* Comfortable hit area on checkbox rows; the box itself is a touch larger. */
.field-checkbox {
  display: flex;
  align-items: flex-start;
  gap: var(--ha-space-2);
  font-size: var(--ha-fs-small);
  line-height: var(--ha-lh-small);
  margin-bottom: var(--ha-space-3);
  min-height: 44px;
  padding: var(--ha-space-1) 0;
  cursor: pointer;
}
.field-checkbox input[type="checkbox"],
.check-grid input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--ha-blue-accent);
  flex: none;
}
.field-checkbox input[type="checkbox"] { margin-top: 1px; }
.check-grid {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ha-space-2) var(--ha-space-4);
  font-size: var(--ha-fs-small);
}
.check-grid label {
  display: inline-flex;
  align-items: center;
  gap: var(--ha-space-2);
  min-height: 44px;
  cursor: pointer;
}

.twocol { display: grid; grid-template-columns: 1fr 1fr; gap: var(--ha-space-3) var(--ha-space-4); }

/* Travel-rule map */
.map-shell {
  position: relative;
  height: 240px;
  border-radius: var(--ha-radius-md);
  overflow: hidden;
  border: 1px solid var(--ha-border);
  background:
    repeating-linear-gradient(0deg, var(--ha-surface-subtle) 0 23px, var(--ha-border-strong) 23px 24px),
    repeating-linear-gradient(90deg, var(--ha-surface-subtle) 0 23px, var(--ha-border-strong) 23px 24px);
  touch-action: none;
}
.map-shell .leaflet-container { height: 100%; width: 100%; background: transparent; }

/* SVG fallback rings + pin (used when Leaflet/tiles are unavailable) */
.map-fallback { position: absolute; inset: 0; }
.map-ring {
  position: absolute;
  border-radius: 50%;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
}
.map-ring.outer {
  width: 200px;
  height: 200px;
  background: var(--ha-ring-outer);
  border: 1px solid var(--ha-ring-outer-edge);
}
.map-ring.inner {
  width: 104px;
  height: 104px;
  background: var(--ha-ring-inner);
  border: 1px solid var(--ha-ring-inner-edge);
}
.map-pin {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -100%);
  color: var(--ha-blue-primary);
  cursor: grab;
}
.map-pin:active { cursor: grabbing; }
.map-pin svg { width: 30px; height: 30px; filter: drop-shadow(0 2px 3px var(--ha-ring-outer-edge)); }

/* Leaflet divIcon pin (no external marker PNG) */
.portal-map-pin { color: var(--ha-blue-primary); }
.portal-map-pin svg { width: 30px; height: 30px; filter: drop-shadow(0 2px 3px var(--ha-ring-outer-edge)); }

.map-help { font-size: var(--ha-fs-caption); color: var(--ha-ink-muted); margin: var(--ha-space-2) 0 0; }
.map-status { font-size: var(--ha-fs-caption); margin: var(--ha-space-2) 0 0; }
.map-status[data-state="geocoding"] { color: var(--ha-ink-muted); }
/* A failed lookup is NOT an error — the manual lat/lng below always work. Calm,
   reassuring neutral surface with primary ink, never danger red. */
.map-status[data-state="geocode-failed"] {
  color: var(--ha-blue-primary);
  background: var(--ha-surface-subtle);
  padding: var(--ha-space-2) var(--ha-space-3);
  border-radius: var(--ha-radius-md);
}
.map-status[data-state="no-pin"] { color: var(--ha-ink-muted); }
.map-status[data-state="pin-set"] { color: var(--ha-success); }

.ring-legend {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ha-space-4);
  margin-top: var(--ha-space-3);
  font-size: var(--ha-fs-caption);
}
.ring-legend .key { display: inline-flex; align-items: center; gap: 6px; }
.legend-sw { width: 12px; height: 12px; border-radius: 3px; flex: none; }
.legend-sw.inner { background: var(--ha-ring-inner); border: 1px solid var(--ha-ring-inner-edge); }
.legend-sw.outer { background: var(--ha-ring-outer); border: 1px solid var(--ha-ring-outer-edge); }

.profile-submit { margin-top: var(--ha-space-5); }
.profile-back { display: inline-block; margin-top: var(--ha-space-5); color: var(--ha-blue-text); }

/* Link-expired surface (warm, centered) */
.link-expired {
  max-width: 440px;
  margin: var(--ha-space-16) auto 0;
  text-align: center;
  padding: 0 var(--ha-space-4);
}
.link-expired h1 {
  font-size: var(--ha-fs-h3);
  line-height: var(--ha-lh-h3);
  font-weight: var(--ha-weight-bold);
}
.link-expired p { color: var(--ha-ink-muted); margin-top: var(--ha-space-2); }
