/* ==========================================================================
   Redline Security — Stylesheet
   Tokens: ink / paper / deep / redline / amber, Space Grotesk + IBM Plex
   Theming: light (default) <-> dark via [data-theme] on <html>
   ========================================================================== */

:root{
  --ink:#12181F;
  --ink-soft:#3C4650;
  --paper:#EFF1EC;
  --paper-raised:#FFFFFF;
  --deep:#0D1319;
  --deep-line:#26313B;
  --redline:#684b45;
  --redline-soft:#E8DAD5;
  --amber:#D89A3E;
  --grid:#C7CEC9;
  --ok:#4C7A5E;

  /* fixed dark surfaces used by sections that are always-dark (stats, creds, contact, footer) */
  --dark-surface:#0D1319;
  --dark-surface-2:#161E27;
  --dark-line:#26313B;
  --dark-text:#D8DEE2;
  --dark-text-soft:#8C99A3;
  --dark-text-bright:#F2F4F5;

  --input-bg:#171F27;

  --display:'Space Grotesk', sans-serif;
  --body:'IBM Plex Sans', sans-serif;
  --mono:'IBM Plex Mono', monospace;

  --ease:cubic-bezier(.22,.85,.32,1);
  --shadow-sm: 0 1px 2px rgba(13,19,25,0.06);
  --shadow-md: 0 8px 24px -8px rgba(13,19,25,0.18);
  --shadow-lg: 0 24px 48px -16px rgba(13,19,25,0.28);

  --theme-t: 0.5s;
  color-scheme: light;
}

/* ---------- DARK THEME TOKENS ---------- */
html[data-theme="dark"]{
  --ink:#EDF0F2;
  --ink-soft:#9BA7B1;
  --paper:#0B1015;
  --paper-raised:#141B22;
  --grid:#26313B;
  --redline-soft:#3A231D;
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.4);
  --shadow-md: 0 8px 28px -8px rgba(0,0,0,0.55);
  --shadow-lg: 0 24px 56px -16px rgba(0,0,0,0.65);
  color-scheme: dark;
}

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  transition:background var(--theme-t) var(--ease), color var(--theme-t) var(--ease);
}
img{max-width:100%; display:block;}
a{color:inherit; text-decoration:none;}
ul{list-style:none;}
section{position:relative;}
.wrap{max-width:1180px; margin:0 auto; padding:0 32px;}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; scroll-behavior:auto !important;}
}

a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible{
  outline:2px solid var(--redline);
  outline-offset:3px;
  border-radius:2px;
}

.eyebrow{
  font-family:var(--mono);
  font-size:12.5px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--redline);
  display:flex;
  align-items:center;
  gap:10px;
}
.eyebrow::before{
  content:"";
  width:22px; height:1px;
  background:var(--redline);
  display:inline-block;
}

h1,h2,h3,h4{
  font-family:var(--display);
  font-weight:600;
  letter-spacing:-0.01em;
}

/* ---------- VIEW TRANSITIONS (theme swap) ---------- */
/* We drive the animation manually via a clip-path circle in JS, so kill the
   browser's default cross-fade to avoid a double effect. */
::view-transition-old(root),
::view-transition-new(root){
  animation:none;
  mix-blend-mode:normal;
}
::view-transition-old(root){ z-index:1; }
::view-transition-new(root){ z-index:2; }

/* ---------- SCROLL PROGRESS ---------- */
.scroll-progress{
  position:fixed; top:0; left:0;
  height:2px;
  background:linear-gradient(90deg, var(--redline), var(--amber));
  width:0%;
  z-index:200;
  transition:width 0.1s linear;
}

/* ---------- REVEAL ANIMATION ---------- */
.reveal{
  opacity:0;
  transform:translateY(22px);
  transition:opacity 0.7s var(--ease), transform 0.7s var(--ease);
}
.reveal.is-visible{
  opacity:1;
  transform:translateY(0);
}

/* ---------- HEADER ---------- */
header{
  position:fixed; top:0; left:0; right:0;
  z-index:100;
  background:color-mix(in srgb, var(--paper) 72%, transparent);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid color-mix(in srgb, var(--grid) 70%, transparent);
  transition:background 0.3s ease, box-shadow 0.3s ease, border-color var(--theme-t) ease;
}
header.scrolled{
  box-shadow:var(--shadow-sm);
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  height:72px;
  gap:20px;
}
.logo{
  font-family:var(--mono);
  font-weight:600;
  font-size:17px;
  letter-spacing:0.02em;
  display:flex; align-items:center; gap:10px;
  margin-right:auto;
}
.logo .dash{
  width:14px; height:2px; background:var(--redline);
  display:inline-block;
}
.nav-links{
  display:flex; gap:36px;
  font-size:14.5px;
  font-weight:500;
}
.nav-links a{
  position:relative;
  padding:4px 0;
  transition:color 0.2s ease;
}
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:0; width:0; height:1px;
  background:var(--redline); transition:width 0.25s var(--ease);
}
.nav-links a:hover::after,
.nav-links a.active::after{width:100%;}
.nav-links a.active{color:var(--redline);}

.nav-cta{
  position:relative;
  font-family:var(--mono);
  font-size:13.5px;
  font-weight:500;
  background:var(--ink);
  color:var(--paper);
  padding:11px 20px;
  border-radius:2px;
  letter-spacing:0.02em;
  overflow:hidden;
  transition:transform 0.2s var(--ease), box-shadow 0.2s var(--ease), background var(--theme-t) ease, color var(--theme-t) ease;
}
.nav-cta::before{
  content:"";
  position:absolute; inset:0;
  background:var(--redline);
  transform:translateX(-101%);
  transition:transform 0.3s var(--ease);
  z-index:0;
}
.nav-cta span, .nav-cta{ z-index:1; }
.nav-cta:hover::before{ transform:translateX(0); }
.nav-cta:hover{ box-shadow:var(--shadow-md); }
.nav-cta{ display:inline-block; }
.nav-cta > * { position:relative; }

