/* =========================================================== */
/* The Tooth Place - subpages + page transitions                */
/* Loads after ttp-site.css. Same tokens, same matte rules      */
/* (no glow, blur, text-shadow; the one shadow token only on    */
/* framed objects). Each subpage extends its homepage section   */
/* with a new composition (plan 21/22):                          */
/*   1 router      2 page intro (.ttp-phead)                     */
/*   3 /meet-dr-jimenez   4 /services   5 /your-first-visit      */
/*   6 /book              7 shared closers                       */
/* =========================================================== */

/* ================= 1. ROUTER (plan 19) ================= */
/* loading: a 3px gold rule under the header, 630ms indeterminate slide */
.ag-header::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 3px;
  background: var(--gold); transform-origin: 0 50%; transform: scaleX(0); opacity: 0; pointer-events: none;
}
html.is-route-loading .ag-header::after { opacity: 1; animation: ttp-route-bar 630ms var(--ease-soft) infinite; }
@keyframes ttp-route-bar {
  0% { transform: translateX(0) scaleX(0); }
  50% { transform: translateX(0) scaleX(0.63); }
  100% { transform: translateX(100%) scaleX(0.21); }
}
html.motion-off.is-route-loading .ag-header::after { animation: none; transform: scaleX(1); }
/* on-screen reveals of the incoming page arrive with the slide (no second rise) */
.ttp-route-settle .reveal, .ttp-route-settle .reveal-stagger > *, .ttp-route-settle .ttp-arc { transition: none !important; }
main.ttp-route-out { overflow: hidden; }
html.is-routing, html.is-routing body { overflow-x: clip; }
[aria-busy="true"].ag-button, a[aria-busy="true"] { cursor: progress; }

/* ================= 2. PAGE INTRO ================= */
.ttp-phead { position: relative; padding: calc(var(--header-h) + 42px) 0 63px; background: var(--cream); }
.ttp-phead__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 42px; align-items: center; }
.ttp-phead__copy { min-width: 0; }
.ttp-phead__title {
  font-size: clamp(2.25rem, 1.8rem + 2vw, 3.5rem); font-weight: 600; line-height: var(--lh-tight);
  letter-spacing: var(--tr-head); max-width: 15em; text-wrap: balance;
}
.ttp-phead__role { margin-top: 14px; font-family: var(--font-display); font-weight: 500; font-size: var(--fs-lead); line-height: var(--lh-head); color: var(--charcoal-soft); }
.ttp-phead__lead { margin-top: 21px; font-size: var(--fs-lead); line-height: var(--lh-ui); color: var(--charcoal-soft); max-width: 44ch; }
.ttp-phead__orient { margin-top: 14px; color: var(--charcoal-soft); max-width: 52ch; }
.ttp-phead__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.ttp-phead__arc { width: 70px; margin-bottom: 14px; }
@media (min-width: 900px) {
  .ttp-phead { padding: calc(var(--header-h) + 63px) 0 84px; }
  .ttp-phead__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 21px; }
  .ttp-phead__copy { grid-column: 1 / span 7; }
  .ttp-phead__grid > :not(.ttp-phead__copy) { grid-column: 8 / -1; }
}

/* ================= 3. /meet-dr-jimenez ================= */
/* intro: portrait in the hero's matte frame, a desk card pinned to it like the hero's plate */
.ttp-phead--dentist { background: radial-gradient(700px 700px at 76% 30%, rgba(156, 175, 136, 0.09), rgba(156, 175, 136, 0)) no-repeat, var(--cream); }
.ttp-phead__portrait { position: relative; margin: 0; width: 100%; max-width: 462px; justify-self: center; }
.ttp-phead__frame { padding: 12px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-21); box-shadow: var(--shadow-1); }
.ttp-phead__frame img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 9px; background: var(--cream-deep); }
.ttp-phead__card { position: relative; margin: -42px 14px 0 auto; width: max-content; max-width: min(280px, 82%); box-shadow: none; border-color: var(--line-strong); }
.ttp-phead__card .ttp-card__note { font-size: var(--fs-14); }
.ttp-phead__card .ttp-card__note, .ttp-record .ttp-card__note, .ttp-eggs .ttp-card__note { contain: none; }   /* the homepage desk's one-row rule does not apply here */
@media (min-width: 900px) {
  .ttp-phead--dentist .ttp-phead__copy { grid-column: 1 / span 6; }
  .ttp-phead--dentist .ttp-phead__portrait { grid-column: 7 / -1; max-width: 546px; justify-self: end; }
  .ttp-phead__frame { padding: 21px; border-radius: var(--r-28); }
  .ttp-phead__frame img { border-radius: var(--r-7); }
  .ttp-phead__card { position: absolute; left: -42px; bottom: 42px; margin: 0; width: 231px; max-width: none; }
}

