:root {
  --color-bg: #f4f7f5;
  --color-bg-warm: #f7f3eb;
  --color-surface: #ffffff;
  --color-ink: #0b2632;
  --color-muted: #526871;
  --color-soft: #eef6f3;
  --color-line: #d8e4e1;
  --color-accent: #00a58e;
  --color-accent-strong: #00796f;
  --color-cyan: #18a8c0;
  --color-cyan-text: #08798f;
  --color-moss: #557a4d;
  --color-gold: #a77924;
  --color-gold-text: #7b571b;
  --shadow-soft: 0 18px 44px rgba(16, 35, 51, 0.08);
  --shadow-subtle: 0 8px 24px rgba(16, 35, 51, 0.06);
  --radius: 14px;
  --header-height: 76px;
  --container: 1120px;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  color: var(--color-ink);
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(247, 250, 248, 0.88)),
    linear-gradient(135deg, var(--color-bg) 0%, var(--color-bg-warm) 54%, #f0f8f7 100%);
  font-family: "Helvetica Neue", "Hiragino Sans", "Yu Gothic", "Noto Sans JP", Meiryo, sans-serif;
  line-height: 1.72;
  text-rendering: optimizeLegibility;
}

body,
button,
input,
textarea,
select {
  font: inherit;
}

a {
  color: inherit;
  text-decoration: none;
}

::selection {
  color: #ffffff;
  background: var(--color-accent);
}

:focus-visible {
  outline: 3px solid rgba(20, 155, 176, 0.36);
  outline-offset: 3px;
}

.skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 20;
  padding: 10px 14px;
  border-radius: var(--radius);
  color: #ffffff;
  background: var(--color-ink);
  transform: translateY(-140%);
  transition: transform 160ms ease;
}

.skip-link:focus {
  transform: translateY(0);
}

.container {
  width: min(var(--container), calc(100% - 40px));
  margin-inline: auto;
}

/* Header / Navigation */
.site-header {
  position: sticky;
  top: 0;
  z-index: 10;
  min-height: var(--header-height);
  border-bottom: 1px solid rgba(216, 228, 225, 0.72);
  background: rgba(244, 247, 245, 0.82);
  backdrop-filter: blur(18px);
  transition:
    box-shadow 180ms ease,
    background 180ms ease;
}

.site-header.is-scrolled {
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 10px 26px rgba(16, 35, 51, 0.07);
}

.nav-shell {
  width: min(var(--container), calc(100% - 40px));
  min-height: var(--header-height);
  margin-inline: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--color-ink);
  font-weight: 780;
}

.brand-mark {
  display: inline-grid;
  width: 40px;
  height: 40px;
  place-items: center;
  border: 1px solid rgba(8, 127, 120, 0.18);
  border-radius: 12px;
  color: #fff;
  background: var(--color-ink);
  font-size: 13px;
  font-weight: 850;
}

.nav-panel {
  display: flex;
  align-items: center;
  gap: 8px;
}

.nav-panel a {
  padding: 10px 12px;
  border-radius: var(--radius);
  color: var(--color-muted);
  font-size: 0.95rem;
  font-weight: 680;
  transition:
    color 150ms ease,
    background 150ms ease;
}

.nav-panel a:hover,
.nav-panel a:focus-visible {
  color: var(--color-accent-strong);
  background: rgba(8, 127, 120, 0.08);
}

.menu-toggle {
  display: none;
  width: 42px;
  height: 42px;
  place-items: center;
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  color: var(--color-ink);
  background: var(--color-surface);
  cursor: pointer;
}

.menu-toggle span {
  display: block;
  width: 18px;
  height: 2px;
  margin: 3px 0;
  border-radius: 999px;
  background: currentColor;
}

/* Hero Section */
.section-band {
  position: relative;
  overflow: hidden;
}

