/* ============================================================================
   FORGEMASON — DESIGN SYSTEM TOKENS & PRIMITIVES
   Drop this <link> / @import into EVERY page, then apply the classes/markup
   documented in README.md. Canonical reference implementation:
   ../forgemason-homepage.html
   ========================================================================== */

/* ---- Fonts (load once, in <head> of every page) --------------------------
   <link rel="preconnect" href="https://fonts.googleapis.com">
   <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
   <link href="https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700;800&family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
--------------------------------------------------------------------------- */

:root{
  /* Brand palette */
  --black:       #06080F;   /* page background */
  --charcoal:    #0A1020;   /* alternating section background + cards */
  --steel:       #111828;   /* inputs, chat header */
  --iron:        #1C2840;   /* AI chat bubble */
  --blue:        #3B7BFF;   /* primary */
  --blue-dim:    #2558CC;
  --cyan:        #00CFFF;   /* accent / gradient end */
  --blue-glow:   rgba(59,123,255,0.15);
  --cyan-glow:   rgba(0,207,255,0.10);
  --white:       #D8E8FF;   /* headings / high-contrast text */
  --muted:       #8497BE;   /* body text (WCAG-lifted) */
  --muted-soft:  #6B7DA3;   /* tertiary labels only */
  --success:     #00D97E;
  --danger:      #FF4040;
  --border:      rgba(59,123,255,0.12);

  --max:         1200px;
  --pad:         clamp(1.25rem,4vw,2rem);

  /* Signature gradient — used on .gradient-text, rails, pulses */
  --grad:        linear-gradient(100deg,var(--blue),var(--cyan) 60%,#62E8FF);
}

/* ---- Typography ----------------------------------------------------------- */
body{background:var(--black);color:var(--white);font-family:'DM Sans',system-ui,sans-serif;-webkit-font-smoothing:antialiased}
.display{font-family:'Barlow Condensed',sans-serif;font-weight:800;line-height:.95;letter-spacing:-.01em;text-transform:uppercase}
.heading{font-family:'Barlow Condensed',sans-serif;font-weight:700;line-height:1.05;text-transform:uppercase}
.mono{font-family:'JetBrains Mono',monospace;font-weight:500}
.gradient-text{
  color:var(--cyan); /* fallback if background-clip unsupported */
  background:linear-gradient(135deg,var(--blue) 0%,var(--cyan) 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}

/* ---- Layout --------------------------------------------------------------- */
.container{width:100%;max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
section{padding:clamp(3rem,8vw,6rem) 0}
/* Alternate section backgrounds for rhythm: every other content section gets --charcoal */
/* e.g. #problem,#industries,#testimonials,#locations,#pricing,#final-cta{background:var(--charcoal)} */

/* ---- Eyebrow / section label --------------------------------------------- */
.eyebrow{
  display:inline-flex;align-items:center;gap:.55rem;
  font-family:'JetBrains Mono',monospace;font-size:.66rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--cyan);
  border:1px solid rgba(0,207,255,.22);background:rgba(0,207,255,.04);
  padding:.4rem 1rem;border-radius:999px;
}

/* ============================================================================
   ACCESSIBILITY  (apply globally — required on every page)
   ========================================================================== */
a:focus-visible,button:focus-visible,input:focus-visible,
textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--cyan);outline-offset:3px;border-radius:3px;
}
a:focus:not(:focus-visible),button:focus:not(:focus-visible){outline:none}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;
  }
}

/* ============================================================================
   LOGO + NAV  (identical on every page — see logo.html for the markup)
   ========================================================================== */
#nav{position:fixed;top:0;left:0;right:0;z-index:900;padding:.9rem 0;
  background:rgba(6,8,15,.82);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border);transition:all .3s ease}
