/* ---------- Tokens ---------- */
:root{
  --bg: #0a0a0b;
  --bg-soft: #121214;
  --surface: #17171a;
  --line: rgba(245,243,239,0.09);
  --text: #f5f3ef;
  --text-muted: #9a968d;
  --gold: #c9a24b;
  --gold-soft: rgba(201,162,75,0.14);
  --ease: cubic-bezier(.16,.84,.44,1);
}

*{margin:0;padding:0;box-sizing:border-box;}
html{background:var(--bg);}
html,body{overflow-x:hidden;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Inter',sans-serif;
  font-weight:400;
  line-height:1.5;
  cursor:none;
}
img{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;background:none;border:none;color:inherit;cursor:none;}
svg{fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;}
input,select,textarea{font-family:inherit;cursor:auto;}

.display{font-family:'Bebas Neue',sans-serif;letter-spacing:.02em;}

::selection{background:var(--gold);color:#0a0a0b;}

/* ---------- Grain ---------- */
.grain{
  position:fixed;inset:0;z-index:999;pointer-events:none;
  opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------- Scroll progress ---------- */
.progress-bar{position:fixed;top:0;left:0;width:100%;height:2px;z-index:1002;pointer-events:none;}
.progress-bar span{display:block;height:100%;width:0%;background:var(--gold);}

/* ---------- Custom cursor ---------- */
.cursor-dot,.cursor-ring{
  position:fixed;top:0;left:0;z-index:1000;pointer-events:none;
  border-radius:50%;transform:translate(-50%,-50%);
}
.cursor-dot{width:6px;height:6px;background:var(--gold);}
.cursor-ring{width:34px;height:34px;border:1px solid rgba(201,162,75,0.55);transition:width .25s var(--ease),height .25s var(--ease),opacity .25s;}
.cursor-ring.active{width:60px;height:60px;background:var(--gold-soft);}
@media (hover:none){.cursor-dot,.cursor-ring{display:none;}body,button,a{cursor:auto;}}

/* ---------- Preloader ---------- */
#preloader{
  position:fixed;inset:0;z-index:1001;background:var(--bg);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.2rem;
}
.preloader-count{font-family:'Bebas Neue';font-size:clamp(3rem,10vw,7rem);color:var(--gold);letter-spacing:.02em;}
.preloader-count span:last-child{font-size:.4em;vertical-align:top;}
.preloader-label{font-size:.72rem;letter-spacing:.35em;color:var(--text-muted);text-transform:uppercase;}

/* ---------- Nav ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.6rem clamp(1.5rem,4vw,3.5rem);
  transition:background .5s var(--ease),padding .4s var(--ease);
}
.nav.scrolled{
  background:rgba(10,10,11,.72);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);padding-top:1.1rem;padding-bottom:1.1rem;
}
.nav-logo{display:flex;align-items:center;}
.nav-logo .logo-img{display:none;height:48px;width:auto;filter:invert(1);position:relative;z-index:1;}
.nav-logo .logo-text{font-family:'Bebas Neue';font-size:1.15rem;letter-spacing:.08em;}
.nav-logo .logo-text span{color:var(--gold);margin:0 .15em;}
.nav-logo .logo-mark{transition:transform .5s var(--ease);}
.nav-logo:hover .logo-mark{transform:scale(1.06);}

.logo-mark{position:relative;display:inline-block;}
.logo-mark .logo-img{animation:logoGlow 4.5s ease-in-out infinite;}
@keyframes logoGlow{
  0%,100%{filter:invert(1) brightness(1) drop-shadow(0 0 0 rgba(201,162,75,0));}
  50%{filter:invert(1) brightness(1.16) drop-shadow(0 0 10px rgba(201,162,75,.55));}
}
.nav-links{display:flex;gap:2.2rem;}
.nav-links a{font-size:.78rem;letter-spacing:.03em;color:var(--text);opacity:.75;transition:opacity .3s;position:relative;}
.nav-links a span{color:var(--gold);font-size:.68rem;margin-right:.3em;}
.nav-links a:hover{opacity:1;}
.nav-cta{
  font-size:.78rem;letter-spacing:.02em;font-weight:600;
  background:var(--gold);color:#0a0a0b;padding:.65rem 1.4rem;border-radius:99px;
}
.nav-burger{display:none;flex-direction:column;gap:5px;width:26px;}
.nav-burger span{display:block;height:1px;background:var(--text);width:100%;}

@media (max-width:900px){
  .nav-links,.nav-cta{display:none;}
  .nav-burger{display:flex;}
}

.mobile-menu{
  position:fixed;inset:0;z-index:99;background:var(--bg);
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1.6rem;
  padding:0 2rem;
  transform:translateY(-100%);transition:transform .5s var(--ease);
}
.mobile-menu.open{transform:translateY(0);}
.mobile-menu a{font-family:'Bebas Neue';font-size:2.4rem;letter-spacing:.02em;}
.mobile-menu .mobile-phone{font-family:'Inter';font-size:1rem;color:var(--gold);margin-top:1rem;}

/* ---------- Hero ---------- */
#hero{
  position:relative;min-height:100svh;
  display:flex;flex-direction:column;justify-content:center;
  padding:0 clamp(1.5rem,4vw,3.5rem);
  overflow:hidden;
}
.hero-glow{
  position:absolute;top:-20%;left:50%;translate:-50% 0;
  width:120vw;height:70vh;
  background:radial-gradient(closest-side,var(--gold-soft),transparent 70%);
  pointer-events:none;filter:blur(10px);
}
.hero-visual{
  position:absolute;top:9%;right:clamp(1.2rem,4vw,4rem);
  width:clamp(160px,20vw,300px);z-index:1;pointer-events:none;
}
.cam-svg{width:100%;height:auto;overflow:visible;filter:drop-shadow(0 40px 70px rgba(0,0,0,.55));}
.cam-ring-outer,.cam-ring-mid{fill:none;stroke:var(--gold);}
.cam-ring-outer{stroke-width:1.1;stroke-opacity:.55;}
.cam-ring-mid{stroke-width:1;stroke-opacity:.32;stroke-dasharray:2 8;}
.cam-ticks{transform-box:view-box;transform-origin:120px 120px;}
.cam-ticks line{stroke:var(--gold);stroke-opacity:.5;stroke-width:1.6;}
.cam-glow{fill:url(#lensGlow);}
.cam-blade{
  fill:#0e0e10;stroke:var(--gold);stroke-width:.6;stroke-opacity:.65;
  transform-box:view-box;transform-origin:120px 24px;
}
@media (max-width:900px){.hero-visual{width:clamp(110px,26vw,170px);top:7%;}}
@media (max-width:560px){.hero-visual{opacity:.8;}}
.hero-top{margin-bottom:1.6rem;}
.eyebrow{
  display:inline-flex;align-items:center;gap:.6rem;
  font-size:.78rem;letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);
}
.eyebrow i{width:7px;height:7px;border-radius:50%;background:var(--gold);display:inline-block;}
.hero-title{font-family:'Bebas Neue';line-height:.86;margin-top:-.18em;}
.hero-title .line{overflow:hidden;padding-top:.18em;}
.hero-title span{
  display:block;font-size:clamp(3.4rem,13vw,10.5rem);letter-spacing:.005em;
}
.hero-bottom{
  margin-top:2.6rem;display:flex;align-items:flex-end;justify-content:space-between;gap:2rem;flex-wrap:wrap;
}
.hero-desc{max-width:32ch;color:var(--text-muted);font-size:1rem;}
.scroll-hint{
  position:absolute;bottom:2.2rem;left:clamp(1.5rem,4vw,3.5rem);
  display:flex;align-items:center;gap:.7rem;font-size:.7rem;letter-spacing:.12em;color:var(--text-muted);
}
.scroll-line{width:1px;height:36px;background:rgba(245,243,239,.2);position:relative;overflow:hidden;}
.scroll-line i{position:absolute;top:-100%;left:0;width:100%;height:100%;background:var(--gold);animation:scrollLine 1.8s ease-in-out infinite;}
@keyframes scrollLine{0%{top:-100%;}50%{top:0;}100%{top:100%;}}

/* ---------- Buttons ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  padding:1rem 2.2rem;border-radius:99px;font-size:.85rem;letter-spacing:.03em;
  overflow:hidden;isolation:isolate;
}
.btn-primary{background:var(--gold);color:#0a0a0b;font-weight:600;}
.btn-primary span{position:relative;z-index:1;}

/* ---------- Marquee ---------- */
.marquee-wrap{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1.6rem 0;}
.marquee{overflow:hidden;display:flex;}
.marquee-track{display:flex;flex-shrink:0;animation:marquee 32s linear infinite;}
.marquee-track span{
  font-family:'Bebas Neue';font-size:clamp(1.4rem,3vw,2.2rem);letter-spacing:.02em;
  padding:0 1rem;color:var(--text-muted);white-space:nowrap;
}
.marquee-track i{color:var(--gold);font-style:normal;padding:0 .4rem;}
@keyframes marquee{from{transform:translateX(0);}to{transform:translateX(-100%);}}

/* ---------- Sections ---------- */
.section{padding:clamp(5rem,10vw,8rem) clamp(1.5rem,4vw,3.5rem);}
.section-head{margin-bottom:3.5rem;}
.section-tag{display:block;font-size:.78rem;letter-spacing:.15em;text-transform:uppercase;color:var(--gold);margin-bottom:1rem;}
.section-title{font-family:'Bebas Neue';font-size:clamp(2.4rem,6vw,4.6rem);line-height:1.02;letter-spacing:.01em;margin-top:-.12em;}
.title-line{display:block;overflow:hidden;padding-top:.12em;}
.title-line span{display:block;}

/* ---------- About ---------- */
.about-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:4rem;align-items:start;}
.about-text{font-size:clamp(1.1rem,2vw,1.5rem);color:var(--text-muted);line-height:1.55;}
.about-text strong{color:var(--text);font-weight:600;}
.about-stats{display:flex;flex-direction:column;gap:1.8rem;}
.stat{display:flex;align-items:baseline;gap:1.2rem;border-top:1px solid var(--line);padding-top:1.2rem;}
.stat-num{font-family:'Bebas Neue';font-size:3rem;color:var(--gold);}
.stat-label{font-size:.82rem;color:var(--text-muted);line-height:1.4;}
@media (max-width:900px){.about-grid{grid-template-columns:1fr;gap:2.5rem;}}