.hero {
  min-height: clamp(660px, 88svh, 820px);
  display: grid;
  align-items: center;
  padding: 64px 0 44px;
  border-bottom: 1px solid rgba(216, 228, 225, 0.72);
  background:
    radial-gradient(circle at 82% 30%, rgba(0, 165, 142, 0.14), transparent 25%),
    linear-gradient(115deg, #f9fbfa 0%, #f1f6f3 56%, #e8f2ef 100%);
}

.hero-grid {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr;
  gap: 48px;
}

.hero-copy {
  max-width: 900px;
}

.hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 24px;
  color: var(--color-accent-strong);
  font-size: .76rem;
  font-weight: 800;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.hero-eyebrow span { width: 34px; height: 1px; background: var(--color-accent); }

.section-kicker {
  margin: 0 0 14px;
  color: var(--color-accent-strong);
  font-size: 0.78rem;
  font-weight: 850;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.section-kicker span { margin-right: 8px; color: var(--color-cyan-text); font-variant-numeric: tabular-nums; }

.hero h1 {
  max-width: 760px;
  margin: 0;
  color: var(--color-ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(4.6rem, 10vw, 8.5rem);
  font-weight: 500;
  line-height: .88;
  letter-spacing: -.055em;
}

.hero-title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: clamp(18px, 3vw, 34px);
}

.title-portrait {
  flex: 0 0 auto;
  width: clamp(92px, 11vw, 138px);
  aspect-ratio: 1;
  object-fit: cover;
  object-position: center 18%;
  border: 5px solid rgba(255,255,255,.92);
  border-radius: 50%;
  background: linear-gradient(145deg, #e8f3ef, #cfe8e1);
  box-shadow: 0 18px 38px rgba(11,38,50,.16), 0 0 0 1px rgba(0,121,111,.12);
}

.hero-subtitle {
  max-width: 720px;
  margin: 22px 0 0;
  color: var(--color-ink);
  font-size: clamp(1.12rem, 1.8vw, 1.48rem);
  font-weight: 650;
  line-height: 1.42;
}

.hero-subtitle em { color: var(--color-accent-strong); font-family: Georgia, serif; font-weight: 400; }

.hero-description {
  max-width: 680px;
  margin: 18px 0 0;
  color: var(--color-muted);
  font-size: clamp(1rem, 1.2vw, 1.12rem);
}

.mission-line {
  max-width:680px;
  margin:16px 0 0;
  padding-left:14px;
  border-left:3px solid var(--color-accent);
  color:var(--color-ink);
  font-weight:700;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 28px;
}

.button {
  display: inline-flex;
  min-height: 46px;
  align-items: center;
  justify-content: center;
  padding: 0 18px;
  border: 1px solid transparent;
  border-radius: var(--radius);
  font-weight: 760;
  transition:
    transform 150ms ease,
    box-shadow 150ms ease,
    background 150ms ease,
    border-color 150ms ease;
}

.button:hover {
  transform: translateY(-1px);
  box-shadow: var(--shadow-subtle);
}

.button-primary {
  color: #ffffff;
  background: var(--color-accent-strong);
}

.button-primary:hover {
  background: #075962;
}

.button-secondary {
  color: var(--color-ink);
  border-color: var(--color-line);
  background: rgba(255, 255, 255, 0.74);
}

.button-secondary:hover {
  border-color: rgba(8, 127, 120, 0.34);
  background: #ffffff;
}

.hero-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  max-width: 800px;
  margin: 34px 0 0;
  overflow: hidden;
  border: 1px solid rgba(216, 228, 225, 0.92);
  border-radius: var(--radius);
  background: var(--color-line);
  box-shadow: none;
}

.hero-meta div {
  min-width: 0;
  padding: 16px 18px;
  background: rgba(255, 255, 255, 0.78);
}

.hero-meta dt {
  margin: 0 0 4px;
  color: var(--color-muted);
  font-size: 0.74rem;
  font-weight: 780;
  text-transform: uppercase;
}

.hero-meta dd {
  margin: 0;
  color: var(--color-ink);
  font-weight: 730;
}

/* Shared Sections */
.section {
  padding: clamp(72px, 9vw, 118px) 0;
}

#about {
  padding-top: clamp(26px, 3vw, 42px);
}

.section-muted {
  border-block: 1px solid rgba(216, 228, 225, 0.72);
  background: rgba(238, 246, 243, 0.5);
}

.section-grid,
.research-layout,
.contact-layout {
  display: grid;
  grid-template-columns: minmax(230px, 0.38fr) minmax(0, 0.62fr);
  gap: clamp(36px, 6vw, 86px);
  align-items: start;
}

.section-heading h2,
.section-headline h2,
.contact-section h2 {
  margin: 0;
  color: var(--color-ink);
  font-size: clamp(2rem, 4vw, 3.4rem);
  line-height: 1.16;
  letter-spacing: -.035em;
  text-wrap: balance;
}

.section-body,
.research-content,
.contact-section p {
  color: var(--color-muted);
  font-size: 1.06rem;
}

.section-body p,
.research-content p,
.contact-section p {
  margin: 0;
}

.section-body p + p {
  margin-top: 18px;
}

.about-points,
.keyword-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 30px;
}

.about-points span,
.keyword-grid span {
  display: inline-flex;
  min-height: 34px;
  align-items: center;
  padding: 6px 12px;
  border: 1px solid rgba(8, 127, 120, 0.14);
  border-radius: 999px;
  color: var(--color-accent-strong);
  background: rgba(255, 255, 255, 0.72);
  font-size: 0.92rem;
  font-weight: 680;
}

.section-headline {
  max-width: 780px;
  margin-bottom: 36px;
}

/* Projects Section */
.project-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

.project-card,
.service-card {
  position: relative;
  min-width: 0;
  border: 1px solid rgba(216, 228, 225, 0.92);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.86);
  box-shadow: var(--shadow-subtle);
}

.project-card {
  min-height: 310px;
  display: flex;
  flex-direction: column;
  padding: 28px;
  transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
}

.project-card:hover { transform: translateY(-5px); border-color:rgba(0,165,142,.3); box-shadow:0 22px 45px rgba(11,38,50,.1); }

.project-card::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  top: 28px;
  left: 28px;
  width: 38px;
  height: 3px;
  border-radius: 99px;
  background: linear-gradient(90deg, var(--color-accent), var(--color-cyan), var(--color-moss));
  content: "";
}