/* the bio + the record, on the desk surface */
.ttp-bio { background: var(--cream-deep); padding-block: var(--section-y); }
.ttp-bio__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 63px; }
.ttp-bio__text { min-width: 0; }
.ttp-bio__prose { margin-top: 28px; display: grid; gap: 14px; max-width: 63ch; color: var(--charcoal-soft); }
.ttp-bio__first { font-size: var(--fs-lead); line-height: var(--lh-ui); color: var(--ink); }
.ttp-bio__meta { margin-top: 42px; max-width: 63ch; }
@media (min-width: 600px) { .ttp-bio__meta { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 21px; } }
.ttp-record__label {
  font-family: var(--font-body); font-size: var(--fs-12); font-weight: 600; letter-spacing: var(--tr-eyebrow);
  text-transform: uppercase; color: var(--charcoal-soft); margin-bottom: 21px;
}
/* desk cards as a timeline: one hairline spine, a gold tab per card */
.ttp-record__list { position: relative; display: grid; gap: 14px; padding-left: 28px; }
.ttp-record__list::before { content: ""; position: absolute; left: 6px; top: 21px; bottom: 21px; width: 1px; background: var(--line-strong); }
.ttp-record__item { position: relative; }
.ttp-record__item::after { content: ""; position: absolute; left: -26px; top: 21px; width: 7px; height: 7px; border-radius: 50%; background: var(--gold); }
.ttp-record__item .ttp-card__note { font-size: var(--fs-16); }
@media (min-width: 1024px) {
  .ttp-bio__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 21px; }
  .ttp-bio__text { grid-column: 1 / span 7; }
  .ttp-record { grid-column: 9 / -1; align-self: start; position: sticky; top: calc(var(--header-h) + 42px); padding-top: 7px; }
}

/* in his words: the full quote on charcoal */
.ttp-words { background: var(--charcoal); color: var(--cream); padding-block: var(--section-y); }
.ttp-words__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.ttp-words__who { display: flex; align-items: center; gap: 14px; }
.ttp-words__face { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 1px var(--gold); flex: none; }
.ttp-words__who p { display: flex; flex-direction: column; gap: 3px; }
.ttp-words__name { font-family: var(--font-display); font-weight: 600; font-size: var(--fs-16); color: var(--cream); line-height: var(--lh-head); }
.ttp-words__role { font-size: var(--fs-14); color: var(--text-on-ink-soft); line-height: var(--lh-head); }
.ttp-words__quote { margin: 0; padding-left: 21px; border-left: 3px solid var(--gold); display: grid; gap: 28px; }
.ttp-words__quote p {
  font-family: var(--font-display); font-weight: 400; font-size: clamp(1.3125rem, 1.15rem + 0.75vw, 1.875rem);
  line-height: 1.38; letter-spacing: -0.006em; color: var(--cream); max-width: 34em;
}
.ttp-words__key { font-weight: 700; color: var(--sage-soft); }
@media (min-width: 1024px) {
  .ttp-words__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 21px; }
  .ttp-words__side { grid-column: 1 / span 3; align-self: start; }
  .ttp-words__who { margin-top: 42px; flex-direction: column; align-items: flex-start; }
  .ttp-words__face { width: 84px; height: 84px; }
  .ttp-words__quote { grid-column: 4 / -1; padding-left: 42px; }
}