/* ---------- THEME TOGGLE ---------- */
.theme-toggle{
  background:none;
  border:none;
  padding:0;
  cursor:pointer;
  display:flex;
  align-items:center;
  flex-shrink:0;
}
.theme-toggle-track{
  width:52px; height:28px;
  border-radius:999px;
  background:var(--paper-raised);
  border:1px solid var(--grid);
  display:flex;
  align-items:center;
  padding:3px;
  transition:background var(--theme-t) ease, border-color var(--theme-t) ease;
}
.theme-toggle-thumb{
  width:20px; height:20px;
  border-radius:50%;
  background:var(--ink);
  display:flex;
  align-items:center;
  justify-content:center;
  transform:translateX(0);
  transition:transform 0.35s var(--ease), background var(--theme-t) ease;
  position:relative;
}
html[data-theme="dark"] .theme-toggle-thumb{
  transform:translateX(24px);
  background:var(--amber);
}
.theme-toggle-thumb svg{
  position:absolute;
  width:13px; height:13px;
  stroke:var(--paper);
  fill:none;
  stroke-width:2;
  stroke-linecap:round;
  transition:opacity 0.25s ease, transform 0.35s var(--ease);
}
.icon-sun circle{fill:var(--paper); stroke:none;}
.icon-moon path{fill:var(--deep); stroke:none;}
.theme-toggle-thumb .icon-sun{
  opacity:1;
  transform:rotate(0deg) scale(1);
}
.theme-toggle-thumb .icon-moon{
  opacity:0;
  transform:rotate(-90deg) scale(0.5);
}
html[data-theme="dark"] .theme-toggle-thumb .icon-sun{
  opacity:0;
  transform:rotate(90deg) scale(0.5);
}
html[data-theme="dark"] .theme-toggle-thumb .icon-moon{
  opacity:1;
  transform:rotate(0deg) scale(1);
}
.theme-toggle:hover .theme-toggle-track{border-color:var(--redline);}

.burger{display:none; background:none; border:none; cursor:pointer; padding:8px; z-index:5;}
.burger span{display:block; width:22px; height:2px; background:var(--ink); margin:5px 0; transition:transform 0.25s ease, opacity 0.25s ease, background var(--theme-t) ease;}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0;}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* ---------- HERO ---------- */
.hero{
  padding:168px 0 88px;
  background:var(--paper);
  overflow:hidden;
  position:relative;
  transition:background var(--theme-t) ease;
}
.hero-glow{
  position:absolute;
  top:-180px; right:-220px;
  width:640px; height:640px;
  background:radial-gradient(circle at center, rgba(200,57,31,0.10), rgba(216,154,62,0.06) 45%, transparent 70%);
  filter:blur(10px);
  pointer-events:none;
  animation:drift 14s ease-in-out infinite;
}
html[data-theme="dark"] .hero-glow{
  background:radial-gradient(circle at center, rgba(200,57,31,0.22), rgba(216,154,62,0.10) 45%, transparent 70%);
}
@keyframes drift{
  0%, 100%{ transform:translate(0,0) scale(1); }
  50%{ transform:translate(-36px, 28px) scale(1.08); }
}
.hero-noise{
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:0;
  background-image:radial-gradient(circle at 1px 1px, currentColor 1px, transparent 0);
  background-size:26px 26px;
  color:var(--grid);
  transition:opacity var(--theme-t) ease;
}
html[data-theme="dark"] .hero-noise{ opacity:0.12; }
.hero-grid{
  display:grid;
  grid-template-columns:1.05fr 0.95fr;
  gap:56px;
  align-items:center;
  position:relative;
}
.hero h1{
  font-size:clamp(38px, 4.6vw, 60px);
  line-height:1.05;
  margin:18px 0 22px;
}
.highlight{
  position:relative;
  color:var(--redline);
  display:inline-block;
}
.underline-swipe{
  position:absolute;
  left:0; bottom:-6px;
  width:100%; height:10px;
  overflow:visible;
}
.underline-swipe path{
  stroke-dasharray:260;
  stroke-dashoffset:260;
  animation:swipe 0.9s var(--ease) forwards 0.5s;
}
@keyframes swipe{ to{stroke-dashoffset:0;} }

.hero p.lede{
  font-size:17px;
  color:var(--ink-soft);
  max-width:46ch;
  margin-bottom:34px;
}
.hero-ctas{display:flex; gap:16px; flex-wrap:wrap; margin-bottom:44px;}
.btn{
  position:relative;
  font-family:var(--mono);
  font-size:13.5px;
  font-weight:500;
  padding:14px 24px;
  border-radius:2px;
  letter-spacing:0.02em;
  display:inline-block;
  border:1px solid var(--ink);
  overflow:hidden;
  transition:transform 0.2s var(--ease), box-shadow 0.2s var(--ease), color 0.2s ease, border-color var(--theme-t) ease;
}
.btn span{position:relative; z-index:1;}
.btn::before{
  content:"";
  position:absolute; inset:0;
  transform:translateY(101%);
  transition:transform 0.3s var(--ease);
  z-index:0;
}
.btn:hover{ transform:translateY(-2px); box-shadow:var(--shadow-md); }
.btn-solid{background:var(--ink); color:var(--paper); transition:background var(--theme-t) ease, color var(--theme-t) ease, transform 0.2s var(--ease), box-shadow 0.2s var(--ease);}
.btn-solid::before{background:var(--redline);}
.btn-solid:hover::before{transform:translateY(0);}
.btn-line{background:transparent; color:var(--ink);}
.btn-line::before{background:var(--ink);}
.btn-line:hover{color:var(--paper); border-color:var(--ink);}
.btn-line:hover::before{transform:translateY(0);}

