@import url('https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@400;500;600;700&family=Inter:wght@400;500;600&display=swap');

:root{
  --ink:#1C1C1A;
  --washi:#F7F4EC;
  --indigo:#26394A;
  --indigo-deep:#1B2A38;
  --moss:#71795D;
  --stone:#DCD5C4;
  --hanko:#A8412E;
  --line: rgba(28,28,26,0.14);
}

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth; overflow-x:hidden; max-width:100%;}
body{
  background:var(--washi);
  color:var(--ink);
  font-family:'Inter', sans-serif;
  font-weight:400;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  max-width:100%;
}
h1,h2,h3, .display{
  font-family:'Shippori Mincho', serif;
  font-weight:500;
  letter-spacing:0.01em;
  color:var(--indigo-deep);
}
a{color:inherit; text-decoration:none;}
.eyebrow{
  font-family:'Inter', sans-serif;
  font-size:12px;
  letter-spacing:0.22em;
  text-transform:uppercase;
  color:var(--moss);
  font-weight:600;
}
.wrap{max-width:1080px; margin:0 auto; padding:0 32px;}

/* brush stroke divider — the signature mark */
.brush{width:120px; height:14px; margin:28px 0;}
.brush path{stroke:var(--indigo); stroke-width:2.5; fill:none; stroke-linecap:round;}
.brush.center{margin-left:auto; margin-right:auto;}
.brush.light path{stroke:var(--stone);}

/* header */
header{
  background:var(--washi);
  color:var(--indigo-deep);
  position:sticky; top:0; z-index:50;
  border-bottom:1px solid var(--line);
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 32px; max-width:1080px; margin:0 auto;
}
.logo-mark{
  display:flex; align-items:center; gap:14px;
}
.logo-mark img{
  height:46px; width:auto; display:block;
}
.logo-mark .tagline{
  font-family:'Inter', sans-serif;
  font-size:10.5px;
  letter-spacing:0.15em;
  text-transform:uppercase;
  color:var(--moss);
  font-weight:600;
  border-left:1px solid var(--line);
  padding-left:14px;
  line-height:1.5;
  max-width:110px;
}
nav ul{list-style:none; display:flex; gap:34px;}
nav ul li a{
  font-size:13.5px; letter-spacing:0.03em; color:var(--indigo-deep); opacity:0.78;
  transition:opacity .2s;
}
nav ul li a:hover{opacity:1;}
.nav-cta{
  border:1px solid var(--indigo-deep);
  color:var(--indigo-deep);
  padding:9px 18px; border-radius:2px; font-size:12.5px; letter-spacing:0.05em;
  white-space:nowrap;
}
.nav-cta:hover{background:var(--indigo-deep); color:var(--washi);}

/* hero */
.hero{
  padding:104px 0 84px;
  text-align:left;
}
.hero .eyebrow{margin-bottom:22px;}
.hero h1{
  font-size:56px;
  line-height:1.12;
  max-width:680px;
  margin-bottom:26px;
}
.hero p.lede{
  max-width:520px;
  font-size:17px;
  color:#3c3c38;
  margin-bottom:34px;
}
.cta-row{display:flex; gap:16px; align-items:center; flex-wrap:wrap;}
.btn{
  display:inline-flex; align-items:center; gap:9px;
  padding:14px 26px; font-size:13.5px; letter-spacing:0.04em;
  border-radius:2px; font-weight:500;
}
.btn-primary{background:var(--indigo-deep); color:var(--washi);}
.btn-primary:hover{background:var(--indigo);}
.btn-ghost{border:1px solid var(--line); color:var(--indigo-deep);}
.btn-ghost:hover{border-color:var(--indigo-deep);}

