/* Orthodontics — /orthodontics/
   Scoped to body.page-orthodontics. Page hero, sec-head, stick, ledger, arch frames, related and accordion are shared (site.css).
   Signature: a lower dental arch of rounded teeth with brackets and a copper archwire. It starts crowded
   and settles onto the wire, tooth by tooth from the midline, as the steps beside it are read.
   A second view swaps the brackets for a clear-aligner tray drawn around the arch. */

/* ---------- Intro: a wide heading, the lead and a second paragraph, then the signs in a ruled row ---------- */
.page-orthodontics .ot-intro__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: clamp(16px, 2vw, 32px); row-gap: var(--space-block); align-items: end; }
.page-orthodontics .ot-intro__head { grid-column: 1 / span 10; display: flex; flex-direction: column; align-items: flex-start; gap: 28px; }
.page-orthodontics .ot-intro__title { max-width: 17ch; }
.page-orthodontics .ot-intro__lead { grid-column: 1 / span 7; }
.page-orthodontics .ot-intro__lead .lead { margin: 0; color: var(--ink); text-wrap: pretty; }
.page-orthodontics .ot-intro__copy { grid-column: 9 / -1; padding-bottom: .3em; }
.page-orthodontics .ot-intro__copy p { margin: 0; padding-top: 24px; border-top: 1px solid var(--line); }

.page-orthodontics .ot-signs { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: clamp(16px, 2vw, 32px); row-gap: 20px; padding-top: clamp(28px, 3vw, 40px); border-top: 1px solid var(--line-strong); }
.page-orthodontics .ot-signs__title { grid-column: 1 / span 3; max-width: 16ch; margin: 0; font-size: var(--fs-label); font-weight: 560; font-stretch: 118%; letter-spacing: .16em; line-height: 1.5; text-transform: uppercase; color: var(--ink); }
.page-orthodontics .ot-signs__list { grid-column: 4 / -1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }
.page-orthodontics .ot-signs__list li {
  padding: 0 clamp(14px, 1.6vw, 24px); border-left: 1px solid var(--line);
  font-family: var(--f-display); font-size: clamp(1.15rem, 1.5vw, 1.4rem); font-weight: 300; line-height: 1.25; letter-spacing: -.01em; color: var(--ink); text-wrap: balance;
}

@media (max-width: 1080px) {
  .page-orthodontics .ot-intro__head { grid-column: 1 / -1; }
  .page-orthodontics .ot-intro__lead { grid-column: 1 / span 8; }
  .page-orthodontics .ot-intro__copy { grid-column: 5 / -1; }
  .page-orthodontics .ot-signs__title { grid-column: 1 / -1; max-width: none; }
  .page-orthodontics .ot-signs__list { grid-column: 1 / -1; }
  .page-orthodontics .ot-signs__list li:first-child { padding-left: 0; border-left: 0; }
}
@media (max-width: 900px) {
  .page-orthodontics .ot-intro__grid { row-gap: 40px; }
  .page-orthodontics .ot-intro__lead, .page-orthodontics .ot-intro__copy { grid-column: 1 / -1; }
  .page-orthodontics .ot-signs__list { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 20px; }
  .page-orthodontics .ot-signs__list li:nth-child(3) { padding-left: 0; border-left: 0; }
}
@media (max-width: 640px) {
  .page-orthodontics .ot-signs__list { grid-template-columns: minmax(0, 1fr); row-gap: 0; border-top: 1px solid var(--line); }
  .page-orthodontics .ot-signs__list li, .page-orthodontics .ot-signs__list li:nth-child(n) { padding: 16px 0; border-left: 0; border-bottom: 1px solid var(--line); }
}