/* good to know: the easter eggs */
.ttp-eggs { background: var(--paper); padding-block: var(--section-y); }
.ttp-eggs__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 21px; }
.ttp-eggs__head { margin-bottom: 21px; }
.ttp-eggs__joke { padding: 28px; display: flex; flex-direction: column; align-items: flex-start; }
.ttp-eggs__joke .ttp-card__icon { width: 28px; height: 28px; margin: 0 0 14px; }
.ttp-eggs__line {
  margin-top: 12px; font-family: var(--font-display); font-weight: 500; font-size: clamp(1.5rem, 1.2857rem + 0.9796vw, 2.1875rem);
  line-height: 1.2; letter-spacing: var(--tr-sub); color: var(--ink); max-width: 18em; text-wrap: balance;
}
.ttp-eggs__joke .ttp-textlink { margin-top: 21px; }
.ttp-eggs__pair { display: grid; gap: 21px; }
@media (min-width: 600px) { .ttp-eggs__pair { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) {
  .ttp-eggs__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 21px; row-gap: 0; align-items: stretch; }
  .ttp-eggs__head { grid-column: 1 / span 8; margin-bottom: 42px; }
  .ttp-eggs__joke { grid-column: 1 / span 7; padding: 42px; justify-content: space-between; }
  .ttp-eggs__pair { grid-column: 8 / -1; grid-template-columns: minmax(0, 1fr); }
}

/* ================= 4. /services ================= */
/* intro aside: the insurance reassurance, a paper card */
.ttp-cover { min-width: 0; padding: 28px 21px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-21); }
.ttp-cover__title { font-size: var(--fs-h3); line-height: var(--lh-head); letter-spacing: 0; }
.ttp-cover__cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 21px; margin-top: 21px; }
.ttp-cover__k { font-family: var(--font-body); font-size: var(--fs-12); font-weight: 600; letter-spacing: var(--tr-eyebrow); text-transform: uppercase; color: var(--charcoal-soft); margin-bottom: 6px; }
.ttp-cover__list li { font-family: var(--font-display); font-weight: 500; font-size: var(--fs-16); color: var(--ink); padding: 9px 0; border-bottom: 1px solid var(--line); line-height: var(--lh-head); }
.ttp-cover__list li:last-child { border-bottom: 0; }
.ttp-cover__note { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line-strong); font-size: var(--fs-14); color: var(--charcoal-soft); line-height: var(--lh-ui); }
@media (min-width: 480px) { .ttp-cover__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 900px) { .ttp-cover { padding: 28px; align-self: end; } }

/* the explorer at full height: sticky index + every service open */
.ttp-svcx-sec { background: var(--cream); padding: 0 0 var(--section-y); }
.ttp-svcx { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.ttp-svcx__index { padding: 14px; background: var(--cream-soft); border: 1px solid var(--line); border-radius: var(--r-21); }
.ttp-svcx__index-k { font-size: var(--fs-12); font-weight: 600; letter-spacing: var(--tr-eyebrow); text-transform: uppercase; color: var(--charcoal-soft); padding: 7px 9px 9px; }
.ttp-svcx__links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3px; }
.ttp-svcx__link {
  display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; column-gap: 9px;
  min-height: var(--touch); padding: 7px 9px; border-radius: var(--r-7);
  font-family: var(--font-display); font-weight: 500; font-size: var(--fs-14); line-height: var(--lh-head); color: var(--charcoal);
  transition: background-color var(--duration-quick) var(--ease-soft), color var(--duration-quick) var(--ease-soft);
}
.ttp-svcx__link .icon { display: none; color: var(--sage-deep); width: 28px; height: 28px; --ink-boost: 0.8px; }  /* pass 7: 28px, the wide dental icons are mush at 21-24 */
.ttp-svcx__num { font-family: var(--font-body); font-size: var(--fs-12); font-weight: 600; letter-spacing: 0.06em; color: var(--charcoal-soft); }
.ttp-svcx__link[aria-current="true"] { background: var(--surface-tint); box-shadow: inset 3px 0 0 var(--sage-deep); color: var(--ink); font-weight: 600; }
.ttp-svcx__link:focus-visible { outline-offset: -3px; }
@media (hover: hover) { .ttp-svcx__link:hover { background: var(--surface-tint); color: var(--ink); } }