/* philosophy split */
.philosophy{
  padding:70px 0 90px;
  border-top:1px solid var(--line);
}
.philosophy .wrap{
  display:grid; grid-template-columns:1fr 1fr; gap:70px;
}
.philosophy .quote{
  font-family:'Shippori Mincho', serif;
  font-size:30px;
  line-height:1.42;
  color:var(--indigo-deep);
}
.philosophy .quote span{color:var(--moss);}
.philosophy .body p{margin-bottom:16px; font-size:15.5px; color:#3c3c38;}
.philosophy .body .attribution{
  margin-top:20px; font-size:13px; color:var(--moss); letter-spacing:0.02em;
}

/* visits section */
.visits{
  padding:90px 0;
  border-top:1px solid var(--line);
}
.section-head{margin-bottom:52px; max-width:600px;}
.section-head h2{font-size:32px; margin-top:14px;}
.visit-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:44px;
}
.visit-card .num{
  font-family:'Shippori Mincho', serif;
  font-size:15px; color:var(--hanko); margin-bottom:14px;
}
.visit-card h3{font-size:19px; margin-bottom:10px; font-weight:500;}
.visit-card p{font-size:14.5px; color:#4a4a45;}

/* watch panel */
.watch{
  background:var(--indigo-deep);
  color:var(--washi);
  padding:86px 0;
}
.watch-inner{
  display:grid; grid-template-columns:1.1fr 0.9fr; gap:60px; align-items:center;
}
.watch .eyebrow{color:var(--stone);}
.watch h2{color:var(--washi); font-size:32px; margin:14px 0 18px;}
.watch p{color:rgba(247,244,236,0.8); font-size:15px; margin-bottom:28px; max-width:440px;}
.watch .btn-primary{background:var(--washi); color:var(--indigo-deep);}
.watch .btn-primary:hover{background:var(--stone);}
.watch-card{
  border:1px solid rgba(247,244,236,0.2);
  padding:34px;
  display:block;
  cursor:pointer;
  transition:border-color .2s, background .2s;
}
.watch-card:hover{
  border-color:rgba(247,244,236,0.5);
  background:rgba(247,244,236,0.04);
}
.watch-card .avatar-wrap{
  position:relative;
  width:88px; height:88px;
  margin-bottom:22px;
}
.watch-card .avatar-wrap img{
  width:88px; height:88px;
  border-radius:50%;
  display:block;
  object-fit:cover;
  border:1px solid rgba(247,244,236,0.25);
}
.watch-card .avatar-wrap .play{
  position:absolute; bottom:-4px; right:-4px;
  width:34px; height:34px; border-radius:50%;
  background:var(--indigo-deep);
  border:1px solid rgba(247,244,236,0.5);
  display:flex; align-items:center; justify-content:center;
  font-size:12px;
  margin-bottom:0;
  transition:background .2s, border-color .2s;
}
.watch-card:hover .avatar-wrap .play{
  background:rgba(247,244,236,0.16);
  border-color:rgba(247,244,236,0.8);
}
.watch-card h4{font-family:'Shippori Mincho', serif; font-size:19px; font-weight:500; margin-bottom:8px;}
.watch-card p{font-size:13.5px; color:rgba(247,244,236,0.72); margin-bottom:0;}

/* office teaser */
.office{
  padding:90px 0;
  border-top:1px solid var(--line);
}
.office .wrap{
  display:grid; grid-template-columns:0.9fr 1.1fr; gap:60px; align-items:center;
}
.office-swatch{
  aspect-ratio:4/3;
  background:linear-gradient(135deg, var(--stone), #c9c2ac);
  display:flex; align-items:center; justify-content:center;
  font-family:'Shippori Mincho', serif; color:var(--indigo-deep); font-size:14px;
  text-align:center; padding:20px;
}
.office h2{font-size:30px; margin-bottom:16px;}
.office p{font-size:15px; color:#3c3c38; margin-bottom:24px; max-width:440px;}

/* reviews */
.reviews{
  background:var(--stone);
  padding:90px 0;
}
.review-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:36px; margin-top:50px;
}
.review-card{
  background:var(--washi);
  padding:30px 28px;
  border-top:2px solid var(--indigo-deep);
}
.review-card p{font-size:14px; color:#3c3c38; margin-bottom:16px; line-height:1.65;}
.review-card .who{font-size:12.5px; color:var(--moss); letter-spacing:0.03em;}

/* contact band */
.contact{
  padding:90px 0;
  border-top:1px solid var(--line);
}
.contact .wrap{
  display:grid; grid-template-columns:1fr 1fr; gap:60px;
}
.contact h2{font-size:30px; margin-bottom:22px;}
.hours-table{width:100%; font-size:14.5px; margin-bottom:26px;}
.hours-table tr td{padding:7px 0; border-bottom:1px solid var(--line);}
.hours-table tr td:last-child{text-align:right; color:var(--moss);}
.contact-detail{font-size:14.5px; margin-bottom:8px; color:#3c3c38;}
.contact-detail strong{color:var(--indigo-deep);}
.map-placeholder{
  background:var(--stone);
  height:100%; min-height:280px;
  display:flex; align-items:center; justify-content:center;
  font-family:'Shippori Mincho', serif; color:var(--indigo-deep); font-size:14px;
}

/* footer */
footer{
  background:var(--indigo-deep);
  color:rgba(247,244,236,0.7);
  padding:50px 0 34px;
}
.footer-top{
  display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:30px;
  padding-bottom:34px; border-bottom:1px solid rgba(247,244,236,0.14);
}
.footer-nav{display:flex; gap:28px; flex-wrap:wrap;}
.footer-nav a{font-size:13px;}
.footer-social{display:flex; gap:16px;}
.footer-social a{
  width:36px; height:36px; border:1px solid rgba(247,244,236,0.25); border-radius:50%;
  display:flex; align-items:center; justify-content:center; font-size:13px;
}
.footer-bottom{padding-top:22px; font-size:12px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;}

@media (max-width:820px){
  .nav ul{display:none;}
  .hero h1{font-size:38px;}
  .philosophy .wrap, .office .wrap, .contact .wrap, .watch-inner{grid-template-columns:1fr;}
  .visit-grid, .review-grid{grid-template-columns:1fr;}
}

/* --- shared inner-page additions --- */
.page-hero{
  padding:64px 0 56px;
  border-bottom:1px solid var(--line);
}
.page-hero h1{font-size:42px; margin:14px 0 18px;}
.page-hero p.lede{max-width:560px; font-size:16px; color:#3c3c38;}

.resource-section{padding:80px 0;}
.resource-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:28px; margin-top:44px;
}
.resource-card{
  background:var(--washi);
  border:1px solid var(--line);
  padding:26px 24px;
  display:flex; flex-direction:column; gap:14px;
}
.resource-card .tag{font-size:11px; letter-spacing:0.12em; text-transform:uppercase; color:var(--moss); font-weight:600;}
.resource-card h3{font-size:18px; font-weight:500; line-height:1.35;}
.resource-card p{font-size:13.5px; color:#4a4a45; flex-grow:1;}
.resource-card .dl{
  font-size:13px; letter-spacing:0.03em; color:var(--indigo-deep); font-weight:500;
  display:inline-flex; align-items:center; gap:6px;
}
.resource-card .dl:hover{text-decoration:underline;}

.form-card{
  background:var(--indigo-deep); color:var(--washi);
  padding:44px; display:grid; grid-template-columns:1fr auto; gap:30px; align-items:center;
  margin-top:44px;
}
.form-card h3{color:var(--washi); font-size:22px; margin-bottom:10px;}
.form-card p{font-size:14.5px; color:rgba(247,244,236,0.78); max-width:440px;}
.form-card .btn-primary{background:var(--washi); color:var(--indigo-deep); white-space:nowrap;}
.form-card .btn-primary:hover{background:var(--stone);}

.video-embed{
  position:relative; width:100%; padding-top:56.25%;
  background:var(--indigo-deep); margin-top:40px;
}
.video-embed iframe{position:absolute; top:0; left:0; width:100%; height:100%; border:0;}

@media (max-width:820px){
  .resource-grid{grid-template-columns:1fr;}
  .form-card{grid-template-columns:1fr;}
}

/* --- reviews page --- */
.reviews-page{padding:70px 0 90px;}
.review-list{display:grid; grid-template-columns:1fr 1fr; gap:28px; margin-top:44px;}
.review-list .review-card{border-top:2px solid var(--indigo-deep); padding:28px 26px;}
.review-list .review-card.wide{grid-column:1 / -1;}
.review-source{
  margin-top:70px; padding-top:44px; border-top:1px solid var(--line);
}
.review-source .badge{
  display:inline-flex; align-items:center; gap:10px;
  font-size:13px; color:var(--moss); letter-spacing:0.03em; margin-bottom:30px;
}
.yelp-grid{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
.yelp-card{background:var(--stone); padding:20px 22px;}
.yelp-card .who{font-size:13.5px; font-weight:600; color:var(--indigo-deep); margin-bottom:2px;}
.yelp-card .when{font-size:11.5px; color:var(--moss); margin-bottom:10px;}
.yelp-card p{font-size:13.5px; color:#3c3c38;}

/* --- contact page --- */
.contact-page{padding:70px 0 90px;}
.contact-layout{display:grid; grid-template-columns:1fr 1fr; gap:70px; margin-top:44px;}
.contact-form-el{display:flex; flex-direction:column; gap:18px;}
.contact-form-el .row{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
.contact-form-el label{font-size:12.5px; letter-spacing:0.04em; text-transform:uppercase; color:var(--moss); font-weight:600; margin-bottom:6px; display:block;}
.contact-form-el input, .contact-form-el textarea{
  width:100%; border:1px solid var(--line); background:var(--washi);
  padding:12px 14px; font-family:'Inter', sans-serif; font-size:14.5px; color:var(--ink);
  border-radius:2px;
}
.contact-form-el input:focus, .contact-form-el textarea:focus{outline:2px solid var(--indigo-deep); outline-offset:1px;}
.contact-form-el textarea{min-height:130px; resize:vertical;}
.contact-form-el .submit-btn{
  align-self:flex-start; border:none; cursor:pointer;
}
.form-msg{font-size:14px; margin-top:6px; display:none;}
.form-msg.show{display:block;}
.form-msg.success{color:var(--moss);}
.form-msg.error{color:var(--hanko);}
.honey{position:absolute; left:-9999px; top:auto; width:1px; height:1px; overflow:hidden;}

.hours-block{margin-bottom:30px;}
.map-embed{width:100%; height:280px; border:0; filter:grayscale(0.15);}

/* --- our office page --- */
.office-page{padding:70px 0 90px;}
.gallery-section{margin-top:56px;}
.gallery-section .section-label{
  font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--moss);
  font-weight:600; margin-bottom:18px;
}
.gallery-grid{
  display:grid; grid-template-columns:repeat(4, 1fr); gap:14px;
}
.gallery-grid a{display:block; overflow:hidden; background:var(--stone);}
.gallery-grid img{
  width:100%; height:230px; object-fit:cover; display:block;
  transition:transform .35s ease;
}
.gallery-grid a:hover img{transform:scale(1.04);}
.gallery-grid .tall img{height:480px;}
.gallery-grid .tall{grid-row:span 2;}

@media (max-width:900px){
  .gallery-grid{grid-template-columns:repeat(2,1fr);}
  .gallery-grid .tall{grid-row:span 1;}
  .gallery-grid .tall img{height:230px;}
}

/* --- office page v2: 4-col grid + lightbox + video facade --- */
.gallery-grid{
  grid-template-columns:repeat(4, 1fr) !important;
  gap:10px !important;
}
.gallery-grid img{height:160px !important;}
.gallery-grid .tall{grid-row:auto !important;}
.gallery-grid .tall img{height:160px !important;}
.gallery-grid a{cursor:pointer; position:relative;}
.gallery-grid a::after{
  content:'+';
  position:absolute; top:8px; right:8px;
  width:22px; height:22px; border-radius:50%;
  background:rgba(27,42,56,0.72); color:var(--washi);
  font-size:14px; line-height:22px; text-align:center;
  opacity:0; transition:opacity .2s;
}
.gallery-grid a:hover::after{opacity:1;}

@media (max-width:720px){
  .gallery-grid{grid-template-columns:repeat(3, 1fr) !important;}
  .gallery-grid img{height:110px !important;}
}
@media (max-width:480px){
  .gallery-grid{grid-template-columns:repeat(2, 1fr) !important;}
}

/* video facade */
.video-facade{
  max-width:420px;
  position:relative;
  cursor:pointer;
  overflow:hidden;
  background:var(--indigo-deep);
}
.video-facade img{width:100%; display:block; aspect-ratio:16/9; object-fit:cover; opacity:0.82;}
.video-facade .play-btn{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  width:54px; height:54px; border-radius:50%;
  background:rgba(247,244,236,0.92);
  display:flex; align-items:center; justify-content:center;
  font-size:16px; color:var(--indigo-deep);
  transition:transform .2s;
}
.video-facade:hover .play-btn{transform:translate(-50%,-50%) scale(1.08);}
.video-facade .label{
  position:absolute; bottom:0; left:0; right:0;
  padding:10px 14px; font-size:12.5px; color:var(--washi);
  background:linear-gradient(transparent, rgba(0,0,0,0.55));
}
.video-embed{display:none;}
.video-embed.active{display:block;}

/* lightbox */
.lightbox{
  display:none; position:fixed; inset:0; z-index:200;
  background:rgba(20,20,18,0.94);
  align-items:center; justify-content:center;
  padding:40px;
}
.lightbox.active{display:flex;}
.lightbox img, .lightbox iframe{
  max-width:90vw; max-height:85vh; border:0;
}
.lightbox iframe{width:80vw; height:45vw; max-height:85vh;}
.lightbox-close{
  position:absolute; top:24px; right:32px;
  color:var(--washi); font-size:28px; cursor:pointer;
  width:44px; height:44px; display:flex; align-items:center; justify-content:center;
  border:1px solid rgba(247,244,236,0.3); border-radius:50%;
}

/* --- homepage office rotator --- */
.office-rotator{
  aspect-ratio:4/3; position:relative; overflow:hidden; background:var(--stone);
}
.office-rotator img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; transition:opacity 1s ease;
}
.office-rotator img.active{opacity:1;}
.office-rotator .dots{
  position:absolute; bottom:14px; left:0; right:0;
  display:flex; justify-content:center; gap:6px;
}
.office-rotator .dots span{
  width:6px; height:6px; border-radius:50%; background:rgba(247,244,236,0.55);
  transition:background .3s;
}
.office-rotator .dots span.active{background:var(--washi);}

/* ============ MOBILE PASS ============ */

/* hamburger button */
.hamburger{
  display:none;
  background:none; border:none; cursor:pointer;
  width:40px; height:40px;
  align-items:center; justify-content:center;
  flex-direction:column; gap:5px;
  flex-shrink:0;
}
.hamburger span{
  display:block; width:22px; height:2px; background:var(--indigo-deep);
  transition:transform .25s ease, opacity .25s ease;
}
.hamburger.active span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.hamburger.active span:nth-child(2){opacity:0;}
.hamburger.active span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* dropdown mobile menu — anchored top-right, floating panel */
.mobile-menu{
  display:none;
  position:fixed; top:0; right:0; z-index:150;
  width:min(78vw, 360px);
  max-height:100vh;
  background:var(--indigo-deep);
  padding:96px 32px 36px;
  overflow-y:auto;
  flex-direction:column;
  box-shadow:-12px 0 32px rgba(0,0,0,0.22);
}
.mobile-menu.active{display:flex;}
.mobile-menu a{
  font-family:'Shippori Mincho', serif;
  font-size:21px; color:var(--washi);
  padding:14px 0; border-bottom:1px solid rgba(247,244,236,0.16);
}
.mobile-menu .mm-cta{
  margin-top:26px;
  font-family:'Inter', sans-serif; font-size:14.5px; font-weight:500;
  text-align:center; border:none;
  background:var(--washi); color:var(--indigo-deep);
  padding:15px; border-radius:2px;
}
.mobile-menu .mm-socials{
  display:flex; gap:12px; margin-top:28px;
}
.mobile-menu .mm-socials a{
  border:none; padding:0;
  width:40px; height:40px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:rgba(247,244,236,0.12); color:var(--washi); font-size:14px;
}

@media (max-width:820px){
  .nav-cta{display:none;}
  .hamburger{display:flex;}
  .logo-mark .tagline{display:none;}

  /* contact page: stack columns */
  .contact-layout{grid-template-columns:1fr !important; gap:44px !important;}

  /* reviews page: stack review cards and yelp cards */
  .review-list{grid-template-columns:1fr !important;}
  .yelp-grid{grid-template-columns:1fr !important;}

  /* contact page: stack first/last name row */
  .contact-form-el .row{grid-template-columns:1fr !important;}

  .page-hero h1{font-size:32px;}
  .hero h1{font-size:34px;}
}

@media (max-width:480px){
  .nav{padding:12px 20px;}
  .wrap{padding:0 20px;}
  .hero{padding:64px 0 56px;}
  .page-hero{padding:44px 0 36px;}
}