.project-label {
  margin: 22px 0 18px;
  color: var(--color-gold-text);
  font-size: 0.76rem;
  font-weight: 850;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.project-card h3,
.service-card h3 {
  margin: 0;
  color: var(--color-ink);
  font-size: 1.18rem;
  line-height: 1.38;
}

.project-card p:not(.project-label),
.service-card p {
  margin: 14px 0 0;
  color: var(--color-muted);
  font-size: 0.98rem;
}

.text-link {
  display: inline-flex;
  width: fit-content;
  align-items: center;
  margin-top: auto;
  padding-top: 22px;
  color: var(--color-accent-strong);
  font-weight: 780;
}

.text-link::after {
  margin-left: 8px;
  content: "->";
}

.text-link:hover {
  color: var(--color-cyan-text);
}

/* Services Section */
.service-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.service-card {
  padding: 22px;
}

.service-card::before {
  display: block;
  width: 34px;
  height: 3px;
  margin-bottom: 18px;
  border-radius: 999px;
  background: var(--color-accent);
  content: "";
}

.service-card:nth-child(3n + 2)::before {
  background: var(--color-cyan);
}

.service-card:nth-child(3n)::before {
  background: var(--color-moss);
}

.service-card-wide {
  grid-column: span 3;
}

/* Contact Section */
.contact-section {
  padding: clamp(72px, 9vw, 112px) 0;
  color: #ffffff;
  background:
    radial-gradient(circle at 86% 20%, rgba(24,168,192,.25), transparent 28%),
    linear-gradient(135deg, #09232f, #07545a);
}

.contact-section .section-kicker,
.contact-section h2,
.contact-section p {
  color: #ffffff;
}

.contact-section p {
  max-width: 650px;
  margin: 20px 0 28px;
  color: rgba(255, 255, 255, 0.78);
}

.contact-section .button-primary {
  color: var(--color-ink);
  background: #ffffff;
}

.contact-section .button-primary:hover {
  background: #e9f5f3;
}

.social-panel {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.social-panel a {
  display: flex;
  min-height: 50px;
  align-items: center;
  justify-content: space-between;
  padding: 0 16px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: var(--radius);
  color: #ffffff;
  background: rgba(255, 255, 255, 0.08);
  font-weight: 760;
  transition:
    background 150ms ease,
    border-color 150ms ease,
    transform 150ms ease;
}

.social-panel a::after {
  color: rgba(255, 255, 255, 0.66);
  content: "#";
}

.social-panel a:hover {
  border-color: rgba(255, 255, 255, 0.34);
  background: rgba(255, 255, 255, 0.14);
  transform: translateY(-1px);
}

/* Footer */
.site-footer {
  padding: 0;
  color: var(--color-muted);
  background: var(--color-bg);
}

.site-footer p {
  margin: 0;
  font-size: 0.92rem;
}

@media (max-width: 980px) {
  .hero-grid,
  .section-grid,
  .research-layout,
  .contact-layout {
    grid-template-columns: 1fr;
  }

  .hero-grid {
    grid-template-columns: 1fr;
    gap: 44px;
  }

  .hero {
    min-height: auto;
    padding: 56px 0 42px;
  }

  .project-grid,
  .service-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .service-card-wide {
    grid-column: span 2;
  }
}

@media (max-width: 1040px) {
  /*
   * Keep navigation usable when JavaScript is unavailable. The script adds
   * .has-navigation-js before applying the collapsed menu behaviour.
   */
  .nav-shell { flex-wrap:wrap; }
  .nav-panel {
    position:static;
    width:100%;
    display:grid;
    gap:4px;
    padding:10px;
    border:1px solid var(--color-line);
    border-radius:var(--radius);
    background:#fff;
    box-shadow:var(--shadow-soft);
    opacity:1;
    visibility:visible;
    transform:none;
    pointer-events:auto;
    transition:opacity 150ms ease, transform 150ms ease, visibility 150ms ease;
  }
  .has-navigation-js .nav-shell { flex-wrap:nowrap; }
  .has-navigation-js .menu-toggle { display:grid; }
  .has-navigation-js .nav-panel {
    position:absolute;
    top:calc(100% + 8px);
    right:14px;
    left:14px;
    width:auto;
    opacity:0;
    visibility:hidden;
    transform:translateY(-8px);
    pointer-events:none;
  }
  .has-navigation-js .nav-panel[data-open="true"] { opacity:1; visibility:visible; transform:translateY(0); pointer-events:auto; }
  .nav-panel .nav-list { display:grid; gap:4px; }
  .nav-panel .nav-list > li > a { display:block; padding:12px; font-size:.95rem; }
  .nav-panel .sub-menu { position:static; display:block; padding:0 0 0 18px; border:0; box-shadow:none; opacity:1; visibility:visible; transform:none; }
  .language-switch { margin:8px 0 0; padding:8px 0 0; border-top:1px solid var(--color-line); border-left:0; }
}

@media (max-width: 760px) {
  :root {
    --header-height: 68px;
  }

  .container,
  .nav-shell {
    width: min(100% - 28px, var(--container));
  }

  .nav-panel a {
    padding: 13px 12px;
  }

  .hero {
    padding-top: 44px;
    padding-bottom: 34px;
  }

  .hero h1 {
    font-size: clamp(3.25rem, 17vw, 5.6rem);
  }

  .hero-title-row { align-items:flex-end; gap:14px; }
  .title-portrait { width:88px; border-width:4px; }

  .hero-meta div {
    padding: 13px 16px;
  }

  .hero-meta,
  .project-grid,
  .service-grid,
  .social-panel {
    grid-template-columns: 1fr;
  }

  .service-card-wide {
    grid-column: span 1;
  }

}

@media (min-width: 560px) and (max-width: 760px) {
  .hero-meta {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .hero-meta div {
    padding: 12px;
  }

  .hero-meta dd {
    font-size: 0.92rem;
    line-height: 1.38;
  }
}

@media (max-width: 460px) {
  .hero-actions {
    display: grid;
  }

  .button {
    width: 100%;
  }

  .section {
    padding: 62px 0;
  }

  .project-card {
    min-height: auto;
  }
}

/* Service-page presentation components */
.service-hub {
  display: grid;
  gap: clamp(32px, 5vw, 64px);
  margin-block: clamp(32px, 5vw, 64px);
}

.service-card-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
  gap: clamp(16px, 2.4vw, 28px);
}

.service-card-grid > * {
  display: flex;
  height: 100%;
  min-width: 0;
  flex-direction: column;
  box-sizing: border-box;
  padding: clamp(24px, 3vw, 36px);
  border: 1px solid var(--color-line);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.88);
  box-shadow: var(--shadow-subtle);
  transition:
    border-color 160ms ease,
    box-shadow 160ms ease,
    transform 160ms ease;
}

.service-card-grid > *:hover,
.service-card-grid > *:focus-within {
  border-color: rgba(0, 121, 111, 0.3);
  box-shadow: var(--shadow-soft);
  transform: translateY(-2px);
}

.entry-content .service-card-grid h2,
.entry-content .service-card-grid h3 {
  margin-top: 0;
  line-height: 1.34;
  text-wrap: balance;
}

.entry-content .service-card-grid h2 {
  font-size: clamp(1.25rem, 1.6vw, 1.55rem);
}

.entry-content .service-card-grid h3 {
  font-size: clamp(1.1rem, 1.35vw, 1.3rem);
}

.service-card-grid .service-illustration {
  max-width: 320px;
  margin: -10px auto 14px;
}

.service-hub .service-card-grid > article > p:last-child {
  margin-top: auto;
  padding-top: 18px;
}

.service-hub .service-card-grid > article > p:last-child a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

.service-detail-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(240px, 0.55fr);
  align-items: center;
  gap: clamp(28px, 6vw, 76px);
  margin-block: clamp(28px, 5vw, 58px);
  padding-block: clamp(34px, 6vw, 72px);
  border-block: 1px solid var(--color-line);
}

.service-detail-hero > * {
  min-width: 0;
}

.service-detail-hero h1,
.service-detail-hero h2 {
  margin-top: 0;
  text-wrap: balance;
}

.service-detail-page .page-hero h1 {
  max-width: 18ch;
  font-size: clamp(2.2rem, 5.4vw, 4.45rem);
  line-height: 1.13;
  letter-spacing: -0.032em;
  text-wrap: pretty;
}

.service-detail-page .entry-content {
  line-height: 1.84;
}

.service-detail-page .entry-content > h2 {
  margin-top: 2.55em;
  margin-bottom: 0.85em;
  line-height: 1.34;
}

.service-detail-page .entry-content > p,
.service-detail-page .entry-content li {
  line-height: 1.84;
}

.entry-content .wp-block-buttons,
.entry-content .wp-block-button {
  max-width: 100%;
}

.entry-content .wp-block-button__link {
  box-sizing: border-box;
  max-width: 100%;
  line-height: 1.35;
  overflow-wrap: anywhere;
  text-align: center;
  white-space: normal;
}

.service-illustration {
  display: block;
  width: min(100%, 390px);
  margin-inline: auto;
  color: var(--color-ink);
}

.service-illustration svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}