.ttp-svcx__list { min-width: 0; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-21); box-shadow: var(--shadow-1); overflow: hidden; }
.ttp-svcx__item {
  display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; padding: 42px 21px;
  scroll-margin-top: calc(var(--header-h) + 21px);
  transition: box-shadow var(--duration-quick) var(--ease-soft), background-color var(--duration-quick) var(--ease-soft);
}
.ttp-svcx__item + .ttp-svcx__item { border-top: 1px solid var(--line-strong); }
.ttp-svcx__item.is-current, .ttp-svcx__item:target { box-shadow: inset 3px 0 0 var(--sage-deep); }
.ttp-svcx__main { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; }
.ttp-svcx__top { display: flex; align-items: flex-end; gap: 21px; }
.ttp-svcx__icon { width: 63px; height: 63px; }
.ttp-svcx__icon .icon { width: 28px; height: 28px; --ink-boost: 0.7px; }
.ttp-svcx__n { font-family: var(--font-display); font-weight: 300; font-size: var(--fs-num); line-height: 0.84; letter-spacing: var(--tr-head); color: var(--sage-deep); }
.ttp-svcx__tag { margin-top: 21px; font-size: var(--fs-12); font-weight: 600; letter-spacing: var(--tr-eyebrow); text-transform: uppercase; color: var(--charcoal-soft); line-height: 1.2; }
.ttp-svcx__title { margin-top: 12px; font-size: var(--fs-h2); line-height: var(--lh-tight); letter-spacing: var(--tr-sub); }
.ttp-svcx__tag + .ttp-svcx__title { margin-top: 9px; }
.ttp-svcx__top + .ttp-svcx__title { margin-top: 21px; }
.ttp-svcx__desc { margin-top: 14px; font-size: var(--fs-lead); line-height: var(--lh-ui); color: var(--charcoal-soft); max-width: 42ch; }
.ttp-svcx__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 9px 21px; margin-top: 28px; }
.ttp-svcx__note { align-self: start; padding: 21px; background: var(--cream-soft); border: 1px solid var(--line); border-radius: var(--r-14); }
.ttp-svcx__note-k { font-size: var(--fs-12); font-weight: 600; letter-spacing: var(--tr-eyebrow); text-transform: uppercase; color: var(--charcoal-soft); line-height: 1.2; }
.ttp-svcx__note-t { margin-top: 9px; font-size: 1.125rem; line-height: var(--lh-head); }
.ttp-svcx__note p:last-child { margin-top: 9px; color: var(--charcoal-soft); font-size: var(--fs-16); line-height: var(--lh-ui); }
@media (min-width: 600px) { .ttp-svcx__item { padding: 42px; } .ttp-svcx__link .icon { display: block; } .ttp-svcx__link { grid-template-columns: auto auto minmax(0, 1fr); } }
@media (min-width: 1024px) {
  .ttp-svcx { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 21px; align-items: start; }
  .ttp-svcx__index { grid-column: 1 / span 4; position: sticky; top: calc(var(--header-h) + 21px); padding: 21px; }
  .ttp-svcx__links { grid-template-columns: minmax(0, 1fr); }
  .ttp-svcx__link { font-size: 1.125rem; padding: 9px 14px; }
  .ttp-svcx__list { grid-column: 5 / -1; }
  .ttp-svcx__item { padding: 63px; }
}
@media (min-width: 1200px) {
  .ttp-svcx__item { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: 42px; align-items: start; }
  .ttp-svcx__note { margin-top: 84px; }
}

