/* ==============================
   Base / Variables
============================== */
:root{
  --ink:#171713;
  --muted:#66625b;
  --paper:#fff;
  --white:#fff;
  --sand:#fff;
  --dark:#11110e;
  --accent:#9b7a4a;
  --line:rgba(23,23,19,.14);
  --shadow:0 24px 70px rgba(20,18,14,.12);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  font-size:15px;
  line-height:1.9;
  letter-spacing:.02em;
}
body.nav-open{overflow:hidden}
body.opening-lock{overflow:hidden}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
p,h1,h2,h3,figure{margin:0}
button{font:inherit;color:inherit}

/* ==============================
   Opening Movie
============================== */
.opening{
  position:fixed;
  inset:0;
  z-index:999;
  overflow:hidden;
  background:#111;
  color:#fff;
  pointer-events:auto;
  animation:openingExit 1s 6.1s cubic-bezier(.22,1,.36,1) forwards;
}
.opening__video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center center;
  transform:scale(1.025);
  animation:openingVideoZoom 7.1s ease-out forwards;
}
.opening__shade{
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(8,8,7,.5),rgba(8,8,7,.18) 58%,rgba(8,8,7,.3));
}
.opening__grain{
  position:absolute;
  inset:0;
  opacity:.13;
  background-image:radial-gradient(rgba(255,255,255,.22) .7px, transparent .8px);
  background-size:4px 4px;
  mix-blend-mode:soft-light;
}
.opening__video-content{
  position:relative;
  z-index:2;
  width:100%;
  height:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:7vw;
}
.opening__brand{
  width:clamp(180px,20vw,300px);
  opacity:0;
  transform:translateY(18px) scale(.96);
  animation:openingLogo 1.15s .45s cubic-bezier(.22,1,.36,1) forwards;
}
.opening__brand img{
  object-fit:contain;
  filter:drop-shadow(0 8px 24px rgba(0,0,0,.38));
  opacity:.97;
}
.opening__line{
  width:min(280px,44vw);
  height:1px;
  margin-top:26px;
  background:rgba(255,255,255,.62);
  transform:scaleX(0);
  transform-origin:center;
  animation:openingLineVideo 1.1s 1.2s cubic-bezier(.22,1,.36,1) forwards;
}
.opening__copy{
  margin-top:17px;
  color:rgba(255,255,255,.82);
  font:11px/1.4 Arial,sans-serif;
  letter-spacing:.25em;
  opacity:0;
  transform:translateY(10px);
  text-shadow:0 3px 14px rgba(0,0,0,.45);
  animation:openingCopy 1s 1.65s ease forwards;
}
.site-header,
main,
.footer{
  opacity:0;
  transform:translateY(18px);
  animation:pageEnter .9s 5.95s cubic-bezier(.22,1,.36,1) forwards;
}

/* ==============================
   Header / Navigation
============================== */
.site-header{
  position:fixed;
  inset:0 0 auto;
  z-index:10;
  height:88px;
  padding:18px clamp(24px,4vw,64px);
  display:flex;
  align-items:center;
  justify-content:space-between;
  background:rgba(255,255,255,.82);
  border-bottom:1px solid rgba(23,23,19,.08);
  backdrop-filter:blur(16px);
  transition:background .25s ease,box-shadow .25s ease;
}
.site-header.is-scrolled{background:rgba(255,255,255,.96);box-shadow:0 14px 34px rgba(0,0,0,.06)}
.brand{width:140px;height:52px;display:block}
.brand img{object-fit:contain}
.site-nav{display:flex;align-items:center;gap:28px;font-size:13px;letter-spacing:.06em}
.site-nav a{position:relative;padding:8px 0}
.site-nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:right;transition:transform .25s ease}
.site-nav a:hover::after{transform:scaleX(1);transform-origin:left}
.menu-button{display:none}

