/* gsi's existing blue, white and sand palette, with a quieter graphic rhythm. */
.gsi-rule::before { content: ''; display: block; width: 4.5rem; height: 2px; margin-bottom: 1.1rem; background: currentColor; transform-origin: left; }
.section-heading.gsi-rule::before { grid-column: 1 / -1; }
.gsi-reveal { transition: opacity 600ms ease, translate 600ms var(--ease); }
.gsi-reveal.is-waiting { opacity: 0; translate: 0 18px; }
.gsi-reveal:focus-within { opacity: 1; translate: none; }
.service-directory article, .experience-directory article, .guide-topic, .compact-work article { transition: background-color 240ms ease, border-color 240ms ease; }
.service-directory article:hover, .service-directory article:focus-within, .experience-directory article:hover, .experience-directory article:focus-within { background: var(--paper); }
.person-photo { overflow: hidden; }
.person-photo img { transition: transform 400ms var(--ease); }
.person-photo:hover img, .person-photo:focus-visible img { transform: scale(1.025); }
/* Real supplied covers bridge the heading and body, without exposing client reports. */
.gsi-comparison { margin: 3rem auto; padding: clamp(1.25rem, 3vw, 2.75rem); background: white; border: 1px solid var(--line); }
.gsi-comparison h2 { font: 400 clamp(1.65rem, 3vw, 2.25rem)/1.15 Georgia,serif; }
.gsi-comparison > p { max-width: 65ch; }
.comparison-labels { display: flex; justify-content: space-between; gap: 1rem; font-size: .875rem; }
.valuation-facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1px; background: var(--line); margin-block: 2.5rem; border-block: 1px solid var(--line); }
.valuation-facts > div { background: var(--paper-bright); padding: 1.5rem; }
.valuation-facts strong { display: block; font: 400 clamp(1.6rem,3.2vw,3rem)/1.15 Georgia,serif; }
.valuation-facts span { display: block; font-size: .875rem; margin-top: .75rem; }
/* The section and sticky stage contract together, preserving the scroll stop. */
[data-mode="desktop"].report-experience, [data-mode="mobile"].report-experience { --display-stage-height: var(--locked-stage-height, 100svh); min-height: calc(var(--display-stage-height) + var(--report-count) * var(--report-step) + 2px); transition: min-height 360ms var(--ease); overflow-anchor: none; }
[data-mode="desktop"] .report-stage, [data-mode="mobile"] .report-stage,
[data-mode="desktop"].reports-settled .report-stage, [data-mode="mobile"].reports-settled .report-stage { height: var(--display-stage-height); transition: height 360ms var(--ease); min-height: 0; grid-template-rows: auto minmax(0,1fr) auto; align-content: normal; }
[data-mode="desktop"].reports-settled .report-deck, [data-mode="mobile"].reports-settled .report-deck { height: auto; min-height: 0; align-self: stretch; }
[data-mode="desktop"] .report-deck, [data-mode="mobile"] .report-deck { transform: translateY(var(--exit-lift,0px)) scale(1); opacity: calc(1 - var(--exit-progress,0)); transition: scale 380ms var(--ease); overflow: visible; }
[data-mode="desktop"].reports-enlarged .report-deck, [data-mode="mobile"].reports-enlarged .report-deck { scale: 1.07; }
[data-mode="desktop"].reports-settled .report-card { width: min(var(--settled-card-width), 28vw); transform: translate(-50%,-50%) translateX(calc(var(--slot) * 64%)) scale(.6); }
[data-mode="mobile"].reports-settled .report-card { width: min(28vw, 10rem); transform: translate(-50%,-50%) translateX(calc(var(--slot) * 56%)) scale(1); }
.report-experience.reports-exiting .hero-heading, .report-experience.reports-exiting .report-controls { opacity: calc(1 - var(--exit-progress,0)); }
.report-experience + .expropriation-feature { position: relative; z-index: 3; }
@media(max-width:48rem) {
 .valuation-facts { grid-template-columns: 1fr; }
}
@media(prefers-reduced-motion:reduce) {
 .gsi-reveal, .person-photo img, .report-deck { transition: none !important; }
 .gsi-reveal.is-waiting { opacity: 1; translate: none; }
 .person-photo:hover img { transform: none; }
}

/* Compact overview on both screen sizes, with room for the subtle 7% enlargement. */
[data-mode="desktop"].reports-settled,
[data-mode="mobile"].reports-settled { --display-stage-height: var(--compact-stage-height); }
[data-mode="desktop"] .report-card,
[data-mode="mobile"] .report-card { transition: transform 300ms cubic-bezier(.22,.61,.36,1), width 300ms cubic-bezier(.22,.61,.36,1); }
.report-experience.reports-measuring, .reports-measuring * { transition: none !important; }
main:has(.report-experience) { overflow-anchor: none; }
@media (prefers-reduced-motion: reduce) {
 .report-experience, .report-stage, .report-card { transition: none !important; }
}

/* Keep the process accent above the heading rather than in its flex row. */
.process-overview .section-heading.gsi-rule { position: relative; padding-top: 2rem; }
.process-overview .section-heading.gsi-rule::before { position: absolute; top: 0; left: 0; margin: 0; }

/* Tune desktop independently from touch interaction. */
[data-mode="desktop"] .report-card { transition-duration: 200ms, 200ms; }
[data-mode="mobile"] .report-card { transition-duration: 220ms, 220ms; }

