/* ============================================================
   Astorga design system — Texas Architectural Editorial
   (Direction A structure + Direction C dusk grade; Gate 2 approved)
   Tokens come from theme.json as --wp--preset--*; this file adds
   the compositional system. No new colors or fonts may be
   introduced here without documenting them in DESIGN-TOKENS.md.
   ============================================================ */

:root {
  --ast-hair: 1px solid rgba(6, 36, 71, 0.16);
  --ast-hair-dark: 1px solid rgba(247, 244, 237, 0.18);
  --ast-gold-hair: 1px solid var(--wp--preset--color--gold);
  --ast-radius: 2px;          /* allowed: 0 / 2 / 4 px (6px only on dusk-CTA card) */
  --ast-frame-bg: #0b1f38;    /* photo-frame backing while images load */
}

/* ---------- base ---------- */
html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; overflow-x: clip; }
img { height: auto; max-width: 100%; }
p { max-width: 66ch; }
:focus-visible { outline: 2px solid var(--wp--preset--color--aqua); outline-offset: 3px; }
a { text-underline-offset: 3px; }
.skip-link { position: absolute; left: -9999px; top: 0; background: var(--wp--preset--color--navy); color: var(--wp--preset--color--warm-white); padding: .7rem 1.2rem; z-index: 100; }
.skip-link:focus { left: 0; }

/* ---------- editorial label ---------- */
.ast-label {
  font-family: var(--wp--preset--font-family--label);
  font-size: var(--wp--preset--font-size--label);
  font-weight: 500; letter-spacing: .18em; text-transform: uppercase;
  color: var(--wp--preset--color--navy);
}
.ast-label--gold { color: var(--wp--preset--color--gold); }
.ast-label--rule::before {
  content: ""; display: inline-block; width: 2.4rem; height: 1px;
  background: var(--wp--preset--color--gold); vertical-align: middle; margin-right: .75rem;
}

/* ---------- buttons (system-wide) ---------- */
.wp-block-button__link { display: inline-block; border-radius: var(--ast-radius); padding: .9rem 1.8rem; transition: background .18s ease, color .18s ease; }
.is-style-outline .wp-block-button__link,
.ast-btn-outline .wp-block-button__link { background: transparent; border: 1px solid currentColor; }
.ast-btn-text .wp-block-button__link {
  background: transparent; color: var(--wp--preset--color--navy);
  border: 0; border-bottom: 1px solid var(--wp--preset--color--gold);
  border-radius: 0; padding: .55rem .1rem;
}
.ast-on-dark .ast-btn-text .wp-block-button__link { color: var(--wp--preset--color--warm-white); }
.ast-btn-white .wp-block-button__link { background: var(--wp--preset--color--warm-white); color: var(--wp--preset--color--navy); }

/* ---------- header ---------- */
.ast-header { background: var(--wp--preset--color--warm-white); border-bottom: var(--ast-hair); position: sticky; top: 0; z-index: 40; }
.ast-header__bar { display: flex; align-items: center; justify-content: space-between; gap: 1.25rem; padding: 1.05rem 0; }
.ast-header .custom-logo, .ast-header__logo img { height: 46px; width: auto; }
.ast-nav { display: flex; gap: 1.4rem; align-items: center; }
.ast-nav a { font-size: .95rem; font-weight: 500; color: var(--wp--preset--color--charcoal); text-decoration: none; padding: .3rem 0; border-bottom: 2px solid transparent; }
.ast-nav a:hover { color: var(--wp--preset--color--navy); border-bottom-color: var(--wp--preset--color--gold); }
.ast-nav-toggle { display: none; background: none; border: 1px solid var(--wp--preset--color--navy); border-radius: var(--ast-radius); padding: .5rem .7rem; font: 600 .85rem var(--wp--preset--font-family--body); color: var(--wp--preset--color--navy); cursor: pointer; }
/* Owner decision 2026-08-07 (was OPEN_QUESTIONS #17): desktop nav shows 7 items at
   approved typography — "Planning Studio" (.ast-nav__more) is desktop-bar-only hidden
   and remains in the collapsed Menu, footer, and inline links. Measured capacity:
   7 items = 1,270px vs the 1,300px bar cap; below ~1380px viewport even 7 don't fit,
   so the nav collapses there (Menu + Call chip + CTA). */
