/* ============================================================
   HERO (home)
   ============================================================ */
.hero{
  position:relative; min-height:100vh; background:var(--ink); color:var(--white);
  display:flex; align-items:center; overflow:hidden;
  padding:160px 0 100px;
}
.hero-bg{ position:absolute; inset:0; z-index:0; }
.hero-photo{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0.55;
}
.hero-bg .grid-field{ opacity:.55; }
.hero-vignette{
  position:absolute; inset:0;
  background:
    radial-gradient(circle at 78% 30%, rgba(169,122,37,0.16), transparent 55%),
    linear-gradient(180deg, rgba(18,22,26,0.55), rgba(18,22,26,0.96) 88%);
}
.hero-crosshair{
  position:absolute; width:120px; height:120px; border:1px solid var(--line-dark-strong);
  border-radius:50%; opacity:.5;
}
.hero-crosshair::before,.hero-crosshair::after{ content:""; position:absolute; background:var(--line-dark-strong); }
.hero-crosshair::before{ top:50%; left:-16px; right:-16px; height:1px; }
.hero-crosshair::after{ left:50%; top:-16px; bottom:-16px; width:1px; }
.hero-crosshair.hc-1{ top:14%; left:8%; width:70px; height:70px; }
.hero-crosshair.hc-2{ bottom:12%; right:10%; }

.hero .container{ position:relative; z-index:2; }
.hero-grid{ display:grid; grid-template-columns:1fr; gap:40px; }
.hero-eyebrow-row{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:26px; }

.hero h1{
  font-size:clamp(2.9rem, 6.6vw, 5.6rem);
  max-width:16ch;
}
.hero h1 .line{ display:block; overflow:hidden; }
.hero h1 .line span{ display:block; transition:transform .9s var(--ease); }
.js .hero h1 .line span{ transform:translateY(110%); }
.hero.is-ready h1 .line span{ transform:translateY(0); }
.hero h1 .line:nth-child(1) span{ transition-delay:.05s; }
.hero h1 .line:nth-child(2) span{ transition-delay:.16s; }
.hero h1 .line:nth-child(3) span{ transition-delay:.27s; }

.hero-sub{
  max-width:52ch; font-size:1.12rem; color:var(--steel-300); margin-top:26px;
  transition:opacity .7s var(--ease) .5s, transform .7s var(--ease) .5s;
}
.js .hero-sub{ opacity:0; transform:translateY(14px); }
.hero.is-ready .hero-sub{ opacity:1; transform:none; }

.hero-actions{
  display:flex; gap:16px; margin-top:40px; flex-wrap:wrap;
  transition:opacity .7s var(--ease) .64s, transform .7s var(--ease) .64s;
}
.js .hero-actions{ opacity:0; transform:translateY(14px); }
.hero.is-ready .hero-actions{ opacity:1; transform:none; }

.hero-scroll{
  position:absolute; left:32px; bottom:34px; display:flex; align-items:center; gap:10px;
  font-family:var(--font-mono); font-size:0.72rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--steel-300);
  transition:opacity .7s var(--ease) .9s;
}
.js .hero-scroll{ opacity:0; }
.hero.is-ready .hero-scroll{ opacity:1; }
.hero-scroll .bar{ width:1px; height:34px; background:var(--line-dark-strong); position:relative; overflow:hidden; }
.hero-scroll .bar::after{
  content:""; position:absolute; top:-40%; left:0; width:100%; height:40%; background:var(--brass);
  animation:scrollbar 2.2s ease-in-out infinite;
}
@keyframes scrollbar{ 0%{ top:-40%; } 60%{ top:100%; } 100%{ top:100%; } }
@media (prefers-reduced-motion: reduce){ .hero-scroll .bar::after{ animation:none; top:0; } }