.service-illustration__wash {
  fill: var(--color-soft);
}

.service-illustration__surface {
  fill: var(--color-surface);
}

.service-illustration__line,
.service-illustration__accent-line {
  fill: none;
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}

.service-illustration__line {
  stroke: var(--color-ink);
}

.service-illustration__surface.service-illustration__line {
  fill: var(--color-surface);
}

.service-illustration__accent-line {
  stroke: var(--color-accent-strong);
}

.service-illustration__accent,
.service-illustration__accent-fill {
  fill: var(--color-accent);
}

.service-illustration__accent-fill.service-illustration__accent-line {
  stroke: var(--color-accent-strong);
}

.case-study-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(28px, 5vw, 56px);
  margin-block: clamp(34px, 5vw, 64px);
}

.case-study {
  min-width: 0;
  padding-top: 24px;
  border-top: 3px solid var(--color-accent);
}

.case-study:nth-child(even) {
  border-top-color: var(--color-cyan);
}

.entry-content .case-study h2,
.entry-content .case-study h3 {
  margin: 0 0 0.65em;
  font-size: clamp(1.18rem, 1.55vw, 1.4rem);
  line-height: 1.36;
}

.case-study dl {
  display: grid;
  grid-template-columns: minmax(7rem, 0.3fr) minmax(0, 1fr);
  gap: 8px 18px;
  margin: 22px 0 0;
}

.case-study dt {
  color: var(--color-accent-strong);
  font-weight: 780;
}

.case-study dd {
  margin: 0;
}

.site-timeline {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  margin-block: clamp(34px, 5vw, 64px);
  padding: 0;
  counter-reset: site-timeline;
  list-style: none;
}

.site-timeline > * {
  position: relative;
  min-width: 0;
  padding: 36px clamp(16px, 2.5vw, 30px) 0 0;
  border-top: 1px solid var(--color-line);
  counter-increment: site-timeline;
}

.site-timeline > *::before {
  position: absolute;
  top: -17px;
  left: 0;
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border: 1px solid rgba(0, 121, 111, 0.25);
  border-radius: 50%;
  color: #fff;
  background: var(--color-accent-strong);
  font-size: 0.78rem;
  font-weight: 800;
  content: counter(site-timeline, decimal-leading-zero);
}

.entry-content .site-timeline h2,
.entry-content .site-timeline h3 {
  margin: 0 0 8px;
  font-size: 1.05rem;
  line-height: 1.42;
}

.site-timeline p:last-child {
  margin-bottom: 0;
}

.site-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(24px, 5vw, 64px);
  margin-block: clamp(44px, 7vw, 84px);
  padding: clamp(28px, 5vw, 54px);
  border-radius: 20px;
  color: #fff;
  background: linear-gradient(135deg, #0b2632, #07545a);
}

.site-cta > * {
  min-width: 0;
}

.entry-content .site-cta h2,
.entry-content .site-cta h3,
.entry-content .site-cta p {
  color: #fff;
}

.entry-content .site-cta h2,
.entry-content .site-cta h3 {
  margin: 0 0 0.45em;
  font-size: clamp(1.5rem, 2.6vw, 2.05rem);
  line-height: 1.25;
}

.site-cta p:last-child {
  margin-bottom: 0;
}

.site-cta .button,
.site-cta .wp-block-button__link {
  flex: 0 0 auto;
  color: #fff !important;
  border-color: rgba(255, 255, 255, 0.28);
  background: var(--color-accent-strong);
  white-space: normal;
}