@media (min-width: 1381px) {
  .ast-nav .ast-nav__more { display: none; }
}
@media (max-width: 1380px) {
  .ast-nav { display: none; }
  .ast-nav-toggle { display: inline-block; }
  .ast-header.is-open .ast-nav {
    display: flex; flex-direction: column; align-items: flex-start; gap: .2rem;
    position: absolute; left: 0; right: 0; top: 100%;
    background: var(--wp--preset--color--warm-white); border-bottom: var(--ast-hair);
    padding: .8rem clamp(1.25rem, 4vw, 3rem) 1.2rem;
  }
  .ast-header.is-open .ast-nav a { padding: .55rem 0; font-size: 1.05rem; width: 100%; }
}
@media (max-width: 640px) {
  .ast-header .custom-logo, .ast-header__logo img { height: 36px; }
  .ast-header__cta .wp-block-button__link { padding: .6rem .9rem; font-size: .82rem; }
}
@media (max-width: 400px) { .ast-header__cta { display: none; } } /* nav toggle carries the path */

/* ---------- photo frames + staging labels ---------- */
.ast-frame { position: relative; background: var(--ast-frame-bg); border-radius: var(--ast-radius); overflow: hidden; }
.ast-frame img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ast-frame figcaption {
  position: absolute; left: 0; right: 0; bottom: 0; display: flex; justify-content: space-between; gap: 1rem;
  padding: .5rem .85rem; background: rgba(6, 36, 71, 0.82); color: rgba(247, 244, 237, 0.92);
  font-size: .72rem; letter-spacing: .05em; margin: 0;
}
/* Staging-only placeholder chip — rendered ONLY when body carries
   .astorga-staging-labels (single global option in astorga-core). */
.ast-frame::before {
  content: none; position: absolute; top: .75rem; left: .75rem; z-index: 2;
  background: rgba(247, 244, 237, 0.95); color: var(--wp--preset--color--navy);
  font: 500 .6rem/1.4 var(--wp--preset--font-family--label);
  letter-spacing: .14em; text-transform: uppercase; padding: .3rem .6rem; border-radius: 3px;
  max-width: calc(100% - 1.5rem);
}
.astorga-staging-labels .ast-frame[data-ph]::before { content: attr(data-ph); }

/* ---------- hero (dusk, photography-led ~62/38) ---------- */
.ast-hero { border-bottom: var(--ast-hair); }
.ast-hero__grid { display: grid; grid-template-columns: minmax(0, 4.6fr) minmax(0, 7.4fr); min-height: min(78vh, 740px); }
.ast-hero__copy { display: flex; flex-direction: column; justify-content: center; gap: 1.5rem; padding: clamp(2.5rem, 5vw, 4.5rem) clamp(1.5rem, 3.5vw, 3.5rem); }
.ast-hero__copy h1 { max-width: 13ch; }
.ast-hero__copy .ast-lede { font-size: 1.15rem; line-height: 1.6; max-width: 44ch; }
.ast-hero__actions { display: flex; gap: 1.3rem; align-items: center; flex-wrap: wrap; }
.ast-hero__media.ast-frame { border-radius: 0; min-height: 420px; }
@media (max-width: 900px) {
  .ast-hero__grid { grid-template-columns: 1fr; min-height: 0; }
  .ast-hero__media { order: -1; min-height: 0 !important; height: 54vw; }
  .ast-hero__copy { padding: 2.1rem clamp(1.25rem, 4vw, 3rem) 2.5rem; }
}

