/* R84 terminal presentation layer — one shared shell, icon, type and interaction contract. */
:root {
  --r84-ink: #171113;
  --r84-paper: #fff;
  --r84-warm: #f4f0e9;
  --r84-red: #9f1724;
  --r84-burgundy: #5c0713;
  --r84-line: #d7d0ca;
  --r84-muted: #625a5d;
  --r84-shell: 1680px;
  --r84-gutter: clamp(20px, 4.25vw, 80px);
  --r84-section: clamp(72px, 8vw, 132px);
  --z-content: 0;
  --z-raised: 2;
  --z-sticky: 80;
  --z-overlay: 90;
  --z-navigation: 100;
  --z-popover: 120;
  --z-modal: 140;
  --z-toast: 160;
}

.r53-site { overflow: clip; color: var(--r84-ink); }
.r53-shell { width: min(calc(100% - (2 * var(--r84-gutter))), var(--r84-shell)); margin-inline: auto; }
.r84-icon { display: block; width: 1.35em; height: 1.35em; stroke: currentColor; fill: none; overflow: visible; }

/* Header: deliberately larger and easier to recognize/click on desktop. */
.r53-header { min-height: 102px; z-index: var(--z-sticky); background: var(--r84-paper); }
.r53-header-grid { min-height: 102px; grid-template-columns: minmax(280px, 300px) minmax(420px, 1fr) auto auto auto; gap: clamp(10px, 1vw, 18px); align-items: center; }
.r53-brand { gap: 14px; min-width: 0; }
.r53-brand .r53-logo { width: 62px; height: 62px; object-fit: contain; }
.r53-brand strong { font-size: clamp(19px, 1.25vw, 24px); line-height: 1.08; letter-spacing: -.02em; }
.r53-brand small { margin-top: 6px; font-size: 11px; letter-spacing: .16em; }
.r53-desktop-nav ul { gap: clamp(14px, 1vw, 22px); }
.r53-desktop-nav a, .r53-languages a { font-size: 16px; line-height: 1.2; min-height: 44px; display: inline-flex; align-items: center; }
.r84-header-phone { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; font: 700 13px/1.2 var(--r54-sans, sans-serif); color: var(--r84-ink); text-decoration: none; }
.r84-header-phone .r84-icon { width: 18px; height: 18px; color: var(--r84-red); }
.r53-header-contact { min-height: 50px; padding-inline: 18px; font-size: 15px; gap: 12px; }
.r53-header-contact::after { content: none !important; }
.r53-menu .r84-menu-close { display: none; }
.r53-menu[open] .r84-menu-open { display: none; }
.r53-menu[open] .r84-menu-close { display: inline-flex; }

/* Hero family: common geometry, semantic readable measure and no edge-hugging text. */
[data-r78-hero] [data-r78-hero-title] { max-width: 15ch; text-wrap: balance; overflow-wrap: normal; word-break: keep-all; }
[data-r78-hero] [data-r78-hero-copy] { min-width: 0; }
.r54-route-hero-grid, .r53-profile-hero-grid, .r53-article-hero-grid { min-height: clamp(410px, 34vw, 610px); align-items: center; }
.r54-route-hero h1, .r53-profile-hero h1, .r53-article-hero h1 { font-size: clamp(48px, 5vw, 86px); line-height: .98; letter-spacing: -.045em; }
.r54-route-hero .r53-page-side, .r53-article-dek { max-width: 62ch; font-size: clamp(18px, 1.25vw, 22px); line-height: 1.55; }