.about-slogan { max-width: none; margin: 0 0 clamp(2rem, 4vw, 3.5rem); font: 400 clamp(.75rem, 3.7vw, 3.2rem)/1.2 Georgia, serif; letter-spacing: -.02em; color: var(--ink); white-space: nowrap; }

/* Shared editorial rhythm, retaining the existing brand and page content. */
.about-slogan strong { font-weight: 700; }
.service-page .service-main > .service-breadcrumb,
.service-page .service-main > .service-intro,
.service-page .service-main > .service-body,
.service-page .service-main > .contact-page-grid,
.service-page .service-main > .experience-directory { max-width: 78rem; margin-inline: auto; }
.service-page .service-intro {
  padding-block: clamp(2.5rem, 5vw, 4rem);
  border-bottom: 1px solid var(--line);
}
.service-page .service-intro h1 {
  margin: 0;
  font: 400 clamp(2.25rem, 4.6vw, 4.5rem)/1.08 Georgia, "Times New Roman", serif;
  letter-spacing: -.035em;
}
.service-page .service-intro h1::before { width: 4.5rem; margin-bottom: 1.25rem; }
.service-page .service-intro > p:not(.section-label):not(.experience-note) {
  max-width: 58ch;
  margin: 1.5rem 0 0;
  font-size: clamp(1.125rem, 1.7vw, 1.4rem);
  line-height: 1.6;
}
.service-page .service-intro .experience-note { margin: 1rem 0 0; }

/* Assignment summaries remain sourced from the existing editable examples. */
.experience-page .experience-directory { grid-template-columns: 1fr; padding-top: 0; }
.experience-page .experience-directory article:nth-child(n) {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  column-gap: clamp(2rem, 5vw, 5rem);
  row-gap: .85rem;
  padding: clamp(1.75rem, 3vw, 2.75rem) 0;
  border-right: 0;
  border-bottom: 1px solid var(--line);
}
.experience-page .experience-directory .experience-category {
  grid-column: 1 / -1; margin: 0; font-size: .875rem; letter-spacing: .05em;
}
.experience-page .experience-directory h2 { grid-column: 1; grid-row: 2 / 4; margin: 0; max-width: 28ch; }
.experience-page .experience-directory h2 a { text-decoration: none; }
.experience-page .experience-directory article > p:not(.experience-category) { grid-column: 2; margin: 0; max-width: 55ch; }
.experience-page .experience-directory .experience-read { grid-column: 2; margin: .3rem 0 0; justify-self: start; }
.experience-page .experience-directory article:is(:hover, :focus-within) h2 a { text-decoration: underline; }

/* Feedback without layout shifts or added movement. */
:where(.about-more, .footer-links a, .office-link, .other-services a, .service-breadcrumb a) {
  text-decoration-thickness: 1px; text-underline-offset: .22em;
  transition: color 160ms ease, text-decoration-color 160ms ease;
}
:where(.about-more, .footer-links a, .office-link, .other-services a, .service-breadcrumb a):is(:hover, :focus-visible) { text-decoration: underline; text-decoration-thickness: 2px; }
.button, .service-call { transition: background-color 160ms ease, border-color 160ms ease; }
.service-contact .service-call:is(:hover, :focus-visible) { background: var(--mist); border-color: var(--ink); }
a:focus-visible, button:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }
.button:focus-visible { outline: 2px solid var(--ink); outline-offset: 4px; }
.section-dark .button:focus-visible { outline-color: white; }
@media (max-width: 42rem) {
  .experience-page .experience-directory article:nth-child(n) { grid-template-columns: 1fr; gap: 1rem; }
  .experience-page .experience-directory h2,
  .experience-page .experience-directory article > p:not(.experience-category),
  .experience-page .experience-directory .experience-read { grid-column: 1; grid-row: auto; }
}
@media (prefers-reduced-motion: reduce) {
  .button, .service-call, .about-more, .footer-links a, .office-link, .other-services a, .service-breadcrumb a { transition: none; }
}

.business-details { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; padding-top: 1.5rem; border-top: 1px solid var(--line); font-size: .875rem; line-height: 1.6; letter-spacing: normal; text-transform: none; }
.business-details span:first-child { flex-basis: 100%; }
.business-details a { overflow-wrap: anywhere; text-underline-offset: .2em; }
@media (max-width: 42rem) { .business-details { flex-direction: column; } }

/* A direct route past the cover sequence, alongside its existing prompt. */
.report-controls { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: .25rem 1.25rem; }
.report-controls .report-instruction { margin: 0; }
.report-skip { display: inline-flex; align-items: center; min-height: 44px; color: inherit; font-size: .875rem; text-underline-offset: .25em; }
.report-skip:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.service-faq details { border-top: 1px solid var(--line); padding-block: 1.1rem; }
.service-faq details:last-child { border-bottom: 1px solid var(--line); }
.service-faq summary { cursor: pointer; color: var(--ink); line-height: 1.5; }
.service-faq summary h3 { display: inline; font: 500 1rem/1.5 Arial, sans-serif; }
.service-faq details p { margin-top: .8rem; }
.service-faq summary:focus-visible { outline: 2px solid var(--ink); outline-offset: 5px; }
.service-content .assignment-source { margin-top: .8rem; }