/* ---------- section scaffolding ---------- */
.ast-section { padding-top: var(--wp--preset--spacing--60); padding-bottom: var(--wp--preset--spacing--60); }
.ast-section--hair { border-bottom: var(--ast-hair); }
.ast-on-dark, .ast-on-dark h2, .ast-on-dark h3 { color: var(--wp--preset--color--warm-white); }
.ast-on-dark p { color: rgba(247, 244, 237, 0.85); }
.ast-on-dark .ast-label { color: var(--wp--preset--color--gold); }

/* positioning statement */
.ast-positioning p { font-size: clamp(1.25rem, 2.2vw, 1.55rem); line-height: 1.5; max-width: 38ch; color: var(--wp--preset--color--navy); font-weight: 500; }

/* ---------- commitments (statement + numbered stack, no cards) ---------- */
.ast-commit { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2.5rem, 6vw, 5.5rem); }
.ast-commit__statement h2 { max-width: 16ch; }
.ast-commit__statement > p { margin-top: 1.3rem; font-size: 1.05rem; max-width: 38ch; }
.ast-commit__item { border-top: var(--ast-gold-hair); padding: 1.9rem 0 2rem; display: grid; grid-template-columns: auto 1fr; gap: 1.6rem; align-items: baseline; }
.ast-commit__list > .ast-commit__item:last-child { border-bottom: var(--ast-gold-hair); }
.ast-commit__no { font-family: var(--wp--preset--font-family--display); font-size: 2.1rem; color: var(--wp--preset--color--gold); line-height: 1; }
.ast-commit__item h3 { font-size: 1.35rem; margin: 0 0 .45rem; }
.ast-commit__item p { font-size: 1.02rem; max-width: 52ch; }
@media (max-width: 900px) { .ast-commit { grid-template-columns: 1fr; } }

/* ---------- editorial split (reusable text+image) ---------- */
.ast-split { display: grid; grid-template-columns: minmax(0, 6.5fr) minmax(0, 5.5fr); gap: clamp(2.5rem, 6vw, 5rem); align-items: center; }
.ast-split--flip { grid-template-columns: minmax(0, 5.5fr) minmax(0, 6.5fr); }
.ast-split .ast-frame { aspect-ratio: 4 / 3; }
.ast-split--tall .ast-frame { aspect-ratio: 4 / 5; }
@media (max-width: 900px) { .ast-split, .ast-split--flip { grid-template-columns: 1fr; } }

/* ---------- field guide (Houston) ---------- */
.ast-field { background: var(--wp--preset--color--navy); }
.ast-field__grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: clamp(2.5rem, 6vw, 5rem); align-items: start; }
.ast-field h2 { max-width: 17ch; }
.ast-field__intro { font-size: 1.02rem; max-width: 48ch; }
.ast-fg { border-top: var(--ast-hair-dark); margin-top: 2rem; }
.ast-fg__item { border-bottom: var(--ast-hair-dark); padding: 1.25rem 0; display: grid; grid-template-columns: 3.4rem minmax(0, 11rem) 1fr; gap: 1.1rem; align-items: baseline; }
.ast-fg__ref { font-family: var(--wp--preset--font-family--label); font-size: .76rem; letter-spacing: .14em; color: var(--wp--preset--color--gold); }
.ast-fg__item h3 { font-size: 1.02rem; margin: 0; color: var(--wp--preset--color--warm-white); }
.ast-fg__item p { font-size: .95rem; line-height: 1.55; max-width: 44ch; }
.ast-field .ast-frame { border: var(--ast-hair-dark); }
.ast-field__note { margin-top: .9rem; font-size: .85rem; color: rgba(247, 244, 237, 0.6); max-width: 56ch; }
@media (max-width: 1020px) { .ast-fg__item { grid-template-columns: 3rem 1fr; } .ast-fg__item p { grid-column: 2; } }
@media (max-width: 900px) { .ast-field__grid { grid-template-columns: 1fr; } }

