/* ==========================================================================
   decryptedsys.com
   Palette carried from the WordPress site: navy #141D2B, red #D60000,
   white headings. Heebo for display, Inter for body.
   ========================================================================== */

:root{
  --navy:#141D2B;
  --navy-2:#1A2436;
  --navy-3:#0E1520;
  --navy-4:#223049;
  --red:#D60000;
  --red-hot:#F01414;
  --white:#FFFFFF;
  --text:#A3AFC2;
  --text-dim:#75839A;
  --line:rgba(255,255,255,.10);
  --line-soft:rgba(255,255,255,.06);
  --ok:#3DD68C;
  --err:#FF7A70;

  --display:'Heebo',system-ui,sans-serif;
  --body:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;

  --gutter:clamp(20px,5vw,72px);
  --measure:1200px;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}

body{
  background:var(--navy);
  color:var(--text);
  font-family:var(--body);
  font-size:clamp(.98rem,.95rem + .2vw,1.06rem);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{max-width:100%;height:auto;display:block}
::selection{background:var(--red);color:#fff}
:focus-visible{outline:2px solid var(--red-hot);outline-offset:3px;border-radius:2px}

a{color:var(--white);text-decoration:none;border-bottom:1px solid rgba(214,0,0,.5);transition:color .18s,border-color .18s}
a:hover{color:var(--red-hot);border-bottom-color:var(--red-hot)}

.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--red);color:#fff;padding:.7em 1.2em;border:0}
.skip:focus{left:8px;top:8px}

.wrap{max-width:var(--measure);margin:0 auto;padding-inline:var(--gutter)}
.narrow{max-width:820px}

h1,h2,h3{font-family:var(--display);color:var(--white);font-weight:700;line-height:1.1;letter-spacing:-.02em}

.eyebrow{
  font-family:var(--body);font-size:.7rem;font-weight:600;
  letter-spacing:.2em;text-transform:uppercase;color:var(--red-hot);display:block;
}

/* ==========================================================================
   HEADER
   ========================================================================== */
.site-head{
  position:sticky;top:0;z-index:50;
  background:rgba(20,29,43,.86);
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid var(--line-soft);
}
.site-head__in{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding-block:.9rem}
.site-head a{border:0}
.site-head__logo{width:clamp(150px,18vw,190px)}
.site-nav{display:flex;align-items:center;gap:1.7rem;font-size:.85rem;font-weight:500}
.site-nav a{color:var(--text)}
.site-nav a:hover{color:var(--white)}
.site-nav .btn-sm{
  background:var(--red);color:#fff;border:0;font-family:var(--body);
  font-size:.78rem;font-weight:600;letter-spacing:.06em;
  padding:.65em 1.3em;border-radius:3px;cursor:pointer;transition:background .18s;
}
.site-nav .btn-sm:hover{background:var(--red-hot)}
@media (max-width:760px){ .site-nav a:not(.keep){display:none} }

/* ==========================================================================
   HERO
   ========================================================================== */
.hero{position:relative;isolation:isolate;overflow:hidden;padding-block:clamp(72px,13vw,160px)}
.hero__bg{position:absolute;inset:0;z-index:-2}
.hero__bg img{width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.hero__veil{
  position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(90deg,rgba(20,29,43,.94) 0%,rgba(20,29,43,.78) 45%,rgba(20,29,43,.45) 100%),
    linear-gradient(0deg,var(--navy) 0%,rgba(20,29,43,0) 32%);
}
.hero h1{font-size:clamp(2.3rem,1.4rem + 4vw,4.2rem);max-width:16ch}
.hero__sub{margin-top:1.5rem;max-width:52ch;font-size:clamp(1.02rem,.98rem + .35vw,1.22rem);color:#C4CEDC}
.hero__cta{margin-top:2.2rem;display:flex;flex-wrap:wrap;gap:1rem}

.btn{
  font-family:var(--body);font-size:.82rem;font-weight:600;letter-spacing:.08em;
  background:var(--red);color:#fff;border:1px solid var(--red);border-radius:3px;
  padding:.95em 2em;cursor:pointer;transition:background .18s,border-color .18s,transform .1s;
}
.btn:hover:not(:disabled){background:var(--red-hot);border-color:var(--red-hot)}
.btn:active:not(:disabled){transform:translateY(1px)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn--ghost{background:transparent;color:var(--white);border-color:var(--line)}
/* Needs :not(:disabled) to match the specificity of .btn:hover:not(:disabled),
   which would otherwise repaint the background red. The explicit colour is for
   the global a:hover rule, which outranks .btn--ghost on its own and turned the
   label red as well. Together those two gave red text on a red fill. */
.btn--ghost:hover:not(:disabled){
  background:rgba(255,255,255,.08);
  border-color:var(--white);
  color:var(--white);
}
.btn__spin{display:none;width:.8em;height:.8em;margin-right:.55em;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}
.is-sending .btn__spin{display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}

/* ==========================================================================
   SECTIONS
   ========================================================================== */
.band{padding-block:clamp(56px,8vw,110px);border-top:1px solid var(--line-soft)}
.band--sunk{background:var(--navy-3)}
.band__head{max-width:760px}
.band__head h2{font-size:clamp(1.7rem,1.25rem + 1.9vw,2.7rem);margin-top:.8rem}
.band__head p{margin-top:1.1rem;max-width:60ch}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(26px,4vw,64px);align-items:center}
@media (max-width:880px){ .split{grid-template-columns:minmax(0,1fr)} }

/* discipline cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:clamp(14px,2vw,22px);margin-top:clamp(28px,4vw,48px)}
.card{
  background:var(--navy-2);border:1px solid var(--line);border-radius:4px;
  padding:clamp(20px,2.6vw,30px);
  display:flex;flex-direction:column;
  transition:border-color .2s,transform .2s;
}
.card:hover{border-color:rgba(214,0,0,.55);transform:translateY(-2px)}
.card h3{font-size:1.16rem;margin-bottom:.8rem}
.card p{font-size:.95rem;flex:1}
.card .tags{
  margin-top:1.3rem;padding-top:1rem;border-top:1px solid var(--line-soft);
  font-size:.68rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--red-hot);
}

/* capability grid */
.caps{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:clamp(20px,3vw,38px);margin-top:clamp(28px,4vw,48px)}
.cap{display:grid;grid-template-columns:auto 1fr;gap:1.1rem;align-items:start}
.cap__icon{
  width:40px;height:40px;border-radius:50%;background:var(--red);
  display:grid;place-items:center;color:#fff;flex:0 0 auto;
}
.cap h3{font-size:1.02rem;margin-bottom:.4rem}
.cap p{font-size:.93rem}

/* metrics over the track photo */
.showcase{position:relative;isolation:isolate;overflow:hidden;padding-block:clamp(56px,8vw,110px)}
.showcase__bg{position:absolute;inset:0;z-index:-2}
.showcase__bg img{width:100%;height:100%;object-fit:cover;object-position:50% 55%}
.showcase__veil{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(14,21,32,.92) 0%,rgba(14,21,32,.55) 55%,rgba(14,21,32,.75) 100%)}
.showcase__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:clamp(26px,4vw,60px);align-items:center}
@media (max-width:880px){ .showcase__grid{grid-template-columns:minmax(0,1fr)} }
.metrics{background:rgba(20,29,43,.92);border:1px solid var(--line);border-radius:4px;padding:clamp(20px,2.6vw,30px);backdrop-filter:blur(6px)}
.metrics h3{font-size:1.2rem;margin-bottom:.5rem}
.metrics > p{font-size:.92rem;margin-bottom:1.2rem}
.metrics ul{list-style:none}
.metrics li{display:flex;gap:.8rem;align-items:flex-start;padding:.6rem 0;border-top:1px solid var(--line-soft);font-size:.93rem;color:var(--white)}
.metrics li:first-of-type{border-top:0}
.metrics li b{color:var(--red-hot);font-weight:700;flex:0 0 auto}
.caption{margin-top:1.2rem;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim)}