.r54-home-authority-stage { min-height: clamp(620px, 72vh, 840px); }
.r54-home-authority-inner { min-height: inherit; display: grid; align-items: center; }
.r54-home-authority-copy { width: min(760px, 57%); padding-block: clamp(82px, 10vh, 132px); }
.r54-home-authority h1 { max-width: 11.5ch; font-size: clamp(58px, 6.2vw, 108px); line-height: .91; letter-spacing: -.055em; text-wrap: balance; }
.r79-home-audience-line { max-width: 31ch; font-size: clamp(24px, 2.15vw, 38px); line-height: 1.16; text-wrap: balance; }
.r61-home-service-summary { max-width: 56ch; font-size: clamp(17px, 1.2vw, 21px); line-height: 1.55; }
.r84-home-trust-proof { display: flex; gap: 14px; align-items: center; margin: 28px 0 0; font: 700 clamp(14px, 1vw, 17px)/1.25 var(--r54-sans, sans-serif); letter-spacing: .08em; text-transform: uppercase; }
.r84-home-trust-proof > span { width: 42px; height: 2px; flex: 0 0 auto; background: var(--r84-red); }
.r53-hero-actions { margin-top: 30px; display: flex; flex-wrap: wrap; gap: 12px; }

/* One stable principle canvas. JS types once, then only emphasizes clauses. */
.r61-home-principle { min-height: clamp(430px, 42vw, 650px); display: grid; align-items: center; background: var(--r84-warm); }
.r61-home-principle-grid { display: grid; grid-template-columns: minmax(180px, .36fr) minmax(0, 1.64fr); gap: clamp(44px, 6vw, 116px); align-items: center; }
.r61-home-principle-quote { min-width: 0; margin: 0; padding-left: clamp(28px, 3.5vw, 64px); border-left: 2px solid var(--r84-red); }
.r83-principle-copy-frame { min-height: 3.55em; display: grid; align-items: center; }
.r82-principle-visible { font-size: clamp(38px, 4.4vw, 76px); line-height: 1.04; letter-spacing: -.04em; text-wrap: balance; }
.r82-principle-visible .r84-principle-clause { opacity: .58; transition: opacity 320ms ease, color 320ms ease, font-weight 320ms ease; }
.r82-principle-visible .r84-principle-clause.is-emphasized { opacity: 1; color: var(--r84-burgundy); font-weight: 650; }
.r82-principle-visible.is-r84-crossfading { opacity: 0; transform: translateY(8px); }
.r82-principle-visible { transition: opacity 280ms ease, transform 280ms ease; }
.r61-home-principle-source { display: none !important; }

/* Consistent controls and one icon per action. */
.r53-button, .r53-arrow-link, .r54-practice-directory-link, .r53-practice-card, .r84-assistant-topics a, .r84-contact-dock a, .r84-contact-dock button { min-height: 48px; }
.r54-practice-directory-action, .r53-practice-action { display: grid; place-items: center; width: 48px; height: 48px; color: var(--r84-red); border: 1px solid currentColor; border-radius: 50%; }
.r54-practice-directory-action::before, .r54-practice-directory-action::after, .r53-practice-action::before, .r53-practice-action::after { content: none !important; }
.r78-practice-symbol { width: 34px; height: 34px; color: var(--r84-red); stroke-width: 1.75; }
.r78-practice-icon { display: grid; place-items: center; }
.r53-practice-card:hover .r54-practice-directory-action, .r53-practice-card:hover .r53-practice-action, .r54-practice-directory-link:hover .r54-practice-directory-action { color: var(--r84-paper); background: var(--r84-red); }
.r53-practice-card:hover .r78-practice-symbol { color: currentColor; }

/* Office is three facts; fax is intentionally absent. */
.r53-office-record .r53-fact-grid { grid-template-columns: minmax(0, 1.5fr) repeat(2, minmax(0, 1fr)); }
.r67-office-fact-icon { color: var(--r84-red); }
.r67-office-fact-icon .r84-icon { width: 24px; height: 24px; }