.site-cta .button:hover,
.site-cta .wp-block-button__link:hover {
  color: #fff !important;
  border-color: rgba(255, 255, 255, 0.48);
  background: #00645d;
}

.site-cta .is-style-outline .wp-block-button__link {
  color: #fff !important;
  background: transparent;
}

.entry-list {
  margin-block: clamp(28px, 4vw, 48px);
  padding: 0;
  list-style: none;
}

.entry-list > * {
  display: grid;
  grid-template-columns: minmax(9rem, 0.28fr) minmax(0, 1fr);
  gap: 14px clamp(18px, 4vw, 44px);
  padding-block: 22px;
  border-bottom: 1px solid var(--color-line);
}

.entry-list > *:first-child {
  border-top: 1px solid var(--color-line);
}

.entry-list time,
.entry-list .entry-label {
  color: var(--color-accent-strong);
  font-weight: 760;
}

.entry-content .entry-list h2,
.entry-content .entry-list h3,
.entry-content .entry-list p {
  margin-top: 0;
}

.entry-content .entry-list h2,
.entry-content .entry-list h3 {
  margin-bottom: 0.45em;
  font-size: clamp(1.15rem, 1.5vw, 1.35rem);
  line-height: 1.4;
}

.entry-list p:last-child {
  margin-bottom: 0;
}

.notice-box {
  margin-block: 28px;
  padding: 20px 22px;
  border-left: 4px solid var(--color-accent);
  border-radius: 0 12px 12px 0;
  background: var(--color-soft);
}

.notice-box > :first-child {
  margin-top: 0;
}

.notice-box > :last-child {
  margin-bottom: 0;
}

@media (max-width: 900px) {
  .service-card-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .service-card-grid > :last-child:nth-child(odd) {
    grid-column: 1 / -1;
  }

  .service-detail-hero {
    grid-template-columns: minmax(0, 1fr) minmax(210px, 0.46fr);
    gap: 32px;
  }

  .site-timeline {
    grid-template-columns: 1fr;
    gap: 0;
    padding-left: 17px;
  }

  .site-timeline > * {
    padding: 0 0 30px 40px;
    border-top: 0;
    border-left: 1px solid var(--color-line);
  }

  .site-timeline > *::before {
    top: 0;
    left: -17px;
  }

  .site-timeline > *:last-child {
    padding-bottom: 0;
  }
}

@media (max-width: 680px) {
  .service-card-grid,
  .service-detail-hero,
  .case-study-grid {
    grid-template-columns: 1fr;
  }

  .service-card-grid > :last-child:nth-child(odd) {
    grid-column: auto;
  }

  .service-detail-hero .service-illustration {
    grid-row: 1;
    width: min(82vw, 330px);
  }

  .case-study dl,
  .entry-list > * {
    grid-template-columns: 1fr;
  }

  .site-cta {
    display: grid;
    justify-items: start;
    border-radius: 16px;
  }

  .site-cta .button,
  .site-cta .wp-block-button__link {
    width: 100%;
    white-space: normal;
  }

  .service-detail-page .wp-block-buttons,
  .service-detail-page .wp-block-button,
  .service-detail-page .wp-block-button__link {
    width: 100%;
  }

  .service-detail-page .page-hero h1 {
    font-size: clamp(2rem, 10vw, 3rem);
    line-height: 1.16;
  }
}

@media (prefers-reduced-motion: reduce) {
  .service-card-grid > *:hover,
  .service-card-grid > *:focus-within {
    transform: none;
  }
}

/* Contact Form 7 — one bilingual, keyboard-friendly layout. */
.wpcf7 {
  margin-top: clamp(30px, 5vw, 54px);
}

.contact-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px 24px;
}

.contact-form-grid label {
  display: grid;
  gap: 8px;
  color: var(--color-ink);
  font-weight: 720;
}

.contact-form-grid__full {
  grid-column: 1 / -1;
}

.contact-form-grid input,
.contact-form-grid select,
.contact-form-grid textarea {
  width: 100%;
  min-height: 48px;
  padding: 11px 13px;
  border: 1px solid #9bb2ad;
  border-radius: 9px;
  color: var(--color-ink);
  background: #fff;
  font: inherit;
}

.contact-form-grid textarea {
  min-height: 180px;
  resize: vertical;
}

.contact-form-grid input:focus,
.contact-form-grid select:focus,
.contact-form-grid textarea:focus {
  border-color: var(--color-accent-strong);
  outline: 3px solid rgba(0, 121, 111, 0.18);
  outline-offset: 2px;
}

.contact-form-note {
  color: var(--color-muted);
  font-size: 0.92rem;
}

.wpcf7 .wpcf7-submit {
  min-height: 48px;
  padding: 12px 22px;
  border: 1px solid var(--color-accent-strong);
  border-radius: 999px;
  color: #fff;
  background: var(--color-accent-strong);
  font: inherit;
  font-weight: 780;
  cursor: pointer;
}

.wpcf7 .wpcf7-submit:hover,
.wpcf7 .wpcf7-submit:focus-visible {
  color: #fff;
  background: #00645d;
}

.wpcf7-not-valid-tip {
  margin-top: 6px;
  color: #9b1c1c;
  font-size: 0.9rem;
}

.wpcf7 form .wpcf7-response-output {
  margin: 22px 0 0;
  padding: 14px 16px;
  border-radius: 8px;
}

