/* Focused service exploration and a clear contact handoff. */
[hidden] { display: none !important; }
button, input, select, textarea { font: inherit; }
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid #629424; outline-offset: 4px; }
[id] { scroll-margin-top: 6rem; }
.service-chooser { border: 0; padding: 0; margin: 0 0 2rem; min-width: 0; }
.service-chooser legend { margin-bottom: .9rem; font-weight: 750; }
.goal-buttons, .filter-buttons { display: flex; flex-wrap: wrap; gap: .65rem; }
.goal-buttons button, .filter-buttons button { min-height: 2.9rem; padding: .65rem 1rem; border: 1px solid #bac9b5; background: transparent; border-radius: 2rem; color: #15372b; cursor: pointer; font-size: .92rem; }
.goal-buttons button:hover, .filter-buttons button:hover { background: #e6eddc; }
.goal-buttons button[aria-pressed="true"], .filter-buttons button[aria-pressed="true"] { background: #15372b; border-color: #15372b; color: #fff; }
.service-chooser p { margin: .8rem 0 0; color: #536059; font-size: .88rem; }
.service-disclosure { border-top: 1px solid var(--line); }
.service-disclosure:last-child { border-bottom: 1px solid var(--line); }
.service-card-link { display:grid; grid-template-columns:3rem 6.5rem minmax(0,1fr) auto; align-items:center; gap:1.5rem; min-height:10rem; padding:1.9rem 0; border-top:1px solid rgba(255,255,255,.25); color:inherit; text-decoration:none; transition:background 180ms ease,padding 180ms ease,margin 180ms ease; }
.service-card-link:last-child { border-bottom:1px solid rgba(255,255,255,.25); }
.service-card-link:hover { margin-inline:-1rem; padding-inline:1rem; background:rgba(255,255,255,.045); }
.service-card-link:hover .service-icon { transform:translateY(-3px) scale(1.025); filter:drop-shadow(0 .55rem 1rem rgba(0,0,0,.2)); }
.service-card-cta { display:inline-flex; align-items:center; justify-content:center; min-height:2.85rem; padding:.75rem 1.15rem; border-radius:999px; background:#e4ecd9; color:#15372b; font-size:.78rem; font-weight:750; letter-spacing:.04em; white-space:nowrap; transition:background 180ms ease,transform 180ms ease; }
.service-card-link:hover .service-card-cta { background:var(--acid); transform:translateX(2px); }
.service-disclosure > summary { display: grid; grid-template-columns: 3rem 6.5rem minmax(0,1fr) 2rem; align-items: center; gap: 1.5rem; padding: 1.9rem 0; cursor: pointer; list-style: none; }
.service-disclosure > summary::-webkit-details-marker, .publication-disclosure > summary::-webkit-details-marker { display: none; }
.service-icon { width: 6.5rem; height: 6.5rem; display: grid; place-items: center; color: #f5f2e8; transition: transform 240ms cubic-bezier(.22,1,.36,1),filter 240ms ease; }
.service-icon svg { width: 6.5rem; height: 6.5rem; overflow: visible; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.service-icon .service-icon-ring { fill: rgba(184,239,90,.035); stroke: rgba(184,239,90,.8); stroke-width: 2; }
.service-icon .service-icon-main { fill: none; stroke: currentColor; stroke-width: 2.8; }
.service-icon .service-icon-land { fill: currentColor; stroke: none; }
.service-icon .service-icon-target { fill: #0f412f; stroke: var(--acid); stroke-width: 2.4; }
.service-icon .service-icon-badge { fill: #082e23; stroke: var(--acid); stroke-width: 2; }
.service-icon .service-icon-secondary { fill: none; stroke: var(--acid); stroke-width: 2.8; }
.service-icon .service-icon-secondary-fill { fill: var(--acid); stroke: none; }
.service-disclosure > summary:hover .service-icon { transform: translateY(-3px) scale(1.025); filter: drop-shadow(0 .55rem 1rem rgba(0,0,0,.2)); }
.service-disclosure[open] > summary .service-icon { transform: scale(1.025); filter: drop-shadow(0 .55rem 1rem rgba(0,0,0,.18)); }
.service-heading { display: grid; gap: .4rem; }
.service-heading .service-label { margin: 0; font-size: .75rem; letter-spacing: .09em; }
.service-heading strong { font-family: var(--serif); font-weight: 400; font-size: clamp(1.7rem,3vw,2.6rem); line-height: 1.13; }
.service-brief { color: #536059; font-size: .95rem; }
.disclosure-mark { display: grid; place-content: center; width: 2rem; height: 2rem; border-radius: 50%; background: #e4ecd9; color: #15372b; }
.disclosure-mark::before { content: '+'; font-size: 1.5rem; line-height: 1; }
details[open] .disclosure-mark::before { content: '−'; }
.service-panel { padding: 0 0 2rem 10rem; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem 3rem; }
.service-panel h4 { font-size: .88rem; margin: 1rem 0 .5rem; color: #174d36; }
.service-panel p, .service-panel li { color: #536059; font-size: .96rem; }
.service-panel p { margin: 0 0 .8rem; }
.service-panel ul { padding-left: 1.2rem; margin: 0; }
.service-ai-module { grid-column: 1 / -1; margin-top: .8rem; padding-top: 1.5rem; border-top: 1px solid rgba(255,255,255,.2); }
.service-panel .service-ai-kicker { margin: 0 0 .45rem; color: var(--acid); font-size: .78rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.service-panel .service-ai-intro { max-width: 60ch; margin: 0; color: rgba(255,255,255,.9); font-size: 1.05rem; }
.service-panel .service-detail-link.button { grid-column: 1 / -1; justify-self: start; align-self: auto; margin-top: .6rem; color: var(--ink); text-decoration: none; text-underline-offset: 0; }
.portfolio-controls { margin: 2.5rem 0 1.5rem; }
.portfolio-controls > p { margin: .8rem 0 0; font-size: .88rem; color: #536059; }
.experience-context { max-width: 65ch; padding: 1rem 1.25rem; border-left: 3px solid #8bb352; color: #456155; background: #eaf0e5; }
.publication-card { display: block; padding: 0; min-width: 0; }
.publication-disclosure { width: 100%; }
.publication-disclosure summary { cursor: pointer; padding: 1.5rem; list-style: none; }
.publication-disclosure-hint { display: inline-block; margin-top: .7rem; color: #174d36; font-size: .88rem; font-weight: 700; }
.publication-disclosure-hint::after { content: ' +'; }
.publication-disclosure[open] .publication-disclosure-hint::after { content: ' −'; }
.publication-detail-copy { padding: 0 1.5rem 1.5rem; }
.publication-detail-copy .publication-link { margin-top: 1.25rem; }
.case-contact { color: #174d36; margin-top: 1rem; font-weight: 700; }
.contact-workspace { margin-top: 3rem; padding-top: 2rem; border-top: 1px solid rgba(255,255,255,.22); display: grid; grid-template-columns: minmax(0,.7fr) minmax(0,1.3fr); gap: 3rem; }
.contact .contact-inner { max-width: 1180px; }
.contact-form-intro h3 { font-family: var(--serif); font-weight: 400; font-size: clamp(1.6rem,2.5vw,2.4rem); line-height: 1.15; margin-top: 0; }
.contact .contact-form-intro p { font-size: .98rem; max-width: 36ch; }
.contact-email { display: inline-block; margin-top: 1rem; text-decoration: underline; text-underline-offset: .25em; }
.form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.2rem; }
.form-grid label { display: flex; flex-direction: column; gap: .4rem; font-size: .9rem; }
.form-grid input, .form-grid select, .form-grid textarea { width: 100%; min-width: 0; border: 1px solid #b7c8b0; border-radius: .3rem; background: #f8faf4; padding: .8rem; color: #15372b; font-size: 1rem; }
.form-grid textarea { resize: vertical; min-height: 7rem; }
.field-wide { grid-column: 1 / -1; }
.contact .form-note, .contact .request-preview > p { font-size: .85rem; line-height: 1.6; color: rgba(255,255,255,.82); }
.request-preview { margin-top: 1.5rem; border: 1px solid rgba(255,255,255,.3); padding: 1.25rem; }
.request-preview h4 { margin: 0 0 1rem; }
.request-preview pre { margin: 0 0 1.5rem; font: inherit; font-size: .92rem; line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere; }
.draft-actions { display: flex; flex-wrap: wrap; gap: .8rem; }
/* The navigation collapses before three-language labels can collide on tablets. */
@media (min-width: 761px) and (max-width: 1280px) {
 .menu-button { position: relative; z-index: 52; display: inline-flex; gap: .75rem; align-items: center; min-height: 2.75rem; padding: .55rem; border: 0; background: transparent; color: inherit; cursor: pointer; }
 .menu-lines, .menu-lines::before { display: block; width: 1.4rem; height: 1px; background: currentColor; }
 .menu-lines { position: relative; }
 .menu-lines::before { content: ''; position: absolute; top: -.4rem; }
 .main-nav { position: fixed; inset: 0; z-index: 51; display: flex; flex-direction: column; align-items: flex-start; gap: 1.2rem; padding: 7rem 8vw 2rem; background: var(--paper); color: var(--ink); overflow-y: auto; visibility: hidden; opacity: 0; }
 .main-nav a { font-family: var(--serif); font-size: 1.8rem; line-height: 1.2; }
 .menu-open .main-nav { visibility: visible; opacity: 1; }
 .main-nav .language-picker select { color: var(--ink); background: #fff; border-color: #8b9e86; font-size: 1rem; }
 .menu-open .site-header { color: var(--ink); background: var(--paper); backdrop-filter: none; -webkit-backdrop-filter: none; }
}
@media (max-width:1280px) {
 .menu-open .menu-button { z-index: 60; color: var(--ink); }
 .main-nav { justify-content: flex-start; padding-top: 6.5rem; min-height: 100dvh; }
 .menu-button { min-height: 2.75rem; }
 .main-nav a { white-space: normal; max-width: 100%; }
}
@media (min-width:1281px) { .main-nav { gap: clamp(.75rem,1.25vw,1.5rem); font-size: .78rem; } }
@media (max-width:900px) {
 .contact-workspace { grid-template-columns: 1fr; gap: 1.5rem; }
 .contact .contact-form-intro p { max-width: 60ch; }
}
@media (max-width:700px) {
 .service-card-link { grid-template-columns:1.65rem 4.4rem minmax(0,1fr); grid-template-rows:auto auto; gap:.25rem .65rem; min-height:8rem; padding:1.45rem 0; }
 .service-card-link:hover { margin-inline:0; padding-inline:0; background:transparent; }
 .service-card-link .service-number { grid-column:1; grid-row:1 / span 2; align-self:center; }
 .service-card-link .service-icon { grid-column:2; grid-row:1 / span 2; align-self:center; }
 .service-card-link .service-heading { grid-column:3; grid-row:1; }
 .service-card-link .service-card-cta { grid-column:3; grid-row:2; justify-self:start; min-height:2.35rem; margin-top:.45rem; padding:.55rem .9rem; }
 .service-disclosure > summary { grid-template-columns: 1.65rem 4.4rem minmax(0,1fr) 1.6rem; gap: .65rem; padding: 1.45rem 0; }
 .service-panel { grid-template-columns: 1fr; padding-left: 0; gap: .5rem; }
 .service-icon, .service-icon svg { width: 4.4rem; height: 4.4rem; }
 .service-number { font-size: .78rem; }
 .disclosure-mark { width: 1.6rem; height: 1.6rem; }
 .goal-buttons { gap: .5rem; }
 .goal-buttons button { width: 100%; text-align: left; }
 .form-grid { grid-template-columns: 1fr; }
 .field-wide { grid-column: auto; }
 .draft-actions > * { width: 100%; justify-content: center; }
 .publication-disclosure summary { padding: 1.25rem; }
 .case-study-list { min-width: 0; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *, *::before, *::after { animation:none !important; transition:none !important; } }
/* Contrast follows the established dark services and light contact sections. */
.services .service-chooser p, .services .service-brief, .services .service-panel p, .services .service-panel li { color: rgba(255,255,255,.83); }
.services .service-panel h4 { color: var(--acid); }
.services .service-disclosure { border-color: rgba(255,255,255,.25); }
.services .goal-buttons button { color: #fff; border-color: rgba(255,255,255,.4); }
.services .goal-buttons button:hover { background: rgba(255,255,255,.1); }
.services .goal-buttons button[aria-pressed="true"] { background: var(--acid); border-color: var(--acid); color: #103f2c; }
.services .service-number { color: var(--acid); }
.contact .contact-inner { width: 100%; min-width: 0; }
.contact-workspace { border-top-color: rgba(16,63,44,.25); }
.contact .form-note, .contact .request-preview > p { color: #34543e; }
.request-preview { border-color: #91aa82; background: rgba(255,255,255,.3); }
.contact-workspace > *, .form-grid > * { min-width: 0; }
.reveal { opacity: 1; transform: none; }
.services :focus-visible { outline-color: var(--acid); }

/* Services: compact two-level 2×2 matrix. Each complete card links directly
   to its service page; secondary topics live on the corresponding detail page. */
.services .section-heading {
  margin-bottom: clamp(2rem, 4vw, 3rem);
}

.service-disclosures {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.9rem;
}

.services .service-card-link {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 6.5rem;
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "number icon"
    "heading icon"
    "action action";
  gap: 0.9rem 1.25rem;
  min-height: 20.5rem;
  margin: 0;
  padding: clamp(1.4rem, 2.4vw, 2rem);
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 1.15rem;
  background: rgba(255, 255, 255, 0.045);
  transition: transform 200ms ease, border-color 200ms ease, background 200ms ease, box-shadow 200ms ease;
}

.services .service-card-link:last-child {
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}

.services .service-card-link:hover {
  margin: 0;
  padding: clamp(1.4rem, 2.4vw, 2rem);
  transform: translateY(-0.25rem);
  border-color: rgba(184, 239, 90, 0.62);
  background: rgba(255, 255, 255, 0.08);
  box-shadow: 0 1.25rem 2.5rem rgba(0, 0, 0, 0.13);
}

.services .service-card-link .service-number {
  grid-area: number;
  align-self: start;
  font-size: 1rem;
}

.services .service-card-link .service-icon {
  grid-area: icon;
  align-self: start;
  justify-self: end;
}

.services .service-card-link .service-heading {
  grid-area: heading;
  align-self: end;
  gap: 0.55rem;
  min-width: 0;
  padding-top: 1rem;
}

.services .service-card-link .service-heading .service-label {
  color: rgba(255, 255, 255, 0.72);
  font-size: 0.72rem;
  line-height: 1.35;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.services .service-card-link .service-heading strong {
  max-width: 15ch;
  font-size: clamp(1.8rem, 3vw, 2.55rem);
}

.services .service-card-link .service-brief {
  max-width: 34rem;
  line-height: 1.45;
}

.services .service-card-link .service-card-cta {
  grid-area: action;
  width: 100%;
  min-height: 3rem;
  margin-top: 0.4rem;
  padding: 0.75rem 1rem;
  border-radius: 0.65rem;
  background: #dfeacf;
  color: #15372b;
  font-size: 0.8rem;
  letter-spacing: 0.035em;
}

.services .service-card-link .service-card-cta::after {
  content: "→";
  margin-left: auto;
  font-size: 1rem;
}

.services .service-card-link:hover .service-card-cta {
  transform: none;
  background: var(--acid);
}

@media (max-width: 760px) {
  .service-disclosures {
    grid-template-columns: 1fr;
  }

  .services .service-card-link {
    grid-template-columns: minmax(0, 1fr) 5rem;
    grid-template-rows: auto 1fr auto;
    grid-template-areas:
      "number icon"
      "heading heading"
      "action action";
    gap: 0.8rem;
    min-height: 18rem;
    padding: 1.35rem;
  }

  .services .service-card-link:hover {
    padding: 1.35rem;
    transform: none;
    background: rgba(255, 255, 255, 0.065);
  }

  .services .service-card-link .service-icon,
  .services .service-card-link .service-icon svg {
    width: 5rem;
    height: 5rem;
  }

  .services .service-card-link .service-heading {
    align-self: end;
    padding-top: 0;
  }

  .services .service-card-link .service-heading strong {
    max-width: none;
    font-size: clamp(1.75rem, 8vw, 2.35rem);
  }
}