/* FAQ: one native details control with explicit state. */
.r53-faq-list details { border-top: 1px solid var(--r84-line); }
.r53-faq-list details:last-child { border-bottom: 1px solid var(--r84-line); }
.r53-faq-list summary { min-height: 100px; display: grid; grid-template-columns: minmax(0, 1fr) 48px; gap: 28px; align-items: center; padding: 20px 0; }
.r53-faq-list summary::after, .r53-faq-list summary::before { display: none !important; content: none !important; border: 0 !important; }
.r53-faq-list summary strong { font-size: clamp(22px, 1.75vw, 31px); line-height: 1.24; text-wrap: pretty; }
.r84-faq-control { width: 46px !important; height: 46px !important; display: grid !important; place-items: center; border: 1px solid var(--r84-red); border-radius: 50%; color: var(--r84-red); font-size: inherit !important; }
.r84-faq-control > span { grid-area: 1 / 1; }
.r84-faq-collapse, details[open] .r84-faq-expand { display: none; }
details[open] .r84-faq-collapse { display: block; }
.r53-faq-list .r53-prose { max-width: 72ch; padding: 0 76px 32px 0; font-size: 18px; line-height: 1.68; }

/* Editorial readability. */
.r53-article-body .r53-prose, .r53-article-body, .r54-content-prose .r53-prose { font-size: clamp(18px, 1.22vw, 20px); line-height: 1.72; }
.r53-article-body .r53-prose > *, .r54-content-prose .r53-prose > * { max-width: 68ch; }