@media (max-width: 680px) {
  .contact-form-grid {
    grid-template-columns: 1fr;
  }

  .contact-form-grid__full {
    grid-column: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* WordPress integration */
.screen-reader-text {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.screen-reader-text:focus {
  top: 8px;
  left: 8px;
  z-index: 100000;
  width: auto !important;
  height: auto !important;
  padding: 12px 16px !important;
  clip: auto !important;
  color: #fff;
  background: var(--color-ink);
}

.brand-logo .custom-logo-link,
.brand-logo img { display: block; max-width: 190px; height: auto; }
.nav-panel .nav-list { display:flex; align-items:center; gap:4px; margin:0; padding:0; list-style:none; }
.nav-panel .nav-list > li > a { padding:9px 8px; font-size:.86rem; white-space:nowrap; }
.nav-panel .nav-list li { position:relative; }
.nav-panel .sub-menu { position:absolute; top:100%; left:0; min-width:220px; margin:0; padding:8px; list-style:none; border:1px solid var(--color-line); border-radius:var(--radius); background:#fff; box-shadow:var(--shadow-soft); opacity:0; visibility:hidden; transform:translateY(-5px); }
.nav-panel li:hover > .sub-menu,
.nav-panel li:focus-within > .sub-menu { opacity:1; visibility:visible; transform:translateY(0); }
.language-switch { display:flex; gap:4px; margin-left:10px; padding-left:10px; border-left:1px solid var(--color-line); }
.language-switch a { min-width:34px; text-align:center; }
.language-switch a[aria-current="page"] { color:#fff; background:var(--color-accent-strong); }

.breadcrumbs { padding-block:14px; font-size:.78rem; color:var(--color-muted); }
.breadcrumbs ol { display:flex; flex-wrap:wrap; gap:7px; margin:0; padding:0; list-style:none; }
.breadcrumbs li + li::before { margin-right:7px; color:#92a39f; content:"/"; }
.breadcrumbs a:hover { color:var(--color-accent-strong); }

.narrow-container { max-width:900px; }
.article-container { max-width:780px; }
.page-hero,
.single-header { padding:clamp(64px, 9vw, 112px) 0 clamp(42px, 6vw, 72px); background:linear-gradient(145deg,#f9fbfa,#edf5f2); border-bottom:1px solid var(--color-line); }
.page-hero h1,
.single-header h1,
.archive-header h1 { margin:0; font-size:clamp(2.6rem, 7vw, 5.4rem); line-height:1.04; letter-spacing:-.045em; text-wrap:balance; }
.page-lead,
.archive-header > p,
.archive-description { max-width:720px; margin:20px 0 0; color:var(--color-muted); font-size:1.08rem; }
.page-featured-image,
.single-featured-image { margin-top:clamp(30px,5vw,60px); }
.page-featured-image img,
.single-featured-image img { width:100%; height:auto; border-radius:20px; }
.entry-content { padding-top:clamp(48px,7vw,88px); padding-bottom:clamp(64px,9vw,120px); }
.entry-content > * { max-width:760px; margin-inline:auto; }
.entry-content > .alignwide { max-width:1120px; }
.entry-content > .alignfull { max-width:none; }
.services-hub-page .entry-content.narrow-container { max-width:1180px; }
.services-hub-page .entry-content > .service-hub { max-width:1120px; }
.entry-content h2 { margin-top:2.2em; font-size:clamp(1.7rem,3vw,2.35rem); line-height:1.25; }
.entry-content h3 { margin-top:1.8em; font-size:1.35rem; }
.entry-content a { color:var(--color-accent-strong); text-decoration:underline; text-underline-offset:.18em; }
.entry-content .wp-block-button__link { color:#fff; text-decoration:none; }
.entry-content img { max-width:100%; height:auto; }
.entry-content blockquote { margin-block:2rem; padding:1rem 1.4rem; border-left:4px solid var(--color-accent); background:var(--color-soft); }
.entry-content table { width:100%; border-collapse:collapse; }
.entry-content th,.entry-content td { padding:.8rem; border:1px solid var(--color-line); text-align:left; }

.archive-header { max-width:820px; margin-bottom:42px; }
.posts-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.blog-index-intro.entry-content { padding-top:0; padding-bottom:clamp(34px,5vw,58px); }
.blog-local-articles { margin-top:clamp(48px,7vw,82px); }
.blog-local-articles > h2 { margin:0 0 24px; font-size:clamp(1.7rem,3vw,2.35rem); line-height:1.25; }
.blog-empty-state { padding:22px 24px; border:1px solid var(--color-line); border-radius:14px; color:var(--color-muted); background:var(--color-soft); }
.blog-external-channel { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:20px clamp(24px,4vw,52px); padding:clamp(24px,4vw,38px); border:1px solid var(--color-line); border-radius:18px; background:#fff; box-shadow:var(--shadow-subtle); }
.blog-external-channel__copy { min-width:0; }
.blog-external-channel h2 { margin:0 0 10px; font-size:clamp(1.35rem,2.4vw,1.8rem); }
.blog-external-channel__copy > :last-child { margin-bottom:0; }
.blog-external-channel__link { max-width:100%; justify-self:end; gap:.55em; color:#fff; text-align:center; white-space:normal; }
.blog-external-channel__link:hover { color:#fff; }
.post-card { min-width:0; overflow:hidden; border:1px solid var(--color-line); border-radius:18px; background:#fff; box-shadow:var(--shadow-subtle); transition:transform .18s ease, box-shadow .18s ease; }
.post-card:hover { transform:translateY(-4px); box-shadow:var(--shadow-soft); }
.post-card-link { display:flex; height:100%; flex-direction:column; }
.post-card-media { aspect-ratio:3/2; overflow:hidden; background:linear-gradient(135deg,var(--color-soft),#dcefeb); }
.post-card-media img { width:100%; height:100%; object-fit:cover; transition:transform .3s ease; }
.post-card:hover .post-card-media img { transform:scale(1.025); }
.post-card-body { display:flex; flex:1; flex-direction:column; padding:22px; }
.post-card-meta { color:var(--color-muted); font-size:.78rem; }
.post-card h2 { margin:10px 0 0; font-size:1.25rem; line-height:1.38; }
.post-card p { color:var(--color-muted); }
.post-card .text-link { margin-top:auto; }
.navigation.pagination { margin-top:48px; }
.nav-links { display:flex; flex-wrap:wrap; gap:8px; }
.page-numbers { display:grid; min-width:42px; min-height:42px; place-items:center; padding:8px 12px; border:1px solid var(--color-line); border-radius:10px; background:#fff; }
.page-numbers.current { color:#fff; border-color:var(--color-accent-strong); background:var(--color-accent-strong); }

.entry-categories { margin-bottom:18px; color:var(--color-accent-strong); font-weight:750; }
.entry-meta { display:flex; flex-wrap:wrap; gap:10px 22px; margin-top:22px; color:var(--color-muted); }
.posted-on { display:flex; flex-wrap:wrap; gap:8px; }
.entry-footer { padding-bottom:40px; }
.tag-list { display:flex; flex-wrap:wrap; gap:8px; }
.tag-list a { padding:5px 10px; border:1px solid var(--color-line); border-radius:999px; }
.post-navigation { padding-block:34px; border-top:1px solid var(--color-line); }
.post-navigation .nav-links { display:grid; grid-template-columns:1fr 1fr; }
.post-navigation .nav-next { text-align:right; }
.author-profile { display:grid; grid-template-columns:auto 1fr; gap:22px; margin-block:42px; padding:26px; border:1px solid var(--color-line); border-radius:18px; background:#fff; }
.author-profile .avatar { border-radius:50%; }
.author-profile h2,.author-profile p { margin:0; }
.comments-area { padding-block:40px 80px; }

.search-form { max-width:620px; margin-top:28px; }
.search-form label { display:block; margin-bottom:8px; font-weight:700; }
.search-form-row { display:flex; gap:8px; }
.search-form input { min-width:0; flex:1; padding:13px 15px; border:1px solid var(--color-line); border-radius:10px; background:#fff; }
.search-form button { padding:12px 18px; border:0; border-radius:10px; color:#fff; background:var(--color-accent-strong); font-weight:700; cursor:pointer; }
.contact-methods { margin-top:28px; }
.setup-reminder { margin-top:28px; padding:16px 18px; border:1px solid #d7a91e; border-radius:12px; color:#5d4700; background:#fff8d8; }
.error-code { margin:0; color:rgba(0,121,111,.18); font:500 clamp(6rem,20vw,14rem)/.8 Georgia,serif; }
.error-page h1 { font-size:clamp(2.2rem,6vw,4.4rem); }

.footer-layout { display:grid; grid-template-columns:minmax(240px,320px) minmax(0,1fr); align-items:start; gap:clamp(48px,7vw,88px); padding-block:clamp(48px,5vw,68px); }
.footer-brand-area,.footer-nav { min-width:0; }
.footer-brand { display:inline-block; color:var(--color-ink); font-size:1.2rem; font-weight:800; white-space:nowrap; word-break:normal; overflow-wrap:normal; }
.site-footer .footer-description { max-width:300px; margin-top:10px; line-height:1.65; word-break:normal; overflow-wrap:normal; }
.footer-menu { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px 24px; margin:0; padding:0; list-style:none; }
.footer-menu li,.footer-menu a { min-width:0; word-break:normal; overflow-wrap:normal; }
.footer-menu a { display:block; padding-block:3px; }
.footer-social { display:flex; flex-wrap:wrap; gap:8px; margin-top:22px; }
.footer-social a { padding:6px 10px; border:1px solid var(--color-line); border-radius:999px; font-size:.86rem; }
.footer-bottom { padding-block:20px 24px; border-top:1px solid var(--color-line); }

/* Editable home block patterns */
.front-page-content .entry-content { padding:0; }
.home-hero-block { position:relative; overflow:hidden; min-height:clamp(620px,84svh,790px); display:grid; align-items:center; padding:clamp(54px,8vw,96px) 20px; border-bottom:1px solid var(--color-line); background:radial-gradient(ellipse at 86% 48%,rgba(98,192,178,.16),transparent 34%),linear-gradient(115deg,#fbfcfb 0%,#f5f9f7 54%,#edf7f4 100%); }
.home-hero-block::before,
.home-hero-block::after { position:absolute; z-index:0; content:""; pointer-events:none; }
.home-hero-block::before { top:50%; right:-1.5vw; width:min(48vw,720px); aspect-ratio:9/8; transform:translateY(-50%); background:url("../images/hero-science-abstract.svg?v=2") center/contain no-repeat; opacity:.76; -webkit-mask-image:linear-gradient(90deg,transparent 0 22%,rgba(0,0,0,.28) 42%,#000 62%); mask-image:linear-gradient(90deg,transparent 0 22%,rgba(0,0,0,.28) 42%,#000 62%); }
.home-hero-block::after { display:none; }
.home-hero-block > * { position:relative; z-index:1; }
.home-display-title { margin:0!important; font:500 clamp(4.5rem,10vw,8.5rem)/.88 Georgia,serif; letter-spacing:-.055em; }
.home-role { margin-top:22px!important; color:var(--color-accent-strong); font-size:clamp(1.1rem,1.8vw,1.45rem); }
.home-lead { max-width:680px!important; color:var(--color-muted); font-size:1.08rem; }
.home-hero-content { width:100%; }
.hero-heading-row { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-start!important; gap:clamp(18px,3vw,34px); }
.home-profile-image { margin:0!important; }
.home-profile-image img { width:124px; aspect-ratio:1; object-fit:cover; object-position:center 18%; border:4px solid rgba(255,255,255,.92); border-radius:50%; box-shadow:0 16px 34px rgba(11,38,50,.14); }
.home-meta-grid { margin-top:42px!important; gap:1px!important; overflow:hidden; border:1px solid var(--color-line); border-radius:14px; background:var(--color-line); }
.home-meta-grid > .wp-block-column { padding:16px 18px; background:rgba(255,255,255,.78); }
.home-meta-grid p { margin:0; }
.home-meta-grid small { color:var(--color-muted); }
.home-section { padding:clamp(72px,9vw,118px) 20px; }
.home-section-muted { border-block:1px solid var(--color-line); background:rgba(238,246,243,.55); }
.home-section h2,.home-contact-block h2 { margin-top:0; font-size:clamp(2rem,4vw,3.4rem); line-height:1.16; letter-spacing:-.035em; text-wrap:balance; }
.keyword-list { display:flex; flex-wrap:wrap; gap:10px; padding:0; list-style:none; }
.keyword-list li { padding:6px 12px; border:1px solid rgba(0,121,111,.16); border-radius:999px; color:var(--color-accent-strong); background:#fff; font-size:.92rem; font-weight:680; }
.editable-card-grid { margin-top:34px!important; }
.editable-card-grid > .wp-block-column { padding:26px; border:1px solid var(--color-line); border-radius:18px; background:#fff; box-shadow:var(--shadow-subtle); }
.editable-card-grid h3 { margin-top:0; }
.editable-card-grid h3 small { display:block; margin-top:.35em; color:var(--color-muted); font-family:"Helvetica Neue","Hiragino Sans","Yu Gothic",sans-serif; font-size:.58em; font-weight:650; line-height:1.4; }
.home-focus-grid { display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr)); }
.home-contact-block { padding:clamp(72px,9vw,112px) 20px; color:#fff; background:radial-gradient(circle at 86% 20%,rgba(24,168,192,.25),transparent 28%),linear-gradient(135deg,#09232f,#07545a); }
.home-contact-block .section-kicker,.home-contact-block h2,.home-contact-block p { color:#fff; }
.front-page-content .wp-block-button__link { color:#fff!important; text-decoration:none!important; }
.front-page-content .wp-block-button.is-style-outline .wp-block-button__link { color:var(--color-accent-strong)!important; border-color:var(--color-accent-strong); background:transparent; }

@media (max-width: 980px) {
  .posts-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media (max-width: 760px) {
  .nav-panel .nav-list { display:grid; gap:4px; }
  .nav-panel .nav-list > li > a { white-space:normal; }
  .has-navigation-js .nav-panel[data-open="false"] { visibility:hidden; }
  .has-navigation-js .nav-panel[data-open="true"] { visibility:visible; }
  .nav-panel .sub-menu { position:static; display:block; padding-left:16px; border:0; box-shadow:none; opacity:1; visibility:visible; transform:none; }
  .language-switch { margin:8px 0 0; padding:8px 0 0; border-top:1px solid var(--color-line); border-left:0; }
  .posts-grid { grid-template-columns:1fr; }
  .blog-external-channel { grid-template-columns:1fr; }
  .blog-external-channel__link { width:100%; justify-self:stretch; }
  .footer-layout { grid-template-columns:1fr; gap:32px; padding-block:48px; }
  .site-footer .footer-description { max-width:320px; }
  .footer-menu { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 20px; }
  .footer-bottom { padding-block:18px 24px; }
  .post-navigation .nav-links { grid-template-columns:1fr; }
  .post-navigation .nav-next { text-align:left; }
  .home-profile-image img { width:clamp(64px,16vw,88px); }
  .home-meta-grid { display:grid!important; }
  .editable-card-grid { display:grid!important; }
  .home-focus-grid { grid-template-columns:1fr; }
}

@media (min-width: 761px) and (max-width: 1040px) {
  .nav-panel .nav-list { display:grid; gap:4px; }
  .nav-panel .nav-list > li > a { white-space:normal; }
  .nav-panel .sub-menu { position:static; display:block; padding-left:16px; border:0; box-shadow:none; opacity:1; visibility:visible; transform:none; }
  .language-switch { margin:8px 0 0; padding:8px 0 0; border-top:1px solid var(--color-line); border-left:0; }
  .home-hero-block::before { right:-10%; width:min(60vw,620px); opacity:.42; -webkit-mask-image:linear-gradient(90deg,transparent 0 38%,rgba(0,0,0,.26) 56%,#000 76%); mask-image:linear-gradient(90deg,transparent 0 38%,rgba(0,0,0,.26) 56%,#000 76%); }
}

@media (max-width: 460px) {
  .home-hero-block { background:radial-gradient(ellipse at 102% 74%,rgba(98,192,178,.14),transparent 42%),linear-gradient(145deg,#fbfcfb 0%,#f4f9f7 68%,#edf7f4 100%); }
  .home-hero-block::before { top:auto; right:-46%; bottom:2%; width:min(116vw,450px); transform:none; opacity:.2; -webkit-mask-image:linear-gradient(90deg,transparent 0 48%,rgba(0,0,0,.22) 66%,#000 84%); mask-image:linear-gradient(90deg,transparent 0 48%,rgba(0,0,0,.22) 66%,#000 84%); }
  .hero-title-row,
  .hero-heading-row {
    flex-direction:row;
    flex-wrap:nowrap;
    align-items:center;
    gap:10px;
  }

  .hero h1,
  .home-display-title {
    font-size:clamp(2.8rem,14vw,4rem);
  }

  .title-portrait,
  .home-profile-image img {
    width:clamp(64px,18vw,72px);
    border-width:3px;
  }
}