/* ---------- Services ---------- */
.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5px;background:var(--line);border:1px solid var(--line);}
.service-card{
  background:var(--bg);padding:2.6rem 2rem;position:relative;transition:background .4s var(--ease);
  will-change:transform;
}
.service-card:hover{background:var(--surface);}
.service-index{font-family:'Bebas Neue';font-size:1rem;color:var(--gold);}
.service-card h3{font-family:'Bebas Neue';font-size:1.9rem;letter-spacing:.01em;margin:1rem 0 .8rem;}
.service-card p{color:var(--text-muted);font-size:.92rem;line-height:1.55;margin-bottom:1.4rem;}
.service-tag{display:inline-block;font-size:.72rem;letter-spacing:.03em;color:var(--gold);border-top:1px solid var(--line);padding-top:.9rem;width:100%;}
@media (max-width:900px){.services-grid{grid-template-columns:1fr;}}

/* ---------- Features ---------- */
.features-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2.6rem;}
.feature svg{width:30px;height:30px;color:var(--gold);margin-bottom:1.2rem;}
.feature h4{font-size:1.05rem;font-weight:600;margin-bottom:.5rem;}
.feature p{font-size:.88rem;color:var(--text-muted);line-height:1.5;}
@media (max-width:900px){.features-grid{grid-template-columns:1fr 1fr;}}
@media (max-width:560px){.features-grid{grid-template-columns:1fr;}}