#nav.scrolled{background:rgba(6,8,15,.97);border-bottom-color:rgba(59,123,255,.22)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.nav-logo{display:flex;align-items:center;gap:.65rem;text-decoration:none}
.nav-logo-text{display:flex;flex-direction:column;line-height:1.1}
.nav-logo-text strong{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:1.2rem;letter-spacing:.03em;text-transform:uppercase;color:var(--white)}
.nav-logo-text strong .ms{font-size:inherit;font-weight:inherit;letter-spacing:inherit;text-transform:inherit;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.nav-logo-text span{font-family:'JetBrains Mono',monospace;font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}

/* animated circuit-anvil mark */
.nav-logo-mark{width:50px;height:50px;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  filter:drop-shadow(0 0 6px rgba(0,200,255,.55));animation:fm-pulse 3.4s ease-in-out 2s infinite}
.fm-anvil{width:50px;height:50px;overflow:visible}
.fm-anvil .ol{stroke-width:6px;stroke-dasharray:1;stroke-dashoffset:1;animation:fm-draw 1.1s cubic-bezier(.7,0,.3,1) .25s forwards}
.fm-anvil .tr{stroke-width:3px;stroke-dasharray:1;stroke-dashoffset:1;animation:fm-draw .55s ease forwards}
.fm-anvil .tr.d1{animation-delay:1.0s}.fm-anvil .tr.d2{animation-delay:1.15s}.fm-anvil .tr.d3{animation-delay:1.3s}
.fm-anvil .nd{opacity:0;transform-box:fill-box;transform-origin:center;animation:fm-pop .45s ease 1.45s forwards,fm-blink 2.6s ease-in-out 2.2s infinite}
.fm-anvil .nd.n2{animation-delay:1.6s,2.4s}.fm-anvil .nd.n3{animation-delay:1.72s,2.6s}
@keyframes fm-draw{to{stroke-dashoffset:0}}
@keyframes fm-pop{0%{opacity:0;transform:scale(0)}60%{opacity:1;transform:scale(1.5)}100%{opacity:.95;transform:scale(1)}}
@keyframes fm-blink{0%,100%{opacity:.95}50%{opacity:.4}}
@keyframes fm-pulse{0%,100%{filter:drop-shadow(0 0 6px rgba(0,200,255,.55))}50%{filter:drop-shadow(0 0 13px rgba(0,215,255,.9))}}
.nav-logo:hover .nav-logo-mark{filter:drop-shadow(0 0 14px rgba(0,210,255,.85));transition:filter .25s}
@media(prefers-reduced-motion:reduce){
  .nav-logo-mark{animation:none}
  .fm-anvil .ol,.fm-anvil .tr{animation:none;stroke-dashoffset:0}
  .fm-anvil .nd{animation:none;opacity:.95}
}

/* ============================================================================
   BUTTONS  (use on every CTA)
   ========================================================================== */
.btn{display:inline-flex;align-items:center;gap:.5rem;font-family:'DM Sans',sans-serif;
  font-weight:600;font-size:.95rem;padding:.85rem 1.5rem;border-radius:4px;
  text-decoration:none;cursor:pointer;border:1px solid transparent;transition:all .25s}
.btn svg{width:18px;height:18px}
.btn-primary{background:linear-gradient(135deg,var(--blue),var(--blue-dim));color:#fff;
  box-shadow:0 0 22px rgba(59,123,255,.35);will-change:transform}
.btn-primary:hover{box-shadow:0 0 30px rgba(0,207,255,.5)}
.btn-secondary{background:transparent;color:var(--white);border-color:var(--border)}
.btn-secondary:hover{border-color:rgba(59,123,255,.5);background:rgba(59,123,255,.06)}

/* ============================================================================
   GLASS STAT CARD  (hero / proof blocks)
   ========================================================================== */
.stat-card{background:linear-gradient(155deg,rgba(22,34,62,.50),rgba(8,12,24,.42));
  -webkit-backdrop-filter:blur(13px) saturate(1.15);backdrop-filter:blur(13px) saturate(1.15);
  border:1px solid rgba(99,160,255,.20);border-radius:14px;padding:1.5rem;position:relative;overflow:hidden;
  box-shadow:0 10px 34px rgba(0,0,0,.4),inset 0 1px 0 rgba(180,210,255,.07);
  transition:border-color .35s,transform .35s,box-shadow .35s}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--blue),var(--cyan),transparent);opacity:.5;transition:opacity .3s}