/* ==============================
   Hero
============================== */
.hero{
  position:relative;
  min-height:100svh;
  overflow:hidden;
  display:flex;
  align-items:center;
  padding:128px clamp(24px,6vw,92px) 78px;
  background:#e9e5dc;
}
.hero__photo{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  margin:0;
  overflow:hidden;
  background:#e9e5dc;
}
.hero__photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center center;
  filter:saturate(.94) contrast(1.02);
}
.hero__veil{
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(247,244,237,.06) 0%,rgba(247,244,237,.12) 45%,rgba(247,244,237,.66) 74%,rgba(247,244,237,.86) 100%);
}
.hero__content{
  position:relative;
  z-index:2;
  width:min(520px,42vw);
  margin-left:auto;
  padding:34px 0 58px;
}
.kicker{
  margin-bottom:18px;
  color:var(--accent);
  font:11px/1.4 Arial,sans-serif;
  letter-spacing:.2em;
}
h1,h2{
  font-weight:500;
  letter-spacing:0;
  line-height:1.15;
}
h1{font-size:clamp(48px,5.4vw,84px)}
h2{font-size:clamp(36px,4vw,62px)}
.hero__content p:not(.kicker){
  max-width:36em;
  margin-top:26px;
  color:#4f4b44;
  font-size:16px;
}
.hero__actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px}
.button{
  min-height:52px;
  padding:0 22px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--ink);
  font-size:13px;
  letter-spacing:.04em;
}
.button--dark{background:var(--ink);color:#fff}
.button--ghost{background:rgba(255,255,255,.28);backdrop-filter:blur(8px)}
.button--light{background:#fff;color:var(--ink);border-color:#fff}
.button--outline-light{color:#fff;border-color:rgba(255,255,255,.5)}
.hero__note{
  position:absolute;
  z-index:2;
  right:clamp(24px,6vw,92px);
  bottom:28px;
  width:min(520px,42vw);
  display:flex;
  justify-content:space-between;
  gap:20px;
  padding-top:18px;
  border-top:1px solid rgba(23,23,19,.22);
  color:#68635b;
  font:10px/1.4 Arial,sans-serif;
  letter-spacing:.16em;
}
/* ==============================
   Common Sections
============================== */
.section-pad{padding:112px clamp(24px,6vw,92px)}
/* ==============================
   About
============================== */
.intro{
  display:grid;
  grid-template-columns:minmax(360px,.82fr) minmax(0,1.18fr);
  gap:clamp(42px,7vw,104px);
  align-items:center;
  background:#fff;
}
.intro__text p:not(.kicker){max-width:39em;margin-top:26px;color:var(--muted)}
.intro__image{margin:0;overflow:hidden;box-shadow:var(--shadow)}
.intro__image picture{display:block}
.intro__image img{aspect-ratio:16/10;height:auto}
.intro__image figcaption{padding:14px 18px;background:#fff;color:#77736b;font-size:12px}

/* ==============================
   Licenses
============================== */
.credentials{
  padding-top:78px;
  padding-bottom:78px;
  background:var(--paper);
  border-top:1px solid var(--line);
}
.credentials__head{
  display:grid;
  grid-template-columns:minmax(260px,.6fr) minmax(320px,.4fr);
  gap:48px;
  align-items:end;
  margin-bottom:34px;
}
.credentials__head h2{font-size:clamp(30px,3vw,46px)}
.credentials__head>p{color:var(--muted);font-size:14px}
.credentials__list{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.credentials__list article{
  padding:24px 26px 26px;
  border-right:1px solid var(--line);
}
.credentials__list article:last-child{border-right:0}
.credentials__list span{
  color:var(--accent);
  font:11px/1.4 Arial,sans-serif;
  letter-spacing:.18em;
}
.credentials__list h3{
  margin:12px 0 4px;
  font-size:20px;
  line-height:1.45;
  font-weight:500;
}
.credentials__list p{
  color:var(--muted);
  font-size:12px;
}

/* ==============================
   Section Headings / Services
============================== */
.section-head{max-width:820px;margin-bottom:46px}
.section-head h2{margin-bottom:18px}
.section-head p:not(.kicker),.section-head--wide>p{color:var(--muted)}
.section-head--wide{
  max-width:none;
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(340px,.5fr);
  gap:48px;
  align-items:end;
}
.service-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:22px;
}
.service-card{
  display:grid;
  grid-template-rows:auto 1fr;
  border-top:1px solid var(--line);
  background:#fff;
}
.service-card img{aspect-ratio:4/3;height:auto}
.service-card>div{padding:24px 22px 28px}
.service-card span,
.flow-list b,
.work figcaption,
.achievement-list span,
.faq-question span{
  color:var(--accent);
  font:11px/1.4 Arial,sans-serif;
  letter-spacing:.18em;
}
.service-card h3{margin:12px 0 10px;font-size:25px;line-height:1.35;font-weight:500}
.service-card p{color:var(--muted);font-size:14px}
.service-accordion{
  margin-top:22px;
  border-top:1px solid var(--line);
}
.service-accordion__item{
  border-bottom:1px solid var(--line);
}
.service-accordion__button{
  width:100%;
  min-height:54px;
  padding:0;
  display:grid;
  grid-template-columns:minmax(0,1fr) 30px;
  gap:14px;
  align-items:center;
  border:0;
  background:transparent;
  text-align:left;
  cursor:pointer;
}
.service-accordion__button b{
  color:var(--ink);
  font-size:14px;
  line-height:1.55;
  font-weight:500;
  letter-spacing:0;
}
.service-accordion__button i{
  position:relative;
  width:28px;
  height:28px;
  border:1px solid var(--line);
  border-radius:50%;
}
.service-accordion__button i::before,
.service-accordion__button i::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:11px;
  height:1px;
  background:var(--ink);
  transform:translate(-50%,-50%);
  transition:opacity .2s ease;
}
.service-accordion__button i::after{
  transform:translate(-50%,-50%) rotate(90deg);
}
.service-accordion__button[aria-expanded="true"] i::after{
  opacity:0;
}
.service-accordion__panel{
  padding:0 0 18px;
}
.service-accordion__panel[hidden]{
  display:none;
}
.service-accordion__panel img{
  aspect-ratio:16/10;
  height:auto;
  margin-bottom:14px;
}
.service-media{
  margin-bottom:14px;
}
.service-media--single{
  overflow:hidden;
}
.service-media--single img,
.service-carousel img{
  width:100%;
  margin:0;
}
.service-carousel figcaption{
  position:absolute;
  left:7px;
  bottom:7px;
  padding:5px 7px;
  background:rgba(17,17,14,.78);
  color:#fff;
  font:9px/1 Arial,sans-serif;
  letter-spacing:.14em;
}
.service-carousel{min-width:0}
.service-carousel__track{
  display:flex;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  scrollbar-width:none;
  touch-action:pan-x pan-y;
}
.service-carousel__track::-webkit-scrollbar{display:none}
.service-carousel__slide{
  position:relative;
  flex:0 0 100%;
  min-width:0;
  overflow:hidden;
  background:#eee;
  scroll-snap-align:start;
  scroll-snap-stop:always;
}
.service-carousel__slide img{
  aspect-ratio:16/10;
  height:auto;
  object-fit:cover;
}
.service-carousel__controls{
  display:grid;
  grid-template-columns:38px 1fr 38px;
  align-items:center;
  gap:10px;
  margin-top:10px;
}
.service-carousel__controls button{
  width:38px;
  height:34px;
  padding:0;
  border:1px solid var(--line);
  background:#fff;
  color:var(--ink);
  font:16px/1 Arial,sans-serif;
  cursor:pointer;
}
.service-carousel__controls button:disabled{
  opacity:.28;
  cursor:default;
}
.service-carousel__controls span{
  color:var(--muted);
  font:10px/1 Arial,sans-serif;
  letter-spacing:.16em;
  text-align:center;
}
.service-compare{
  position:relative;
  overflow:hidden;
  aspect-ratio:16/10;
  background:#eee;
  user-select:none;
  touch-action:pan-y;
}
.service-compare img{
  display:block;
  width:100%;
  height:100%;
  margin:0;
  object-fit:cover;
}
.service-compare__after{
  position:absolute;
  inset:0;
}
.service-compare__before{
  position:absolute;
  inset:0;
  z-index:1;
  overflow:hidden;
  clip-path:inset(0 50% 0 0);
}
.service-compare__before img{
  width:100%;
}
.service-compare__label{
  position:absolute;
  z-index:3;
  top:10px;
  padding:6px 8px;
  background:rgba(17,17,14,.76);
  color:#fff;
  font:9px/1 Arial,sans-serif;
  letter-spacing:.14em;
  pointer-events:none;
}
.service-compare__label--before{left:10px}
.service-compare__label--after{right:10px}
.service-compare__divider{
  position:absolute;
  z-index:3;
  top:0;
  bottom:0;
  left:var(--compare-position);
  width:2px;
  background:#fff;
  box-shadow:0 0 0 1px rgba(0,0,0,.12);
  transform:translateX(-50%);
  pointer-events:none;
}
.service-compare__divider i{
  position:absolute;
  left:50%;
  top:50%;
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border:2px solid #fff;
  border-radius:50%;
  background:rgba(17,17,14,.72);
  color:#fff;
  font:17px/1 Arial,sans-serif;
  font-style:normal;
  transform:translate(-50%,-50%);
  box-shadow:0 5px 18px rgba(0,0,0,.22);
}
.service-compare__range{
  position:absolute;
  z-index:4;
  inset:0;
  width:100%;
  height:100%;
  margin:0;
  opacity:0;
  cursor:ew-resize;
}
.service-compare__hint{
  margin:-4px 0 12px;
  color:var(--muted);
  font-size:11px !important;
  text-align:center;
  letter-spacing:.04em;
}
.service-accordion__panel p{
  color:var(--muted);
  font-size:13px;
  line-height:1.8;
}

/* ==============================
   Price Guide
============================== */
.price-guide{
  background:#fff;
  border-top:1px solid var(--line);
}
.price-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  border-top:1px solid var(--line);
  border-left:1px solid var(--line);
}
.price-card{
  min-height:360px;
  padding:30px 28px 26px;
  display:flex;
  flex-direction:column;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:#fff;
}
.price-card__no{
  color:var(--accent);
  font:11px/1.4 Arial,sans-serif;
  letter-spacing:.18em;
}
.price-card h3{
  margin:18px 0 12px;
  font-size:27px;
  line-height:1.35;
  font-weight:500;
}
.price-card>p:not(.price-card__price){
  color:var(--muted);
  font-size:14px;
}
.price-card__detail{
  margin-top:26px;
  padding-top:18px;
  border-top:1px solid var(--line);
}
.price-card__detail small,
.price-card__price small{
  display:block;
  margin-bottom:6px;
  color:var(--muted);
  font-size:11px;
  letter-spacing:.08em;
}
.price-card__detail b{
  font-size:13px;
  line-height:1.7;
  font-weight:500;
}
.price-card__price{
  margin-top:auto;
  padding-top:24px;
}
.price-card__price strong{
  font-size:20px;
  line-height:1.4;
  font-weight:500;
}
.price-guide__note{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:32px;
  margin-top:28px;
}
.price-guide__note p{
  max-width:760px;
  color:var(--muted);
  font-size:12px;
}
.price-guide__note .button{
  flex:0 0 auto;
}

/* ==============================
   Original Proposal
============================== */
.feature{
  position:relative;
  min-height:78vh;
  display:grid;
  align-items:center;
  padding:110px clamp(24px,6vw,92px);
  color:#fff;
  background:#111;
  overflow:hidden;
}
.feature>img{position:absolute;inset:0;opacity:.54}
.feature::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.82),rgba(0,0,0,.36) 56%,rgba(0,0,0,.08))}
.feature__panel{position:relative;z-index:1;max-width:720px}
.feature__panel p:not(.kicker){max-width:34em;margin-top:24px;color:rgba(255,255,255,.78)}

