/* ============ FlashGuard site — noir stylesheet ============ */
:root{
  --bg:#07100c; --bg2:#0a1611; --ink:#E8EFEA; --ink-soft:#9DB3A8; --ink-faint:#5E7469;
  --teal:#12946E; --teal-hi:#3AD6A0; --gold:#C7A85A; --red:#C63C40; --line:rgba(58,214,160,.14);
  --disp:"Fraunces",Georgia,"Times New Roman",serif;
  --body:"Archivo",-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;background:var(--bg)}
body{
  font-family:var(--body);color:var(--ink);line-height:1.6;font-size:16px;
  background:
    radial-gradient(1200px 700px at 50% -160px, rgba(18,148,110,.16), transparent 62%),
    radial-gradient(900px 900px at 90% 30%, rgba(18,148,110,.06), transparent 60%),
    var(--bg);
  overflow-x:hidden;
}
::selection{background:rgba(58,214,160,.25);color:#fff}
canvas{display:block}

/* ---------- loader ---------- */
#loader{position:fixed;inset:0;z-index:200;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;
  transition:opacity .9s ease, visibility .9s ease}
#loader.done{opacity:0;visibility:hidden;pointer-events:none}
.loader-seal{width:64px;height:64px;border-radius:50%;border:2.5px solid var(--teal-hi);display:flex;align-items:center;justify-content:center;
  font-family:var(--disp);font-weight:700;font-size:24px;color:var(--teal-hi);box-shadow:0 0 40px rgba(58,214,160,.35), inset 0 0 20px rgba(58,214,160,.15)}
.loader-name{font-family:var(--disp);font-weight:600;letter-spacing:.42em;font-size:15px;color:var(--ink);padding-left:.42em}
.loader-bar{width:180px;height:2px;background:rgba(255,255,255,.08);border-radius:2px;overflow:hidden}
.loader-bar span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--teal),var(--teal-hi));transition:width .2s ease}
.loader-pct{font-family:var(--mono);font-size:11px;color:var(--ink-faint);letter-spacing:.1em}
.loader-sub{font-family:var(--mono);font-size:10.5px;color:var(--ink-faint);letter-spacing:.16em;text-transform:uppercase}

/* ---------- ambient ---------- */
.fx-canvas{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.7;mix-blend-mode:screen}

/* ---------- nav ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;
  padding:20px clamp(18px,4vw,54px);opacity:0;transform:translateY(-10px);transition:opacity 1s ease .6s, transform 1s ease .6s}
body.loaded .nav{opacity:1;transform:none}
.nav-logo{font-family:var(--disp);font-weight:700;letter-spacing:.22em;font-size:15px}
.nav-logo span{color:var(--teal-hi)}
.nav-right{display:flex;align-items:center;gap:clamp(14px,2.4vw,30px)}
.nav-link{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--ink-soft);text-decoration:none;text-transform:uppercase;transition:color .3s}
.nav-link:hover{color:var(--teal-hi)}
.nav-cta{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--bg);background:var(--teal-hi);text-decoration:none;
  padding:9px 16px;border-radius:6px;text-transform:uppercase;font-weight:600;transition:background .3s, box-shadow .3s}
.nav-cta:hover{background:#fff;box-shadow:0 0 30px rgba(58,214,160,.4)}

/* ---------- scenes ---------- */
.scrub-section{position:relative}
.sticky{position:sticky;top:0;height:100vh;overflow:hidden}
.scene-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:1}
.vignette{position:absolute;inset:0;z-index:3;pointer-events:none;
  background:radial-gradient(120% 90% at 50% 42%, transparent 46%, rgba(3,8,6,.72) 100%)}
.vignette.soft{background:radial-gradient(130% 100% at 50% 45%, transparent 58%, rgba(3,8,6,.5) 100%)}
.section-label{position:absolute;top:clamp(88px,13vh,120px);left:0;right:0;z-index:4;text-align:center;
  font-family:var(--mono);font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--teal-hi);opacity:.8}

/* ---------- hero ---------- */
.hero-copy{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 20px}
.hero-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--teal-hi);margin-bottom:20px}
.hero-title{font-family:var(--disp);font-weight:700;font-size:clamp(52px,12vw,150px);line-height:.94;letter-spacing:-.02em;
  text-shadow:0 0 60px rgba(58,214,160,.25)}
.hero-title span{color:var(--teal-hi)}
.hero-sub{margin-top:20px;font-family:var(--disp);font-style:italic;font-size:clamp(16px,2.6vw,24px);color:var(--ink-soft)}
.scroll-cue{position:absolute;left:0;right:0;bottom:38px;z-index:4;text-align:center;opacity:0;
  font-family:var(--mono);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-faint)}