/* ---------- Options: three ways to straighten teeth, in hairline columns ---------- */
.page-orthodontics .ot-options__head .sec-head__intro { text-wrap: pretty; }
.page-orthodontics .ot-opts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line); }
/* Each option spans three shared rows (title, text, facts), so the facts line up across the columns. */
.page-orthodontics .ot-opt { display: grid; grid-row: span 3; grid-template-rows: subgrid; row-gap: 18px; align-items: start; padding: clamp(32px, 3.4vw, 48px) clamp(20px, 2.6vw, 40px) clamp(36px, 4vw, 56px); }
.page-orthodontics .ot-opt:first-child { padding-left: 0; }
.page-orthodontics .ot-opt:last-child { padding-right: 0; }
.page-orthodontics .ot-opt + .ot-opt { border-left: 1px solid var(--line); }
.page-orthodontics .ot-opt__title { font-family: var(--f-display); font-size: clamp(1.7rem, 2.5vw, 2.4rem); font-weight: 300; line-height: 1.05; letter-spacing: -.022em; }
.page-orthodontics .ot-opt__text { max-width: 36ch; margin: 0; color: var(--muted); text-wrap: pretty; }
.page-orthodontics .ot-opt__facts { width: 100%; margin: 0; padding-top: 8px; }
.page-orthodontics .ot-opt__facts > div { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 12px; padding: 12px 0; border-top: 1px solid var(--line); }
.page-orthodontics .ot-opt__facts dt { padding-top: .3em; font-size: var(--fs-label); font-weight: 560; font-stretch: 118%; letter-spacing: .14em; line-height: 1.3; text-transform: uppercase; color: var(--muted); }
.page-orthodontics .ot-opt__facts dd { margin: 0; font-size: .95rem; color: var(--ink); }
.page-orthodontics .ot-options__note { max-width: 46ch; margin: clamp(28px, 3vw, 40px) 0 0; font-family: var(--f-display); font-style: italic; font-size: clamp(1.1rem, 1.4vw, 1.3rem); font-weight: 300; line-height: 1.4; color: var(--ink-3); }
@media (max-width: 900px) {
  .page-orthodontics .ot-opts { grid-template-columns: minmax(0, 1fr); border-bottom: 0; }
  .page-orthodontics .ot-opt, .page-orthodontics .ot-opt:first-child, .page-orthodontics .ot-opt:last-child { padding: 28px 0 32px; border-bottom: 1px solid var(--line); }
  .page-orthodontics .ot-opt + .ot-opt { border-left: 0; }
  .page-orthodontics .ot-opt__text { max-width: 52ch; }
}

/* ---------- The process, on ink, beside the arch ---------- */
.page-orthodontics .ot-path { overflow: clip; }
.page-orthodontics .ot-path__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); column-gap: clamp(40px, 6.5vw, 112px); align-items: start; }
.page-orthodontics .ot-path__body { grid-column: 1; grid-row: 1; }
.page-orthodontics .ot-path__visual { grid-column: 2; grid-row: 1; position: sticky; top: calc(var(--header-h) + 28px); }
.page-orthodontics .ot-path__head { display: flex; flex-direction: column; align-items: flex-start; gap: 28px; margin-bottom: clamp(40px, 5vw, 72px); }
.page-orthodontics .ot-path__title { max-width: 12ch; }
.page-orthodontics .ot-steps { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--line-ink-strong); }
.page-orthodontics .ot-step { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; padding-block: clamp(32px, 4.4vw, 64px); }
.page-orthodontics .ot-step:last-child { padding-bottom: clamp(16px, 2vw, 32px); }
.page-orthodontics .ot-step + .ot-step { border-top: 1px solid var(--line-ink); }
.page-orthodontics .ot-step__n { margin: 0; font-family: var(--f-display); font-size: clamp(1.4rem, 1.8vw, 1.7rem); font-weight: 300; line-height: 1; letter-spacing: -.02em; font-variant-numeric: lining-nums tabular-nums; color: var(--sun); }
.page-orthodontics .ot-step__title { max-width: 16ch; font-family: var(--f-display); font-size: clamp(1.7rem, 2.6vw, 2.5rem); font-weight: 300; line-height: 1.06; letter-spacing: -.022em; }
.page-orthodontics .ot-step .rich { max-width: 46ch; }
.page-orthodontics .ot-step .rich p { margin: 0; }