/* ==============================
   Works
============================== */
.works{
  background:#fff;
  padding-bottom:72px;
}
.works-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
  max-width:1600px;
  margin:0 auto;
}
.work{position:relative;margin:0;overflow:hidden;background:#ddd}
.work:nth-child(1),
.work:nth-child(2),
.work:nth-child(3),
.work:nth-child(4),
.work:nth-child(5),
.work:nth-child(6){grid-column:auto}
.work--tall,
.work--wide{
  grid-row:auto;
  grid-column:auto;
}
.work img{
  aspect-ratio:16/11;
  height:auto;
  transition:transform .7s ease,filter .7s ease;
  filter:saturate(.88);
}
.work:hover img{transform:scale(1.04);filter:saturate(1)}
.work figcaption{
  position:absolute;
  inset:auto 0 0;
  padding:54px 18px 16px;
  color:#fff;
  background:linear-gradient(transparent,rgba(0,0,0,.72));
}

/* ==============================
   Achievements
============================== */
.achievements{
  background:var(--sand);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.achievement-list{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.achievement-list article{
  min-height:210px;
  padding:28px 24px;
  border-right:1px solid var(--line);
}
.achievement-list article:last-child{border-right:0}
.achievement-list h3{
  margin:18px 0 10px;
  font-size:21px;
  line-height:1.45;
  font-weight:500;
}
.achievement-list p{
  color:var(--muted);
  font-size:14px;
}

/* ==============================
   Customer Voice
============================== */
.voice{
  display:grid;
  grid-template-columns:minmax(300px,.68fr) minmax(0,1.32fr);
  gap:clamp(42px,7vw,96px);
  align-items:start;
  background:#fff;
}
.voice__lead{
  position:sticky;
  top:124px;
}
.voice__lead p:not(.kicker){
  max-width:34em;
  margin-top:22px;
  color:var(--muted);
}
.voice-list{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px;
}
.voice-list blockquote{
  position:relative;
  min-height:340px;
  margin:0;
  padding:34px 24px 26px;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:#fff;
}
.voice-list blockquote::before{
  content:"“";
  display:block;
  height:58px;
  color:rgba(155,122,74,.28);
  font:82px/1 Georgia,serif;
}
.voice-list p{
  color:#33302a;
  font-size:15px;
  line-height:1.92;
}
.voice-photo{width:100%;aspect-ratio:16/10;object-fit:cover;margin:0 0 18px}
.seo-content{display:grid;grid-template-columns:minmax(260px,.7fr) 1.3fr;gap:8vw;border-top:1px solid var(--line)}
.seo-content h2{margin:0;font-size:clamp(27px,3vw,47px);font-weight:500;line-height:1.38}
.seo-content__body{color:var(--muted);font-size:15px;line-height:2.05}
@media(max-width:760px){.seo-content{grid-template-columns:1fr;gap:24px}}
.voice-list cite{
  display:block;
  margin-top:24px;
  color:var(--accent);
  font-style:normal;
  font-size:13px;
}

/* ==============================
   FAQ
============================== */
.faq{
  background:var(--paper);
}
.faq-list{
  border-top:1px solid var(--line);
}
.faq-item{
  border-bottom:1px solid var(--line);
}
.faq-question{
  width:100%;
  min-height:78px;
  display:grid;
  grid-template-columns:48px minmax(0,1fr) 34px;
  gap:20px;
  align-items:center;
  padding:18px 0;
  border:0;
  background:transparent;
  text-align:left;
  cursor:pointer;
}
.faq-question b{
  font-size:18px;
  line-height:1.65;
  font-weight:500;
}
.faq-question i{
  position:relative;
  width:32px;
  height:32px;
  border:1px solid var(--line);
  border-radius:50%;
}
.faq-question i::before,
.faq-question i::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:12px;
  height:1px;
  background:var(--ink);
  transform:translate(-50%,-50%);
  transition:opacity .2s ease,transform .2s ease;
}
.faq-question i::after{transform:translate(-50%,-50%) rotate(90deg)}
.faq-question[aria-expanded="true"] i::after{opacity:0}
.faq-answer{
  overflow:hidden;
}
.faq-answer p{
  max-width:820px;
  margin:0;
  padding:0 54px 28px 68px;
  color:var(--muted);
}

/* ==============================
   Instagram
============================== */
.instagram{
  background:#fff;
}
.instagram-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:18px;
}
.instagram-card{
  min-height:430px;
  padding:14px;
  display:grid;
  place-items:center;
  overflow:hidden;
  border:1px solid var(--line);
  background:#fff;
}
.instagram-card .instagram-media{
  max-width:100% !important;
  min-width:0 !important;
  width:100% !important;
  margin:0 !important;
}
.instagram-card a{
  display:grid;
  min-height:220px;
  place-items:center;
  padding:24px;
  color:var(--muted);
  text-align:center;
  border:1px dashed rgba(155,122,74,.35);
}
.instagram-more{
  margin-top:28px;
  text-align:right;
}
.instagram-more a{
  display:inline-flex;
  min-height:48px;
  align-items:center;
  padding:0 20px;
  border:1px solid var(--ink);
  font-size:13px;
}

/* ==============================
   Flow
============================== */
.flow{background:var(--sand)}
.flow-list{
  list-style:none;
  padding:0;
  margin:0;
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.flow-list li{padding:28px 24px;min-height:210px;border-right:1px solid var(--line)}
.flow-list li:last-child{border-right:0}
.flow-list h3{margin:18px 0 10px;font-size:20px;line-height:1.4;font-weight:500}
.flow-list p{color:var(--muted);font-size:14px}

/* ==============================
   Contact
============================== */
.contact{
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(320px,.42fr);
  gap:42px;
  align-items:end;
  background:var(--dark);
  color:#fff;
}
.contact p:not(.kicker){max-width:40em;margin-top:22px;color:rgba(255,255,255,.76)}
.contact__actions{display:grid;gap:12px}

/* ==============================
   Footer
============================== */
.footer{
  padding:70px clamp(24px,6vw,92px) 58px;
  display:grid;
  grid-template-columns:minmax(180px,.42fr) minmax(0,1fr) auto;
  align-items:start;
  gap:clamp(34px,6vw,82px);
  background:#0c0c0a;
  color:rgba(255,255,255,.68);
}
.footer__brand img{width:168px;height:72px;object-fit:contain}
.footer__brand p{
  margin-top:16px;
  color:rgba(255,255,255,.48);
  font:11px/1.4 Arial,sans-serif;
  letter-spacing:.22em;
}
.footer__info{
  margin:0;
  display:grid;
  border-top:1px solid rgba(255,255,255,.15);
}
.footer__info div{
  display:grid;
  grid-template-columns:140px minmax(0,1fr);
  gap:28px;
  padding:18px 0;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.footer__info dt,
.footer__info dd{margin:0}
.footer__info dt{
  color:rgba(255,255,255,.42);
  font-size:13px;
  line-height:1.8;
  letter-spacing:.08em;
}
.footer__info dd{
  color:rgba(255,255,255,.82);
  font-size:18px;
  line-height:1.85;
  letter-spacing:.04em;
}
.footer small{
  color:rgba(255,255,255,.35);
  font:11px/1 Arial,sans-serif;
  letter-spacing:.22em;
  white-space:nowrap;
}

.mobile-fixed-footer{
  display:none;
}

/* ==============================
   Scroll reveal motion
============================== */
.reveal-item{
  opacity:0;
  transition:
    opacity .82s cubic-bezier(.22,1,.36,1) var(--reveal-delay,0ms),
    transform .82s cubic-bezier(.22,1,.36,1) var(--reveal-delay,0ms);
  will-change:opacity,transform;
}
.reveal-up{transform:translate3d(0,22px,0)}
.reveal-image{transform:translate3d(0,18px,0) scale(1.025)}
.reveal-item.is-revealed{
  opacity:1;
  transform:translate3d(0,0,0) scale(1);
  will-change:auto;
}
.service-accordion__panel:not([hidden]),
.faq-answer:not([hidden]){
  animation:panelReveal .42s cubic-bezier(.22,1,.36,1) both;
}
@keyframes panelReveal{
  from{opacity:0;transform:translate3d(0,-8px,0)}
  to{opacity:1;transform:translate3d(0,0,0)}
}
@media (prefers-reduced-motion:reduce){
  .reveal-item{
    opacity:1!important;
    transform:none!important;
    transition:none!important;
  }
  .service-accordion__panel:not([hidden]),
  .faq-answer:not([hidden]){animation:none!important}
}

/* ==============================
   Tablet / Mobile
============================== */
@media (max-width:980px){
  .opening__video{object-position:54% center}
  .opening__video-content{padding:8vw}
  .opening__brand{width:min(52vw,220px)}
  .opening__line{width:min(230px,58vw);margin-top:22px}
  .opening__copy{font-size:9px;letter-spacing:.19em;text-align:center}
  .site-header,
  main,
  .footer{animation-delay:5.95s}

  .site-header{height:78px;padding:14px 20px}
  .brand{width:124px;height:48px}
  .menu-button{
    display:flex;
    align-items:center;
    gap:12px;
    min-height:44px;
    border:0;
    background:transparent;
    font:11px/1 Arial,sans-serif;
    letter-spacing:.18em;
  }
  .menu-button i{position:relative;width:32px;height:18px}
  .menu-button i::before,.menu-button i::after{content:"";position:absolute;left:0;width:32px;height:1px;background:var(--ink);transition:.25s}
  .menu-button i::before{top:5px}
  .menu-button i::after{top:13px}
  .menu-button[aria-expanded="true"] i::before{top:9px;transform:rotate(45deg)}
  .menu-button[aria-expanded="true"] i::after{top:9px;transform:rotate(-45deg)}
  .site-nav{
    position:fixed;
    inset:78px 0 auto;
    display:grid;
    gap:0;
    padding:18px 24px 28px;
    background:rgba(255,255,255,.98);
    border-bottom:1px solid var(--line);
    transform:translateY(-120%);
    transition:transform .28s ease;
  }
  .site-nav.is-open{transform:none}
  .site-nav a{padding:14px 0;border-bottom:1px solid var(--line)}
  .hero,.intro,.section-head--wide,.contact,.voice,.credentials__head{grid-template-columns:1fr}
  .hero{padding:112px 6vw 70px;align-items:flex-end}
  .hero__content{width:min(500px,58vw);margin-left:auto;padding:0 0 54px}
  .hero__note{right:6vw;width:min(500px,58vw);bottom:24px}
  .service-grid{grid-template-columns:1fr}
  .price-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .price-guide__note{align-items:flex-start;flex-direction:column}
  .credentials__list{grid-template-columns:1fr}
  .credentials__list article{border-right:0;border-bottom:1px solid var(--line)}
  .credentials__list article:last-child{border-bottom:0}
  .achievement-list{grid-template-columns:repeat(2,minmax(0,1fr))}
  .achievement-list article:nth-child(2){border-right:0}
  .achievement-list article:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .voice__lead{position:static;top:auto}
  .voice-list{grid-template-columns:1fr;gap:0}
  .voice-list blockquote{
    min-height:0;
    padding:26px 0 24px;
    background:transparent;
    border-bottom:0;
  }
  .voice-list blockquote:last-child{border-bottom:1px solid var(--line)}
  .instagram-grid{grid-template-columns:1fr;max-width:520px}
  .works-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .flow-list{grid-template-columns:repeat(2,minmax(0,1fr))}
  .flow-list li:nth-child(2){border-right:0}
  .flow-list li:nth-child(-n+2){border-bottom:1px solid var(--line)}
}

/* ==============================
   Small Mobile
============================== */
@media (max-width:640px){
  body{
    font-size:15px;
    line-height:1.85;
    padding-bottom:calc(58px + env(safe-area-inset-bottom));
  }
  .section-pad{padding:58px 6vw}
  .credentials{padding-top:48px;padding-bottom:48px}
  .credentials__head{gap:18px;margin-bottom:24px}
  .credentials__list article{padding:20px 0}
  h1{font-size:42px;line-height:1.18}
  h2{font-size:34px;line-height:1.22}
  .hero{
    min-height:100svh;
    padding:104px 6vw calc(76px + env(safe-area-inset-bottom));
    align-items:flex-end;
  }
  .hero__photo img{object-position:center center}
  .hero__veil{
    background:linear-gradient(180deg,rgba(10,10,8,.05) 20%,rgba(10,10,8,.12) 48%,rgba(10,10,8,.76) 100%);
  }
  .hero__content{
    width:100%;
    margin:0;
    padding:0 0 72px;
    color:#fff;
    text-shadow:0 2px 18px rgba(0,0,0,.35);
  }
  .hero__content .kicker{color:rgba(255,255,255,.82)}
  .hero__content p:not(.kicker){color:rgba(255,255,255,.9);font-size:14px}
  .hero__actions{display:grid}
  .hero .button--dark{background:#fff;color:var(--ink);border-color:#fff;text-shadow:none}
  .hero .button--ghost{color:#fff;border-color:rgba(255,255,255,.72);background:rgba(0,0,0,.12);text-shadow:none}
  .hero__note{
    left:6vw;
    right:6vw;
    bottom:24px;
    width:auto;
    color:rgba(255,255,255,.78);
    border-color:rgba(255,255,255,.34);
  }
  .intro__image img{aspect-ratio:4/5}
  .button{width:100%}
  .price-grid{grid-template-columns:1fr;border-left:0}
  .price-card{min-height:0;padding:24px 0;border-right:0}
  .price-card h3{font-size:24px;margin-top:12px}
  .price-card__detail{margin-top:20px}
  .price-card__price{margin-top:22px;padding-top:0}
  .price-guide__note{gap:18px;margin-top:22px}
  .section-head{margin-bottom:28px}
  .services.section-pad{padding-left:4vw;padding-right:4vw}
  .service-card>div{padding:22px 12px 26px}
  .service-accordion__button b{font-size:15px}
  .service-accordion__panel img{margin-left:-2px;width:calc(100% + 4px);max-width:none}
  .feature{min-height:68vh;padding:72px 6vw}
  .works-grid{display:block}
  .work{margin-bottom:12px}
  .work,.work--tall,.work--wide{height:auto}
  .work img{aspect-ratio:16/11;height:auto}
  .achievement-list{grid-template-columns:1fr}
  .achievement-list article{
    min-height:0;
    padding:24px 0;
    border-right:0;
    border-bottom:1px solid var(--line);
  }
  .achievement-list article:nth-child(2){border-right:0}
  .achievement-list article:last-child{border-bottom:0}
  .faq-question{
    grid-template-columns:34px minmax(0,1fr) 30px;
    gap:12px;
    min-height:68px;
  }
  .faq-question b{font-size:15px;line-height:1.65}
  .faq-question i{width:30px;height:30px}
  .faq-answer p{padding:0 0 22px 46px}
  .instagram-card{min-height:320px;padding:10px}
  .instagram-more{text-align:left}
  .instagram-more a{width:100%;justify-content:center}
  .flow-list{grid-template-columns:1fr}
  .flow-list li{min-height:0;border-right:0;border-bottom:1px solid var(--line);padding:24px 0}
  .flow-list li:nth-child(2){border-right:0}
  .flow-list li:last-child{border-bottom:0}
  .footer{
    display:grid;
    grid-template-columns:1fr;
    gap:28px;
    padding:54px 6vw calc(96px + env(safe-area-inset-bottom));
  }
  .footer__brand img{width:170px;height:74px}
  .footer__brand p{margin-top:14px;font-size:12px}
  .footer__info div{
    grid-template-columns:78px minmax(0,1fr);
    gap:14px;
    padding:15px 0;
  }
  .footer__info dt{
    font-size:11px;
    line-height:1.7;
    letter-spacing:.06em;
    color:rgba(255,255,255,.38);
  }
  .footer__info dd{
    font-size:15px;
    line-height:1.65;
    letter-spacing:.03em;
  }
  .footer small{margin-left:0}
  .mobile-fixed-footer{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:80;
    height:calc(72px + env(safe-area-inset-bottom));
    display:grid;
    grid-template-columns:repeat(3,1fr);
    padding-bottom:env(safe-area-inset-bottom);
    background:#fff;
    border-top:1px solid rgba(23,23,19,.16);
    box-shadow:none;
  }
  .mobile-fixed-footer__item{
    min-width:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:7px;
    border-right:1px solid rgba(23,23,19,.13);
    background:#fff;
    color:#171713;
    font-size:12px;
    font-weight:500;
    line-height:1;
    letter-spacing:.02em;
  }
  .mobile-fixed-footer__item:last-child{border-right:0}
  .mobile-fixed-footer__item--contact{
    background:#11110e;
    color:#fff;
  }
  .mobile-fixed-footer__icon{
    display:grid;
    place-items:center;
    width:25px;
    height:25px;
  }
  .mobile-fixed-footer__icon svg{
    width:100%;
    height:100%;
    fill:none;
    stroke:currentColor;
    stroke-width:1.8;
    stroke-linecap:round;
    stroke-linejoin:round;
  }
  .mobile-fixed-footer__icon .icon-dot{
    fill:currentColor;
    stroke:none;
  }
}

/* ==============================
   Contact Page
============================== */
.contact-page .site-header,
.contact-page-main,
.contact-page-footer{
  opacity:1;
  transform:none;
  animation:none;
}
.contact-page-main{
  padding-top:88px;
  background:#fff;
}
.contact-page-hero{
  padding:clamp(72px,9vw,132px) clamp(24px,6vw,96px) clamp(56px,7vw,92px);
  border-bottom:1px solid var(--line);
}
.contact-page-hero h1{
  max-width:900px;
  margin-top:14px;
  font-size:clamp(42px,6vw,82px);
  line-height:1.15;
  font-weight:500;
  letter-spacing:-.045em;
}
.contact-page-hero>p:last-child{
  max-width:680px;
  margin-top:28px;
  color:var(--muted);
}
.contact-page-layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(280px,360px);
  gap:clamp(48px,7vw,110px);
  max-width:1440px;
  margin:0 auto;
  padding:clamp(64px,8vw,116px) clamp(24px,6vw,96px) clamp(80px,10vw,144px);
}
.contact-form-wrap{min-width:0}
.contact-form-head{
  padding-bottom:28px;
  border-bottom:1px solid var(--ink);
}
.contact-form-head>span{
  color:var(--accent);
  font:11px/1.4 Arial,sans-serif;
  letter-spacing:.18em;
}
.contact-form-head h2{
  margin-top:10px;
  font-size:clamp(28px,3vw,42px);
  font-weight:500;
}
.contact-form-head p{margin-top:10px;color:var(--muted);font-size:13px}
.contact-form-head p b,
.form-field em{
  color:#9a3d2f;
  font-size:11px;
  font-style:normal;
  font-weight:500;
}
.contact-form{border-bottom:1px solid var(--line)}
.form-field{
  margin:0;
  padding:28px 0;
  border:0;
  border-bottom:1px solid var(--line);
}
.form-field>label,
.form-field>legend{
  display:block;
  width:100%;
  margin-bottom:12px;
  color:var(--ink);
  font-size:14px;
  font-weight:500;
}
.form-field>label em,
.form-field>legend em{margin-left:8px}
.form-field input[type="text"],
.form-field input[type="tel"],
.form-field input[type="email"],
.form-field input[type="file"],
.form-field textarea{
  width:100%;
  border:1px solid rgba(23,23,19,.22);
  border-radius:0;
  background:#fff;
  color:var(--ink);
  font-family:inherit;
  font-size:16px;
  line-height:1.6;
}
.form-field input[type="text"],
.form-field input[type="tel"],
.form-field input[type="email"]{height:54px;padding:0 16px}
.form-field input[type="file"]{padding:13px 14px;font-size:13px}
.form-field textarea{display:block;min-height:190px;padding:14px 16px;resize:vertical}
.form-field input:focus,
.form-field textarea:focus{
  outline:2px solid rgba(155,122,74,.42);
  outline-offset:1px;
  border-color:var(--accent);
}
.form-field>small{
  display:block;
  margin-top:8px;
  color:var(--muted);
  font-size:11px;
}
.form-options{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
}
.form-options label{position:relative;display:block;cursor:pointer}
.form-options input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.form-options span{
  min-height:48px;
  padding:10px 12px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(23,23,19,.2);
  background:#fff;
  color:var(--ink);
  font-size:13px;
  text-align:center;
  transition:.2s ease;
}
.form-options input:checked+span{
  border-color:var(--dark);
  background:var(--dark);
  color:#fff;
}
.form-options input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.form-error{margin-top:10px;color:#a43b2d !important;font-size:12px !important}
.form-honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.form-server-message{padding:12px 14px;border:1px solid #a43b2d;color:#8d2c20!important;font-size:13px!important;background:#fff}
.form-submit .button:disabled{cursor:wait;opacity:.58}
.form-field--agreement label{
  display:grid;
  grid-template-columns:20px minmax(0,1fr);
  gap:12px;
  align-items:start;
  margin:0;
  cursor:pointer;
}
.form-field--agreement input{width:18px;height:18px;margin:4px 0 0;accent-color:var(--dark)}
.form-field--agreement span{font-size:13px;font-weight:400}
.form-submit{padding:34px 0 42px}
.form-submit .button{border:0;cursor:pointer}
.form-submit p{margin-top:12px;color:var(--muted);font-size:11px}
.form-field--conditional[hidden],
.contact-complete[hidden]{display:none}
.contact-complete{
  margin-top:24px;
  padding:clamp(42px,6vw,76px) clamp(24px,6vw,72px);
  border:1px solid var(--line);
  background:#fff;
  text-align:center;
}
.contact-complete:focus{outline:none}
.contact-complete h2{margin-top:14px;font-size:clamp(25px,3vw,38px);font-weight:500;line-height:1.5}
.contact-complete>p:not(.kicker){margin-top:24px;color:var(--muted);font-size:14px;line-height:2}
.contact-complete>p b{color:var(--ink);font-weight:500}
.contact-complete__actions{display:flex;justify-content:center;gap:12px;margin-top:36px}
.contact-complete__actions .button{min-width:180px;border-radius:0;cursor:pointer}
.button--outline{border:1px solid var(--ink);background:transparent;color:var(--ink)}
.contact-complete__line-button{
  display:inline-flex;
  margin-top:28px;
  border-color:#06c755;
  background:#06c755;
  color:#fff;
  font-weight:600;
}
.contact-complete__message{
  max-width:440px;
  margin:28px auto 0;
  padding:22px;
  border:1px solid var(--ink);
  background:#fff;
  line-height:1.8;
}
.contact-complete__message span,.contact-complete__message strong{display:block}
.contact-complete__message strong{margin:8px 0;color:var(--ink);font-size:18px;font-weight:600}
.contact-side{align-self:start;position:sticky;top:120px}
.contact-side__block{
  padding:28px 0;
  border-top:1px solid var(--ink);
}
.contact-side__block h2{margin-top:10px;font-size:23px;font-weight:500}
.contact-side__block>a{
  display:inline-block;
  margin-top:20px;
  font:clamp(25px,2.4vw,34px)/1.2 Arial,sans-serif;
  letter-spacing:.03em;
}
.contact-side__block>p:last-child{margin-top:15px;color:var(--muted);font-size:12px}
.contact-side__block ul{margin:18px 0 0;padding:0;list-style:none}
.contact-side__block li{padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.contact-side__block li::before{content:"—";margin-right:10px;color:var(--accent)}
.contact-side__back{display:inline-block;margin-top:26px;border-bottom:1px solid var(--ink);font-size:12px}

@media (max-width:980px){
  .contact-page-main{padding-top:78px}
  .contact-page-layout{grid-template-columns:1fr}
  .contact-side{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
  .contact-side__back{grid-column:1/-1;justify-self:start}
}

@media (max-width:640px){
  .contact-page-hero{padding:58px 6vw 50px}
  .contact-page-hero h1{font-size:40px}
  .contact-page-hero>p:last-child{margin-top:20px;font-size:14px}
  .contact-page-layout{display:block;padding:54px 6vw 90px}
  .form-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .form-options--inline{grid-template-columns:1fr}
  .form-field{padding:23px 0}
  .form-field input[type="text"],
  .form-field input[type="tel"],
  .form-field input[type="email"]{height:52px}
  .form-submit .button{width:100%}
  .contact-complete{padding:38px 20px}
  .contact-complete__actions{display:grid}
  .contact-complete__actions .button{width:100%;min-width:0}
  .contact-side{display:block;margin-top:58px}
  .contact-side__block{margin-top:20px}
}

/* ==============================
   Accessibility
============================== */
@media (prefers-reduced-motion:reduce){
  *,
  *::before,
  *::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  .opening{
    display:block;
    animation:openingExit 1s 6.1s cubic-bezier(.22,1,.36,1) forwards !important;
  }
  .opening__video{
    animation:openingVideoZoom 7.1s ease-out forwards !important;
  }
  .opening__brand{
    opacity:1;
    transform:none;
    animation:none !important;
  }
  .opening__line,
  .opening__copy{
    opacity:1;
    transform:none;
    animation:none !important;
  }
  .site-header,
  main,
  .footer{opacity:1;transform:none}
}

@keyframes openingLogo{
  0%{opacity:0;transform:translateY(18px) scale(.96);filter:blur(4px)}
  100%{opacity:1;transform:none;filter:blur(0)}
}
@keyframes openingLine{
  0%{transform:translate(-50%,-50%) scaleY(0)}
  100%{transform:translate(-50%,-50%) scaleY(1)}
}
@keyframes openingLineMobile{
  0%{transform:translateX(-50%) scaleX(0)}
  100%{transform:translateX(-50%) scaleX(1)}
}
@keyframes openingCopy{
  0%{opacity:0;transform:translateY(10px)}
  100%{opacity:1;transform:none}
}
@keyframes openingPhoto{
  0%{clip-path:inset(0 100% 0 0)}
  100%{clip-path:inset(0)}
}
@keyframes openingPhotoZoom{
  0%{transform:scale(1.2)}
  100%{transform:scale(1.08)}
}
@keyframes openingMobilePhoto{
  0%{opacity:0;transform:scale(1.06)}
  34%{opacity:.2}
  100%{opacity:.12;transform:scale(1.01)}
}
@keyframes openingLineVideo{
  0%{transform:scaleX(0);opacity:0}
  100%{transform:scaleX(1);opacity:1}
}
@keyframes openingVideoZoom{
  0%{transform:scale(1.055)}
  100%{transform:scale(1)}
}
@keyframes openingExit{
  0%{opacity:1;visibility:visible}
  100%{opacity:0;visibility:hidden;pointer-events:none}
}
@keyframes pageEnter{
  0%{opacity:0;transform:translateY(18px)}
  100%{opacity:1;transform:none}
}