/* Spec strip attached to hero */
.hero-specs{
  position:relative; z-index:2; margin-top:64px;
  border-top:1px solid var(--line-dark);
  display:grid; grid-template-columns:repeat(4,1fr);
  transition:opacity .7s var(--ease) .78s, transform .7s var(--ease) .78s;
}
.js .hero-specs{ opacity:0; transform:translateY(14px); }
.hero.is-ready .hero-specs{ opacity:1; transform:none; }
.hero-spec{ padding:22px 24px 0; border-left:1px solid var(--line-dark); }
.hero-spec:first-child{ border-left:none; padding-left:0; }
.hero-spec .num{ font-family:var(--font-mono); font-size:1.7rem; color:var(--brass-light); }
.hero-spec .lab{ font-family:var(--font-mono); font-size:0.7rem; letter-spacing:.08em; text-transform:uppercase; color:var(--steel-300); margin-top:6px; }

@media (max-width:768px){
  .hero{ padding:130px 0 60px; min-height:auto; }
  .hero-specs{ grid-template-columns:1fr 1fr; row-gap:24px; }
  .hero-spec:nth-child(3){ border-left:none; padding-left:0; }
  .hero-scroll{ display:none; }
}
@media (prefers-reduced-motion: reduce){
  .js .hero h1 .line span,
  .js .hero-sub, .js .hero-actions, .js .hero-scroll, .js .hero-specs{
    opacity:1; transform:none;
  }
}

/* ============================================================
   STAT / TRUST STRIP
   ============================================================ */
.trust-strip{ background:var(--concrete-dim); border-top:1px solid var(--ink); border-bottom:1px solid var(--ink); }
.trust-strip .container{
  display:grid; grid-template-columns:repeat(4,1fr);
  padding:0;
}
.trust-item{
  padding:30px 26px; border-left:1px solid rgba(18,22,26,.14);
  display:flex; flex-direction:column; gap:6px;
}
.trust-item:first-child{ border-left:none; }
.trust-item .t-num{ font-family:var(--font-mono); font-size:1.5rem; color:var(--brass); }
.trust-item .t-lab{ font-family:var(--font-mono); font-size:0.72rem; letter-spacing:.06em; text-transform:uppercase; color:var(--steel-600); }
@media (max-width:820px){
  .trust-strip .container{ grid-template-columns:1fr 1fr; }
  .trust-item:nth-child(3){ border-left:none; }
  .trust-item{ padding:22px 18px; }
}

/* ============================================================
   CARDS — services / equipment / spec plates
   ============================================================ */
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:2px; background:var(--line-dark-strong); }
.grid-2{ display:grid; grid-template-columns:repeat(2,1fr); gap:2px; background:var(--ink-2); }
.grid-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:rgba(18,22,26,.1); }

.service-card{
  background:var(--ink); padding:38px 32px; position:relative;
  transition:background .3s var(--ease);
}
.service-card:hover{ background:var(--ink-soft); }
.service-card .tag{ font-family:var(--font-mono); font-size:0.74rem; color:var(--brass); letter-spacing:.06em; }
.service-card h3{ margin-top:16px; font-size:1.24rem; color:var(--white); text-transform:none; letter-spacing:0; }
.service-card p{ margin-top:14px; color:var(--steel-300); font-size:0.95rem; }

.spec-card{
  background:var(--paper); border:1px solid rgba(18,22,26,.12); padding:30px 26px;
  display:flex; flex-direction:column; gap:10px;
}
.spec-card .tag{ font-family:var(--font-mono); font-size:0.72rem; color:var(--brass); letter-spacing:.06em; text-transform:uppercase; }
.spec-card h3{ font-size:1.1rem; text-transform:none; letter-spacing:0; }
.spec-card p{ color:var(--steel-600); font-size:0.92rem; }

.equip-row{
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:20px 0; border-bottom:1px solid rgba(18,22,26,.12);
}
.equip-row:first-child{ border-top:1px solid rgba(18,22,26,.12); }
.equip-row .name{ font-family:var(--font-display); text-transform:uppercase; font-size:1.02rem; letter-spacing:.01em; }
.equip-row .idx{ font-family:var(--font-mono); color:var(--brass); font-size:0.85rem; margin-right:16px; }
.equip-row .meta{ font-family:var(--font-mono); font-size:0.8rem; color:var(--steel-600); text-align:right; }

