/* Revision 10: final polish (convert). Loaded after revision-5.css.
   Book, contact, insurance, areas we serve and the policy pages (page.php).
   Every rule is scoped to one of those pages' body classes.

   1. Areas we serve: the towns as links to Google Maps directions
   2. Areas we serve: the visit row (hours notes, Google card balance)
   3. Book: the two columns end together
   4. Contact lines: 44px tap targets
   5. Policy pages: one-line titles, the current section in the list
   6. Insurance: the hero photograph */


/* --------------------------------------------------------------------------
   1. Areas we serve (archive-elite_area.php, area-card.php). Each tile is a
   link to directions from that town to the office. The office's own town is
   the feature tile. A phone: one row per town, the name never cut. From
   48rem: stacked tiles, three across with the feature two by two; from
   64rem, five across (the feature plus eleven towns fill three full rows).
   -------------------------------------------------------------------------- */
.post-type-archive-elite_area.premium-inner .towns { grid-template-columns: minmax(0, 1fr); gap: 0.5rem; }
.post-type-archive-elite_area.premium-inner .town {
  display: block; grid-template-columns: none; min-width: 0; min-height: 0; padding: 0;
  border: 0; border-radius: 0; background: none; box-shadow: none;
}
.post-type-archive-elite_area.premium-inner .town--home { order: -1; border: 0; background: none; }

