:root{
  --black:#111111;
  --white:#ffffff;
  --grey:#7a7a7a;
  --light-grey:#f4f3f1;
  --line:#e4e2de;
  --accent:#b08d57;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  font-family:'Assistant', sans-serif;
  color:var(--black);
  background:var(--white);
  line-height:1.6;
  font-weight:400;
}
h1,h2,h3,.serif{
  font-family:'Frank Ruhl Libre', serif;
  font-weight:500;
  letter-spacing:.5px;
}
h1{letter-spacing:-1.5px;font-weight:600;}
h2{letter-spacing:-.5px;font-weight:600;}

/* Marquee ticker */
.marquee-wrap{
  overflow:hidden;
  background:var(--black);
  padding:20px 0;
  border-top:1px solid #2a2a2a;
  border-bottom:1px solid #2a2a2a;
}
.marquee{
  display:flex;width:max-content;white-space:nowrap;
  animation:marquee-scroll 26s linear infinite;
}
.marquee span{
  font-family:'Frank Ruhl Libre',serif;
  font-size:clamp(20px,3vw,30px);
  color:var(--white);
  padding:0 26px;
  display:inline-flex;align-items:center;gap:26px;
  font-weight:500;
}
.marquee span::after{content:'※';color:var(--accent);font-size:16px;}
@keyframes marquee-scroll{
  from{transform:translateX(0);}
  to{transform:translateX(-50%);}
}
@media(prefers-reduced-motion: reduce){.marquee{animation:none;}}
a{color:inherit;text-decoration:none;}
img{display:block;width:100%;height:100%;object-fit:cover;}
.container{max-width:1180px;margin:0 auto;padding:0 32px;}
.section-label{
  text-transform:uppercase;
  letter-spacing:3px;
  font-size:12px;
  color:var(--accent);
  font-weight:600;
  margin-bottom:14px;
  display:block;
}
.btn{
  display:inline-block;
  padding:15px 38px;
  border:1px solid var(--black);
  font-size:14px;
  letter-spacing:1px;
  transition:all .3s ease;
  cursor:pointer;
  background:transparent;
}
.btn:hover{background:var(--black);color:var(--white);}
.btn-solid{background:var(--black);color:var(--white);}
.btn-solid:hover{background:transparent;color:var(--black);}

/* Header */
header{
  position:fixed;top:0;right:0;left:0;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(8px);
  z-index:100;
  border-bottom:1px solid var(--line);
}
.nav-wrap{
  display:flex;align-items:center;justify-content:space-between;
  padding:20px 32px;
  max-width:1180px;margin:0 auto;
}
.logo{
  font-family:'Frank Ruhl Libre', serif;
  font-size:24px;
  letter-spacing:4px;
  font-weight:600;
}
nav ul{display:flex;gap:36px;list-style:none;}
nav a{font-size:15px;letter-spacing:.3px;position:relative;}
nav a::after{
  content:'';position:absolute;bottom:-4px;left:0;width:0;height:1px;
  background:var(--black);transition:width .3s;
}
nav a:hover::after,nav a.active::after{width:100%;}
nav a.active{font-weight:600;}
.nav-cta{display:none;border:none;padding:0;font-size:14px;letter-spacing:.3px;border-bottom:1px solid transparent;transition:border-color .2s;}
.nav-cta:hover{background:transparent;color:var(--black);border-bottom-color:var(--black);}
@media(min-width:900px){.nav-cta{display:inline-block;}}
.burger{display:none;font-size:26px;background:none;border:none;cursor:pointer;}
.lang-toggle{
  border:1px solid var(--line);
  padding:7px 14px;
  font-size:13px;
  letter-spacing:.5px;
  margin-inline-start:14px;
  transition:all .2s;
  flex-shrink:0;
}
.lang-toggle:hover{background:var(--black);color:var(--white);border-color:var(--black);}