.cue-line{display:block;width:1px;height:40px;margin:0 auto 12px;background:linear-gradient(var(--teal-hi),transparent);animation:cue 2.2s ease-in-out infinite}
@keyframes cue{0%,100%{transform:scaleY(.4);opacity:.4}50%{transform:scaleY(1);opacity:1}}

/* ---------- line-crossfade sections ---------- */
.sticky.mid{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  padding:clamp(120px,18vh,170px) 24px 0;z-index:5} /* top pad clears the section label — lines can never ride under it */
.lines{position:relative;max-width:900px;height:44vh;display:flex;align-items:center;justify-content:center}
.line{position:absolute;left:0;right:0;opacity:0;font-family:var(--disp);font-weight:500;font-size:clamp(24px,4.4vw,46px);
  line-height:1.28;letter-spacing:-.01em;will-change:opacity,transform,filter}
.line.accent{color:var(--teal-hi);font-style:italic}
.line em{font-style:italic;color:var(--gold)}

/* ---------- callouts ---------- */
.callout{position:absolute;z-index:4;left:var(--x);top:var(--y);max-width:min(46vw,340px);opacity:0;will-change:opacity,transform}
.co-num{display:block;font-family:var(--disp);font-weight:700;font-size:clamp(34px,6vw,72px);line-height:1;color:var(--teal-hi);
  text-shadow:0 0 40px rgba(58,214,160,.35)}
.co-num.bad{color:#E88;font-size:clamp(22px,4vw,44px);text-shadow:0 0 40px rgba(198,60,64,.4)}
.co-label{display:block;margin-top:10px;font-family:var(--body);font-size:14px;color:var(--ink-soft);max-width:32ch}

/* ---------- reveal blocks ---------- */
.reveal{opacity:0;transform:translateY(30px);transition:opacity 1.1s cubic-bezier(.2,.7,.2,1),transform 1.1s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}
section#does,section#stats,section#open,section#rails,section#rates-f,section#audit-f,section#armor,section#zero,section#beyond,section#manual,section#partner,section#contact{
  position:relative;z-index:5;padding:clamp(90px,15vh,170px) clamp(20px,6vw,80px)}
section#rails,section#audit-f,section#zero{padding-top:clamp(40px,7vh,80px)}
section#rates-f,section#armor,section#beyond,section#manual,section#contact{padding-top:clamp(40px,7vh,80px)}

/* ---------- partner ---------- */
.partner-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:18px}
.p-card{position:relative;background:linear-gradient(160deg,#0c1a14,#081209);border:1px solid var(--line);border-radius:16px;
  padding:30px 28px 26px;display:flex;flex-direction:column;gap:12px;transition:border-color .35s,transform .35s,box-shadow .35s}
.p-card:hover{border-color:rgba(58,214,160,.45);transform:translateY(-4px);box-shadow:0 18px 50px rgba(0,0,0,.45),0 0 40px rgba(58,214,160,.12)}
.p-k{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--teal-hi)}
.p-t{font-family:var(--disp);font-weight:600;font-size:22px;line-height:1.3;letter-spacing:-.01em}
.p-d{font-size:14.5px;color:var(--ink-soft);line-height:1.6;flex:1}
.p-cta{font-family:var(--mono);font-size:13px;letter-spacing:.05em;color:var(--teal-hi);text-decoration:none;font-weight:600;
  margin-top:6px;transition:color .3s}
.p-cta:hover{color:#fff}

/* ---------- inquiry form ---------- */
.inq-form{max-width:760px;display:flex;flex-direction:column;gap:16px}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:640px){.f-row{grid-template-columns:1fr}}
.inq-form label{display:flex;flex-direction:column;gap:7px;font-family:var(--mono);font-size:11.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
.inq-form .opt{color:var(--ink-faint);letter-spacing:.06em;text-transform:none;display:inline}
.inq-form input,.inq-form select,.inq-form textarea{
  appearance:none;background:#0a1611;border:1px solid var(--line);border-radius:9px;color:var(--ink);
  font-family:var(--body);font-size:15px;padding:13px 15px;transition:border-color .3s,box-shadow .3s;width:100%}
.inq-form textarea{resize:vertical;min-height:110px;line-height:1.55}
.inq-form select{cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--teal-hi) 50%),linear-gradient(135deg,var(--teal-hi) 50%,transparent 50%);
  background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;background-size:6px 6px;background-repeat:no-repeat}
.inq-form input:focus,.inq-form select:focus,.inq-form textarea:focus{
  outline:none;border-color:var(--teal-hi);box-shadow:0 0 0 3px rgba(58,214,160,.15)}