/* ---------- Gallery ---------- */
.gallery-grid{
  display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:220px;gap:1rem;
}
.gallery-item{position:relative;border-radius:6px;overflow:hidden;background:var(--surface);}
.gallery-item.g-tall{grid-row:span 2;}
.gallery-item img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.02);transition:transform .6s var(--ease);}
.gallery-item:hover img{transform:scale(1.09);}
.gallery-placeholder{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.8rem;
  background:linear-gradient(155deg,var(--surface),#0d0d0f);
}
.gallery-placeholder svg{width:34px;height:34px;color:var(--gold);opacity:.8;}
.gallery-placeholder span{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);}
.gallery-view{
  position:absolute;left:50%;top:50%;z-index:2;
  transform:translate(-50%,-50%) scale(.8);opacity:0;
  background:var(--gold);color:#0a0a0b;font-size:.72rem;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;padding:.65rem 1.2rem;border-radius:99px;
  transition:opacity .35s var(--ease),transform .35s var(--ease);pointer-events:none;
}
.gallery-item:hover .gallery-view{opacity:1;transform:translate(-50%,-50%) scale(1);}
.gallery-note{margin-top:1.6rem;font-size:.78rem;color:var(--text-muted);font-style:italic;}
@media (max-width:900px){.gallery-grid{grid-template-columns:1fr 1fr;grid-auto-rows:160px;}}
@media (max-width:560px){.gallery-grid{grid-template-columns:1fr;}.gallery-item.g-tall{grid-row:span 1;}}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:4rem;}
.contact-info{display:flex;flex-direction:column;}
.contact-row{
  display:flex;justify-content:space-between;align-items:center;
  padding:1.3rem 0;border-bottom:1px solid var(--line);transition:padding-left .3s var(--ease);
}
a.contact-row:hover{padding-left:.6rem;color:var(--gold);}
.contact-label{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);}
.contact-value{font-size:1.1rem;font-weight:500;}
.map-embed{margin-top:1.8rem;border-radius:6px;overflow:hidden;filter:grayscale(1) invert(.9) contrast(.85);height:220px;}
.map-embed iframe{width:100%;height:100%;border:0;}

