:root {
  --paper:#f7f5ee;
  --white:#fffefa;
  --ink:#17392e;
  --muted:#52645a;
  --line:#d9ded4;
  --mint:#e7eee4;
  --accent:#e58917;
  --sun:#ffbd19;
  --serif:"Hiragino Mincho ProN","Yu Mincho",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Noto Sans JP",Meiryo,sans-serif
}
* {
  box-sizing:border-box
}
html {
  scroll-behavior:smooth
}
body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  line-height:1.8;
  -webkit-font-smoothing:antialiased
}
a {
  color:inherit
}
a:hover {
  color:#aa4f36
}
a:focus-visible {
  outline:3px solid var(--accent);
  outline-offset:4px;
  border-radius:3px
}
.shell {
  width:min(100% - 48px,1120px);
  margin-inline:auto
}
.skip-link {
  position:absolute;
  left:1rem;
  top:-5rem;
  z-index:10;
  background:var(--ink);
  color:white;
  padding:.6rem 1rem
}
.skip-link:focus {
  top:1rem;
  color:white
}
.site-header {
  background:var(--paper);
  border-bottom:1px solid var(--line)
}
.header-inner {
  min-height:88px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2rem
}
.brand {
  display:inline-flex;
  align-items:center;
  text-decoration:none;
  flex:none
}
.brand img {
  display:block;
  width:64px;
  height:64px;
  object-fit:contain;
  mix-blend-mode:multiply
}
.hero h1 span {
  color:var(--accent)
}
.site-nav {
  display:flex;
  flex-wrap:wrap;
  gap:.2rem 1.65rem;
  align-items:center
}
.site-nav a {
  text-decoration:none;
  font-size:.78rem;
  font-weight:700;
  white-space:nowrap;
  border-bottom:2px solid transparent;
  padding:.5rem 0
}
.site-nav a[aria-current] {
  border-color:var(--accent)
}
.eyebrow {
  margin:0 0 1.2rem;
  text-transform:uppercase;
  font-size:.72rem;
  letter-spacing:.18em;
  font-weight:800;
  color:#a35e45
}
.hero {
  overflow:hidden
}
.hero-grid {
  min-height:650px;
  display:grid;
  grid-template-columns:1.15fr .85fr;
  gap:4rem;
  align-items:center
}
.hero-copy {
  padding:5rem 0
}
.hero h1 {
  margin:0;
  font-size:clamp(5rem,9.2vw,9rem);
  line-height:.95;
  letter-spacing:-.085em;
  font-weight:850
}
.hero h1 em {
  font-style:normal;
  color:var(--ink)
}
.hero-lead {
  font-family:var(--serif);
  font-size:clamp(1.65rem,2.4vw,2.4rem);
  font-weight:700;
  letter-spacing:.1em;
  margin:2.1rem 0 1rem
}
.hero-text {
  color:var(--muted);
  font-size:.94rem;
  line-height:2.1
}
.hero-actions {
  display:flex;
  align-items:center;
  gap:1.8rem;
  flex-wrap:wrap;
  margin-top:2.1rem
}
.button {
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:2.2rem;
  min-height:52px;
  padding:.7rem 1.25rem;
  text-decoration:none;
  font-size:.83rem;
  font-weight:800;
  transition:transform .2s ease,background .2s ease
}
.button:hover {
  transform:translateY(-2px)
}
.button-dark {
  background:var(--ink);
  color:white
}
.button-dark:hover {
  color:white;
  background:#255945
}
.button-light {
  background:var(--paper);
  color:var(--ink)
}
.button-light:hover {
  color:var(--ink);
  background:white
}
.text-link,.inline-link {
  text-decoration:none;
  font-size:.85rem;
  font-weight:800;
  border-bottom:1px solid var(--ink);
  padding-bottom:.3rem
}
.text-link span,.inline-link span {
  margin-left:.65rem
}
.hero-art {
  height:500px;
  overflow:hidden;
  mix-blend-mode:multiply;
  -webkit-mask-image:radial-gradient(ellipse 85% 88% at 64% 52%,#000 47%,transparent 100%);
  mask-image:radial-gradient(ellipse 85% 88% at 64% 52%,#000 47%,transparent 100%)
}
.hero-art img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:76% center
}
.section {
  padding:100px 0
}
.intro {
  background:var(--white)
}
.intro-grid,.two-column {
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:8rem
}
.intro h2,.two-column h2 {
  font-family:var(--serif);
  font-size:clamp(2.3rem,4vw,4rem);
  line-height:1.45;
  letter-spacing:.04em;
  margin:0
}
.intro h2 span {
  color:#6d836f
}
.intro-grid>div:last-child,.body-copy {
  max-width:570px;
  color:var(--muted);
  font-size:.97rem;
  line-height:2.15
}
.intro-grid>div:last-child p:first-child,.body-copy p:first-child {
  margin-top:0
}
.intro-grid .inline-link {
  display:inline-block;
  margin-top:1.5rem;
  color:var(--ink)
}
.service-section {
  background:var(--paper)
}
.section-heading {
  display:flex;
  justify-content:space-between;
  align-items:end;
  gap:2rem;
  margin-bottom:2.4rem
}
.section-heading h2,.company-block h2,.simple-cta h2 {
  margin:0;
  font-family:var(--serif);
  font-size:clamp(2.1rem,3.2vw,3.2rem);
  line-height:1.35
}
.section-heading>p {
  font-size:.9rem;
  color:var(--muted);
  margin:0
}
.card-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:16px
}
.service-card {
  background:#fff;
  border:1px solid var(--line);
  padding:2rem;
  min-height:295px;
  display:flex;
  flex-direction:column
}
.service-image {
  display:flex;
  align-items:center;
  justify-content:center;
  height:164px;
  margin-top:1.8rem;
  background:#fff;
  overflow:hidden
}
.service-image img {
  display:block;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  mix-blend-mode:multiply
}
.card-top {
  display:flex;
  align-items:start;
  justify-content:space-between;
  gap:.7rem
}
.card-number,.contact-index {
  font-size:.67rem;
  letter-spacing:.1em;
  font-weight:800;
  color:#6d846f;
  text-transform:uppercase
}
.status {
  font-size:.67rem;
  font-weight:800;
  white-space:nowrap;
  background:#e9eee5;
  padding:.18rem .55rem;
  border-radius:100px
}
.service-card h3 {
  font-size:1.4rem;
  line-height:1.4;
  margin:1.5rem 0 .7rem
}
.service-card p {
  font-size:.84rem;
  color:var(--muted);
  margin:0;
  line-height:1.85
}
.section-link {
  display:inline-block;
  margin-top:2rem
}
.contact-band {
  background:var(--ink);
  color:var(--paper);
  padding:4rem 0
}
.contact-band .eyebrow {
  color:#e6a18a
}
.contact-band-inner {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:3rem
}
.contact-band h2 {
  font-family:var(--serif);
  font-size:clamp(2rem,3vw,3rem);
  margin:0
}
.contact-band p:last-child {
  font-size:.9rem;
  margin:.7rem 0 0;
  color:#d9e4dc
}
.site-footer {
  background:#102d24;
  color:#e6eee7;
  padding-top:4rem
}
.footer-inner {
  display:flex;
  justify-content:space-between;
  gap:2rem;
  padding-bottom:4rem
}
.footer-brand {
  display:inline-block;
  text-decoration:none
}
.footer-brand img {
  display:block;
  width:80px;
  height:80px;
  object-fit:contain
}
.footer-inner p {
  margin:.6rem 0 1.3rem;
  font-family:var(--serif)
}
.footer-inner small,.footer-bottom small {
  color:#b8c6bb;
  font-size:.75rem
}
.footer-inner nav {
  display:grid;
  grid-template-columns:repeat(2,auto);
  gap:1rem 2.4rem;
  align-content:start
}
.footer-inner nav a {
  text-decoration:none;
  font-size:.78rem
}
.footer-inner a:hover {
  color:#f3b9a7
}
.footer-bottom {
  border-top:1px solid #365347;
  padding:1rem 0 1.5rem;
  display:flex;
  justify-content:space-between
}
.page-hero {
  padding-top:100px;
  padding-bottom:90px;
  position:relative;
  isolation:isolate
}
.page-hero-watercolor::before {
  content:"";
  position:absolute;
  inset:0 0 0 42%;
  z-index:-1;
  background:url("/assets/illustrations/about-sun-watercolor.jpg") center right / cover no-repeat;
  opacity:.34;
  -webkit-mask-image:linear-gradient(to right,transparent,#000 45%);
  mask-image:linear-gradient(to right,transparent,#000 45%)
}
.page-hero h1 {
  font-family:var(--serif);
  font-size:clamp(3rem,6vw,5.9rem);
  line-height:1.36;
  letter-spacing:.04em;
  margin:0
}
.page-hero h1 em {
  font-style:normal;
  color:#7a967a
}
.service-policy-hero h1 em span+span::before {
  content:' '
}
.page-lead {
  font-size:1rem;
  max-width:630px;
  color:var(--muted);
  margin:2rem 0 0;
  line-height:2
}
.soft-section {
  background:var(--white)
}
.company-block {
  max-width:900px
}
.company-block dl {
  margin:2.5rem 0 1rem;
  border-top:1px solid var(--line)
}
.company-block dl div {
  display:grid;
  grid-template-columns:180px 1fr;
  gap:1rem;
  border-bottom:1px solid var(--line);
  padding:1.1rem 0
}
.company-block dt {
  font-size:.8rem;
  font-weight:800;
  color:var(--muted)
}
.company-block dd {
  margin:0;
  font-size:.92rem
}
.note {
  color:var(--muted);
  font-size:.78rem;
  line-height:1.9
}
.service-note {
  margin-top:1.8rem
}
.simple-cta {
  text-align:center
}
.simple-cta p {
  color:var(--muted);
  margin:1rem 0 2rem
}
.updated {
  font-size:.76rem;
  color:var(--muted);
  margin-top:1.5rem
}
.policy-layout {
  display:grid;
  grid-template-columns:240px minmax(0,1fr);
  gap:6rem
}
.policy-aside {
  border-top:3px solid var(--accent);
  padding-top:1.5rem;
  font-family:var(--serif);
  font-size:1.25rem;
  line-height:1.8
}
.policy-aside .eyebrow {
  font-family:var(--sans)
}
.policy-content {
  max-width:720px
}
.policy-content section {
  padding-bottom:2.2rem;
  margin-bottom:2.2rem;
  border-bottom:1px solid var(--line)
}
.policy-content h2 {
  font-size:1.2rem;
  line-height:1.5;
  margin:0 0 1rem
}
.policy-content p {
  font-size:.86rem;
  color:#465a4e;
  line-height:2
}
.policy-content p {
  margin:0 0 1rem
}
.policy-contact {
  padding:1.6rem;
  background:var(--paper);
  margin-top:1rem
}
.policy-links {
  margin:0;
  padding-left:1.3rem;
  line-height:2
}
.policy-links a,.policy-content a,.policy-aside a {
  color:var(--ink);
  text-underline-offset:.2em
}
.policy-reference {
  margin-top:1.5rem!important
}
.contact-list article {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:2rem;
  padding:2.2rem 0;
  border-bottom:1px solid var(--line)
}
.contact-list article:first-child {
  border-top:1px solid var(--line)
}
.contact-list h2 {
  font-family:var(--serif);
  font-size:1.45rem;
  margin:.5rem 0
}
.contact-list p {
  font-size:.86rem;
  color:var(--muted);
  margin:0
}
.contact-list article>a {
  font-size:1rem;
  font-weight:800;
  text-decoration:none;
  border-bottom:1px solid var(--ink);
  white-space:nowrap;
  padding:.2rem 0
}
.contact-list article>a span {
  margin-left:.7rem
}
@media(max-width:900px) {
  .hero-grid {
    gap:2rem
  }
  .hero-art {
    height:330px
  }
  .intro-grid,.two-column {
    gap:3rem
  }
  .card-grid {
    grid-template-columns:1fr 1fr
  }
  .policy-layout {
    gap:3rem
  }
}
@media(max-width:680px) {
  .service-policy-hero h1 {
    font-size:2.25rem
  }
  .service-policy-hero h1 em span {
    display:block
  }
  .service-policy-hero h1 em span+span::before {
    content:none
  }
  .shell {
    width:min(100% - 36px,1120px)
  }
  .header-inner {
    min-height:76px;
    display:block;
    padding:1rem 0 .75rem
  }
  .brand img {
    width:54px;
    height:54px
  }
  .site-nav {
    margin-top:.75rem;
    gap:0 1rem;
    flex-wrap:wrap;
    padding-bottom:.25rem
  }
  .site-nav a {
    font-size:.72rem
  }
  .hero-grid {
    display:flex;
    flex-direction:column;
    gap:0;
    min-height:auto;
    align-items:stretch
  }
  .hero-copy {
    padding:4rem 0 1rem
  }
  .hero h1 {
    font-size:clamp(4.5rem,17vw,7rem)
  }
  .hero-lead {
    font-size:1.6rem;
    margin:1.8rem 0 .6rem
  }
  .hero-text {
    font-size:.88rem
  }
  .hero-art {
    height:320px;
    max-width:400px;
    width:100%;
    align-self:center;
    margin:1rem 0 3rem;
    -webkit-mask-image:radial-gradient(ellipse 85% 88% at 64% 52%,#000 47%,transparent 100%);
    mask-image:radial-gradient(ellipse 85% 88% at 64% 52%,#000 47%,transparent 100%)
  }
  .page-hero-watercolor::before {
    inset:35% -18px 0 18%;
    opacity:.22
  }
  .section {
    padding:68px 0
  }
  .intro-grid,.two-column,.policy-layout {
    grid-template-columns:1fr;
    gap:2rem
  }
  .intro h2,.two-column h2 {
    font-size:2.55rem
  }
  .section-heading {
    display:block
  }
  .section-heading>p {
    margin-top:1rem
  }
  .card-grid {
    grid-template-columns:1fr
  }
  .service-card {
    min-height:250px
  }
  .service-card h3 {
    margin-top:2.5rem
  }
  .contact-band-inner {
    display:block
  }
  .contact-band .button {
    margin-top:1.6rem
  }
  .footer-inner {
    display:block
  }
  .footer-inner nav {
    margin-top:2.5rem;
    gap:.9rem 1.2rem
  }
  .page-hero {
    padding-top:65px;
    padding-bottom:65px
  }
  .page-hero h1 {
    font-size:clamp(2.7rem,10vw,4.5rem)
  }
  .page-hero-contact h1 {
    font-size:clamp(1.8rem,8.2vw,3.2rem);
    letter-spacing:0
  }
  .page-hero-contact h1 em {
    white-space:nowrap
  }
  .page-lead {
    font-size:.91rem
  }
  .company-block dl div {
    grid-template-columns:1fr;
    gap:.2rem
  }
  .policy-aside {
    font-size:1rem
  }
  .contact-list article {
    display:block
  }
  .contact-list article>a {
    display:inline-block;
    margin-top:1.4rem;
    font-size:.9rem;
    white-space:normal;
    overflow-wrap:anywhere
  }
}
@media(max-width:420px) {
  .service-policy-hero h1 {
    font-size:2.25rem;
    word-break:keep-all
  }
}
@media(max-width:360px) {
  .service-policy-hero h1 {
    font-size:2.05rem
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  .button {
    transition:none
  }
  .button:hover {
    transform:none
  }
}
.error-page {
  min-height:100vh;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  padding-block:4rem;
}
.error-page h1 {
  font-family:var(--serif);
  font-size:clamp(2rem,5vw,4rem);
  margin:0;
}
.error-page p:not(.eyebrow) {
  color:var(--muted);
  margin:1.5rem 0 2rem;
}