/* Project case-study block */
.case-block{ border-top:1px solid rgba(18,22,26,.14); padding:56px 0; }
.case-block:last-child{ border-bottom:1px solid rgba(18,22,26,.14); }
.case-head{ display:flex; justify-content:space-between; gap:24px; flex-wrap:wrap; align-items:flex-end; margin-bottom:28px; }
.case-head .loc{ font-family:var(--font-mono); font-size:0.78rem; color:var(--brass); letter-spacing:.06em; text-transform:uppercase; }
.case-head h3{ margin-top:10px; font-size:clamp(1.4rem,2.6vw,2rem); max-width:24ch; }
.case-meta{ display:flex; gap:28px; flex-wrap:wrap; }
.case-meta div{ font-family:var(--font-mono); font-size:0.78rem; color:var(--steel-600); }
.case-meta div b{ display:block; color:var(--ink); font-size:0.95rem; margin-top:4px; }
.case-body{ display:grid; grid-template-columns:1.4fr 1fr; gap:44px; }
.case-body p{ color:var(--steel-600); }
.case-stats{ display:flex; flex-direction:column; gap:18px; }
.case-stat{ border-left:2px solid var(--brass); padding-left:16px; }
.case-stat .n{ font-family:var(--font-mono); font-size:1.5rem; color:var(--ink); }
.case-stat .l{ font-family:var(--font-mono); font-size:0.72rem; color:var(--steel-600); text-transform:uppercase; letter-spacing:.06em; margin-top:2px; }
@media (max-width:860px){
  .case-body{ grid-template-columns:1fr; }
}

/* ============================================================
   FIELD DOCUMENTATION PLACEHOLDER TILES
   (used where authentic jobsite photography will be added later)
   ============================================================ */
.doc-note{
  border:1px dashed rgba(18,22,26,.3); background:var(--concrete-dim);
  padding:20px 24px; font-family:var(--font-mono); font-size:0.85rem; color:var(--steel-600);
  display:flex; gap:14px; align-items:flex-start; margin-bottom:32px;
}
.doc-note svg{ flex:none; width:20px; height:20px; margin-top:2px; color:var(--brass); }

.doc-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; background:transparent; }
.doc-tile{
  aspect-ratio:4/3; background:var(--paper); position:relative; overflow:hidden;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
  border:1px dashed rgba(18,22,26,.28);
}
.doc-tile img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
}
.doc-tile-fallback{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
}
.doc-tile.has-image:hover img, .doc-tile.has-image:focus-visible img{ transform:scale(1.04); }
.doc-tile img{ transition:transform .4s var(--ease); }
#gallery-grid .doc-tile.has-image{ cursor:zoom-in; }

/* Lightbox */
.lightbox{
  position:fixed; inset:0; z-index:2000; background:rgba(10,12,14,.96);
  display:flex; align-items:center; justify-content:center; padding:60px 24px;
}
.lightbox[hidden]{ display:none; }
.lightbox-img{ max-width:min(90vw,1100px); max-height:80vh; object-fit:contain; }
.lightbox-close{
  position:absolute; top:20px; right:24px; width:44px; height:44px; border:1px solid var(--line-dark-strong);
  background:transparent; color:var(--white); font-size:1.6rem; line-height:1;
}
.lightbox-close:hover{ border-color:var(--brass); color:var(--brass-light); }
.lightbox-nav{
  position:absolute; top:50%; transform:translateY(-50%); width:52px; height:52px;
  border:1px solid var(--line-dark-strong); background:rgba(18,22,26,.6); color:var(--white); font-size:1.3rem;
}
.lightbox-nav:hover{ border-color:var(--brass); color:var(--brass-light); }
.lightbox-prev{ left:16px; } .lightbox-next{ right:16px; }
.lightbox-caption{
  position:absolute; bottom:24px; left:0; right:0; text-align:center;
  font-family:var(--font-mono); font-size:0.8rem; color:var(--steel-300);
}
@media (max-width:600px){
  .lightbox-nav{ width:44px; height:44px; }
  .lightbox{ padding:80px 12px; }
}
.doc-tile .fn{ font-family:var(--font-mono); font-size:0.72rem; color:var(--steel-600); }
.doc-tile svg{ width:26px; height:26px; color:rgba(18,22,26,.28); }
@media (max-width:820px){ .doc-grid{ grid-template-columns:repeat(2,1fr); } }