/* ---------- process timeline ---------- */
.ast-timeline { position: relative; display: grid; grid-template-columns: repeat(6, 1fr); gap: 1.4rem; margin-top: 2.6rem; }
.ast-timeline::before { content: ""; position: absolute; top: .55rem; left: 0; right: 0; height: 1px; background: var(--wp--preset--color--gold); }
.ast-phase { padding-top: 1.6rem; position: relative; }
.ast-phase::before { content: ""; position: absolute; top: .3rem; left: 0; width: 7px; height: 7px; background: var(--wp--preset--color--navy); border-radius: 50%; }
.ast-phase__no { font-family: var(--wp--preset--font-family--display); font-size: 1.5rem; color: var(--wp--preset--color--gold); line-height: 1; }
.ast-phase h3 { font-size: 1rem; margin: .35rem 0 .4rem; }
.ast-phase p { font-size: .88rem; line-height: 1.5; max-width: 24ch; }
.ast-phase__mark { display: inline-block; margin-top: .55rem; font-size: .72rem; font-weight: 600; letter-spacing: .04em; color: var(--wp--preset--color--navy); border: 1px solid rgba(6, 36, 71, 0.3); padding: .18rem .5rem; border-radius: var(--ast-radius); }
.ast-phase__mark--gold { color: var(--wp--preset--color--gold); border-color: var(--wp--preset--color--gold); }
.ast-timeline__note { margin-top: 2.2rem; font-size: .95rem; font-style: italic; max-width: 64ch; }
@media (max-width: 1020px) { .ast-timeline { grid-template-columns: repeat(3, 1fr); } .ast-timeline::before { display: none; } }
@media (max-width: 560px) { .ast-timeline { grid-template-columns: repeat(2, 1fr); } }

/* ---------- materials grid ---------- */
.ast-materials { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 3.5fr) minmax(0, 3.5fr); gap: 1.4rem; margin-top: 2.2rem; }
.ast-materials .ast-frame { aspect-ratio: 4 / 3; }
.ast-materials .ast-frame:first-child { grid-row: span 2; aspect-ratio: auto; }
.ast-materials__cap { margin-top: 2rem; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 2rem; align-items: baseline; }
@media (max-width: 900px) {
  .ast-materials { grid-template-columns: 1fr 1fr; }
  .ast-materials .ast-frame:first-child { grid-row: auto; grid-column: span 2; aspect-ratio: 16 / 10; }
  .ast-materials__cap { grid-template-columns: 1fr; }
}

/* ---------- owner section (parchment surface) ---------- */
.ast-owner { background: var(--wp--preset--color--parchment); border-top: var(--ast-hair); border-bottom: var(--ast-hair); }
.ast-owner__grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(2.5rem, 6vw, 5rem); align-items: center; }
.ast-owner__grid .ast-frame { aspect-ratio: 4 / 5; }
.ast-owner__fact { margin-top: 1.5rem; padding-left: 1.1rem; border-left: 2px solid var(--wp--preset--color--gold); font-size: .98rem; max-width: 56ch; }
@media (max-width: 900px) { .ast-owner__grid { grid-template-columns: 1fr; } .ast-owner__grid > :first-child { max-width: 340px; } }

/* ---------- CTA band (guide, warm-white) ---------- */
.ast-cta-band { border-top: var(--ast-hair); border-bottom: var(--ast-hair); background: rgba(185, 151, 91, 0.08); }
.ast-cta-band__grid { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: 2rem; align-items: center; }
.ast-cta-band__grid h2 { max-width: 18ch; }
.ast-cta-band__actions { justify-self: end; }
@media (max-width: 900px) { .ast-cta-band__grid { grid-template-columns: 1fr; } .ast-cta-band__actions { justify-self: start; } }