/* The figure: the view switch above the arch */
.page-orthodontics .ot-fig { width: min(100%, calc((100vh - var(--header-h) - 150px) * 1.2)); margin: 0 0 0 auto; }
.page-orthodontics .ot-fig__head { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; padding-bottom: 16px; border-bottom: 1px solid var(--line-ink); }
.page-orthodontics .ot-mode { font-family: var(--f-sans); font-size: var(--fs-label); font-weight: 560; font-stretch: 118%; line-height: 1.2; letter-spacing: .16em; text-transform: uppercase; }
.page-orthodontics .ot-fig__modes { display: flex; flex-wrap: wrap; gap: 4px 28px; }
html:not(.js) .page-orthodontics .ot-fig__head { display: none; }
.page-orthodontics .ot-mode {
  display: inline-flex; align-items: center; gap: 10px; min-height: 32px; padding: 0; border: 0; background: none; cursor: pointer; white-space: nowrap;
  color: var(--on-ink-muted); transition: color .4s var(--ease-out);
}
.page-orthodontics .ot-mode::before { content: ""; flex: none; width: 7px; height: 7px; border-radius: 50%; border: 1px solid var(--line-ink-strong); transition: background-color .4s var(--ease-out), border-color .4s var(--ease-out); }
.page-orthodontics .ot-mode:hover { color: var(--on-ink); }
.page-orthodontics .ot-mode[aria-pressed="true"] { color: var(--on-ink); }
.page-orthodontics .ot-mode[aria-pressed="true"]::before { background: var(--sun); border-color: var(--sun); }

.page-orthodontics .ot-arch { padding: clamp(32px, 3.4vw, 52px) 4.5% 0; }

/* The drawing */
.page-orthodontics .ot-arch__svg { --wire: 1.05; display: block; width: 100%; height: auto; overflow: visible; }
/* Hairlines stay 1px at any size; the wire scales instead (non-scaling strokes break pathLength dashes, so the draw-on would stop short). */
.page-orthodontics .ot-arch__svg path:not(.ot-arch__wire), .page-orthodontics .ot-arch__svg rect { vector-effect: non-scaling-stroke; }
.page-orthodontics .ot-tooth__body { fill: var(--ink); stroke: var(--on-ink); stroke-opacity: .64; stroke-width: 1; }
.page-orthodontics .ot-tooth__bracket { fill: var(--ink); stroke: var(--foam); stroke-width: 1; }
.page-orthodontics .ot-arch__wire { fill: none; stroke: var(--sun); stroke-width: var(--wire); stroke-linecap: round; }
.page-orthodontics .ot-arch__aligner { fill: color-mix(in srgb, var(--foam) 5%, transparent); stroke: var(--sea); stroke-opacity: .8; stroke-width: 1; }
/* View switch: brackets and wire, or the aligner tray */
.page-orthodontics .ot-arch__tray, .page-orthodontics .ot-arch__wire, .page-orthodontics .ot-tooth__bracket { transition: opacity .8s var(--ease-out); }
.page-orthodontics .ot-arch[data-mode="braces"] .ot-arch__tray { opacity: 0; }
.page-orthodontics .ot-arch[data-mode="aligners"] .ot-arch__wire,
.page-orthodontics .ot-arch[data-mode="aligners"] .ot-tooth__bracket { opacity: 0; }

@media (max-width: 1080px) {
  .page-orthodontics .ot-path__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}