/* Page header banner (for inner pages) */
.page-banner{
  padding:160px 0 70px;
  background:var(--light-grey);
  text-align:center;
}
.page-banner h1{font-size:clamp(44px,8vw,88px);line-height:.98;margin-bottom:18px;}
.page-banner p{color:var(--grey);max-width:560px;margin:0 auto;font-size:16px;}
.breadcrumb{font-size:13px;color:var(--grey);margin-bottom:18px;letter-spacing:.3px;}
.breadcrumb a{color:var(--accent);}

/* Minimal editorial hero (home page) */
.hero-minimal{
  min-height:100vh;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:150px 0 50px;
  position:relative;
  background:var(--white);
}
.hero-min-label{font-size:12px;letter-spacing:3px;text-transform:uppercase;color:var(--grey);text-align:center;}
.hero-min-center{
  position:relative;flex:1;
  display:flex;align-items:center;justify-content:center;
  text-align:center;min-height:260px;
}
.scatter-words{position:absolute;inset:0;pointer-events:none;overflow:hidden;}
.scatter-words span{
  position:absolute;font-family:'Frank Ruhl Libre',serif;
  color:var(--line);font-size:22px;
}
.hero-min-title{
  position:relative;z-index:1;
  font-size:clamp(56px,13vw,190px);
  letter-spacing:2px;font-weight:500;
  color:var(--black);
}
.hero-min-tagline{
  text-align:center;color:var(--grey);font-size:16px;
  margin-top:6px;
}
.hero-min-bottom{
  display:flex;justify-content:center;align-items:flex-end;
  gap:24px;flex-wrap:wrap;margin-top:50px;
}
.hero-min-col{
  display:flex;flex-direction:column;gap:5px;
  font-size:11px;color:#c9c9c9;
  text-transform:uppercase;letter-spacing:.5px;line-height:1.9;
  min-width:140px;
}
.hero-min-cta{
  font-size:14px;letter-spacing:.3px;
  border-bottom:1px solid var(--black);
  padding-bottom:3px;white-space:nowrap;
}
@media(max-width:700px){
  .hero-min-col{display:none;}
  .hero-min-bottom{justify-content:center;}
}

/* Hero */
.hero{
  min-height:100vh;
  display:flex;flex-direction:column;
  padding-top:73px;
  background:var(--white);
  position:relative;
}
.hero-inner{flex:1;display:flex;align-items:center;}
.hero-grid{
  display:grid;grid-template-columns:1fr;gap:60px;
  align-items:center;width:100%;
}
@media(min-width:900px){.hero-grid{grid-template-columns:1.1fr .9fr;}}
.hero-text h1{
  font-size:clamp(42px,7.5vw,96px);
  line-height:.98;
  margin-bottom:28px;
}
.hero-text p{
  font-size:18px;
  color:var(--grey);
  max-width:480px;
  margin-bottom:36px;
}
.hero-cta{display:flex;gap:16px;flex-wrap:wrap;}
.hero-visual{
  position:relative;
  aspect-ratio:4/5;
  background:var(--light-grey);
  overflow:hidden;
}
.hero-visual img{transition:transform 8s ease;}
.hero-visual:hover img{transform:scale(1.06);}
.hero-visual::before{
  content:'';position:absolute;inset:18px;
  border:1px solid rgba(255,255,255,.6);
  z-index:2;pointer-events:none;
}
.hero-stats{
  display:flex;gap:48px;margin-top:56px;padding-top:36px;
  border-top:1px solid var(--line);
  max-width:520px;
}
.hero-stats div strong{font-family:'Frank Ruhl Libre',serif;font-size:28px;display:block;}
.hero-stats div span{font-size:13px;color:var(--grey);letter-spacing:.3px;}