.contact-form{display:flex;flex-direction:column;gap:1.4rem;}
.form-row{display:flex;flex-direction:column;gap:.5rem;}
.form-row label{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);}
.form-row input,.form-row select,.form-row textarea{
  background:transparent;border:none;border-bottom:1px solid var(--line);
  color:var(--text);padding:.6rem 0;font-size:1rem;transition:border-color .3s;
}
.form-row select option{background:var(--bg-soft);}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{outline:none;border-color:var(--gold);}
.contact-form .btn{margin-top:.6rem;align-self:flex-start;}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr;gap:2.5rem;}}

/* ---------- Footer ---------- */
.footer{padding:3rem clamp(1.5rem,4vw,3.5rem) 2rem;border-top:1px solid var(--line);}
.footer-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;}
.footer-logo{display:flex;align-items:center;}
.footer-logo .logo-img{display:none;height:40px;width:auto;filter:invert(1);position:relative;z-index:1;}
.footer-logo .logo-text{font-family:'Bebas Neue';font-size:1.4rem;letter-spacing:.06em;}
.footer-logo .logo-text span{color:var(--gold);margin:0 .15em;}
.footer-back{font-size:.8rem;color:var(--text-muted);}
.footer-bottom{display:flex;flex-wrap:wrap;gap:1.5rem;font-size:.78rem;color:var(--text-muted);}

/* ---------- Reveal base states (JS animates these) ---------- */
.reveal,.reveal-up,.reveal-line{will-change:transform,opacity;}