@media (max-width: 900px) {
  .page-orthodontics .ot-path__grid { grid-template-columns: minmax(0, 1fr); }
  /* Stacked: the heading, then the arch, then the steps */
  .page-orthodontics .ot-path__body { display: contents; }
  .page-orthodontics .ot-path__head { grid-row: 1; }
  .page-orthodontics .ot-path__visual { grid-column: 1; grid-row: 2; position: static; margin-bottom: clamp(48px, 9vw, 80px); }
  .page-orthodontics .ot-steps { grid-row: 3; }
  .page-orthodontics .ot-fig { width: min(100%, 600px); margin-inline: auto; }
  .page-orthodontics .ot-path__title, .page-orthodontics .ot-faq__title { max-width: none; }
}
@media (max-width: 640px) {
  .page-orthodontics .ot-arch__svg { --wire: 1.9; }
  .page-orthodontics .ot-fig__modes { gap: 4px 18px; }
  .page-orthodontics .ot-mode { letter-spacing: .1em; }
}

/* ---------- Who treats you: the portrait in an arch beside his credentials; then cost and insurance ---------- */
.page-orthodontics .ot-team__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: clamp(16px, 2vw, 32px); row-gap: 56px; align-items: center; }
.page-orthodontics .ot-team__portrait { grid-column: 1 / span 4; margin: 14px; }
.page-orthodontics .ot-team__img { --ar: .8; background: var(--porcelain-2); }
.page-orthodontics .ot-team__img img { object-position: 50% 18%; }
.page-orthodontics .ot-team__body { grid-column: 6 / -1; display: flex; flex-direction: column; align-items: flex-start; gap: 24px; }
.page-orthodontics .ot-team__title { margin-top: 4px; }
.page-orthodontics .ot-team__role { margin: -6px 0 0; font-size: var(--fs-label); font-weight: 560; font-stretch: 118%; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.page-orthodontics .ot-team__copy { max-width: 56ch; }
.page-orthodontics .ot-team__copy p:first-child { color: var(--ink); }

.page-orthodontics .ot-cost {
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: clamp(16px, 2vw, 32px); row-gap: 28px;
  margin-top: var(--space-section); padding-top: clamp(32px, 3.4vw, 48px); border-top: 1px solid var(--line-strong);
}
.page-orthodontics .ot-cost__head { grid-column: 1 / span 4; display: flex; flex-direction: column; align-items: flex-start; gap: 24px; }
.page-orthodontics .ot-cost__title { max-width: 12ch; font-family: var(--f-display); font-size: clamp(1.9rem, 3vw, 2.8rem); font-weight: 300; line-height: 1.06; letter-spacing: -.022em; }
.page-orthodontics .ot-cost__body { grid-column: 6 / -1; display: flex; flex-direction: column; align-items: flex-start; gap: 28px; }
.page-orthodontics .ot-cost__body .rich p { margin: 0; }
.page-orthodontics .ot-cost__ledger { width: 100%; }

@media (max-width: 1080px) {
  .page-orthodontics .ot-team__portrait { grid-column: 1 / span 5; }
  .page-orthodontics .ot-team__body { grid-column: 7 / -1; }
  .page-orthodontics .ot-cost__head { grid-column: 1 / span 5; }
  .page-orthodontics .ot-cost__body { grid-column: 7 / -1; }
}
@media (max-width: 900px) {
  .page-orthodontics .ot-team__portrait { grid-column: 1 / -1; width: min(300px, calc(100% - 28px)); }
  .page-orthodontics .ot-team__body, .page-orthodontics .ot-cost__head, .page-orthodontics .ot-cost__body { grid-column: 1 / -1; }
  .page-orthodontics .ot-cost__title { max-width: none; }
}

/* ---------- FAQ: sticky title beside the questions ---------- */
.page-orthodontics .ot-faq__aside { display: flex; flex-direction: column; align-items: flex-start; gap: 28px; }
.page-orthodontics .ot-faq__title { max-width: 12ch; }
.page-orthodontics .accordion__panel a { color: var(--ink); text-decoration: underline; text-decoration-color: var(--sun); text-decoration-thickness: 1px; text-underline-offset: .22em; transition: color .3s, text-decoration-color .3s; }
.page-orthodontics .accordion__panel a:hover { color: var(--ink-3); text-decoration-color: var(--ink-3); }