.doc-grid-lg{ grid-template-columns:repeat(6,1fr); }
@media (max-width:980px){ .doc-grid-lg{ grid-template-columns:repeat(4,1fr); } }
@media (max-width:640px){ .doc-grid-lg{ grid-template-columns:repeat(2,1fr); } }

/* ============================================================
   FORM
   ============================================================ */
.field{ margin-bottom:22px; }
.field label{
  display:block; font-family:var(--font-mono); font-size:0.74rem; letter-spacing:.06em;
  text-transform:uppercase; color:var(--steel-600); margin-bottom:8px;
}
.field input, .field textarea, .field select{
  width:100%; border:1px solid rgba(18,22,26,.25); background:var(--white);
  padding:13px 14px; color:var(--ink); border-radius:var(--radius);
  transition:border-color .2s var(--ease);
}
.field input:focus, .field textarea:focus, .field select:focus{ border-color:var(--brass); outline:none; }
.field textarea{ resize:vertical; min-height:130px; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
@media (max-width:600px){ .field-row{ grid-template-columns:1fr; } }
.form-note{ font-size:0.85rem; color:var(--steel-600); margin-top:14px; }

/* Office card */
.office-card{ background:var(--white); border:1px solid rgba(18,22,26,.12); padding:34px; }
.office-card .tag{ font-family:var(--font-mono); font-size:0.72rem; color:var(--brass); text-transform:uppercase; letter-spacing:.06em; }
.office-card h3{ margin-top:12px; font-size:1.3rem; text-transform:none; letter-spacing:0; }
.office-card address{ font-style:normal; color:var(--steel-600); margin-top:14px; line-height:1.7; }
.office-card .phone-line{ margin-top:18px; padding-top:18px; border-top:1px solid rgba(18,22,26,.12); }
.office-card .phone-line a{ font-family:var(--font-mono); font-size:1.15rem; color:var(--ink); }
.office-card .phone-line a:hover{ color:var(--brass); }

.emergency-panel{
  background:var(--ink); color:var(--white); padding:34px; border-left:3px solid var(--safety);
}
.emergency-panel .tag{ font-family:var(--font-mono); font-size:0.72rem; color:#e07a5f; text-transform:uppercase; letter-spacing:.06em; }
.emergency-panel a{ font-family:var(--font-mono); font-size:1.9rem; color:var(--white); display:block; margin-top:12px; }
.emergency-panel a:hover{ color:#e07a5f; }
.emergency-panel p{ color:var(--steel-300); margin-top:12px; font-size:0.92rem; }

/* Motto pull quote */
.pull-motto{
  font-family:var(--font-display); text-transform:uppercase; font-size:clamp(1.5rem,3vw,2.3rem);
  border-left:3px solid var(--brass); padding-left:24px; margin:0; letter-spacing:0.01em; line-height:1.25;
}

/* Two column intro */
.intro-split{ display:grid; grid-template-columns:0.9fr 1.4fr; gap:60px; }
@media (max-width:900px){ .intro-split{ grid-template-columns:1fr; gap:32px; } }

.intro-photo{ margin-top:28px; aspect-ratio:4/3; overflow:hidden; }
.intro-photo img{ width:100%; height:100%; object-fit:cover; display:block; }

/* generic responsive collapses for grids used across pages */
@media (max-width:900px){
  .grid-3{ grid-template-columns:1fr 1fr; }
  .grid-4{ grid-template-columns:1fr 1fr; }
}
@media (max-width:600px){
  .grid-3{ grid-template-columns:1fr; }
  .grid-2{ grid-template-columns:1fr; }
  .grid-4{ grid-template-columns:1fr 1fr; }
}

/* Licensing accordion-free list */
.license-list{ display:flex; flex-direction:column; }
.license-item{ display:grid; grid-template-columns:64px 1fr; gap:20px; padding:26px 0; border-top:1px solid rgba(18,22,26,.12); }
.license-item:last-child{ border-bottom:1px solid rgba(18,22,26,.12); }
.license-item .li-num{ font-family:var(--font-mono); color:var(--brass); font-size:0.95rem; }
.license-item h4{ font-family:var(--font-display); text-transform:uppercase; font-size:1.05rem; letter-spacing:0.01em; margin-bottom:8px;}
.license-item p{ color:var(--steel-600); font-size:0.95rem; }