/* ================= 5. /your-first-visit ================= */
.ttp-before { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 28px 21px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-21); }
.ttp-before__k { margin-top: 7px; font-size: var(--fs-h3); line-height: var(--lh-head); letter-spacing: 0; }
.ttp-before__line { font-size: var(--fs-lead); line-height: var(--lh-ui); color: var(--ink); }
.ttp-before__facts { display: grid; gap: 9px; margin-top: 9px; padding-top: 14px; border-top: 1px solid var(--line); width: 100%; }
.ttp-before__facts li { display: flex; align-items: flex-start; gap: 9px; font-size: var(--fs-14); font-weight: 500; color: var(--charcoal-soft); line-height: var(--lh-ui); }
.ttp-before__facts .icon { width: 18px; height: 18px; color: var(--sage-deep); margin-top: 2px; }
.ttp-before__facts a { text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
@media (min-width: 900px) { .ttp-before { padding: 28px; } }

/* the sequence: numerals on one hairline, the approved answer running through it */
.ttp-steps { background: var(--paper); padding-block: var(--section-y); }
.ttp-steps__list { margin-top: 42px; display: grid; grid-template-columns: minmax(0, 1fr); counter-reset: none; }
.ttp-steps__item { display: grid; grid-template-columns: 63px minmax(0, 1fr); column-gap: 14px; padding: 28px 0; border-top: 1px solid var(--line-strong); }
.ttp-steps__num { grid-row: 1 / span 2; font-family: var(--font-display); font-weight: 300; font-size: var(--fs-num); line-height: 0.84; letter-spacing: var(--tr-head); color: var(--sage-deep); padding-top: 6px; }
.ttp-steps__k { font-size: var(--fs-12); font-weight: 600; letter-spacing: var(--tr-eyebrow); text-transform: uppercase; color: var(--charcoal-soft); line-height: 1.5; }
.ttp-steps__t { margin-top: 7px; font-family: var(--font-display); font-weight: 500; font-size: var(--fs-h3); line-height: 1.3; color: var(--ink); max-width: 24em; }
.ttp-steps__close { margin-top: 28px; padding-top: 28px; border-top: 1px solid var(--line-strong); color: var(--charcoal-soft); max-width: 63ch; }
.ttp-steps__close strong { display: block; font-family: var(--font-display); font-size: var(--fs-h3); line-height: var(--lh-head); margin-bottom: 9px; }
@media (min-width: 1024px) {
  .ttp-steps__list { grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: 28px; margin-top: 63px; border-top: 1px solid var(--line-strong); }
  .ttp-steps__item { grid-template-columns: minmax(0, 1fr); align-content: start; border-top: 0; padding: 0; position: relative; }
  .ttp-steps__item::before { content: ""; position: absolute; top: -4px; left: 0; width: 7px; height: 7px; border-radius: 50%; background: var(--gold); }
  .ttp-steps__num { grid-row: auto; padding-top: 28px; margin-bottom: 21px; }
  .ttp-steps__close { margin-top: 63px; padding-top: 0; border-top: 0; max-width: none; display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); column-gap: 21px; }
  .ttp-steps__close strong { grid-column: 1; margin: 0; }
  .ttp-steps__close span { grid-column: 2; max-width: 52ch; font-size: var(--fs-lead); line-height: var(--lh-ui); }
}

/* if you're nervous: the recognition statement, on cream, without the portrait overlap room */
.ttp-calm { background: var(--cream); }
@media (min-width: 768px) { .ttp-calm { padding-bottom: var(--section-y); } }

/* insurance ledger (dark) */
.ttp-ledger { background: var(--charcoal); color: var(--cream); padding-block: var(--section-y); scroll-margin-top: var(--header-h); }
.ttp-ledger .ttp-h2 { color: var(--cream); }
.ttp-ledger .ttp-em { color: var(--sage-soft); }
.ttp-ledger .ttp-lead { color: var(--text-on-ink-soft); }
.ttp-ledger__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 42px; }
.ttp-ledger__cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 42px; }
.ttp-ledger__k { display: flex; align-items: center; gap: 12px; font-size: var(--fs-h3); color: var(--cream); padding-bottom: 14px; border-bottom: 1px solid var(--gold); }
.ttp-ledger__k .icon { color: var(--gold); }
.ttp-ledger__list li {
  font-family: var(--font-display); font-weight: 500; font-size: var(--fs-lead); line-height: var(--lh-head); color: var(--cream);
  padding: 14px 0; border-bottom: 1px solid var(--line-on-ink-strong);
}
.ttp-ledger__note { color: var(--text-on-ink-soft); font-size: var(--fs-lead); line-height: var(--lh-ui); max-width: 52ch; }
@media (min-width: 600px) { .ttp-ledger__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 28px; } }
@media (min-width: 1024px) {
  .ttp-ledger__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 21px; row-gap: 63px; }
  .ttp-ledger__head { grid-column: 1 / span 5; }
  .ttp-ledger__cols { grid-column: 7 / -1; column-gap: 42px; padding-top: 7px; }
  .ttp-ledger__note { grid-column: 7 / -1; }
}