.stat-card:hover{border-color:rgba(0,207,255,.45);
  box-shadow:0 18px 50px rgba(0,0,0,.5),0 0 38px rgba(0,207,255,.14),inset 0 1px 0 rgba(180,210,255,.1)}
.stat-value{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:clamp(2.2rem,4.2vw,3rem);
  line-height:1;margin-bottom:.4rem;display:block;color:var(--cyan);
  background:linear-gradient(120deg,#9cc4ff,#3B7BFF 35%,#00CFFF 80%,#7fe9ff);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:-.01em}
.stat-label{font-size:.78rem;color:var(--muted);line-height:1.45}

/* ============================================================================
   SCROLL PROGRESS BAR + SECTION DOTS  (global, every long page)
   ========================================================================== */
#scroll-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:1100;background:rgba(59,123,255,.10);pointer-events:none}
#scroll-progress-bar{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--cyan));box-shadow:0 0 12px rgba(0,207,255,.6);transition:width .12s linear}
#section-dots{position:fixed;right:20px;top:50%;transform:translateY(-50%);z-index:1090;display:flex;flex-direction:column;gap:.9rem}
#section-dots a{position:relative;width:11px;height:11px;border-radius:50%;border:1.5px solid rgba(99,160,255,.45);background:transparent;transition:background .25s,border-color .25s,transform .25s}
#section-dots a::after{content:attr(data-label);position:absolute;right:22px;top:50%;transform:translateY(-50%) translateX(6px);white-space:nowrap;opacity:0;pointer-events:none;font-family:'JetBrains Mono',monospace;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--white);background:rgba(10,16,32,.92);border:1px solid var(--border);padding:.35rem .6rem;border-radius:4px;transition:opacity .2s,transform .2s}
#section-dots a:hover{border-color:var(--cyan);transform:scale(1.25)}
#section-dots a:hover::after,#section-dots a:focus-visible::after{opacity:1;transform:translateY(-50%) translateX(0)}
#section-dots a.active{background:var(--cyan);border-color:var(--cyan);box-shadow:0 0 10px rgba(0,207,255,.7)}
@media (max-width:1180px){#section-dots{display:none}}

/* ============================================================================
   SCROLL-REVEAL + WOW-FX  (see forgemason-fx.js to wire these up)
   ========================================================================== */
@media (prefers-reduced-motion: no-preference){
  .reveal{opacity:0;transform:translateY(28px);filter:blur(8px);
    transition:opacity .75s cubic-bezier(.16,1,.3,1),transform .75s cubic-bezier(.16,1,.3,1),filter .75s ease}
  .reveal.visible{opacity:1;transform:none;filter:blur(0)}
  .reveal-delay-1{transition-delay:.08s}.reveal-delay-2{transition-delay:.16s}.reveal-delay-3{transition-delay:.24s}
}
/* 3D tilt cards (JS adds .fx-tilt + a .fx-glare child) */
.fx-tilt{position:relative;transform-style:preserve-3d;transition:transform .35s cubic-bezier(.16,1,.3,1),border-color .3s,box-shadow .3s}
.fx-tilt:hover{box-shadow:0 22px 60px rgba(3,8,20,.55),0 0 40px rgba(59,123,255,.16)}
.fx-glare{position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s ease;z-index:3;mix-blend-mode:screen;
  background:radial-gradient(200px circle at var(--gx,50%) var(--gy,50%),rgba(130,205,255,.16),rgba(130,205,255,0) 60%)}
@media (hover:none){.fx-tilt,.fx-glare{transform:none!important}.fx-glare{display:none}}