/* Persistent contact and the bounded, no-input office guide. */
.r84-contact-dock { position: fixed; right: max(14px, env(safe-area-inset-right)); bottom: max(14px, env(safe-area-inset-bottom)); z-index: var(--z-overlay); display: grid; grid-auto-flow: column; grid-auto-columns: 48px; gap: 1px; padding: 4px; background: rgba(23,17,19,.96); border: 1px solid rgba(255,255,255,.18); box-shadow: 0 12px 32px rgba(23,17,19,.22); }
.r84-contact-dock a, .r84-contact-dock button { width: 48px; min-width: 48px; border: 0; display: inline-grid; place-items: center; padding: 0; color: #fff; background: transparent; font: 700 13px/1 var(--r54-sans, sans-serif); text-decoration: none; cursor: pointer; }
.r84-contact-dock > :not(:first-child) { border-left: 1px solid rgba(255,255,255,.2); }
.r84-contact-dock .r84-icon { width: 19px; height: 19px; }
.r84-contact-dock :is(a,button) > span:last-child { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
.r84-assistant { width: min(520px, calc(100vw - 32px)); max-height: min(760px, calc(100dvh - 32px)); margin: auto 16px 16px auto; padding: 0; color: var(--r84-ink); border: 0; border-radius: 0; overflow: auto; box-shadow: 0 24px 70px rgba(0,0,0,.32); }
.r84-assistant[open] { z-index: var(--z-modal); }
.r84-assistant::backdrop { background: rgba(23,17,19,.5); backdrop-filter: blur(3px); }
.r84-assistant-panel { position: relative; padding: clamp(28px, 5vw, 48px); background: var(--r84-paper); }
.r84-assistant h2 { margin: 12px 50px 16px 0; font-size: clamp(34px, 4vw, 50px); line-height: 1; letter-spacing: -.035em; }
.r84-assistant-close { position: absolute; right: 22px; top: 22px; width: 46px; height: 46px; display: grid; place-items: center; border: 1px solid var(--r84-line); background: #fff; color: var(--r84-ink); cursor: pointer; }
.r84-assistant-topics { display: grid; margin-top: 28px; border-top: 1px solid var(--r84-line); }
.r84-assistant-topics a { display: grid; grid-template-columns: 28px minmax(0,1fr) 24px; gap: 14px; align-items: center; padding: 17px 0; color: var(--r84-ink); text-decoration: none; border-bottom: 1px solid var(--r84-line); }
.r84-assistant-topics a > .r84-icon:first-child { color: var(--r84-red); }
.r84-assistant-topics a > .r84-icon:last-child { justify-self: end; }
.r84-assistant-notice { margin: 24px 0 0; padding: 18px; color: var(--r84-muted); background: var(--r84-warm); font-size: 14px; line-height: 1.55; }

.r53-site :where(a, button, summary, input, textarea, select):focus-visible { outline: 3px solid #fff; box-shadow: 0 0 0 5px var(--r84-red); outline-offset: 2px; }
.r53-site :where(a, button, summary):active { transform: translateY(1px); }

/* Terminal locks override legacy high-specificity breakpoint layers. */
@media (min-width: 1180px) {
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-header-grid { grid-template-columns: minmax(280px, 300px) minmax(420px, 1fr) auto auto auto !important; gap: clamp(10px, 1vw, 18px) !important; }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-brand { grid-column: 1 !important; grid-row: 1 !important; }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-desktop-nav { grid-column: 2 !important; grid-row: 1 !important; }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-languages { grid-column: 3 !important; grid-row: 1 !important; }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r84-header-phone { grid-column: 4 !important; grid-row: 1 !important; }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-header-contact { grid-column: 5 !important; grid-row: 1 !important; width: auto !important; min-width: 136px !important; padding-inline: 14px !important; }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-desktop-nav ul { gap: clamp(8px, .65vw, 14px) !important; }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-desktop-nav a { padding-inline: 2px !important; font-size: clamp(14px, .9vw, 16px) !important; }
}

/* The 24px wide-screen wordmark needs its own measured track; otherwise the
   nowrap brand text can paint into Home even though the grid itself fits. */
@media (min-width: 1600px) {
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-header-grid {
    grid-template-columns: minmax(360px, 380px) minmax(600px, 1fr) auto auto auto !important;
    column-gap: clamp(14px, 1.05vw, 20px) !important;
  }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-brand > span { min-width: 0; }
}

html body.gl-r53 .r53-site[data-site-production-root] main .r53-faq summary::before,
html body.gl-r53 .r53-site[data-site-production-root] main .r53-faq summary::after { display: none !important; width: 0 !important; height: 0 !important; content: none !important; border: 0 !important; }
html body.gl-r53 .r53-site[data-site-production-root] main .r53-faq summary > .r84-faq-control { width: 46px !important; height: 46px !important; display: grid !important; margin: 0 !important; padding: 0 !important; }

@media (max-width: 1179px) {
  .r53-header-grid { grid-template-columns: minmax(220px, 1fr) auto auto; min-height: 92px; }
  .r53-header { min-height: 92px; }
  .r53-desktop-nav, .r53-languages, .r84-header-phone, .r53-header-contact { display: none; }
  .r53-menu { display: block; }
  .r53-menu[open] { z-index: var(--z-navigation); }
  .r53-menu[open] .r53-menu-panel { z-index: var(--z-popover); }
  .r54-route-hero-grid, .r53-profile-hero-grid, .r53-article-hero-grid { min-height: 440px; }
  .r61-home-principle-grid { grid-template-columns: 1fr; gap: 30px; }
  .r61-home-principle-title { margin-bottom: 0; }
}

@media (max-width: 720px) {
  :root { --r84-gutter: 20px; --r84-section: 64px; }
  .r53-header, .r53-header-grid { min-height: 76px; }
  .r53-header-grid { grid-template-columns: minmax(0, 1fr) 44px auto !important; gap: 8px; }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-header-grid { grid-template-columns: minmax(0, 1fr) 44px auto !important; gap: 8px !important; }
  .r53-brand .r53-logo { width: 44px; height: 44px; }
  .r53-brand strong { font-size: 16px; }
  .r53-brand small { display: none; }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r84-header-phone { display: inline-grid !important; grid-column: 2 !important; grid-row: 1 !important; width: 44px; height: 44px; min-height: 44px; place-items: center; padding: 0; border: 1px solid var(--r84-line); }
  html body.gl-r53 .r53-site[data-site-production-root] > .r53-header .r53-menu { grid-column: 3 !important; grid-row: 1 !important; }
  .r84-header-phone-label { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
  .r54-home-authority-stage { min-height: auto; }
  .r54-home-authority-inner { min-height: 560px; align-items: end; }
  .r54-home-authority-copy { width: 100%; padding-block: 88px 52px; }
  .r54-home-authority h1 { max-width: 10ch; font-size: clamp(48px, 14vw, 66px); line-height: .92; }
  .r79-home-audience-line { font-size: clamp(22px, 7vw, 30px); }
  .r61-home-service-summary { font-size: 17px; }
  .r53-hero-actions { display: grid; grid-template-columns: 1fr; }
  .r61-home-principle { min-height: 520px; }
  .r61-home-principle-quote { padding-left: 22px; }
  .r83-principle-copy-frame { min-height: 6.2em; }
  .r82-principle-visible { font-size: clamp(32px, 9.5vw, 46px); line-height: 1.06; }
  .r54-route-hero-grid, .r53-profile-hero-grid, .r53-article-hero-grid { min-height: 360px; }
  .r54-route-hero h1, .r53-profile-hero h1, .r53-article-hero h1 { font-size: clamp(43px, 12vw, 60px); }
  .r53-office-record .r53-fact-grid { grid-template-columns: 1fr; }
  .r53-faq-list summary { min-height: 84px; grid-template-columns: minmax(0,1fr) 42px; gap: 16px; }
  .r53-faq-list summary strong { font-size: 21px; }
  .r84-faq-control { width: 40px; height: 40px; }
  .r53-faq-list .r53-prose { padding-right: 0; }
  html body.gl-r53 .r53-site[data-site-production-root].r60-home .r58-founder-authority-grid { grid-template-columns: 136px minmax(0, 1fr) !important; }
  html body.gl-r53 .r53-site[data-site-production-root].r60-home .r58-founder-authority-portrait { width: 136px !important; min-height: 0 !important; aspect-ratio: 4 / 5 !important; background: #fff !important; }
  html body.gl-r53 .r53-site[data-site-production-root].r60-home .r58-founder-authority-image { min-height: 0 !important; aspect-ratio: 4 / 5 !important; object-fit: cover !important; object-position: 50% 18% !important; background: #fff !important; }
  .r84-contact-dock { display: none !important; }
  .r84-assistant { width: calc(100vw - 24px); max-height: calc(100dvh - 24px); margin: auto 12px 12px; }
}

@media (max-width: 359px) {
  html body.gl-r53 .r53-site[data-site-production-root].r60-home .r58-founder-authority-grid { grid-template-columns: 120px minmax(0, 1fr) !important; gap-inline: 16px !important; }
  html body.gl-r53 .r53-site[data-site-production-root].r60-home .r58-founder-authority-portrait { width: 120px !important; }
}

@media (max-height: 650px) and (min-width: 721px) {
  .r54-home-authority-stage { min-height: 560px; }
  .r84-assistant { max-height: calc(100dvh - 24px); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
  .r82-principle-visible .r84-principle-clause { opacity: 1; }
}

/* R85 factual-media framing: the real office stays geometrically intact and
   the portrait uses its complete 4:5 canvas. Enhancement is in the source
   asset; CSS may position it but must not hide factual identity or signage. */
.r60-contact .r54-route-hero-contact-office .r54-route-hero-grid {
  grid-template-columns: minmax(340px, 38%) minmax(0, 62%);
  height: auto;
  min-height: 0;
}
.r60-contact .r54-route-hero-contact-office .r53-page-hero-media {
  aspect-ratio: 3 / 2;
  height: auto;
  min-height: 0;
  background: #f4f1ed;
}
.r60-contact .r54-route-hero-contact-office .r53-page-hero-image[src*="office-restored.webp"] {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 52%;
}
.r65-profile-portrait-image[src*="george.jpg"],
.r53-counsel-image[src*="george.jpg"],
.r54-firm-person-image[src*="george.jpg"] {
  object-fit: contain !important;
  object-position: 50% 50% !important;
  background: #fff !important;
}
@media (max-width: 840px) {
  .r60-contact .r54-route-hero-contact-office .r54-route-hero-grid,
  .r60-contact .r54-route-hero-contact-office.r53-page-hero-has-media .r54-route-hero-grid {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto;
  }
  .r60-contact .r54-route-hero-contact-office .r53-page-hero-media {
    grid-column: 1;
    grid-row: 1;
    width: 100%;
    aspect-ratio: 3 / 2;
  }
  .r60-contact .r54-route-hero-contact-office .r53-page-hero-image[src*="office-restored.webp"] {
    object-fit: contain;
    object-position: 50% 50%;
  }
}