/* all seven FAQs, open: the FAQ's hairline rhythm */
.ttp-faqs__list { border-top: 1px solid var(--line-strong); }
.ttp-faqs__item { padding: 28px 0; border-bottom: 1px solid var(--line-strong); scroll-margin-top: calc(var(--header-h) + 21px); }
.ttp-faqs__q { display: grid; grid-template-columns: 35px minmax(0, 1fr); align-items: baseline; font-size: 1.3125rem; font-weight: 600; line-height: var(--lh-head); letter-spacing: 0; }
.ttp-faqs__n { font-family: var(--font-body); font-size: var(--fs-12); font-weight: 600; letter-spacing: 0.06em; color: var(--charcoal-soft); }  /* AUDIT: sage-deep at 12px was 3.8:1 */
.ttp-faqs__item p { margin: 12px 0 0 35px; color: var(--charcoal-soft); max-width: 63ch; }
.ttp-faqs__item:target .ttp-faqs__q { color: var(--sage-deep); }
@media (min-width: 1024px) { .ttp-faqs__list { grid-column: 6 / -1; } }
@media (max-width: 480px) { .ttp-faqs__q { grid-template-columns: 28px minmax(0, 1fr); } .ttp-faqs__item p { margin-left: 28px; } }

/* ================= 6. /book ================= */
.ttp-phead--book { background: var(--cream-warm); padding-bottom: 42px; }
.ttp-phead--book .ttp-phead__copy { grid-column: 1 / -1; }
.ttp-phead--book .ttp-phead__title { max-width: 13em; }
.ttp-bookpg { background: var(--cream-warm); padding: 0 0 var(--section-y); scroll-margin-top: var(--header-h); }
.ttp-bookpg__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.ttp-visit { min-width: 0; padding: 28px 21px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-21); }
.ttp-visit__title { font-size: var(--fs-h3); line-height: var(--lh-head); letter-spacing: 0; }
.ttp-visit__list { margin-top: 21px; }
.ttp-visit__paper { display: flex; align-items: flex-start; gap: 12px; margin-top: 28px; padding: 14px 21px; background: var(--cream-soft); border: 1px solid var(--line); border-radius: var(--r-14); }
.ttp-visit__paper .icon { color: var(--sage-deep); margin-top: 3px; }
.ttp-visit__paper p { color: var(--ink); line-height: var(--lh-ui); }
.ttp-visit__note { margin-top: 14px; font-size: var(--fs-14); color: var(--charcoal-soft); line-height: var(--lh-ui); }
@media (min-width: 768px) { .ttp-visit { padding: 28px; } }
@media (min-width: 1024px) {
  .ttp-bookpg__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 21px; align-items: start; }
  .ttp-bookpg .book-embed { grid-column: 1 / span 7; margin-left: 0; }
  .ttp-visit { grid-column: 8 / -1; margin-left: 21px; position: sticky; top: calc(var(--header-h) + 21px); padding: 42px; }
}

/* ================= 7. SHARED CLOSERS ================= */
/* on a subpage the closing CTA is the last section before the footer */
main > .ttp-cta:last-child { padding-bottom: var(--section-y); }

/* ================= 8. POLICY PAGES (/privacy-policy, /terms-of-use, /accessibility; plan 23) ================= */
.ttp-phead--policy { padding-bottom: 28px; }
.ttp-phead--policy .ttp-phead__grid { grid-template-columns: minmax(0, 1fr); }
.ttp-phead--policy .ttp-phead__title { max-width: 16em; }
.ttp-phead__updated { margin-top: 21px; font-size: var(--fs-14); font-weight: 600; color: var(--charcoal-soft); }

/* the visible draft notice -word for word from the copy file, never mistaken for final */
.ttp-draftnotice {
  margin-top: 21px; padding: 21px 21px 21px 24px; max-width: 63ch;
  background: rgba(201, 168, 97, 0.12); border-left: 3px solid var(--gold); border-radius: 0 var(--r-7) var(--r-7) 0;
  font-size: var(--fs-14); line-height: var(--lh-ui); color: var(--ink);
}
.ttp-draftnotice strong { color: var(--ink); }