/* ---------- final dusk CTA (Direction C warmth) ---------- */
.ast-final { position: relative; background: linear-gradient(180deg, #16283f 0%, var(--wp--preset--color--navy-deep) 70%, #0a2e40 100%); }
.ast-final__inner { display: grid; grid-template-columns: minmax(0, 7.5fr) minmax(0, 4.5fr); gap: 2.5rem; align-items: center; }
.ast-final h2 { font-family: var(--wp--preset--font-family--display); font-weight: 400; font-size: clamp(2.6rem, 5.2vw, 4.2rem); line-height: .98; color: var(--wp--preset--color--warm-white); max-width: 16ch; }
.ast-final__actions { display: flex; flex-direction: column; gap: 1.1rem; align-items: flex-start; justify-self: end; }
.ast-final::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: linear-gradient(90deg, transparent, var(--wp--preset--color--gold) 30%, var(--wp--preset--color--gold) 70%, transparent); opacity: .55; }
.ast-final__credit { display: none; }
.astorga-staging-labels .ast-final__credit { display: block; position: absolute; top: .75rem; left: .75rem; z-index: 2; background: rgba(247, 244, 237, 0.95); color: var(--wp--preset--color--navy); font: 500 .6rem/1.4 var(--wp--preset--font-family--label); letter-spacing: .14em; text-transform: uppercase; padding: .3rem .6rem; border-radius: 3px; }
@media (max-width: 900px) { .ast-final__inner { grid-template-columns: 1fr; } .ast-final__actions { justify-self: start; } }

/* ---------- footer ---------- */
.ast-footer { background: var(--wp--preset--color--warm-white); border-top: 2px solid var(--wp--preset--color--navy); }
.ast-footer__grid { display: grid; grid-template-columns: minmax(0, 3.5fr) repeat(4, minmax(0, 2.1fr)); gap: 2.2rem; }
.ast-footer__brand img { height: 96px; width: auto; }
.ast-footer__brand p { margin-top: 1rem; font-size: .9rem; max-width: 26ch; }
.ast-footer h2.ast-footer__h { font-family: var(--wp--preset--font-family--label); font-weight: 500; font-size: .78rem; letter-spacing: .16em; text-transform: uppercase; color: var(--wp--preset--color--navy); margin: 0 0 .85rem; }
.ast-footer__col a { display: block; color: var(--wp--preset--color--charcoal); font-size: .92rem; text-decoration: none; padding: .22rem 0; }
.ast-footer__col a:hover { color: var(--wp--preset--color--navy); text-decoration: underline; text-decoration-color: var(--wp--preset--color--gold); }
.ast-footer__legal { margin-top: 2.5rem; padding-top: 1.35rem; border-top: var(--ast-hair); display: flex; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; font-size: .8rem; color: rgba(41, 43, 45, 0.72); }
.ast-footer__legal p { max-width: 72ch; margin: 0; }
.ast-footer__legal a { color: inherit; }
@media (max-width: 1020px) { .ast-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .ast-footer__grid { grid-template-columns: 1fr; } }

/* ---------- content structures (pages/articles) ---------- */
/* AA contrast: gold TEXT on light surfaces uses the darker variant;
   #B9975B stays for rules, numerals, chips, and anything on navy. */
.ast-label--gold { color: #97783F; }
.ast-on-dark .ast-label--gold, .ast-on-dark .ast-label { color: var(--wp--preset--color--gold); }

.ast-answer { border-left: 3px solid var(--wp--preset--color--gold); background: rgba(185, 151, 91, 0.07); padding: 1.2rem 1.4rem; margin: 1.6rem 0 2rem; max-width: 70ch; }
.ast-answer p { margin: 0; font-size: 1.08rem; max-width: 64ch; }

.ast-scope { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border: var(--ast-hair); margin: 2rem 0; }
.ast-scope > div { padding: 1.4rem 1.5rem; border-right: var(--ast-hair); }
.ast-scope > div:last-child { border-right: 0; }
.ast-scope h3 { font-family: var(--wp--preset--font-family--label); font-weight: 500; font-size: .85rem; letter-spacing: .14em; text-transform: uppercase; margin-bottom: .8rem; }
.ast-scope ul { list-style: none; padding: 0; margin: 0; }
.ast-scope li { padding: .35rem 0; font-size: .95rem; border-top: 1px solid rgba(41, 43, 45, 0.08); }
@media (max-width: 800px) { .ast-scope { grid-template-columns: 1fr; } .ast-scope > div { border-right: 0; border-bottom: var(--ast-hair); } .ast-scope > div:last-child { border-bottom: 0; } }

.ast-faqs { margin: 2rem 0; border-top: var(--ast-hair); }
.ast-faq { border-bottom: var(--ast-hair); }
.ast-faq summary { cursor: pointer; padding: 1.1rem 2.2rem 1.1rem 0; position: relative; list-style: none; }
.ast-faq summary::-webkit-details-marker { display: none; }
.ast-faq summary::after { content: "+"; position: absolute; right: .2rem; top: 50%; transform: translateY(-50%); font-family: var(--wp--preset--font-family--display); font-size: 1.5rem; color: var(--wp--preset--color--gold); }
.ast-faq[open] summary::after { content: "–"; }
.ast-faq summary h3 { display: inline; font-size: 1.15rem; font-weight: 600; }
.ast-faq__a { padding: 0 0 1.3rem; }
.ast-faq__a p { font-size: 1rem; }

.ast-article h1 { font-family: var(--wp--preset--font-family--label); font-weight: 500; font-size: clamp(2rem, 4vw, 2.9rem); line-height: 1.15; max-width: 24ch; }
.ast-article__meta { font-size: .85rem; color: rgba(41, 43, 45, 0.65); gap: 1.2rem; margin: .8rem 0 2rem; }
.ast-article__updated { color: #97783F; }
.ast-article .wp-block-post-content h2 { font-size: clamp(1.5rem, 2.6vw, 1.9rem); margin-top: 2.4rem; }
.ast-article .wp-block-post-content h3 { font-size: 1.2rem; margin-top: 1.6rem; }
.ast-sources { border-top: var(--ast-hair); margin-top: 2.5rem; padding-top: 1.2rem; font-size: .85rem; }
.ast-sources li { margin-bottom: .3rem; }

.ast-breadcrumbs a { color: var(--wp--preset--color--navy); }

/* generic page content rhythm */
.wp-block-post-content > p { margin-bottom: 1.1rem; }
.wp-block-post-content ul, .wp-block-post-content ol { padding-left: 1.3rem; margin-bottom: 1.1rem; }
.wp-block-post-content li { margin-bottom: .35rem; }

/* ---------- before/after comparison (rebuilt to the visual-correction spec) ----------
   The range input invisibly covers the whole stage: native click-to-position, drag,
   touch, and keyboard — the divider/knob are purely visual. No visible track. */
.ast-ba { max-width: 100%; margin: 2.6rem 0 2.8rem; }
/* Wide editorial moment: the slider breaks out of the 740px reading column to ~1100px,
   centered on the page (the column itself is centered), independent of WP layout rules. */
.ast-tr .ast-ba.alignwide { --ba-w: min(1100px, calc(100vw - clamp(2rem, 6vw, 4rem)));
  width: var(--ba-w); max-width: none; position: relative; left: 50%; transform: translateX(-50%); margin-left: 0; margin-right: 0; }
.ast-ba__stage { position: relative; overflow: hidden; border-radius: 6px; background: var(--ast-frame-bg);
  aspect-ratio: 3 / 2; user-select: none; -webkit-user-select: none; }
.ast-ba__stage::selection, .ast-ba__stage *::selection { background: transparent; }
.ast-ba__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  pointer-events: none; -webkit-user-drag: none; display: block; }
.ast-ba__img--before { clip-path: inset(0 calc(100% - var(--ba-pos)) 0 0); }
.ast-ba__divider { position: absolute; top: 0; bottom: 0; left: var(--ba-pos); width: 2px; margin-left: -1px;
  background: rgba(247, 244, 237, .95); box-shadow: 0 0 0 1px rgba(6, 36, 71, .3); pointer-events: none; }
.ast-ba__knob { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 46px; height: 46px; border-radius: 50%; background: rgba(247, 244, 237, .97); color: var(--wp--preset--color--navy);
  display: flex; align-items: center; justify-content: center; font: 700 .8rem/1 var(--wp--preset--font-family--body);
  letter-spacing: .05em; box-shadow: 0 1px 6px rgba(6, 36, 71, .4); }
.ast-ba__tag { position: absolute; bottom: 1rem; background: rgba(6, 36, 71, .88); color: var(--wp--preset--color--warm-white);
  font-family: var(--wp--preset--font-family--label); font-size: .78rem; letter-spacing: .14em; text-transform: uppercase;
  padding: .42rem .8rem; border-radius: 3px; pointer-events: none; }
.ast-ba__tag--before { left: 1rem; }
.ast-ba__tag--after { right: 1rem; }
@media (max-width: 640px) { .ast-ba__tag { font-size: .7rem; padding: .35rem .6rem; } }
/* Invisible full-stage control: min 44px everywhere by construction. */
.ast-ba__range { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0;
  cursor: ew-resize; touch-action: pan-y; -webkit-appearance: none; appearance: none; }
.ast-ba__stage:focus-within { outline: 2px solid var(--wp--preset--color--aqua); outline-offset: 3px; }
.ast-ba__disclosure { margin-top: .7rem; font-family: var(--wp--preset--font-family--body); font-size: .92rem;
  font-style: italic; letter-spacing: 0; text-transform: none; color: rgba(41, 43, 45, .78); }
.ast-on-dark .ast-ba__disclosure { color: rgba(247, 244, 237, .75); }
.ast-ba__notes { margin-top: 1rem; border-top: var(--ast-hair); }
.ast-ba__notes summary { cursor: pointer; padding: .9rem 0; font-weight: 600; font-size: .95rem; color: var(--wp--preset--color--navy); list-style: none; }
.ast-ba__notes summary::-webkit-details-marker { display: none; }
.ast-ba__notes summary::before { content: "+ "; color: #97783F; font-weight: 700; }
.ast-ba__notes[open] summary::before { content: "– "; }
.ast-ba__notes img { border-radius: var(--ast-radius); }
.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* transformation single — §9 readability: smaller sentence-case headings, more air */
.ast-tr h1 { font-family: var(--wp--preset--font-family--label); font-weight: 500; font-size: clamp(2rem, 3.6vw, 2.8rem); line-height: 1.14; max-width: 22ch; }
.ast-tr .wp-block-post-content h2 { font-family: var(--wp--preset--font-family--body); font-weight: 700; font-size: clamp(1.35rem, 2.2vw, 1.6rem); text-transform: none; letter-spacing: 0; margin-top: 3rem; }
.ast-tr .wp-block-post-content > p { max-width: 66ch; }
.ast-tr .ast-ba { margin: 2.4rem 0 2.8rem; }
.ast-tr .ast-label { display: inline-block; margin-bottom: .4rem; }
.ast-tr__meta { display: flex; gap: .6rem; flex-wrap: wrap; margin: .6rem 0 1.4rem; }
.ast-tr__chip { font-size: .72rem; font-weight: 600; letter-spacing: .05em; color: var(--wp--preset--color--navy); border: 1px solid rgba(6, 36, 71, .3); padding: .2rem .55rem; border-radius: 3px; }
.ast-tr__chip--class { color: #97783F; border-color: var(--wp--preset--color--gold); }
/* Internal production-status chips: staging-only, hidden the moment the global label toggle goes off. */
.ast-tr__chip--status { display: none; }
.astorga-staging-labels .ast-tr__chip--status { display: inline-block; color: #97783F; border-style: dashed; border-color: var(--wp--preset--color--gold); }
/* Belt-and-suspenders vs any UA dark background showing through overscroll — the page surface is full-bleed. */
html { background: var(--wp--preset--color--warm-white); }
.ast-check { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .4rem 1.5rem; margin: 1rem 0; }
.ast-check li { padding-left: 1.4rem; position: relative; font-size: .95rem; }
.ast-check li::before { content: "✓"; position: absolute; left: 0; color: #97783F; font-weight: 700; }
@media (max-width: 640px) { .ast-check { grid-template-columns: 1fr; } }
.ast-evo { border-left: 1px solid var(--wp--preset--color--gold); padding-left: 1.6rem; margin: 1.4rem 0; }
.ast-evo h3 { margin-top: 1.2rem; }
.ast-evo__range { font-size: .85rem; font-style: italic; color: rgba(41, 43, 45, .7); }

/* ---------- reserved founder-headshot slot (About) ----------
   Neutral layout block; the real photograph (hector-aguiar-headshot.jpg)
   drops into this exact slot without any About-page redesign. */
.ast-headshot-slot { float: right; width: min(280px, 40%); margin: 0 0 1.2rem 2rem; aspect-ratio: 4 / 5;
  background: var(--wp--preset--color--parchment); border: var(--ast-hair); border-radius: var(--ast-radius);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .3rem; text-align: center; padding: 1.2rem; }
.ast-headshot-slot p { margin: 0; max-width: none; }
.ast-headshot-slot__note { font-size: .8rem; color: rgba(41, 43, 45, .6); font-style: italic; }
.ast-headshot-slot img { width: 100%; height: 100%; object-fit: cover; border-radius: var(--ast-radius); }
.ast-headshot-slot--photo { aspect-ratio: auto; padding: 0; background: none; border: none; display: block; }
.ast-headshot-slot--photo img { aspect-ratio: 4 / 5; height: auto; border: var(--ast-hair); }
.ast-headshot-slot--photo figcaption { margin-top: .55rem; font-size: .9rem; text-align: center; }
.ast-headshot-slot--photo figcaption .ast-label { margin-right: .45rem; }
@media (max-width: 640px) { .ast-headshot-slot { float: none; width: min(280px, 80%); margin: 0 auto 1.5rem; } }

/* ---------- motion ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ---- Phone (renders ONLY when Settings→Astorga phone is set) ----
 * Header shows a compact "Call" chip at every width: the 1300px header bar has no room
 * for the full number beside the nav + CTA (verified — the CTA wraps). The full number
 * lives in the footer sitewide, the contact page, and LocalBusiness schema. */
.ast-header__tel { display: none; }
@media (max-width: 1380px) {
  .ast-header__tel { display: inline-block; border: 1px solid var(--wp--preset--color--navy); border-radius: var(--ast-radius); padding: .5rem .7rem; font: 600 .85rem var(--wp--preset--font-family--body); color: var(--wp--preset--color--navy); text-decoration: none; white-space: nowrap; letter-spacing: .02em; }
  .ast-header__tel:hover, .ast-header__tel:focus-visible { color: var(--wp--preset--color--aqua); border-color: var(--wp--preset--color--aqua); }
}
.ast-header__tel-full { display: none; }
.ast-footer__contact { margin: 0 0 .8rem; font-weight: 600; }
.ast-footer__contact a { color: inherit; }
.ast-phone-line { font-weight: 600; }

/* ---- image galleries (image-library deployment 2026-08-07) ---- */
.ast-gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.4rem; }
.ast-gallery--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ast-gallery .ast-frame { aspect-ratio: 3 / 2; }
.ast-gallery .ast-frame a { display: block; height: 100%; }
.ast-gallery figure { margin: 0; }
.ast-gallery__card h3 { margin: .9rem 0 .2rem; font-size: 1.05rem; }
.ast-gallery__card p { font-size: .95rem; margin: 0; }
@media (max-width: 900px) { .ast-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .ast-gallery, .ast-gallery--2 { grid-template-columns: 1fr; } }