.post-type-archive-elite_area.premium-inner .town__link {
  position: relative; display: grid; grid-template-columns: 2.25rem minmax(0, 1fr) auto; align-items: center; column-gap: 0.8rem;
  min-height: 3.5rem; height: 100%; padding: 0.55rem 0.9rem 0.55rem 0.7rem;
  border: 1px solid var(--line-soft, #efedf5); border-radius: 1rem; background: #fff; color: var(--ink);
  box-shadow: 0 1px 0 rgba(26, 18, 54, 0.03); text-decoration: none;
  transition: border-color 0.2s ease, box-shadow 0.25s ease, transform 0.25s cubic-bezier(0.2, 0.7, 0.3, 1);
}
.post-type-archive-elite_area.premium-inner .town__ic {
  grid-row: auto; display: grid; place-items: center; width: 2.25rem; height: 2.25rem; border-radius: 0.7rem;
  background: var(--ortho-tint, #eee9f7); color: var(--ortho); transition: background-color 0.2s ease, color 0.2s ease;
}
.post-type-archive-elite_area.premium-inner .town__ic svg { width: 17px; height: 17px; }
.post-type-archive-elite_area.premium-inner .town__name {
  grid-column: auto; min-width: 0; overflow: visible; color: var(--ink); font-size: 1rem; font-weight: 700; line-height: 1.25;
  letter-spacing: -0.01em; white-space: normal; text-overflow: clip; overflow-wrap: break-word;
}
.post-type-archive-elite_area.premium-inner .town__note { grid-column: 2; margin: 0; }
.post-type-archive-elite_area.premium-inner .town__go {
  display: inline-flex; align-items: center; gap: 0.35rem; color: var(--ortho); font-size: 0.8rem; font-weight: 700; line-height: 1.2; white-space: nowrap;
}
.post-type-archive-elite_area.premium-inner .town__arrow { display: inline-grid; place-items: center; transition: transform 0.25s cubic-bezier(0.2, 0.7, 0.3, 1); }
.post-type-archive-elite_area.premium-inner .town__arrow svg { width: 15px; height: 15px; transform: rotate(-45deg); }

.post-type-archive-elite_area.premium-inner .town__link:hover {
  border-color: color-mix(in srgb, var(--ortho) 32%, #efedf5); box-shadow: 0 18px 36px -26px rgba(26, 18, 54, 0.45); transform: translateY(-2px);
}
.post-type-archive-elite_area.premium-inner .town__link:hover .town__ic { background: var(--ortho); color: #fff; }
.post-type-archive-elite_area.premium-inner .town__link:hover .town__arrow { transform: translate(2px, -2px); }
.post-type-archive-elite_area.premium-inner .town__link:focus-visible { outline: 2px solid var(--ortho); outline-offset: 3px; }

/* The feature tile: the office's town, on the brand purple, with a quiet
   drawn "you are here" pin in rings (decoration, not a map). */
.post-type-archive-elite_area.premium-inner .town--home .town__link {
  display: flex; flex-direction: column; align-items: flex-start; justify-content: space-between; gap: 1.1rem;
  min-height: 11rem; padding: 1.25rem 1.3rem 1.2rem; overflow: hidden; isolation: isolate;
  border-color: transparent; border-radius: 1.25rem; color: #fff;
  background: linear-gradient(150deg, var(--ortho) 0%, var(--ortho-dark, #35206a) 58%, var(--ink, #1a1236) 100%);
  box-shadow: 0 26px 50px -30px rgba(53, 32, 106, 0.75);
}
.post-type-archive-elite_area.premium-inner .town__map {
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(circle at 78% 40%, rgba(58, 236, 241, 0.26) 0, rgba(58, 236, 241, 0) 38%),
    repeating-radial-gradient(circle at 78% 40%, rgba(255, 255, 255, 0) 0 30px, rgba(255, 255, 255, 0.14) 30px 31px);
  -webkit-mask-image: radial-gradient(circle at 78% 40%, #000 0, #000 22%, transparent 60%);
  mask-image: radial-gradient(circle at 78% 40%, #000 0, #000 22%, transparent 60%);
}
.post-type-archive-elite_area.premium-inner .town__pin {
  position: absolute; top: 40%; left: 78%; display: grid; place-items: center; width: 2.9rem; height: 2.9rem;
  border-radius: 999px; background: #fff; color: var(--ortho); transform: translate(-50%, -50%);
  box-shadow: 0 0 0 7px rgba(58, 236, 241, 0.22), 0 12px 26px -8px rgba(18, 12, 38, 0.6);
}
.post-type-archive-elite_area.premium-inner .town__pin svg { width: 22px; height: 22px; }
.post-type-archive-elite_area.premium-inner .town--home .town__tag {
  grid-column: auto; margin: 0; padding: 0.32rem 0.7rem; border-radius: 999px; background: rgba(255, 255, 255, 0.14);
  color: #fff; font-size: 0.66rem; font-weight: 800; letter-spacing: 0.12em; line-height: 1.2; text-transform: uppercase;
}
.post-type-archive-elite_area.premium-inner .town__body { display: grid; gap: 0.2rem; }
.post-type-archive-elite_area.premium-inner .town--home .town__name {
  color: #fff; font-family: var(--display); font-size: clamp(1.7rem, 1.3rem + 1.4vw, 2.3rem); line-height: 1.02; letter-spacing: -0.035em;
}
.post-type-archive-elite_area.premium-inner .town__addr { color: rgba(255, 255, 255, 0.82); font-size: 0.95rem; font-weight: 500; line-height: 1.35; }
.post-type-archive-elite_area.premium-inner .town--home .town__go {
  padding: 0.55rem 0.95rem; border-radius: 999px; background: #fff; color: var(--ortho); font-size: 0.84rem; white-space: normal;
  box-shadow: 0 10px 22px -12px rgba(18, 12, 38, 0.6);
}
.post-type-archive-elite_area.premium-inner .town--home .town__link:hover {
  border-color: transparent; box-shadow: 0 30px 56px -30px rgba(53, 32, 106, 0.85);
}
.post-type-archive-elite_area.premium-inner .town--home .town__link:focus-visible { outline-color: var(--ortho); }

@media (min-width: 48rem) {
  .post-type-archive-elite_area.premium-inner .towns { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.85rem; }
  .post-type-archive-elite_area.premium-inner .town--home { grid-column: span 2; grid-row: span 2; }
  .post-type-archive-elite_area.premium-inner .town__link {
    display: flex; flex-direction: column; align-items: flex-start; gap: 0.55rem; min-height: 8.25rem; padding: 1rem 1.1rem 0.95rem; border-radius: 1.1rem;
  }
  .post-type-archive-elite_area.premium-inner .town__ic { width: 2.5rem; height: 2.5rem; border-radius: 0.8rem; }
  .post-type-archive-elite_area.premium-inner .town__ic svg { width: 19px; height: 19px; }
  .post-type-archive-elite_area.premium-inner .town__name { margin-top: 0.2rem; font-size: 1.06rem; }
  .post-type-archive-elite_area.premium-inner .town__go { margin-top: auto; }
  .post-type-archive-elite_area.premium-inner .town--home .town__link { gap: 1rem; padding: 1.6rem 1.7rem 1.5rem; border-radius: 1.35rem; }
  .post-type-archive-elite_area.premium-inner .town--home .town__go { margin-top: 0; }
  .post-type-archive-elite_area.premium-inner .town__map {
    background:
      radial-gradient(circle at 74% 42%, rgba(58, 236, 241, 0.26) 0, rgba(58, 236, 241, 0) 34%),
      repeating-radial-gradient(circle at 74% 42%, rgba(255, 255, 255, 0) 0 38px, rgba(255, 255, 255, 0.14) 38px 39px);
    -webkit-mask-image: radial-gradient(circle at 74% 42%, #000 0, #000 20%, transparent 58%);
    mask-image: radial-gradient(circle at 74% 42%, #000 0, #000 20%, transparent 58%);
  }
  .post-type-archive-elite_area.premium-inner .town__pin { top: 42%; left: 74%; width: 3.4rem; height: 3.4rem; box-shadow: 0 0 0 9px rgba(58, 236, 241, 0.22), 0 14px 30px -8px rgba(18, 12, 38, 0.6); }
  .post-type-archive-elite_area.premium-inner .town__pin svg { width: 26px; height: 26px; }
}
@media (min-width: 64rem) {
  .post-type-archive-elite_area.premium-inner .towns { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1rem; }
  .post-type-archive-elite_area.premium-inner .town__link { min-height: 8.75rem; padding: 1.1rem 1.2rem 1rem; }
  .post-type-archive-elite_area.premium-inner .town__name { font-size: 1.08rem; }
}
@media (prefers-reduced-motion: reduce) {
  .post-type-archive-elite_area.premium-inner :is(.town__link, .town__arrow) { transition: none; }
  .post-type-archive-elite_area.premium-inner .town__link:hover { transform: none; }
}


/* --------------------------------------------------------------------------
   2. Areas we serve, the visit row: the hours card carries the same two notes
   as the contact and booking pages. In the Google card the rating sits in
   the middle of the free space and the link follows the address, so the
   card has no hole between its address and its link.
   -------------------------------------------------------------------------- */
.post-type-archive-elite_area.premium-inner .visit-hnotes {
  display: grid; gap: 0.35rem; align-self: stretch; margin: 0; padding: 0.85rem 0 0; border-top: 1px solid var(--line-soft, #efedf5);
  list-style: none; color: var(--body); font-size: 0.84rem; line-height: 1.45;
}
.post-type-archive-elite_area.premium-inner .visit-hnotes li { position: relative; margin: 0; padding-left: 0.9rem; }
.post-type-archive-elite_area.premium-inner .visit-hnotes li::before {
  content: ""; position: absolute; top: 0.58em; left: 0; width: 0.32rem; height: 0.32rem; border-radius: 999px; background: #c9c2d6;
}
.post-type-archive-elite_area.premium-inner .visit-card--google .gbadge__score { margin-top: auto; }
.post-type-archive-elite_area.premium-inner .visit-card--google .gbadge__count { margin-bottom: auto; }
.post-type-archive-elite_area.premium-inner .visit-card--google .gbadge__cta { margin-top: 0; }
@media (min-width: 48rem) {
  .post-type-archive-elite_area.premium-inner .visit-card--google .gbadge__num { font-size: clamp(2.6rem, 1.6rem + 2vw, 3.4rem); line-height: 1; letter-spacing: -0.04em; }
}


/* --------------------------------------------------------------------------
   3. Book, from 80rem (two columns): the office card runs the full height of
   the booking card. Its photograph takes the extra height, so both columns
   end on one line without a gap inside either card. (The office card is
   taller than a laptop screen, so a sticky card would hide its lower half.)
   -------------------------------------------------------------------------- */
@media (min-width: 80rem) {
  .page-template-template-booking .bk__grid { align-items: stretch; }
  .page-template-template-booking .bk-card { align-content: start; }
  .page-template-template-booking .bk-aside { display: flex; flex-direction: column; }
  .page-template-template-booking .bk-place { display: flex; flex: 1 1 auto; flex-direction: column; }
  .page-template-template-booking .bk-aside .bk-place__photo { flex: 1 0 auto; }
  .page-template-template-booking .bk-place__body { flex: 0 0 auto; }
}


/* --------------------------------------------------------------------------
   4. The phone and email links in the contact lines are 44px tall, as a
   phone visitor's tap target. A negative block margin keeps the rows at
   their drawn height.
   -------------------------------------------------------------------------- */
:is(.page-template-template-booking, .page-template-template-contact) .cdet__lines a {
  display: inline-flex; align-items: center; min-height: 44px; margin-block: -0.3rem;
}
.post-type-archive-elite_area.premium-inner .visit-lines > div { min-height: 44px; }
.post-type-archive-elite_area.premium-inner .visit-lines a { display: inline-flex; align-items: center; min-height: 44px; }
.page-template-default.premium-inner .policy-contact .loc-lines__list a {
  display: inline-flex; align-items: center; min-height: 44px; margin-block: -0.55rem;
}


/* --------------------------------------------------------------------------
   5. Policy pages (page.php). The compact hero's title runs on one line on
   a desktop, so the three pages open at one height. The "On this page" list
   marks the section being read (assets/js/site.js).
   -------------------------------------------------------------------------- */
.page-template-default.premium-inner .ihero--compact .ihero__copy h1 { max-width: 24ch; }
/* Every section lands just under the header when its link is followed
   (html's scroll-padding clears the header). The shared #questions offset
   is for the treatment pages' section nav, not this list. */
.page-template-default.premium-inner .policy-col :is(h2[id], #questions, #policy-contact) { scroll-margin-top: 1.25rem; }
@media (min-width: 64rem) {
  .page-template-default.premium-inner .ihero--compact .ihero__copy .lede { max-width: 60ch; }
}
@media (min-width: 64rem) {
  .page-template-default.premium-inner .policy-toc a.is-current { border-left-color: var(--ortho); color: var(--ink); }
  .page-template-default.premium-inner .policy-toc a.is-current:hover { color: var(--ortho); }
}


/* --------------------------------------------------------------------------
   6. Insurance: the hero is a real Elite treatment room. The crop keeps both
   team members and the child in the chair inside the arch at every width.
   -------------------------------------------------------------------------- */
.page-template-template-insurance.premium-inner .ihero__visual .ihero__art img { object-position: 46% 38%; }

/* ------------------------------------------------ Final QA (revision 10) */
/* WM1: below desktop the booking trust card carries the business name and address. */
@media (max-width: 63.99rem) {
  .page-template-template-booking .bk-trust .gbadge__biz { display: flex; grid-column: 1 / -1; }
}
/* G6: the ink directions button with its pin. */
.page-template-template-contact .contact-map__btn { display: inline-flex; align-items: center; gap: 0.5rem; }
.page-template-template-booking .bk-place__privacy { margin-top: 0.75rem; }