.hero-trust{font-size:12.5px; color:var(--ink-soft);}
.hero-trust span{display:block; margin-bottom:10px; font-family:var(--mono); font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:#8A9297;}
.trust-marks{display:flex; gap:26px; flex-wrap:wrap; font-family:var(--mono); font-size:12.5px; letter-spacing:0.04em; color:#6B757D;}

/* signature: fault-line seismograph */
.fault-panel{
  background:var(--dark-surface);
  border-radius:6px;
  padding:26px 22px 20px;
  position:relative;
  box-shadow:var(--shadow-lg);
  transition:transform 0.4s var(--ease), box-shadow var(--theme-t) ease;
}
.fault-panel:hover{transform:translateY(-4px);}
.fault-panel-head{
  display:flex; justify-content:space-between; align-items:baseline;
  font-family:var(--mono);
  color:#8A97A3;
  font-size:11.5px;
  letter-spacing:0.08em;
  text-transform:uppercase;
  margin-bottom:14px;
}
.fault-panel-head .live{color:var(--redline); display:flex; align-items:center; gap:6px;}
.pulse-dot{
  width:6px; height:6px; border-radius:50%;
  background:var(--redline);
  display:inline-block;
  animation:pulse 1.6s ease-in-out infinite;
}
@keyframes pulse{
  0%, 100%{ box-shadow:0 0 0 0 rgba(137, 122, 119, 0.5); }
  50%{ box-shadow:0 0 0 5px rgba(200,57,31,0); }
}
.fault-svg-wrap{position:relative;}
.fault-line-draw{
  stroke:url(#lineGlow);
  stroke-width:2;
  fill:none;
  stroke-dasharray:900;
  stroke-dashoffset:900;
  animation:draw 3.2s var(--ease) forwards 0.3s;
}
@keyframes draw{ to{stroke-dashoffset:0;} }
.grid-line{stroke:var(--dark-line); stroke-width:1;}
.tag{
  font-family:var(--mono);
  font-size:10px;
  fill:#C6CDD3;
  opacity:0;
  animation:pop 0.4s ease forwards;
}
.tag-crit{fill:var(--redline);}
.marker{
  fill:var(--dark-surface);
  stroke:var(--redline);
  stroke-width:1.5;
  opacity:0;
  animation:pop 0.4s ease forwards;
}
@keyframes pop{ to{opacity:1;} }
.fault-panel-foot{
  display:flex; justify-content:space-between;
  font-family:var(--mono);
  font-size:11px;
  color:#5F7386;
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid var(--dark-line);
}

/* ---------- STATS STRIP ---------- */
.stats{
  background:var(--dark-surface);
  color:var(--dark-text);
  padding:44px 0;
  border-top:1px solid var(--dark-line);
  border-bottom:1px solid var(--dark-line);
}
.stats-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:24px;
}
.stat{transition:transform 0.3s var(--ease);}
.stat:hover{transform:translateY(-3px);}
.stat-num{
  font-family:var(--mono);
  font-size:clamp(26px,3.2vw,34px);
  color:var(--amber);
  font-weight:600;
  font-variant-numeric:tabular-nums;
}
.stat-label{
  font-size:12.5px;
  color:var(--dark-text-soft);
  margin-top:4px;
  letter-spacing:0.02em;
}

/* ---------- SECTION HEADERS ---------- */
.section{padding:96px 0;}
.section-head{
  max-width:640px;
  margin-bottom:56px;
}
.section-head h2{
  font-size:clamp(28px,3.4vw,38px);
  margin-top:14px;
}
.section-head p{
  color:var(--ink-soft);
  margin-top:14px;
  font-size:15.5px;
}

/* ---------- SERVICES / TRACKS ---------- */
.tracks{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:2px;
  background:var(--grid);
  border:1px solid var(--grid);
  border-radius:6px;
  overflow:hidden;
  transition:background var(--theme-t) ease, border-color var(--theme-t) ease;
}
.track{
  background:var(--paper-raised);
  padding:40px 36px;
  transition:background 0.3s ease;
}
.track:hover{background:color-mix(in srgb, var(--paper-raised) 92%, var(--redline) 8%);}
.track-tag{
  font-family:var(--mono);
  font-size:11.5px;
  letter-spacing:0.1em;
  text-transform:uppercase;
  padding:5px 10px;
  display:inline-block;
  border-radius:2px;
  margin-bottom:20px;
}
.track.assess .track-tag{background:var(--redline-soft); color:var(--redline);}
.track.train .track-tag{background:#F1E6D2; color:#9C6B1F;}
html[data-theme="dark"] .track.train .track-tag{background:#3A2E14; color:var(--amber);}
.track h3{font-size:23px; margin-bottom:14px;}
.track > p{color:var(--ink-soft); font-size:15px; margin-bottom:26px;}
.track-list{display:flex; flex-direction:column; gap:0;}
.track-list li{
  display:flex; justify-content:space-between; align-items:center;
  padding:14px 0;
  border-top:1px solid var(--grid);
  font-size:14.5px;
  transition:padding-left 0.2s ease, border-color var(--theme-t) ease;
}
.track-list li:hover{padding-left:6px; color:var(--redline);}
.track-list li:first-child{border-top:none;}
.track-list .code{
  font-family:var(--mono);
  font-size:11.5px;
  color:var(--ink-soft);
}

/* ---------- METHODOLOGY ---------- */
.method-strip{background:var(--paper);}
.method-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:0;
  border-top:1px solid var(--grid);
}
.method-step{
  padding:32px 28px 0;
  border-right:1px solid var(--grid);
  position:relative;
  transition:background 0.3s ease, border-color var(--theme-t) ease;
}
.method-step:hover{background:color-mix(in srgb, var(--paper-raised) 60%, transparent);}
.method-step:last-child{border-right:none;}
.method-num{
  font-family:var(--mono);
  font-size:13px;
  color:var(--redline);
  margin-bottom:18px;
}
.method-step h4{font-size:18px; margin-bottom:10px;}
.method-step p{font-size:14px; color:var(--ink-soft); padding-bottom:32px;}

/* ---------- CREDENTIALS ---------- */
.creds{
  background:var(--dark-surface);
  color:var(--dark-text);
}
.creds .section-head p{color:var(--dark-text-soft);}
.creds .section-head .eyebrow{color:var(--amber);}
.creds .section-head .eyebrow::before{background:var(--amber);}
.cred-row{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:24px;
}
.cred-card{
  border:1px solid var(--dark-line);
  padding:26px 22px;
  border-radius:6px;
  transition:transform 0.3s var(--ease), border-color 0.3s ease, background 0.3s ease;
}
.cred-card:hover{
  transform:translateY(-4px);
  border-color:var(--amber);
  background:rgba(216,154,62,0.05);
}
.cred-card .mono-tag{
  font-family:var(--mono);
  font-size:12px;
  color:var(--amber);
  letter-spacing:0.06em;
}
.cred-card h4{
  color:var(--dark-text-bright);
  font-size:16.5px;
  margin:10px 0 8px;
}
.cred-card p{font-size:13.5px; color:var(--dark-text-soft);}

/* ---------- TESTIMONIALS ---------- */
.testimonial-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:22px;
}
.t-card{
  background:var(--paper-raised);
  border:1px solid var(--grid);
  border-radius:6px;
  padding:28px 26px;
  display:flex;
  flex-direction:column;
  transition:transform 0.3s var(--ease), box-shadow 0.3s ease, background var(--theme-t) ease, border-color var(--theme-t) ease;
}
.t-card:hover{
  transform:translateY(-4px);
  box-shadow:var(--shadow-md);
}
.t-stamp{
  font-family:var(--mono);
  font-size:10.5px;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color:var(--ok);
  border:1px solid var(--ok);
  align-self:flex-start;
  padding:3px 8px;
  border-radius:2px;
  margin-bottom:18px;
}
.t-card p.quote{font-size:15px; color:var(--ink); margin-bottom:22px; flex:1;}
.t-meta{
  display:flex; justify-content:space-between; align-items:baseline;
  border-top:1px solid var(--grid);
  padding-top:14px;
  font-family:var(--mono);
  font-size:12px;
  color:var(--ink-soft);
}

/* ---------- FAQ ---------- */
.faq-list{max-width:760px;}
details{
  border-bottom:1px solid var(--grid);
  padding:22px 0;
  transition:border-color var(--theme-t) ease;
}
details summary{
  cursor:pointer;
  list-style:none;
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-family:var(--display);
  font-size:16.5px;
  font-weight:500;
  transition:color 0.2s ease;
}
details summary:hover{color:var(--redline);}
details summary::-webkit-details-marker{display:none;}
.plus{
  font-family:var(--mono);
  font-size:20px;
  color:var(--redline);
  transition:transform 0.25s var(--ease);
  flex-shrink:0;
  margin-left:20px;
}
details[open] .plus{transform:rotate(45deg);}
details p{
  color:var(--ink-soft);
  font-size:14.5px;
  margin-top:14px;
  max-width:60ch;
}

/* ---------- CTA / CONTACT ---------- */
.contact{
  background:var(--dark-surface);
  color:var(--dark-text);
}
.contact-grid{
  display:grid;
  grid-template-columns:0.9fr 1.1fr;
  gap:64px;
}
.contact-left .eyebrow{color:var(--amber);}
.contact-left .eyebrow::before{background:var(--amber);}
.contact-left h2{font-size:clamp(28px,3.2vw,36px); margin:14px 0 18px;}
.contact-left p{color:var(--dark-text-soft); font-size:15px; max-width:42ch; margin-bottom:28px;}
.contact-detail{
  font-family:var(--mono);
  font-size:13.5px;
  color:var(--dark-text);
  margin-bottom:10px;
  display:flex; align-items:center; gap:10px;
}
.contact-detail .ico{color:var(--amber);}
form{display:flex; flex-direction:column; gap:16px;}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
.field{position:relative;}
label{
  font-family:var(--mono);
  font-size:11.5px;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:var(--dark-text-soft);
  display:block;
  margin-bottom:7px;
}
input, textarea, select{
  width:100%;
  background:var(--input-bg);
  border:1px solid var(--dark-line);
  color:var(--dark-text-bright);
  padding:12px 14px;
  border-radius:4px;
  font-family:var(--body);
  font-size:14.5px;
  transition:border-color 0.2s ease, box-shadow 0.2s ease;
}
input:focus, textarea:focus, select:focus{
  border-color:var(--redline);
  box-shadow:0 0 0 3px rgba(200,57,31,0.15);
}
input::placeholder, textarea::placeholder{color:#5F6C77;}
textarea{resize:vertical; min-height:100px;}
.field-error{
  display:none;
  font-family:var(--mono);
  font-size:11.5px;
  color:var(--redline);
  margin-top:6px;
}
.field.invalid input{border-color:var(--redline);}
.field.invalid .field-error{display:block;}

.submit-btn{
  position:relative;
  font-family:var(--mono);
  font-size:13.5px;
  font-weight:500;
  background:var(--redline);
  color:#fff;
  border:none;
  padding:15px 24px;
  border-radius:4px;
  cursor:pointer;
  align-self:flex-start;
  margin-top:6px;
  display:flex; align-items:center; gap:10px;
  transition:background 0.2s ease, transform 0.2s var(--ease), box-shadow 0.2s ease;
}
.submit-btn:hover{background:#4d3b37; transform:translateY(-2px); box-shadow:var(--shadow-md);}
.submit-btn:disabled{opacity:0.75; cursor:default; transform:none;}
.btn-spinner{
  width:14px; height:14px;
  border:2px solid rgba(255,255,255,0.35);
  border-top-color:#fff;
  border-radius:50%;
  display:none;
  animation:spin 0.7s linear infinite;
}
.submit-btn.loading .btn-spinner{display:inline-block;}
.submit-btn.loading .btn-text{opacity:0.7;}
@keyframes spin{ to{ transform:rotate(360deg); } }

.form-note{
  font-family:var(--mono);
  font-size:12px;
  color:#5F6C77;
  margin-top:4px;
}
.form-success{
  display:none;
  font-family:var(--mono);
  font-size:13.5px;
  color:#7CBF98;
  border:1px solid #2F4A3B;
  background:#132018;
  padding:14px 16px;
  border-radius:4px;
}
.form-success.show{display:block; animation:fadeUp 0.4s var(--ease);}
@keyframes fadeUp{ from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:translateY(0);} }

/* ---------- FOOTER ---------- */
footer{
  background:var(--dark-surface);
  color:var(--dark-text-soft);
  padding:56px 0 28px;
}
.footer-top{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  padding-bottom:40px;
  border-bottom:1px solid var(--dark-line);
  flex-wrap:wrap;
  gap:32px;
}
.footer-logo{
  font-family:var(--mono);
  color:var(--dark-text-bright);
  font-size:16px;
  font-weight:600;
  margin-bottom:10px;
}
.footer-top p{max-width:32ch; font-size:13.5px;}
.footer-cols{display:flex; gap:64px;}
.footer-col h5{
  font-family:var(--mono);
  font-size:11.5px;
  text-transform:uppercase;
  letter-spacing:0.08em;
  color:#5F6C77;
  margin-bottom:14px;
}
.footer-col a{
  display:block;
  font-size:13.5px;
  padding:6px 0;
  color:#AEB8C0;
  transition:color 0.2s ease;
}
.footer-col a:hover{color:var(--amber);}
.footer-bottom{
  display:flex; justify-content:space-between;
  padding-top:24px;
  font-family:var(--mono);
  font-size:12px;
  flex-wrap:wrap;
  gap:12px;
}

/* ---------- DIVIDER MOTIF ---------- */
.divider{
  height:24px;
  display:flex; align-items:center; justify-content:center;
  background:var(--paper);
  color:var(--grid);
  transition:background var(--theme-t) ease, color var(--theme-t) ease;
}
.divider svg{width:140px; height:16px;}

/* ---------- BACK TO TOP ---------- */
.back-to-top{
  position:fixed;
  bottom:28px; right:28px;
  width:44px; height:44px;
  border-radius:50%;
  background:var(--ink);
  color:var(--paper);
  border:none;
  font-size:18px;
  cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  opacity:0;
  visibility:hidden;
  transform:translateY(10px);
  transition:opacity 0.3s ease, transform 0.3s ease, background var(--theme-t) ease, color var(--theme-t) ease;
  z-index:90;
  box-shadow:var(--shadow-md);
}
.back-to-top.visible{opacity:1; visibility:visible; transform:translateY(0);}
.back-to-top:hover{background:var(--redline); color:#fff;}

/* ---------- LOGO MARK ---------- */
.logo{gap:12px;}
.logo-mark{
  width:30px; height:30px;
  flex-shrink:0;
}
.logo-mark rect{fill:var(--ink); transition:fill var(--theme-t) ease;}
.logo-mark-line{
  fill:none;
  stroke:var(--redline);
  stroke-width:2;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.logo-text{display:flex; flex-direction:column; line-height:1.1;}
.logo-sub{font-size:9.5px; letter-spacing:0.16em; color:var(--ink-soft); font-weight:500;}
.footer-logo{display:flex; align-items:center; gap:10px;}
.footer-logo .logo-mark rect{fill:var(--dark-text-bright); opacity:0.08;}

/* ---------- ABOUT ---------- */
.about-grid{
  display:grid;
  grid-template-columns:1.1fr 0.9fr;
  gap:64px;
  align-items:center;
}
.about-lede{font-size:16.5px; color:var(--ink-soft); margin:14px 0 16px;}
.about p{color:var(--ink-soft); font-size:15px; margin-bottom:26px;}
.about-values{display:flex; flex-direction:column; gap:20px;}
.about-value{
  display:flex; gap:16px; align-items:flex-start;
  padding:16px;
  border-radius:6px;
  transition:background 0.25s ease, transform 0.25s var(--ease);
}
.about-value:hover{background:var(--paper-raised); transform:translateX(4px);}
.about-value svg{
  width:26px; height:26px; flex-shrink:0; margin-top:2px;
  fill:none; stroke:var(--redline); stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round;
}
.about-value h4{font-size:15.5px; margin-bottom:4px;}
.about-value p{font-size:13.5px; margin-bottom:0; color:var(--ink-soft);}
.about-panel svg{width:100%; height:auto;}
.about-panel rect:first-child{fill:var(--dark-surface); stroke:var(--dark-line);}
.about-ring{fill:none; stroke:var(--dark-line); stroke-width:1;}
.about-ring-1{animation:spin-slow 18s linear infinite;}
.about-ring-2{animation:spin-slow 26s linear infinite reverse;}
.about-ring-3{animation:spin-slow 34s linear infinite;}
@keyframes spin-slow{ from{transform:rotate(0deg);} to{transform:rotate(360deg);} }
.about-core{fill:rgba(200,57,31,0.12); stroke:var(--redline); stroke-width:1.4;}
.about-cross{stroke:var(--amber); stroke-width:1.4;}
.about-panel-label{font-family:var(--mono); font-size:14px; fill:var(--dark-text-bright); letter-spacing:0.08em;}
.about-panel-sub{font-family:var(--mono); font-size:10px; fill:var(--dark-text-soft); letter-spacing:0.08em;}
.about-panel-rule{stroke:var(--dark-line);}
.about-panel-foot{font-family:var(--mono); font-size:9.5px; fill:#5F7386; letter-spacing:0.1em;}
.about-panel-val{font-family:var(--mono); font-size:12px; fill:var(--dark-text); letter-spacing:0.02em;}

/* ---------- SUB HEAD (nested section titles within Services) ---------- */
.sub-head{font-size:clamp(22px,2.6vw,28px); margin-top:14px;}

/* ---------- SERVICE MORE BUTTON ---------- */
.service-more{
  margin-top:22px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  background:none;
  border:1px solid var(--ink);
  color:var(--ink);
  font-family:var(--mono);
  font-size:12.5px;
  letter-spacing:0.02em;
  padding:11px 18px;
  border-radius:2px;
  cursor:pointer;
  transition:background 0.2s ease, color 0.2s ease, transform 0.2s var(--ease), border-color var(--theme-t) ease;
}
.service-more svg{width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:1.6;}
.service-more:hover{background:var(--redline); color:#fff; border-color:var(--redline); transform:translateY(-2px);}

/* ---------- OTHER SERVICES ---------- */
.other-services-wrap{margin-top:72px;}
.other-services-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:20px;
}
.service-card{
  text-align:left;
  background:var(--paper-raised);
  border:1px solid var(--grid);
  border-radius:6px;
  padding:26px 22px;
  cursor:pointer;
  font-family:inherit;
  color:inherit;
  display:flex;
  flex-direction:column;
  transition:transform 0.3s var(--ease), box-shadow 0.3s ease, border-color 0.3s ease;
}
.service-card:hover{
  transform:translateY(-5px);
  box-shadow:var(--shadow-md);
  border-color:var(--redline);
}
.service-card-icon{
  width:30px; height:30px;
  fill:none; stroke:var(--redline); stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round;
  margin-bottom:16px;
  transition:transform 0.3s var(--ease);
}
.service-card:hover .service-card-icon{transform:scale(1.12) rotate(-4deg);}
.service-card h4{font-size:16px; margin-bottom:8px;}
.service-card p{font-size:13.5px; color:var(--ink-soft); flex:1; margin-bottom:16px;}
.service-card-link{
  font-family:var(--mono);
  font-size:12px;
  color:var(--redline);
  display:flex; align-items:center; gap:6px;
}
.service-card-link svg{width:12px; height:12px; fill:none; stroke:currentColor; stroke-width:1.8;}

/* ---------- ROOM FOR HIRE ---------- */
.room-hire{
  margin-top:72px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:48px;
  align-items:center;
  background:var(--paper-raised);
  border:1px solid var(--grid);
  border-radius:8px;
  padding:44px;
}
.room-tag{background:#F1E6D2; color:#9C6B1F; margin-bottom:16px;}
html[data-theme="dark"] .room-tag{background:#3A2E14; color:var(--amber);}
.room-hire h3{font-size:24px; margin-bottom:12px;}
.room-hire-copy > p{color:var(--ink-soft); font-size:15px; margin-bottom:18px;}
.room-hire-list{display:flex; flex-direction:column; gap:8px; margin-bottom:6px;}
.room-hire-list li{
  font-size:13.5px;
  color:var(--ink-soft);
  padding-left:18px;
  position:relative;
}
.room-hire-list li::before{
  content:"";
  position:absolute; left:0; top:7px;
  width:8px; height:1.5px;
  background:var(--redline);
}
.room-hire-art{width:100%; height:auto;}
.room-hire-art rect:first-child{fill:var(--dark-surface); stroke:var(--dark-line);}
.room-screen{fill:var(--dark-surface-2); stroke:var(--dark-line);}
.room-screen-lines{stroke:var(--amber); stroke-width:1.4; stroke-linecap:round; opacity:0.85;}
.room-desks rect{fill:var(--dark-line); transition:fill 0.3s ease;}
.room-hire-art:hover .room-desks rect{fill:var(--redline);}
.room-hire-label{font-family:var(--mono); font-size:9.5px; fill:var(--dark-text-soft); letter-spacing:0.08em;}

/* ---------- WHY CHOOSE US (nested) ---------- */
.why-choose-wrap{margin-top:72px;}
.why-choose-wrap .cred-row{grid-template-columns:repeat(4,1fr);}
.why-choose-wrap .cred-card{
  background:var(--dark-surface);
  color:var(--dark-text);
  border-color:var(--dark-line);
}
.why-choose-wrap .cred-card h4{color:var(--dark-text-bright);}
.why-choose-wrap .cred-card p{color:var(--dark-text-soft);}
.why-choose-wrap .eyebrow{color:var(--amber);}
.why-choose-wrap .eyebrow::before{background:var(--amber);}

/* ---------- TESTIMONIAL STRIP ---------- */
.testimonial-strip{
  margin-top:56px;
  position:relative;
  padding:38px 48px;
  border-left:3px solid var(--redline);
  background:var(--paper-raised);
  border-radius:0 6px 6px 0;
}
.t-strip-quote{
  width:26px; height:26px;
  fill:var(--redline-soft);
  opacity:0.9;
  margin-bottom:12px;
}
.testimonial-strip p{font-size:17px; font-family:var(--display); font-weight:500; max-width:60ch; margin-bottom:12px;}
.testimonial-strip span{font-family:var(--mono); font-size:12.5px; color:var(--ink-soft);}

/* ---------- DEMO SECTION ---------- */
.demo-panel{
  margin-top:16px;
  background:var(--dark-surface);
  border-radius:8px;
  padding:24px 26px 26px;
  box-shadow:var(--shadow-lg);
}
.demo-panel-head{
  display:flex; justify-content:space-between; align-items:center;
  font-family:var(--mono);
  font-size:11.5px;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color:var(--dark-text-soft);
  margin-bottom:16px;
}
.demo-status{
  color:var(--amber);
  padding:3px 9px;
  border:1px solid var(--dark-line);
  border-radius:2px;
  transition:color 0.2s ease, border-color 0.2s ease;
}
.demo-status.running{color:var(--redline); border-color:var(--redline);}
.demo-status.done{color:var(--ok);}
.demo-body{
  background:var(--dark-surface-2);
  border:1px solid var(--dark-line);
  border-radius:6px;
  padding:20px;
}
.demo-terminal{
  min-height:180px;
  font-family:var(--mono);
  font-size:13px;
  color:var(--dark-text);
  display:flex;
  flex-direction:column;
  gap:10px;
}
.demo-placeholder{color:var(--dark-text-soft); font-size:13.5px; font-family:var(--body);}
.demo-line{
  display:flex; align-items:baseline; gap:10px;
  opacity:0;
  animation:demo-line-in 0.4s ease forwards;
}
@keyframes demo-line-in{ from{opacity:0; transform:translateX(-6px);} to{opacity:1; transform:translateX(0);} }
.demo-line .sev{
  flex-shrink:0;
  font-size:10.5px;
  letter-spacing:0.06em;
  padding:2px 7px;
  border-radius:2px;
}
.sev-crit{background:rgba(200,57,31,0.18); color:#F0836E;}
.sev-high{background:rgba(216,154,62,0.18); color:var(--amber);}
.sev-med{background:rgba(76,122,94,0.18); color:#7CBF98;}
.sev-info{background:rgba(140,153,163,0.18); color:var(--dark-text-soft);}
.demo-progress-track{
  margin-top:16px;
  height:4px;
  border-radius:2px;
  background:var(--dark-line);
  overflow:hidden;
}
.demo-progress-fill{
  height:100%;
  width:0%;
  background:linear-gradient(90deg, var(--redline), var(--amber));
  transition:width 0.3s linear;
}
.demo-panel-foot{
  display:flex; gap:16px; flex-wrap:wrap;
  margin-top:20px;
}
.demo-run:disabled{opacity:0.6; cursor:default; transform:none;}

/* ---------- REVIEWS SECTION ---------- */
.review-video-block{max-width:760px; margin-bottom:64px;}
.review-video-title{
  font-family:var(--display);
  font-size:20px;
  font-weight:500;
  margin-bottom:18px;
}
.video-frame{
  position:relative;
  border-radius:8px;
  overflow:hidden;
  background:var(--dark-surface);
  box-shadow:var(--shadow-lg);
  aspect-ratio:16/9;
}
.video-frame video{width:100%; height:100%; object-fit:cover; display:block;}
.video-play-btn{
  position:absolute; inset:0;
  margin:auto;
  width:64px; height:64px;
  border-radius:50%;
  background:rgba(200,57,31,0.9);
  border:none;
  cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:transform 0.25s var(--ease), background 0.2s ease;
  animation:play-pulse 2.4s ease-in-out infinite;
}
.video-play-btn svg{width:24px; height:24px; fill:#fff; margin-left:3px;}
.video-play-btn:hover{transform:scale(1.08); background:var(--redline);}
.video-play-btn.playing{display:none; animation:none;}
@keyframes play-pulse{
  0%, 100%{ box-shadow:0 0 0 0 rgba(200,57,31,0.35); }
  50%{ box-shadow:0 0 0 14px rgba(200,57,31,0); }
}
.video-badge{
  position:absolute; top:14px; left:14px;
  font-family:var(--mono);
  font-size:10.5px;
  letter-spacing:0.08em;
  background:rgba(13,19,25,0.7);
  color:#fff;
  padding:4px 9px;
  border-radius:2px;
}
.video-note{font-family:var(--mono); font-size:11.5px; color:var(--ink-soft); margin-top:10px;}
.video-note code{background:var(--paper-raised); padding:2px 5px; border-radius:2px;}

.rate-block{
  max-width:600px;
  background:var(--paper-raised);
  border:1px solid var(--grid);
  border-radius:8px;
  padding:36px;
  margin-bottom:64px;
}
.rate-block h3{font-size:22px; margin-bottom:8px;}
.rate-sub{color:var(--ink-soft); font-size:14.5px; margin-bottom:22px;}
.review-form{display:flex; flex-direction:column; gap:16px;}
.review-form input, .review-form textarea{
  background:var(--paper);
  border:1px solid var(--grid);
  color:var(--ink);
}
.review-form textarea{min-height:90px;}
.review-form label{color:var(--ink-soft);}
.review-form .field-error{display:none;}
.review-form .field.invalid .field-error{display:block;}
.field-hint{display:block; font-family:var(--mono); font-size:11px; color:var(--ink-soft); margin-top:6px;}

/* star rating: radios in DOM order 5..1, visually reversed via row-reverse */
.star-rating{
  display:flex;
  flex-direction:row-reverse;
  justify-content:flex-end;
  gap:4px;
}
.star-rating input{position:absolute; opacity:0; width:0; height:0;}
.star-rating label{
  cursor:pointer;
  width:32px; height:32px;
  transition:transform 0.15s var(--ease);
}
.star-rating label svg{
  width:100%; height:100%;
  fill:none;
  stroke:var(--grid);
  stroke-width:1.4;
  transition:fill 0.15s ease, stroke 0.15s ease;
}
.star-rating input:checked ~ label svg,
.star-rating label:hover svg,
.star-rating label:hover ~ label svg{
  fill:var(--amber);
  stroke:var(--amber);
}
.star-rating label:hover{transform:scale(1.12);}
#starRating.invalid label svg{stroke:var(--redline);}

.submitted-reviews-head{
  display:flex; justify-content:space-between; align-items:baseline;
  margin-bottom:24px;
}
.submitted-reviews-head h3{font-size:20px;}
.review-count{font-family:var(--mono); font-size:12.5px; color:var(--ink-soft);}
.review-list{display:flex; flex-direction:column; gap:16px;}
.review-card{
  background:var(--paper-raised);
  border:1px solid var(--grid);
  border-radius:6px;
  padding:22px 24px;
  animation:fadeUp 0.5s var(--ease);
}
.review-card-top{display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:10px; flex-wrap:wrap;}
.review-card-stars{display:flex; gap:2px;}
.review-card-stars svg{width:15px; height:15px; fill:var(--grid); stroke:none;}
.review-card-stars svg.filled{fill:var(--amber);}
.review-card-date{font-family:var(--mono); font-size:11.5px; color:var(--ink-soft); white-space:nowrap;}
.review-card p.review-text{font-size:14.5px; color:var(--ink-soft); margin-bottom:12px;}
.review-card-meta{font-family:var(--mono); font-size:12px; color:var(--ink-soft); display:flex; gap:10px; flex-wrap:wrap;}
.review-card-meta strong{color:var(--ink); font-family:var(--body); font-weight:600;}
.review-empty{color:var(--ink-soft); font-size:14px; font-style:italic;}

/* ---------- SERVICE INFO MODAL ---------- */
.modal-overlay{
  position:fixed; inset:0;
  background:rgba(9,13,17,0.6);
  backdrop-filter:blur(3px);
  display:flex; align-items:center; justify-content:center;
  padding:24px;
  z-index:300;
  opacity:0;
  visibility:hidden;
  transition:opacity 0.25s ease, visibility 0.25s ease;
}
.modal-overlay.open{opacity:1; visibility:visible;}
.modal-panel{
  background:var(--paper-raised);
  color:var(--ink);
  max-width:480px;
  width:100%;
  border-radius:10px;
  padding:38px 34px;
  position:relative;
  box-shadow:var(--shadow-lg);
  transform:translateY(18px) scale(0.97);
  opacity:0;
  transition:transform 0.3s var(--ease), opacity 0.3s var(--ease);
  max-height:85vh;
  overflow-y:auto;
}
.modal-overlay.open .modal-panel{transform:translateY(0) scale(1); opacity:1;}
.modal-close{
  position:absolute; top:16px; right:16px;
  width:32px; height:32px;
  border-radius:50%;
  background:var(--paper);
  border:1px solid var(--grid);
  font-size:18px;
  line-height:1;
  cursor:pointer;
  color:var(--ink);
  transition:background 0.2s ease, transform 0.2s ease;
}
.modal-close:hover{background:var(--redline); color:#fff; transform:rotate(90deg);}
.modal-icon{
  width:44px; height:44px;
  fill:none; stroke:var(--redline); stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round;
  margin-bottom:16px;
  animation:modal-icon-in 0.5s var(--ease) 0.1s both;
}
@keyframes modal-icon-in{ from{opacity:0; transform:scale(0.6) rotate(-15deg);} to{opacity:1; transform:scale(1) rotate(0);} }
.modal-panel h3{font-size:22px; margin:10px 0 12px;}
.modal-panel p{color:var(--ink-soft); font-size:14.5px; margin-bottom:16px;}
.modal-list{display:flex; flex-direction:column; gap:8px; margin-bottom:24px;}
.modal-list li{
  font-size:13.5px;
  color:var(--ink-soft);
  padding-left:18px;
  position:relative;
}
.modal-list li::before{
  content:"";
  position:absolute; left:0; top:7px;
  width:8px; height:1.5px;
  background:var(--redline);
}

/* ---------- SOCIAL ROW (footer) ---------- */
.social-row{display:flex; gap:10px; margin-top:18px;}
.social-icon{
  width:36px; height:36px;
  border-radius:50%;
  border:1px solid var(--dark-line);
  display:flex; align-items:center; justify-content:center;
  transition:transform 0.25s var(--ease), background 0.2s ease, border-color 0.2s ease;
}
.social-icon svg{width:16px; height:16px; fill:var(--dark-text-soft); transition:fill 0.2s ease;}
.social-icon:hover{transform:translateY(-3px); background:var(--redline); border-color:var(--redline);}
.social-icon:hover svg{fill:#fff;}

/* ---------- RESPONSIVE ---------- */
@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr;}
  .stats-grid{grid-template-columns:repeat(2,1fr); row-gap:28px;}
  .tracks{grid-template-columns:1fr;}
  .method-grid{grid-template-columns:1fr 1fr;}
  .method-step{border-bottom:1px solid var(--grid);}
  .cred-row{grid-template-columns:1fr 1fr; row-gap:20px;}
  .why-choose-wrap .cred-row{grid-template-columns:1fr 1fr;}
  .testimonial-grid{grid-template-columns:1fr;}
  .contact-grid{grid-template-columns:1fr; gap:40px;}
  .form-row{grid-template-columns:1fr;}
  .footer-top{flex-direction:column;}
  .about-grid{grid-template-columns:1fr; gap:40px;}
  .about-panel{max-width:340px;}
  .other-services-grid{grid-template-columns:1fr 1fr;}
  .room-hire{grid-template-columns:1fr; padding:30px;}
  .room-hire-art{max-width:360px;}
}
@media (max-width:700px){
  .nav-links{
    display:none;
    position:absolute; top:72px; left:0; right:0;
    background:var(--paper);
    flex-direction:column;
    padding:12px 32px 24px;
    border-bottom:1px solid var(--grid);
    gap:4px;
    box-shadow:var(--shadow-md);
  }
  .nav-links.open{display:flex;}
  .nav-links a{padding:12px 0;}
  .nav-cta{display:none;}
  .burger{display:block;}
  .back-to-top{width:40px; height:40px; bottom:20px; right:20px;}
  .logo-sub{display:none;}
  .other-services-grid{grid-template-columns:1fr;}
  .testimonial-strip{padding:26px;}
  .modal-panel{padding:30px 24px;}
}