.inq-form input::placeholder,.inq-form textarea::placeholder{color:var(--ink-faint)}
.f-actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.f-actions .open-btn{border:none;cursor:pointer;font-family:var(--mono)}
.f-actions .open-btn[disabled]{opacity:.55;cursor:wait;transform:none}
.f-status{font-family:var(--mono);font-size:13px;color:var(--teal-hi)}
.f-status.err{color:#E88}
.f-fine{font-size:12.5px;color:var(--ink-faint);line-height:1.6}
.foot-contact{font-size:13px;color:var(--ink-soft);margin-top:14px}

/* ---------- the manual (paper card in the dark) ---------- */
.paper-card{max-width:760px;margin:0 auto;background:#F1F0E7;color:#26251E;border-radius:18px;
  padding:clamp(30px,5vw,54px);box-shadow:0 0 90px rgba(58,214,160,.14), 0 30px 70px rgba(0,0,0,.55)}
.paper-kicker{font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:#0E6B5C;font-weight:600}
.paper-title{font-family:var(--disp);font-weight:600;font-size:clamp(26px,4.6vw,42px);line-height:1.2;letter-spacing:-.01em;
  margin:12px 0 14px;color:#1c1b15;font-style:italic}
.paper-sub{font-size:15.5px;color:#4A4838;line-height:1.65;margin-bottom:20px}
.paper-list{list-style:none;display:flex;flex-direction:column;gap:9px;margin-bottom:26px}
.paper-list li{position:relative;padding-left:20px;font-size:14.5px;color:#3a382c;line-height:1.55}
.paper-list li::before{content:"✓";position:absolute;left:0;color:#0E6B5C;font-weight:700}
.paper-list b{color:#1c1b15}
.paper-actions{display:flex;gap:12px;flex-wrap:wrap}
.paper-btn{display:inline-block;font-family:var(--mono);font-size:13px;letter-spacing:.05em;font-weight:600;text-decoration:none;
  color:#F6F5EC;background:#0E6B5C;padding:13px 24px;border-radius:8px;transition:background .3s,box-shadow .3s}
.paper-btn:hover{background:#0F8A75;box-shadow:0 6px 24px rgba(14,107,92,.35)}
.paper-btn.ghost{color:#0E6B5C;background:transparent;border:1.5px solid #0E6B5C}
.paper-btn.ghost:hover{background:rgba(14,107,92,.08);box-shadow:none}
.paper-note{margin-top:18px;font-size:12.5px;color:#8A8770;font-style:italic}
.rule,.open-rule{width:52px;height:2px;background:var(--teal-hi);margin:22px 0 30px;box-shadow:0 0 18px rgba(58,214,160,.5)}

.does-inner{max-width:1060px;margin:0 auto}
.does-kicker,.open-kicker{font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--teal-hi)}
.does-title,.open-title{font-family:var(--disp);font-weight:600;font-size:clamp(32px,5.5vw,60px);letter-spacing:-.015em;margin-top:12px}
.cards{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:14px;overflow:hidden}
.cards li{background:var(--bg2);padding:26px 24px 28px;display:flex;flex-direction:column;gap:8px;transition:background .4s}
.cards li:hover{background:#0c1a14}
.c-k{font-family:var(--mono);font-size:11px;color:var(--teal-hi);letter-spacing:.2em}
.c-t{font-family:var(--disp);font-weight:600;font-size:21px}
.c-d{font-size:14.5px;color:var(--ink-soft);line-height:1.55}
.c-d b,.c-list b{color:var(--ink);font-weight:600}
.c-list{list-style:none;margin-top:10px;display:flex;flex-direction:column;gap:7px}
.c-list li{position:relative;padding-left:16px;font-size:13.5px;color:var(--ink-soft);line-height:1.5}
.c-list li::before{content:"·";position:absolute;left:2px;color:var(--teal-hi);font-weight:700}
.sec-sub{color:var(--ink-soft);font-size:15.5px;max-width:64ch;margin:-8px 0 34px;line-height:1.65}
.sec-sub b{color:var(--teal-hi);font-weight:600}
.inline-link{color:var(--teal-hi);text-decoration:none;border-bottom:1px solid rgba(58,214,160,.35);transition:border-color .3s}
.inline-link:hover{border-color:var(--teal-hi)}

/* ---------- rails ---------- */
.rails-wrap{display:flex;flex-direction:column;gap:26px}
.rg-t{font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--teal-hi);margin-bottom:12px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font-family:var(--mono);font-size:12.5px;color:var(--ink);background:var(--bg2);border:1px solid var(--line);
  border-radius:999px;padding:8px 15px;transition:border-color .3s,box-shadow .3s}
.chip:hover{border-color:rgba(58,214,160,.5);box-shadow:0 0 18px rgba(58,214,160,.15)}
.chip.ghost{color:var(--ink-faint);border-style:dashed}
.rails-note{margin-top:30px;font-size:14px;color:var(--ink-faint);font-style:italic;max-width:70ch;line-height:1.6}

/* ---------- film ---------- */
section#film{position:relative;z-index:5;padding:clamp(90px,15vh,170px) clamp(20px,6vw,80px)}
.film-inner{max-width:960px;margin:0 auto;text-align:center}
.film-inner .rule{margin-inline:auto}
.film-sub{color:var(--ink-soft);font-size:15.5px;max-width:58ch;margin:0 auto 34px;line-height:1.6}
.film-frame{position:relative;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#020604;
  box-shadow:0 0 80px rgba(58,214,160,.12), 0 30px 60px rgba(0,0,0,.5)}
.film-frame video{display:block;width:100%;height:auto;aspect-ratio:16/9;background:#000}
.film-note{margin-top:16px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink-faint);text-transform:uppercase}

/* ---------- portal links ---------- */
.nav-portal{cursor:pointer}
.open-secondary{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:16px}
.open-ghost{display:inline-block;font-family:var(--mono);font-size:12.5px;letter-spacing:.06em;color:var(--teal-hi);cursor:pointer;
  border:1px solid rgba(58,214,160,.35);padding:12px 24px;border-radius:8px;text-decoration:none;transition:border-color .3s,background .3s,box-shadow .3s}
.open-ghost:hover{border-color:var(--teal-hi);background:rgba(58,214,160,.08);box-shadow:0 0 26px rgba(58,214,160,.2)}

/* ---------- stats ---------- */
.stats-inner{max-width:1060px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:clamp(24px,4vw,50px);text-align:center}
.stat{display:flex;flex-direction:column;gap:8px}
.s-n{font-family:var(--disp);font-weight:700;font-size:clamp(48px,8vw,86px);line-height:1;color:var(--teal-hi);text-shadow:0 0 40px rgba(58,214,160,.28)}
.s-l{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--ink-soft);text-transform:uppercase}

/* ---------- open / footer ---------- */
.open-inner{max-width:760px;margin:0 auto;text-align:center}
.open-line{font-family:var(--disp);font-size:clamp(18px,2.6vw,26px);color:var(--ink-soft);margin-bottom:34px;line-height:1.5}
.open-line.accent-line{color:var(--teal-hi);font-style:italic;text-shadow:0 0 30px rgba(58,214,160,.22)}
.open-btn{display:inline-block;font-family:var(--mono);font-size:14px;letter-spacing:.06em;color:var(--bg);background:var(--teal-hi);
  text-decoration:none;padding:16px 34px;border-radius:8px;font-weight:600;transition:background .3s,box-shadow .3s,transform .3s}
.open-btn:hover{background:#fff;box-shadow:0 0 44px rgba(58,214,160,.5);transform:translateY(-2px)}
.open-note{margin-top:26px;font-size:12.5px;color:var(--ink-faint);max-width:60ch;margin-inline:auto;line-height:1.6}
footer{margin-top:clamp(80px,14vh,150px);text-align:center;border-top:1px solid var(--line);padding-top:44px}
.foot-seal{width:48px;height:48px;border-radius:50%;border:2px solid var(--teal-hi);display:flex;align-items:center;justify-content:center;
  font-family:var(--disp);font-weight:700;font-size:18px;color:var(--teal-hi);margin:0 auto 16px}
.foot-name{font-family:var(--disp);font-weight:600;letter-spacing:.3em;font-size:14px;padding-left:.3em}
.foot-line{font-family:var(--disp);font-style:italic;color:var(--ink-soft);margin-top:8px;font-size:15px}
.foot-cities{font-family:var(--mono);font-size:11px;color:var(--ink-faint);letter-spacing:.06em;margin-top:18px}
.foot-legal{font-size:11px;color:var(--ink-faint);margin-top:14px;line-height:1.6}

@media (max-width:640px){
  .nav-right{gap:12px}.nav-link{display:none}
  .lines{height:52vh}.callout{max-width:70vw}
  .section-label{top:76px}
}
@media (max-height:800px){ /* short viewports: keep tall wrapped lines clear of the section label */
  .line{font-size:clamp(20px,3.6vw,38px)}
}
@media (prefers-reduced-motion:reduce){.cue-line{animation:none}}