figure.shot{border-radius:4px;overflow:hidden;border:1px solid var(--line);background:var(--navy-2)}
figure.shot img{width:100%;height:100%;object-fit:cover}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(10px,1.4vw,16px);margin-top:clamp(14px,2vw,20px)}
.tiles figure.shot img{aspect-ratio:16/10}

/* statement */
.statement{text-align:center}
.statement h2{font-size:clamp(1.5rem,1.1rem + 2vw,2.4rem);max-width:22ch;margin:.9rem auto 0}
.statement p{margin:1.4rem auto 0;max-width:52ch}
.statement .btn{margin-top:2rem}

/* ==========================================================================
   CONTACT MODAL
   ========================================================================== */
.modal{
  margin:auto;                 /* the *{margin:0} reset kills the UA centring */
  padding:0;border:1px solid var(--line);border-radius:4px;
  background:var(--navy-2);color:var(--text);
  width:min(600px,calc(100vw - 2rem));
  max-height:min(88svh,880px);overflow:auto;overscroll-behavior:contain;
  box-shadow:0 40px 90px -30px rgba(0,0,0,.85);
}
.modal::backdrop{background:rgba(8,12,18,.76);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.modal__inner{padding:clamp(22px,3.2vw,36px)}
.modal__head{display:flex;align-items:flex-start;justify-content:space-between;gap:1.4rem;margin-bottom:1rem}
.modal__head h2{font-size:clamp(1.35rem,1.1rem + 1vw,1.8rem);margin-top:.45rem}
.modal__close{
  flex:0 0 auto;background:none;border:1px solid var(--line);border-radius:3px;
  color:var(--text);width:36px;height:36px;display:grid;place-items:center;cursor:pointer;
  transition:border-color .18s,color .18s;
}
.modal__close:hover{border-color:var(--red-hot);color:var(--red-hot)}
.modal__lede{margin-bottom:1.5rem;font-size:.97rem}
.modal[open]{animation:modal-in .22s ease-out}
@keyframes modal-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
html.modal-open,body.modal-open{overflow:hidden}
@media (max-width:560px){
  .modal{width:100vw;max-width:100vw;height:100svh;max-height:100svh;border-radius:0;border-inline:0}
  .modal__inner{padding:20px 18px 30px}
}

.field + .field{margin-top:1.05rem}
.field label{display:block;font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--white);margin-bottom:.45rem}
.field .req{color:var(--red-hot)}
.field input,.field textarea{
  width:100%;font-family:var(--body);font-size:1rem;color:var(--white);
  background:var(--navy);border:1px solid var(--line);border-radius:3px;
  padding:.7em .85em;transition:border-color .16s,box-shadow .16s;
}
.field textarea{min-height:6.4em;resize:vertical;line-height:1.6}
.field input:hover,.field textarea:hover{border-color:rgba(255,255,255,.22)}
.field input:focus,.field textarea:focus{outline:0;border-color:var(--red);box-shadow:0 0 0 3px rgba(214,0,0,.16)}
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"]{border-color:var(--err)}
.field__err{display:none;margin-top:.35rem;font-size:.85rem;color:var(--err)}
.field__err.is-shown{display:block}
.counter{float:right;font-size:.66rem;color:var(--text-dim);letter-spacing:.06em;font-weight:400}
.counter.is-near{color:var(--err)}
.trap{display:none}
.turnstile-slot{margin-top:1.1rem;min-height:65px}
.form-actions{margin-top:1.2rem;display:flex;flex-wrap:wrap;align-items:center;gap:1rem}
.form-status{font-size:.9rem;line-height:1.45}
.form-status:empty{display:none}
.form-status.is-err{color:var(--err)}
.form-priv{margin-top:1.2rem;padding-top:1rem;border-top:1px solid var(--line-soft);font-size:.76rem;line-height:1.6;color:var(--text-dim)}
.sent{display:none;text-align:center;padding:clamp(26px,4vw,48px) 1rem}
.sent.is-shown{display:block}
.sent__mark{width:44px;height:44px;margin:0 auto 1.1rem;border-radius:50%;border:1px solid var(--red);color:var(--red-hot);display:grid;place-items:center}
.sent h3{font-size:1.3rem;margin-bottom:.6rem}
.sent p{max-width:38ch;margin-inline:auto}
.sent button{margin-top:1.5rem;background:none;border:1px solid var(--line);font-family:var(--body);font-size:.74rem;font-weight:600;letter-spacing:.08em;color:var(--white);border-radius:3px;padding:.72em 1.4em;cursor:pointer}
.sent button:hover{border-color:var(--red-hot);color:var(--red-hot)}
.form-card.is-sent .form-live{display:none}