/* an inline [CONFIRM: ...] placeholder -highlighted so it reads as unfinished, not a typo */
.ttp-confirm {
  display: inline; background: rgba(201, 168, 97, 0.21); color: var(--ink); font-weight: 600;
  padding: 1px 7px; border-radius: 3px; box-shadow: inset 0 0 0 1px rgba(201, 168, 97, 0.7);
}

.ttp-policy { background: var(--cream); padding: 0 0 var(--section-y); }
.ttp-policy__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 42px; }

/* table of contents (long pages only: privacy-policy, terms-of-use) */
.ttp-policy__toc { align-self: start; padding: 21px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-21); }
.ttp-policy__toc-k { font-size: var(--fs-12); font-weight: 600; letter-spacing: var(--tr-eyebrow); text-transform: uppercase; color: var(--charcoal-soft); margin-bottom: 14px; }
.ttp-policy__toc ol { display: grid; gap: 3px; counter-reset: toc; }
.ttp-policy__toc li { counter-increment: toc; }
.ttp-policy__toc a {
  display: flex; align-items: center; gap: 9px; min-height: 36px; padding: 6px 9px; border-radius: var(--r-7);
  font-family: var(--font-display); font-weight: 500; font-size: var(--fs-14); line-height: var(--lh-head); color: var(--charcoal);
  transition: background-color var(--duration-quick) var(--ease-soft), color var(--duration-quick) var(--ease-soft);
}
.ttp-policy__toc a::before { content: counter(toc, decimal-leading-zero); font-family: var(--font-body); font-size: var(--fs-12); font-weight: 600; color: var(--sage-deep); flex: none; }
@media (hover: hover) { .ttp-policy__toc a:hover { background: var(--surface-tint); color: var(--ink); } }

.ttp-policy__body { min-width: 0; max-width: 63ch; }
.ttp-policy__body h2 {
  font-size: var(--fs-h3); margin-top: 42px; padding-top: 21px; border-top: 1px solid var(--line-strong);
  scroll-margin-top: calc(var(--header-h) + 21px);
}
.ttp-policy__body > h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.ttp-policy__body p, .ttp-policy__body li { color: var(--charcoal-soft); line-height: var(--lh-ui); }
.ttp-policy__body p { margin-top: 14px; }
.ttp-policy__body p:first-of-type, .ttp-policy__body h2 + p { margin-top: 14px; }
.ttp-policy__body ul { margin-top: 12px; display: grid; gap: 7px; padding-left: 21px; }
.ttp-policy__body ul li { list-style: disc; }
.ttp-policy__body strong { color: var(--ink); }
.ttp-policy__body code { font-family: inherit; font-size: inherit; font-weight: 600; color: var(--ink); }  /* AUDIT: <code> rendered a third (monospace) family */
.ttp-policy__body a { color: var(--ink); }
@media (min-width: 900px) {
  .ttp-policy__grid { grid-template-columns: minmax(0, 3fr) minmax(0, 8fr); column-gap: 42px; }
  .ttp-policy__toc { position: sticky; top: calc(var(--header-h) + 21px); }
}

/* contact block -reuses the /book page's .ttp-contact list */
.ttp-policy__contact { margin-top: 42px; padding: 28px 21px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-21); max-width: 63ch; }
.ttp-policy__contact-k { font-size: var(--fs-h3); line-height: var(--lh-head); letter-spacing: 0; }
.ttp-policy__contact .ttp-contact { margin-top: 21px; }
@media (min-width: 768px) { .ttp-policy__contact { padding: 28px; } }

/* the accessibility page's "open the panel" trigger, inline with its list */
.ttp-policy__a11y-open { margin-top: 21px; }

/* ================= 9. 404 (plan 25.3) ================= */
.ttp-404 { min-height: calc(100svh - var(--header-h)); display: flex; align-items: center; background: var(--cream); padding: calc(var(--header-h) + 63px) 0 84px; }
.ttp-404__inner { max-width: 46ch; }
.ttp-404__arc { width: 70px; margin-bottom: 21px; }
.ttp-404__code { font-family: var(--font-display); font-weight: 300; font-size: var(--fs-score); line-height: 0.84; letter-spacing: var(--tr-head); color: var(--sage-deep); }
.ttp-404__title { margin-top: 14px; }
.ttp-404__lead { margin-top: 21px; }
.ttp-404__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.ttp-404__phone { margin-top: 21px; }
