@charset "utf-8";
:root {
  --ai:#254d43;
  --ai-deep:#1d3c34;
  --shu:#a65336;
  --shu-d:#854029;
  --paper:#fffefa;
  --mist:#f1f2eb;
  --line:#dedfd5;
  --sumi:#283c34;
  --gray:#5d6b62;
  --gray-l:#6c776e;
  --mincho:"Yu Mincho",YuMincho,"Hiragino Mincho ProN",serif;
  --gothic:"Yu Gothic",YuGothic,"Hiragino Kaku Gothic ProN",Meiryo,sans-serif;
  --wrap:1200px;
  --gut:36px;
  --head:8rem;
}
*,*::before,*::after {
  box-sizing:border-box;
}
html {
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--head) + 24px);
  -webkit-text-size-adjust:100%;
}
body {
  margin:0;
  padding-top:var(--head);
  background:var(--paper);
  color:var(--sumi);
  font:1.125rem/2 var(--gothic);
  font-feature-settings:"palt";
}
img {
  max-width:100%;
  height:auto;
  display:block;
}
a {
  color:var(--ai);
  text-underline-offset:5px;
}
a:hover {
  color:var(--shu);
}
button,input,select,textarea {
  font:inherit;
}
button,a {
  -webkit-tap-highlight-color:transparent;
}
:focus-visible {
  outline:3px solid var(--shu);
  outline-offset:5px;
}
h1,h2,h3 {
  margin:0;
  line-height:1.6;
  letter-spacing:.055em;
}
h1,h2 {
  font-family:var(--mincho);
  font-weight:600;
}
h3 {
  font-size:1.125rem;
}
p {
  margin:0 0 1em;
}
.wrap {
  max-width:var(--wrap);
  margin-inline:auto;
  padding-inline:var(--gut);
  width:100%;
}
.wrap--narrow {
  max-width:860px;
}
.sec {
  padding-block:clamp(64px,8vw,110px);
}
.sec--mist {
  background:var(--mist);
}
.sec--ai {
  background:var(--ai);
  color:var(--paper);
}
.sec__head {
  margin-bottom:40px;
}
.sec__head h2 {
  font-size:clamp(1.7rem,3vw,2.4rem);
}
.sec__head>p {
  max-width:44em;
  margin:20px 0 0;
  color:var(--gray);
  font-size:1.125rem;
}
.sec__head .eyebrow,.eyebrow {
  font-family:var(--gothic);
  font-size:1rem;
  font-weight:700;
  letter-spacing:.17em;
  color:var(--ai);
  margin:0 0 14px;
}
.sec--ai .sec__head>p {
  color:#d9e4db;
}
.sec--ai .eyebrow {
  color:#d3ddbb;
}
.skip-link {
  position:fixed;
  top:8px;
  left:12px;
  z-index:300;
  padding:10px 20px;
  background:white;
  transform:translateY(-160%);
}
.skip-link:focus {
  transform:none;
}
/* A quiet, always available navigation. */
.hd {
  position:fixed;
  inset:0 0 auto;
  height:var(--head);
  background:rgba(255,254,250,.97);
  border-bottom:1px solid var(--line);
  z-index:100;
}
.hd__in {
  height:100%;
  padding-block:20px;
  display:flex;
  align-items:center;
  gap:26px;
  max-width:1440px;
}
.logo {
  flex:none;
  line-height:1.4;
  text-decoration:none;
}
.logo b {
  display:block;
  font:600 1.8rem/1.35 var(--mincho);
  letter-spacing:.16em;
}
.logo span {
  display:block;
  font-size:1rem;
  letter-spacing:.12em;
  color:var(--gray);
  margin-top:4px;
}
.hd nav {
  margin-left:auto;
}
.hd nav ul {
  display:flex;
  gap:22px;
  list-style:none;
  margin:0;
  padding:0;
}
.hd nav a {
  font-size:1rem;
  font-weight:700;
  text-decoration:none;
  padding:12px 0;
  border-bottom:2px solid transparent;
  white-space:nowrap;
}
.hd nav a.is-active {
  border-color:var(--shu);
}
.hd__cta {
  display:flex;
  align-items:center;
  gap:20px;
  flex:none;
}
.hd__tel {
  font-size:1.125rem;
  letter-spacing:.03em;
  text-decoration:none;
  font-weight:700;
}
.menu-toggle {
  display:none;
}
.btn {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:30px;
  border:1px solid transparent;
  border-radius:6px;
  background:var(--ai);
  color:white;
  padding:17px 26px;
  font-size:1.125rem;
  font-weight:700;
  line-height:1.8;
  text-decoration:none;
  cursor:pointer;
  transition:background .2s,transform .2s;
}
.btn:hover {
  background:var(--ai-deep);
  color:white;
  transform:translateY(-2px);
}
.btn span {
  font-size:1.2em;
}
.btn--sm {
  padding:12px 18px;
  font-size:1rem;
  gap:18px;
}
.btn--lg {
  padding:20px 30px;
}
.btn--block {
  display:flex;
  width:100%;
}
.btn--line {
  background:transparent;
  border-color:#adbdb4;
  color:white;
}
.btn--line:hover {
  background:#ffffff12;
}
.text-link {
  font-size:1.125rem;
  font-weight:700;
  text-decoration:none;
  border-bottom:1px solid #acb6a9;
  padding:8px 0;
}
.text-link span {
  margin-left:20px;
}
/* Editorial opening, warm paper and a real sense of place. */
.hero {
  background:#f4f3eb;
  padding-top:42px;
  overflow:hidden;
}
.hero__in {
  display:grid;
  grid-template-columns:1fr 1.08fr;
  align-items:center;
  gap:40px;
}
.hero__text {
  padding-block:34px;
}
.hero__text>.eyebrow {
  display:flex;
  align-items:center;
  gap:10px;
}
.hero__text>.eyebrow::before {
  content:"";
  width:22px;
  height:1px;
  background:var(--ai);
}
.hero h1 {
  font-size:clamp(2.2rem,3.7vw,3rem);
  line-height:1.65;
  letter-spacing:.07em;
}
.rule {
  background:linear-gradient(transparent 85%,#d5ddbe 85%,#d5ddbe 96%,transparent 96%);
  padding-bottom:5px;
}
.hero__text>p:not(.eyebrow) {
  margin:24px 0 28px;
  font-size:1.125rem;
  line-height:2.2;
  color:var(--gray);
}
.hero__act {
  display:flex;
  align-items:center;
  gap:22px;
  flex-wrap:wrap;
}
.hero__phone {
  margin-top:26px;
}
.hero__tel {
  display:inline-block;
  color:var(--ai);
  text-decoration:none;
  line-height:1.4;
}
.hero__tel strong {
  display:block;
  font-family:Georgia,serif;
  font-size:1.75rem;
  font-weight:400;
  letter-spacing:.05em;
}
.hero__tel span {
  display:block;
  font-size:1rem;
  color:var(--gray);
  margin-top:5px;
}
.hero__fig {
  height:520px;
  margin:0;
  position:relative;
  border-radius:120px 12px 12px 12px;
  overflow:hidden;
  background:#dce3d6;
}
.hero__fig img {
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:51% center;
}
.hero__fig::after {
  content:"";
  position:absolute;
  inset:55% 0 0;
  background:linear-gradient(transparent,#15271d99);
  pointer-events:none;
}
.hero__fig figcaption {
  position:absolute;
  bottom:25px;
  left:28px;
  right:20px;
  z-index:1;
  color:white;
  font-family:var(--mincho);
  font-size:1.15rem;
  letter-spacing:.1em;
}
.hero__fig small {
  display:block;
  font:1rem/1.8 var(--gothic);
  letter-spacing:.04em;
  margin-top:8px;
  color:#fff;
}
.hero__notes {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  padding:24px 0;
  margin:30px 0 0;
  list-style:none;
  border-top:1px solid #d9dcd0;
  gap:20px;
}
.hero__notes li {
  font-size:1.125rem;
  display:flex;
  align-items:center;
  gap:14px;
}
.hero__notes span {
  color:var(--shu);
  font:italic 1.05rem Georgia,serif;
}
/* Help visitors find their concern before the technical detail. */
.intro .wrap {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:70px;
  align-items:center;
}
.intro .sec__head {
  margin:0;
}
.trouble {
  list-style:none;
  margin:0;
  padding:0;
}
.trouble li {
  font-size:1.125rem;
  padding:18px 0;
  border-bottom:1px solid var(--line);
  display:flex;
  gap:14px;
  align-items:baseline;
}
.trouble li::before {
  content:"✓";
  color:var(--ai);
  font-size:1.125rem;
}
.svc {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
}
.svc>div {
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:9px;
  padding:28px;
  position:relative;
}
.svc h3 {
  display:flex;
  align-items:center;
  gap:12px;
  margin-bottom:14px;
}
.svc h3::before {
  content:"";
  width:15px;
  height:15px;
  background:var(--chip);
  border-radius:4px;
  transform:rotate(-8deg);
}
.svc ul {
  list-style:none;
  margin:0;
  padding:0;
}
.svc li {
  color:var(--gray);
  font-size:1.125rem;
  line-height:2;
}
.svc>div:first-child {
  grid-column:span 3;
  display:grid;
  grid-template-columns:1fr 2fr;
  background:var(--ai);
  border:0;
  color:white;
  padding:32px;
}
.svc>div:first-child h3 {
  font-size:1.5rem;
  font-family:var(--mincho);
}
.svc>div:first-child ul {
  display:grid;
  grid-template-columns:1fr 1fr;
}
.svc>div:first-child li {
  color:#e5ebe2;
}
.case {
  border-top:1px solid var(--line);
  padding-top:30px;
}
.case+.case {
  margin-top:40px;
}
.case__meta {
  font-size:1rem;
  color:var(--gray);
  letter-spacing:.08em;
  margin:0 0 10px;
}
.case h3 {
  font-family:var(--mincho);
  font-size:1.35rem;
}
.case>p:not(.case__meta) {
  font-size:1.125rem;
  color:var(--gray);
  margin:14px 0 22px;
}
.grid-img {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
  list-style:none;
  padding:0;
  margin:0;
}
.grid-img button {
  display:block;
  width:100%;
  padding:0;
  border:0;
  border-radius:8px;
  background:var(--mist);
  overflow:hidden;
  cursor:zoom-in;
}
.grid-img img {
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
  transition:transform .3s;
}
.grid-img button:hover img {
  transform:scale(1.04);
}
.disclosure {
  margin-top:24px;
}
.disclosure summary {
  cursor:pointer;
  padding:16px 0;
  font-size:1.125rem;
  font-weight:700;
  color:var(--ai);
  border-block:1px solid var(--line);
}
.disclosure[open] summary {
  margin-bottom:24px;
}
.disclosure summary::marker {
  color:var(--shu);
}
.sec--ai .disclosure summary {
  color:white;
  border-color:#ffffff40;
}
.process {
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:34px;
  counter-reset:process;
}
.process li {
  padding-top:22px;
  border-top:1px solid #a5b8ac;
  counter-increment:process;
}
.process li::before {
  content:"0" counter(process);
  display:block;
  font:italic 2rem Georgia,serif;
  color:#d3ddbb;
  margin-bottom:18px;
}
.process h3 {
  font-family:var(--mincho);
  font-size:1.25rem;
  margin-bottom:12px;
}
.process p {
  color:#dae3dc;
  font-size:1.125rem;
}
.flow {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:28px;
  margin:30px 0 0;
  padding:0;
  counter-reset:f;
}
.flow>li {
  list-style:none;
  counter-increment:f;
}
.flow figure {
  margin:0 0 14px;
  overflow:hidden;
  border-radius:5px;
}
.flow img {
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
}
.flow .ph {
  display:none;
}
.flow__no {
  margin:0;
}
.flow__no::before {
  content:counter(f,decimal-leading-zero);
  font:italic 1.2rem Georgia,serif;
  color:#d3ddbb;
}
.flow h3 {
  font-size:1.125rem;
  margin:8px 0;
}
.flow p:not(.flow__no) {
  font-size:1.125rem;
  color:#dae3dc;
  line-height:1.9;
}
.purpose {
  list-style:none;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:30px;
  margin:0;
  padding:0;
  counter-reset:p;
}
.purpose li {
  border-top:1px solid var(--line);
  padding-top:25px;
  counter-increment:p;
}
.purpose li::before {
  content:counter(p,decimal-leading-zero);
  font:italic 1.5rem Georgia,serif;
  color:var(--shu);
  display:block;
  margin-bottom:20px;
}
.purpose h3 {
  font-family:var(--mincho);
  font-size:1.3rem;
  margin-bottom:12px;
}
.purpose p {
  font-size:1.125rem;
  color:var(--gray);
}
.spec {
  width:100%;
  border-collapse:collapse;
  font-size:1.125rem;
}
.spec th,.spec td {
  padding:21px 6px;
  text-align:left;
  vertical-align:top;
  border-bottom:1px solid var(--line);
}
.spec th {
  width:9em;
  font-weight:600;
  white-space:nowrap;
}
.areas {
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  list-style:none;
  margin:0;
  padding:0;
}
.areas li {
  padding:3px 11px;
  background:#fffefa;
  border-radius:4px;
  font-size:1.125rem;
}
.faq {
  max-width:800px;
  margin:auto;
}
.faq details {
  border-bottom:1px solid var(--line);
  padding:6px 0;
}
.faq summary {
  cursor:pointer;
  font-weight:700;
  font-size:1.125rem;
  padding:18px 0;
}
.faq summary::marker {
  color:var(--shu);
}
.faq details p {
  color:var(--gray);
  font-size:1.125rem;
  padding:0 20px 15px;
}
.contact-phone {
  border-block:1px solid var(--line);
  padding:24px 0;
  margin-bottom:30px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
}
.contact-phone>p {
  font-size:1.125rem;
  margin:0;
}
.contact-phone strong {
  font-weight:500;
}
.contact-form {
  padding:36px;
  background:white;
  border:1px solid var(--line);
  border-radius:10px;
}
.field {
  margin-bottom:23px;
}
.field>label {
  display:block;
  font-size:1.125rem;
  font-weight:700;
  margin-bottom:9px;
}
.req,.opt {
  font-size:1rem;
  margin-left:10px;
  padding:3px 7px;
  border-radius:3px;
  vertical-align:middle;
}
.req {
  color:var(--shu-d);
  background:#f4e9df;
}
.opt {
  color:var(--gray);
  background:var(--mist);
  font-weight:400;
}
.field input,.field select,.field textarea {
  width:100%;
  max-width:100%;
  min-height:50px;
  background:#fffefa;
  border:1px solid #bcc6ba;
  border-radius:5px;
  padding:12px 14px;
  font-size:1.125rem;
  color:var(--sumi);
}
.field textarea {
  min-height:150px;
  resize:vertical;
}
.field .note,.form-note {
  font-size:1rem;
  line-height:1.9;
  color:var(--gray);
  margin:8px 0 0;
}
.form-note {
  margin:0 0 20px;
}
.hp {
  position:absolute!important;
  left:-9999px;
}
.errors {
  border:1px solid var(--shu);
  border-left-width:4px;
  padding:20px;
  margin-bottom:25px;
  background:#fff5ed;
}
.errors p {
  color:var(--shu-d);
  font-weight:700;
}
.errors ul {
  padding-left:22px;
  font-size:1.125rem;
}
.cta {
  background:#e6eadb;
  padding:64px 0;
  text-align:center;
}
.cta h2 {
  font-size:clamp(1.4rem,3vw,2rem);
}
.cta p {
  font-size:1.125rem;
  max-width:38em;
  margin:20px auto 28px;
  color:var(--gray);
}
.cta__act {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:30px;
}
.cta .btn--line {
  background:var(--ai);
  color:white;
  border-color:var(--ai);
}
.ft {
  background:var(--ai-deep);
  color:#dce4da;
  padding:60px 0 24px;
  font-size:1.125rem;
}
.ft a {
  color:#dce4da;
}
.ft h2 {
  font-size:1.15rem;
  margin-bottom:18px;
  color:#fff;
}
.ft p {
  margin:0;
  line-height:2;
}
.ft__in {
  display:grid;
  grid-template-columns:1.4fr 1fr;
  gap:40px;
}
.ft ul {
  list-style:none;
  margin:0;
  padding:0;
  columns:2;
}
.ft li a {
  display:inline-block;
  padding:5px 0;
  text-decoration:none;
}
.ft .ft__copy {
  border-top:1px solid #ffffff30;
  margin-top:34px;
  padding-top:22px;
  font-size:1rem;
  color:#b9c9ba;
}
.bar {
  display:none;
}
.lb {
  position:fixed;
  inset:0;
  z-index:200;
  background:#10231ff5;
  display:none;
}
.lb.is-open {
  display:grid;
  grid-template-rows:1fr auto;
}
.lb__stage {
  display:grid;
  place-items:center;
  padding:60px 24px 20px;
  overflow:hidden;
}
.lb__stage img {
  max-width:100%;
  max-height:74vh;
  object-fit:contain;
}
.lb__bar {
  display:flex;
  justify-content:center;
  align-items:center;
  gap:24px;
  padding:0 20px 25px;
  color:white;
}
.lb button {
  width:48px;
  height:48px;
  background:transparent;
  color:white;
  border:1px solid #ffffff80;
  border-radius:50%;
  cursor:pointer;
  font-size:1.3rem;
}
.lb button:hover {
  background:#ffffff20;
}
.lb__close {
  position:absolute;
  top:15px;
  right:20px;
}
@media(min-width:1500px) {
  .hero__fig {
    height:560px;
  }
}
@media(max-width:1200px) {
  .hd__tel {
    display:none;
  }
  .hd__in {
    gap:22px;
  }
  .hd nav ul {
    gap:18px;
  }
  .hero__in {
    gap:28px;
  }
  .hero__act {
    gap:14px;
  }
  .hero__act .btn {
    padding-inline:20px;
  }
  .hero__fig {
    height:490px;
  }
}
@media(max-width:1200px) {
  .hd__in {
    gap:18px;
  }
  .hd__cta {
    margin-left:auto;
  }
  .menu-toggle {
    display:block;
    order:3;
    background:transparent;
    border:1px solid var(--line);
    border-radius:5px;
    font-size:1rem;
    padding:10px 12px;
    cursor:pointer;
    color:var(--ai);
  }
  .menu-toggle span {
    margin-left:8px;
  }
  .hd nav {
    display:none;
    position:absolute;
    top:var(--head);
    left:0;
    right:0;
    background:var(--paper);
    border-bottom:1px solid var(--line);
    padding:18px 28px;
    max-height:calc(100dvh - var(--head) - 90px);
    overflow-y:auto;
  }
  .hd nav.is-open {
    display:block;
  }
  .hd nav ul {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px 20px;
  }
  .hd nav a {
    display:block;
    padding:10px;
  }
}
@media(max-width:960px) {
  :root {
    --head:7.5rem;
    --gut:28px;
  }
  .hero {
    padding-top:28px;
  }
  .hero__in {
    gap:24px;
  }
  .hero h1 {
    font-size:2.25rem;
  }
  .hero__fig {
    height:470px;
    border-top-left-radius:80px;
  }
  .hero__text>.eyebrow {
    font-size:1rem;
    letter-spacing:.08em;
  }
  .hero__notes {
    gap:14px;
  }
  .hero__notes li {
    font-size:1.125rem;
    gap:8px;
  }
  .intro .wrap {
    gap:35px;
  }
  .svc {
    gap:14px;
  }
  .svc>div {
    padding:22px;
  }
  .contact-form {
    padding:28px;
  }
}
@media(max-width:720px) {
  :root {
    --head:7rem;
    --gut:22px;
  }
  .logo b {
    font-size:1.45rem;
  }
  .logo span {
    font-size:1rem;
  }
  .hd__cta {
    display:none;
  }
  .menu-toggle {
    margin-left:auto;
  }
  .hero {
    padding-top:10px;
  }
  .hero__in {
    grid-template-columns:1fr;
    gap:6px;
  }
  .hero__text {
    padding:28px 0 20px;
  }
  .hero h1 {
    font-size:clamp(2rem,7.8vw,3rem);
  }
  .hero__text>p:not(.eyebrow) {
    font-size:1.125rem;
    margin:20px 0;
  }
  .hero__text>.eyebrow {
    font-size:1rem;
  }
  .hero__act {
    gap:20px;
  }
  .hero__act .btn {
    font-size:1.125rem;
    padding:15px 19px;
  }
  .hero__phone {
    margin-top:22px;
  }
  .hero__tel strong {
    font-size:1.6rem;
  }
  .hero__fig {
    height:340px;
    border-radius:65px 8px 8px 8px;
    margin-top:12px;
  }
  .hero__fig img {
    object-position:center 44%;
  }
  .hero__fig figcaption {
    font-size:1.125rem;
    left:22px;
    bottom:18px;
  }
  .hero__notes {
    grid-template-columns:1fr;
    margin-top:23px;
    padding:20px 0;
    gap:6px;
  }
  .hero__notes li {
    font-size:1.125rem;
    gap:14px;
  }
  .intro .wrap {
    grid-template-columns:1fr;
    gap:24px;
  }
  .sec__head {
    margin-bottom:28px;
  }
  .sec__head>p {
    font-size:1.125rem;
  }
  .svc {
    grid-template-columns:1fr 1fr;
  }
  .svc>div:first-child {
    grid-column:span 2;
    display:block;
    padding:24px;
  }
  .svc>div:first-child ul {
    gap:0 12px;
  }
  .svc>div {
    padding:20px;
  }
  .svc h3 {
    font-size:1.125rem;
  }
  .svc li {
    font-size:1.125rem;
  }
  .grid-img {
    gap:8px;
  }
  .case h3 {
    font-size:1.15rem;
  }
  .process {
    grid-template-columns:1fr;
    gap:20px;
  }
  .process li {
    padding-left:56px;
    position:relative;
  }
  .process li::before {
    position:absolute;
    left:0;
    top:22px;
    font-size:1.6rem;
  }
  .process p {
    margin-bottom:0;
  }
  .flow {
    grid-template-columns:1fr 1fr;
    gap:25px 18px;
  }
  .purpose {
    grid-template-columns:1fr;
    gap:24px;
  }
  .purpose li {
    padding-left:48px;
    position:relative;
  }
  .purpose li::before {
    position:absolute;
    left:0;
    top:27px;
  }
  .purpose p {
    margin-bottom:0;
  }
  .spec th {
    width:7em;
  }
  .contact-phone {
    flex-direction:column;
    align-items:flex-start;
    gap:12px;
  }
  .contact-form {
    padding:24px 20px;
  }
  .cta__act {
    flex-direction:column;
    gap:22px;
  }
  .ft__in {
    grid-template-columns:1fr;
    gap:28px;
  }
  .bar {
    display:grid;
    grid-template-columns:1fr 1.25fr;
    gap:8px;
    position:fixed;
    bottom:0;
    left:0;
    right:0;
    padding:10px 14px calc(10px + env(safe-area-inset-bottom));
    background:#fffefa;
    z-index:90;
    border-top:1px solid var(--line);
  }
  .bar a {
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:54px;
    text-align:center;
    text-decoration:none;
    border:1px solid var(--ai);
    border-radius:5px;
    padding:11px 6px;
    font-size:1rem;
    font-weight:700;
    line-height:1.8;
  }
  .bar a:last-child {
    background:var(--ai);
    color:white;
  }
  body:has(.bar) {
    padding-bottom:calc(7rem + env(safe-area-inset-bottom));
  }
}
/* Readable text needs room, especially in narrow service cards. */
@media(max-width:1400px) {
  .hd__tel { display:none; }
}
@media(max-width:720px) {
  .hd__in { gap:8px; padding-block:20px; }
  .logo span { font-size:1rem; letter-spacing:0; }
  .menu-toggle { flex:none; padding-inline:8px; }
  .hero { padding-top:24px; }
  .hero__act .btn { width:100%; gap:14px; }
  .hd nav a { white-space:normal; }
}
@media(max-width:600px) {
  .svc, .flow { grid-template-columns:1fr; }
  .svc>div:first-child { grid-column:auto; }
  .svc>div:first-child ul { grid-template-columns:1fr; }
  .spec th, .spec td { display:block; width:auto; }
  .spec th { border:0; padding-bottom:0; }
  .spec td { padding-top:5px; }
}
.company-note {
  font-size:1rem;
  color:var(--gray);
  margin:12px 0 0;
  line-height:2;
}
@media(max-width:380px) {
  :root {
    --gut:18px;
  }
  .hero__act {
    align-items:flex-start;
    flex-direction:column;
    gap:8px;
  }
  .hero__fig {
    height:290px;
  }
  .svc {
    grid-template-columns:1fr;
  }
  .svc>div:first-child {
    grid-column:auto;
  }
  .svc>div:first-child ul {
    grid-template-columns:1fr;
  }
  .flow {
    grid-template-columns:1fr;
  }
  .spec th,.spec td {
    display:block;
    width:auto;
  }
  .spec th {
    border:0;
    padding-bottom:0;
  }
  .spec td {
    padding-top:5px;
  }
  .contact-form {
    padding:22px 16px;
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto;
  }
  *,*::before,*::after {
    transition:none!important;
    animation:none!important;
  }
}
@media print {
  .hd,.bar,.cta,.lb,.menu-toggle {
    display:none;
  }
  body {
    padding:0;
  }
  .sec {
    padding-block:30px;
  }
  .hero__fig {
    height:300px;
  }
}
/* Show every panel of the collage on desktop and mobile, without cropping. */
.hero__fig.hero__fig--collage {
  height:auto;
  align-self:center;
  border-radius:24px;
  background:var(--paper);
  border:1px solid var(--line);
}
.hero__fig--collage img {
  width:100%;
  height:auto;
  object-fit:contain;
}
.hero__fig--collage::after {
  display:none;
}
.hero__fig--collage figcaption {
  position:static;
  padding:20px 24px;
  color:var(--ai);
  font-size:1.125rem;
  letter-spacing:.03em;
}
.hero__fig--collage small {
  color:var(--gray);
  line-height:1.8;
}
@media(max-width:720px) {
  .hero__fig.hero__fig--collage { border-radius:16px; }
  .hero__fig--collage figcaption { padding:18px; }
}