/* ==========================================================================
   FOOTER + 404
   ========================================================================== */
.site-foot{border-top:1px solid var(--line-soft);background:var(--navy-3);padding-block:clamp(34px,4.5vw,58px)}
.site-foot__in{display:flex;flex-wrap:wrap;gap:1.4rem 2.4rem;justify-content:space-between;align-items:center}
.site-foot img{width:170px;opacity:.9}
.site-foot nav{display:flex;gap:1.5rem;font-size:.85rem}
.site-foot nav a,.site-foot nav button{color:var(--text);border:0;background:none;font:inherit;cursor:pointer;padding:0}
.site-foot nav a:hover,.site-foot nav button:hover{color:var(--red-hot)}
.legal{margin-top:1.8rem;padding-top:1.2rem;border-top:1px solid var(--line-soft);font-size:.78rem;color:var(--text-dim)}

.notfound{min-height:70svh;display:grid;place-items:center;text-align:center}
.notfound__code{font-family:var(--display);font-size:clamp(3rem,8vw,5.5rem);color:var(--red);line-height:1;font-weight:800}
.notfound h1{font-size:clamp(1.3rem,1rem + 1.4vw,2rem);margin-top:.9rem}
.notfound p{margin:.9rem auto 0;max-width:42ch}
.notfound .backlink{display:inline-block;margin-top:1.8rem;border:1px solid var(--line);border-radius:3px;font-size:.76rem;font-weight:600;letter-spacing:.08em;color:var(--white);padding:.8em 1.6em}
.notfound .backlink:hover{border-color:var(--red-hot);color:var(--red-hot)}

/* reveal: visible by default, JS opts into hiding */
html.js-reveal .reveal{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}
html.js-reveal .reveal.is-in{opacity:1;transform:none}

[id]{scroll-margin-top:5.5rem}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  html.js-reveal .reveal{opacity:1;transform:none}
}

/* spacing utilities, kept out of inline styles so the CSP stays strict */
.mt-sm{margin-top:1.1rem}
.mt-md{margin-top:1.2rem}
.mt-lg{margin-top:1.6rem}
.metrics li span{color:var(--text)}