/* About */
.about{padding:120px 0;background:var(--light-grey);}
.about-grid{display:grid;grid-template-columns:1fr;gap:56px;align-items:center;}
@media(min-width:900px){.about-grid{grid-template-columns:.9fr 1.1fr;}}
.about-imgs{position:relative;height:420px;}
.about-imgs .img1{position:absolute;top:0;left:0;width:70%;height:78%;overflow:hidden;}
.about-imgs .img2{position:absolute;bottom:0;right:0;width:55%;height:55%;overflow:hidden;border:8px solid var(--light-grey);}
.about h2{font-size:clamp(32px,5.5vw,64px);margin-bottom:22px;}
.about p{color:var(--grey);font-size:16px;margin-bottom:18px;max-width:520px;}
.about-points{display:flex;flex-direction:column;gap:16px;margin-top:28px;}
.about-point{display:flex;align-items:flex-start;gap:14px;}
.about-point .num{
  font-family:'Frank Ruhl Libre',serif;color:var(--accent);
  font-size:15px;border:1px solid var(--accent);
  width:30px;height:30px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.about.on-white{background:var(--white);}

/* Values (about page extra) */
.values-grid{display:grid;grid-template-columns:1fr;gap:44px;margin-top:36px;}
@media(min-width:700px){.values-grid{grid-template-columns:repeat(3,1fr);}}
.value-card{background:transparent;padding:0;border-top:1px solid var(--black);padding-top:22px;}
.value-card h3{font-size:20px;margin-bottom:10px;font-family:'Frank Ruhl Libre',serif;font-weight:600;}
.value-card p{color:var(--grey);font-size:14.5px;}

/* Services */
.services{padding:120px 0;}
.services-head{max-width:640px;margin-bottom:64px;}
.services-head h2{font-size:clamp(32px,5.5vw,64px);}
.services-head p{color:var(--grey);margin-top:16px;font-size:16px;}
.services-grid{display:grid;grid-template-columns:1fr;gap:48px 40px;background:transparent;border:none;}
@media(min-width:700px){.services-grid{grid-template-columns:repeat(2,1fr);}}
@media(min-width:1050px){.services-grid{grid-template-columns:repeat(4,1fr);}}
.service-card{
  background:transparent;padding:0;padding-top:26px;
  border-top:1px solid var(--black);
  transition:opacity .35s ease;
}
.service-card:hover{opacity:.6;}
.service-card .icon{
  width:44px;height:44px;margin-bottom:26px;
  border:1px solid var(--black);border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-family:'Frank Ruhl Libre',serif;font-size:18px;
}
.service-card h3{font-size:19px;margin-bottom:12px;font-weight:600;font-family:'Assistant',sans-serif;}
.service-card p{font-size:14.5px;color:var(--grey);}
.service-card a.more{display:inline-block;margin-top:16px;font-size:13px;color:var(--accent);border-bottom:1px solid var(--accent);}

/* Gallery */
.gallery{padding:120px 0;background:var(--black);color:var(--white);}
.gallery.on-white{background:var(--white);color:var(--black);}
.gallery.on-white .gallery-head h2{color:var(--black);}
.gallery.on-white .gallery-head p{color:var(--grey);}
.gallery.on-white .filter-btn{border-color:#ccc;color:#555;}
.gallery.on-white .filter-btn.active,.gallery.on-white .filter-btn:hover{background:var(--black);color:var(--white);border-color:var(--black);}
.gallery.on-white .gallery-more .btn{border-color:var(--black);color:var(--black);}
.gallery.on-white .gallery-more .btn:hover{background:var(--black);color:var(--white);}
.gallery-head{
  display:flex;justify-content:space-between;align-items:flex-end;
  flex-wrap:wrap;gap:24px;margin-bottom:56px;
}
.gallery-head h2{font-size:clamp(32px,5.5vw,64px);color:var(--white);}
.gallery-head p{color:#b8b8b8;max-width:420px;font-size:15px;}
.gallery .section-label{color:var(--accent);}
.gallery-filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:40px;}
.filter-btn{
  background:transparent;border:1px solid #444;color:#ccc;
  padding:9px 20px;font-size:13px;letter-spacing:.5px;
  cursor:pointer;transition:all .25s;
}
.filter-btn.active,.filter-btn:hover{background:var(--white);color:var(--black);border-color:var(--white);}
.gallery-grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:2px;
}
@media(min-width:700px){.gallery-grid{grid-template-columns:repeat(4,1fr);}}
.gallery-item{
  position:relative;aspect-ratio:3/4;overflow:hidden;cursor:pointer;
}
.gallery-item img{transition:transform .6s ease, filter .6s ease;filter:grayscale(15%);}
.gallery-item:hover img{transform:scale(1.08);filter:grayscale(0%);}
.gallery-item .overlay{
  position:absolute;inset:0;
  background:linear-gradient(to top, rgba(0,0,0,.75), transparent 55%);
  display:flex;align-items:flex-end;padding:18px;
  opacity:0;transition:opacity .35s;
}
.gallery-item:hover .overlay{opacity:1;}
.gallery-item .overlay span{font-size:13px;letter-spacing:.5px;}
.gallery-item .overlay strong{display:block;font-family:'Frank Ruhl Libre',serif;font-size:16px;margin-bottom:4px;}
.gallery-more{text-align:center;margin-top:52px;}
.gallery-more .btn{border-color:#666;color:var(--white);}
.gallery-more .btn:hover{background:var(--white);color:var(--black);}

/* Process */
.process{padding:120px 0;}
.process.on-grey{background:var(--light-grey);}
.process-head{max-width:600px;margin-bottom:70px;}
.process-head h2{font-size:clamp(32px,5.5vw,64px);}
.process-steps{display:grid;grid-template-columns:1fr;gap:0;position:relative;}
@media(min-width:900px){.process-steps{grid-template-columns:repeat(4,1fr);}}
.process-step{
  padding:0 0 26px 26px;position:relative;
}
.process-step .step-num{
  font-family:'Frank Ruhl Libre',serif;font-size:52px;
  -webkit-text-stroke:1px var(--black);
  color:transparent;
  margin-bottom:18px;
  display:block;
}
.process-step h3{font-size:18px;margin-bottom:10px;font-weight:600;font-family:'Assistant',sans-serif;}
.process-step p{font-size:14.5px;color:var(--grey);}

/* Testimonials */
.testimonials{background:var(--light-grey);padding:120px 0;}
.testimonials.on-white{background:var(--white);}
.t-head{text-align:center;max-width:600px;margin:0 auto 60px;}
.t-head h2{font-size:clamp(32px,5.5vw,64px);}
.t-grid{display:grid;grid-template-columns:1fr;gap:32px;}
@media(min-width:900px){.t-grid{grid-template-columns:repeat(3,1fr);}}
.t-card{background:var(--white);padding:40px 34px;border:1px solid var(--line);}
.testimonials.on-white .t-card{background:var(--light-grey);border-color:var(--light-grey);}
.t-stars{color:var(--accent);letter-spacing:3px;margin-bottom:20px;font-size:15px;}
.t-card p{font-size:15px;color:#333;margin-bottom:26px;min-height:110px;}
.t-person{display:flex;align-items:center;gap:14px;}
.t-avatar{width:46px;height:46px;border-radius:50%;overflow:hidden;flex-shrink:0;}
.t-person strong{display:block;font-size:14.5px;font-weight:600;}
.t-person span{font-size:13px;color:var(--grey);}

/* CTA / Contact */
.contact{padding:120px 0;}
.contact-grid{display:grid;grid-template-columns:1fr;gap:60px;}
@media(min-width:900px){.contact-grid{grid-template-columns:.9fr 1.1fr;}}
.contact-info h2{font-size:clamp(32px,5.5vw,64px);margin-bottom:20px;}
.contact-info p{color:var(--grey);margin-bottom:36px;max-width:420px;}
.contact-detail{display:flex;align-items:center;gap:14px;margin-bottom:20px;font-size:15px;}
.contact-detail .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0;}
.contact-social{display:flex;gap:14px;margin-top:36px;}
.contact-social a{
  width:42px;height:42px;border:1px solid var(--line);border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:14px;
  transition:all .25s;
}
.contact-social a:hover{background:var(--black);color:var(--white);border-color:var(--black);}

form{background:var(--light-grey);padding:44px;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;}
@media(max-width:500px){.form-row{grid-template-columns:1fr;}}
label{font-size:13px;letter-spacing:.4px;display:block;margin-bottom:8px;color:#444;}
input,select,textarea{
  width:100%;padding:13px 14px;border:1px solid var(--line);
  background:var(--white);font-family:'Assistant',sans-serif;font-size:14.5px;
  outline:none;transition:border-color .25s;
}
input:focus,select:focus,textarea:focus{border-color:var(--black);}
.full{margin-bottom:18px;}
textarea{resize:vertical;min-height:110px;}
form .btn{width:100%;margin-top:6px;}

/* Map placeholder */
.map-block{height:320px;background:var(--light-grey);display:flex;align-items:center;justify-content:center;color:var(--grey);font-size:14px;letter-spacing:.5px;border:1px solid var(--line);}

footer{background:var(--black);color:#ccc;padding:64px 0 28px;}
.footer-grid{display:grid;grid-template-columns:1fr;gap:40px;margin-bottom:50px;}
@media(min-width:800px){.footer-grid{grid-template-columns:1.4fr 1fr 1fr 1fr;}}
.footer-logo{font-family:'Frank Ruhl Libre',serif;font-size:24px;letter-spacing:4px;color:var(--white);margin-bottom:16px;}
.footer-grid p{font-size:14px;color:#999;max-width:280px;}
.footer-col h4{color:var(--white);font-size:14px;letter-spacing:.5px;margin-bottom:18px;font-weight:600;}
.footer-col ul{list-style:none;}
.footer-col li{margin-bottom:11px;}
.footer-col a{font-size:14px;color:#999;transition:color .2s;}
.footer-col a:hover{color:var(--white);}
.footer-bottom{
  border-top:1px solid #2a2a2a;padding-top:24px;
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;
  font-size:13px;color:#777;
}

/* Mobile nav */
@media(max-width:899px){
  nav ul{
    position:fixed;top:73px;right:0;left:0;background:var(--white);
    flex-direction:column;padding:26px 32px;gap:22px;
    border-bottom:1px solid var(--line);
    transform:translateY(-150%);opacity:0;transition:all .3s ease;
    pointer-events:none;
  }
  nav ul.open{transform:translateY(0);opacity:1;pointer-events:auto;}
  .burger{display:block;}
  .about-imgs{height:340px;}
}

/* Content is visible by default. JS may optionally add "pre-hide" to
   elements below the fold and then swap it for "visible" on scroll —
   but nothing depends on JS running for content to be seen. */
.reveal{transition:opacity .7s ease, transform .7s ease;}
.reveal.pre-hide{opacity:0;transform:translateY(24px);}
.reveal.visible{opacity:1;transform:translateY(0);}

/* Lightbox */
.lightbox-overlay{position:fixed;inset:0;background:rgba(0,0,0,.9);z-index:9999;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s ease;}
.lightbox-overlay.active{opacity:1;pointer-events:auto;}
.lightbox-overlay img{max-width:90vw;max-height:90vh;object-fit:contain;border-radius:4px;box-shadow:0 8px 40px rgba(0,0,0,.5);}
.lightbox-close{position:absolute;top:20px;right:24px;font-size:36px;color:var(--white);cursor:pointer;background:none;border:none;line-height:1;z-index:10000;}
.lightbox-close:hover{color:var(--accent);}
