:root {
  --geo-brand: #e60027;
  --geo-text: #333;
  --geo-muted: #666;
  --geo-border: #d9d9d9;
  --geo-surface: #f7f7f7;
}

.geo-content { color: var(--geo-text); font-size: 16px; line-height: 1.75; }
.geo-content * { box-sizing: border-box; }
.geo-content h1, .geo-content h2, .geo-content h3 { padding: 0; background: none; color: #292929; }
.geo-content__inner { width: min(1120px, calc(100% - 96px)); margin: 0 auto; padding: 72px 0; }
.geo-content__inner--narrow { max-width: 880px; }
.geo-content__header { margin-bottom: 40px; }
.geo-content h1 { margin: 0 0 20px; font-size: clamp(34px, 4vw, 50px); line-height: 1.22; }
.geo-content h2 { margin: 48px 0 18px; font-size: clamp(26px, 3vw, 34px); line-height: 1.35; }
.geo-content__eyebrow, .geo-section-eyebrow { color: var(--geo-brand); font-weight: 700; letter-spacing: .18em; text-transform: uppercase; }
.geo-content__meta, .geo-content__summary { color: var(--geo-muted); }
.geo-content a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.geo-content a:hover { color: var(--geo-brand); }
.geo-content a:focus-visible, .geo-faq__question:focus-visible { outline: 3px solid var(--geo-brand); outline-offset: 3px; }
.geo-table-wrap { overflow-x: auto; }
.geo-content table { width: 100%; border-collapse: collapse; }
.geo-content th, .geo-content td { padding: 14px 16px; border: 1px solid var(--geo-border); text-align: left; }
.geo-visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* FAQ: wide website gutters, restrained typography, and strong open-state hierarchy. */
.geo-faq { background: #f3f3f3; }
.geo-faq__inner { width: min(1000px, calc(100% - 96px)); padding-top: 88px; padding-bottom: 96px; }
.geo-faq__header { max-width: 920px; margin: 0 auto 38px; text-align: left; }
.geo-faq__eyebrow { margin: 0 0 10px; color: var(--geo-brand); font-size: 13px; font-weight: 700; letter-spacing: .22em; line-height: 1.4; }
.geo-faq__header h2 { margin: 0; font-size: clamp(30px, 3.2vw, 40px); font-weight: 500; letter-spacing: .02em; }
.geo-faq__header h2::after { display: block; width: 56px; height: 4px; margin: 20px 0 18px; background: var(--geo-brand); content: ""; }
.geo-faq__intro { max-width: 720px; margin: 0; color: var(--geo-muted); font-size: 16px; line-height: 1.8; overflow-wrap: anywhere; }
.geo-faq__list { display: grid; max-width: 920px; margin: 0 auto; gap: 14px; }
.geo-faq__item { position: relative; overflow: hidden; border: 1px solid #d8d8d8; background: #fff; box-shadow: 0 4px 18px rgb(0 0 0 / 4%); transition: border-color .2s ease, box-shadow .2s ease; }
.geo-faq__item::before { position: absolute; top: 0; left: 0; width: 120px; height: 3px; background: var(--geo-brand); content: ""; }
.geo-faq__item:hover { border-color: #bdbdbd; box-shadow: 0 8px 24px rgb(0 0 0 / 7%); }
.geo-faq__heading { margin: 0 !important; font-size: 19px !important; }
.geo-content .geo-faq__question { display: flex; box-sizing: border-box; width: 100%; min-height: 84px; align-items: center; justify-content: space-between; gap: 28px; padding: 25px 36px; border: 0; background: #fff; color: #292929; font: inherit; font-weight: 600; line-height: 1.55; text-align: left; cursor: pointer; }
.geo-faq__question-label { display: flex; flex: 1 1 auto; min-width: 0; align-items: center; gap: 22px; }
.geo-faq__question-label > span:last-child { min-width: 0; overflow-wrap: anywhere; }
.geo-faq__number { flex: 0 0 28px; color: var(--geo-brand); font-size: 13px; font-weight: 700; letter-spacing: .08em; }
.geo-faq__icon { position: relative; flex: 0 0 34px; width: 34px; height: 34px; border: 1px solid #cfcfcf; border-radius: 50%; background: #fff; }
.geo-faq__icon::before, .geo-faq__icon::after { position: absolute; top: 15px; left: 9px; width: 14px; height: 2px; background: var(--geo-brand); content: ""; }
.geo-faq__icon::after { transform: rotate(90deg); transition: transform .2s ease; }
.geo-faq__question[aria-expanded="true"] { color: var(--geo-brand); box-shadow: inset 4px 0 0 var(--geo-brand); }
.geo-faq__question[aria-expanded="true"] .geo-faq__icon::after { transform: rotate(0); }
.geo-faq__answer:not([hidden]) { border-top: 1px solid #e6e6e6; background: #fafafa; }
.geo-faq__answer-body { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 22px; padding: 26px 82px 30px 32px; }
.geo-faq__answer-body p { min-width: 0; margin: 0; color: #505050; line-height: 1.9; overflow-wrap: anywhere; }
.geo-faq__answer-mark { display: inline-flex; width: 34px; height: 34px; align-items: center; justify-content: center; background: var(--geo-brand); color: #fff; font-size: 13px; font-weight: 700; line-height: 1; }

/* Case directory: follows the site's white card, half-width red accent, and hover language. */
.geo-case-directory { background: #fff; }
.geo-case-directory__inner { width: min(1200px, calc(100% - 96px)); margin: 0 auto; padding: 96px 0 104px; }
.geo-section-heading { max-width: 760px; margin: 0 auto 48px; text-align: center; }
.geo-section-eyebrow { margin: 0 0 10px; font-size: 13px; line-height: 1.4; }
.geo-section-heading h2 { margin: 0; font-size: clamp(32px, 3.4vw, 42px); font-weight: 500; }
.geo-section-heading h2::after { display: block; width: 56px; height: 4px; margin: 20px auto 18px; background: var(--geo-brand); content: ""; }
.geo-section-heading > p:last-child { margin: 0; color: var(--geo-muted); line-height: 1.8; }
.geo-case-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; margin: 0; padding: 0; list-style: none; }
.geo-case-card { min-width: 0; }
.geo-case-card__link { position: relative; display: block; height: 100%; min-height: 330px; overflow: hidden; padding: 36px 38px 34px; border: 1px solid #d8d8d8; background: #fff; box-shadow: 0 6px 24px rgb(0 0 0 / 5%); text-decoration: none !important; transition: color .2s ease, background-color .2s ease, border-color .2s ease, transform .2s ease, box-shadow .2s ease; }
.geo-case-card__link::before { position: absolute; top: 0; left: 0; width: 50%; height: 6px; background: var(--geo-brand); content: ""; }
.geo-content .geo-case-card__link:hover { border-color: var(--geo-brand); background: var(--geo-brand); color: #fff; transform: translateY(-4px); box-shadow: 0 14px 34px rgb(89 0 15 / 18%); }
.geo-case-card__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; margin-bottom: 32px; }
.geo-case-card__number { color: #d7d7d7; font-size: 52px; font-weight: 300; letter-spacing: -.04em; line-height: 1; }
.geo-case-card__location { max-width: 65%; padding-top: 4px; color: #777; font-size: 13px; line-height: 1.5; text-align: right; }
.geo-case-card__tag { margin: 0 0 10px; color: var(--geo-brand); font-size: 13px; font-weight: 700; letter-spacing: .06em; }
.geo-case-card h3 { margin: 0 0 16px; font-size: 26px; font-weight: 500; line-height: 1.35; }
.geo-case-card__summary { margin: 0 0 34px; color: #5b5b5b; line-height: 1.85; }
.geo-case-card__cta { position: absolute; right: 38px; bottom: 30px; display: inline-flex; align-items: center; gap: 14px; font-size: 14px; font-weight: 700; }
.geo-case-card__cta span { color: var(--geo-brand); font-size: 22px; line-height: 1; transition: transform .2s ease; }
.geo-content .geo-case-card__link:hover h3,
.geo-content .geo-case-card__link:hover .geo-case-card__number,
.geo-content .geo-case-card__link:hover .geo-case-card__location,
.geo-content .geo-case-card__link:hover .geo-case-card__tag,
.geo-content .geo-case-card__link:hover .geo-case-card__summary,
.geo-content .geo-case-card__link:hover .geo-case-card__cta,
.geo-content .geo-case-card__link:hover .geo-case-card__cta span { color: #fff; }
.geo-case-card__link:hover .geo-case-card__number { opacity: .45; }
.geo-case-card__link:hover .geo-case-card__cta span { transform: translateX(5px); }

/* Case detail: editorial hero, numbered story sections, and clear related actions. */
.geo-case-hero { border-top: 4px solid var(--geo-brand); background: #f2f2f2; }
.geo-case-hero__inner { width: min(1120px, calc(100% - 96px)); margin: 0 auto; padding: 38px 0 76px; }
.geo-breadcrumb ol { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 54px; padding: 0; color: #666; font-size: 13px; list-style: none; }
.geo-breadcrumb li + li::before { content: "/"; margin-right: 8px; color: #999; }
.geo-case-hero h1 { max-width: 900px; margin: 8px 0 22px; font-weight: 500; }
.geo-case-hero__summary { max-width: 820px; margin: 0; color: #4d4d4d; font-size: 20px; line-height: 1.8; }
.geo-case-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 900px; margin: 42px 0 0; padding: 26px 0 0; border-top: 1px solid #cfcfcf; list-style: none; }
.geo-case-meta li { padding-right: 32px; }
.geo-case-meta li + li { padding-left: 32px; border-left: 1px solid #cfcfcf; }
.geo-case-meta span { display: block; margin-bottom: 5px; color: #777; font-size: 12px; letter-spacing: .08em; }
.geo-case-meta strong { display: block; font-size: 16px; font-weight: 600; }
.geo-case-body { background: #fff; }
.geo-case-body__inner { width: min(960px, calc(100% - 96px)); margin: 0 auto; padding: 28px 0 96px; }
.geo-case-section { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 28px; padding: 58px 0; border-bottom: 1px solid #ddd; }
.geo-case-section__number { color: #d5d5d5; font-size: 50px; font-weight: 300; letter-spacing: -.04em; line-height: 1; }
.geo-case-section__eyebrow { margin: 1px 0 7px; color: var(--geo-brand); font-size: 12px; font-weight: 700; letter-spacing: .18em; line-height: 1.4; }
.geo-case-section h2 { margin: 0 0 20px; font-size: 30px; font-weight: 500; }
.geo-case-section__content > p:last-child,
.geo-case-section__text { max-width: 760px; margin: 0; color: #4f4f4f; font-size: 17px; line-height: 2; }
.geo-related { position: relative; margin-top: 72px; padding: 42px; background: #f2f2f2; }
.geo-related::before { position: absolute; top: 0; left: 0; width: 50%; height: 5px; background: var(--geo-brand); content: ""; }
.geo-related header { margin-bottom: 26px; }
.geo-related h2 { margin: 6px 0 0; font-size: 28px; font-weight: 500; }
.geo-related ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 0; padding: 0; list-style: none; }
.geo-related a { display: flex; min-height: 66px; align-items: center; justify-content: space-between; gap: 18px; padding: 17px 20px; border: 1px solid #d5d5d5; background: #fff; font-weight: 600; text-decoration: none; }
.geo-related a::after { color: var(--geo-brand); font-size: 21px; content: "→"; transition: transform .2s ease; }
.geo-related a:hover { border-color: var(--geo-brand); color: var(--geo-brand); }
.geo-related a:hover::after { transform: translateX(4px); }

.geo-card-grid, .geo-article-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; margin: 0; padding: 0; list-style: none; }
.geo-card, .geo-article-list > li { padding: 28px; border: 1px solid var(--geo-border); background: #fff; }
.geo-card h2, .geo-article-list h2 { margin-top: 0; font-size: 24px; }

@media (max-width: 767px) {
  .geo-content__inner { width: calc(100% - 48px); padding: 48px 0; }
  .geo-card-grid, .geo-article-list, .geo-case-grid { grid-template-columns: 1fr; }
  .geo-card, .geo-article-list > li { padding: 20px; }

  .geo-faq__inner { width: calc(100% - 48px); padding-top: 58px; padding-bottom: 64px; }
  .geo-faq__header { margin-bottom: 30px; }
  .geo-faq__header h2 { font-size: 29px; }
  .geo-faq__header h2::after { margin-top: 16px; margin-bottom: 14px; }
  .geo-faq__intro { font-size: 15px; }
  .geo-faq__list { gap: 12px; }
  .geo-faq__heading { font-size: 17px !important; }
  .geo-content .geo-faq__question { min-height: 74px; gap: 14px; padding: 20px; }
  .geo-faq__question-label { align-items: flex-start; gap: 13px; }
  .geo-faq__number { flex-basis: 24px; padding-top: 3px; }
  .geo-faq__icon { flex-basis: 30px; width: 30px; height: 30px; }
  .geo-faq__icon::before, .geo-faq__icon::after { top: 13px; left: 8px; }
  .geo-faq__answer-body { grid-template-columns: 30px minmax(0, 1fr); gap: 14px; padding: 22px 20px 26px; }
  .geo-faq__answer-mark { width: 30px; height: 30px; }

  .geo-case-directory__inner { width: calc(100% - 48px); padding: 64px 0 72px; }
  .geo-section-heading { margin-bottom: 34px; text-align: left; }
  .geo-section-heading h2 { font-size: 30px; }
  .geo-section-heading h2::after { margin: 16px 0 14px; }
  .geo-case-grid { gap: 18px; }
  .geo-case-card__link { min-height: 310px; padding: 30px 26px 28px; }
  .geo-case-card__top { margin-bottom: 25px; }
  .geo-case-card__number { font-size: 44px; }
  .geo-case-card__location { font-size: 12px; }
  .geo-case-card h3 { font-size: 23px; }
  .geo-case-card__cta { right: 26px; bottom: 24px; }

  .geo-case-hero__inner, .geo-case-body__inner { width: calc(100% - 48px); }
  .geo-case-hero__inner { padding: 26px 0 52px; }
  .geo-breadcrumb ol { margin-bottom: 38px; }
  .geo-case-hero h1 { font-size: 34px; }
  .geo-case-hero__summary { font-size: 17px; line-height: 1.8; }
  .geo-case-meta { grid-template-columns: 1fr; margin-top: 32px; padding-top: 20px; }
  .geo-case-meta li { padding-right: 0; }
  .geo-case-meta li + li { margin-top: 16px; padding: 16px 0 0; border-top: 1px solid #d5d5d5; border-left: 0; }
  .geo-case-body__inner { padding: 6px 0 72px; }
  .geo-case-section { grid-template-columns: 1fr; gap: 12px; padding: 44px 0; }
  .geo-case-section__number { font-size: 38px; }
  .geo-case-section h2 { font-size: 27px; }
  .geo-case-section__content > p:last-child,
  .geo-case-section__text { font-size: 16px; line-height: 1.9; }
  .geo-related { margin-top: 54px; padding: 30px 24px 26px; }
  .geo-related h2 { font-size: 25px; }
  .geo-related ul { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .geo-faq__item, .geo-faq__icon::after, .geo-case-card__link, .geo-case-card__cta span, .geo-related a::after { transition: none; }
}
