/* ==========================================================================
   Axxis Solutions — shared shell
   Design tokens, reset, layout primitives, nav, drawer, buttons, footer.
   Page-specific styles live in a <style> block on each page.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. DESIGN TOKENS
   -------------------------------------------------------------------------- */
:root{
  --bg:#060508;
  --bg-raise:#0b0910;
  --surface:rgba(255,255,255,.028);
  --surface-hi:rgba(255,255,255,.055);
  --line:rgba(255,255,255,.08);
  --line-hi:rgba(255,255,255,.16);

  --ink:#f6f3f5;
  --ink-2:#a9a0ac;
  --ink-3:#6b6373;

  --red:#ff3b47;
  --ember:#ff8a3d;
  --violet:#8b5cf6;
  --grad:linear-gradient(115deg,var(--red),var(--ember));

  --font-display:'Space Grotesk',system-ui,sans-serif;
  --font-body:'Inter',system-ui,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,monospace;

  --r:18px;
  --r-sm:12px;
  --ease:cubic-bezier(.22,1,.36,1);

  --gutter:clamp(20px,4vw,56px);
  --maxw:1360px;
}

/* --------------------------------------------------------------------------
   2. RESET / BASE
   -------------------------------------------------------------------------- */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

html{
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  scroll-behavior:smooth;
}

body{
  font-family:var(--font-body);
  background:var(--bg);
  color:var(--ink);
  line-height:1.65;
  overflow-x:hidden;
  font-size:16px;
}
body.is-locked{overflow:hidden}

a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
::selection{background:var(--red);color:#fff}

:focus-visible{outline:2px solid var(--ember);outline-offset:3px;border-radius:4px}

.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.skip-link{
  position:absolute;top:-100px;left:16px;z-index:10000;
  background:var(--red);color:#fff;padding:12px 20px;border-radius:0 0 8px 8px;
  font-weight:600;font-size:.9rem;transition:top .2s;
}
.skip-link:focus{top:0}

/* --------------------------------------------------------------------------
   3. LAYOUT PRIMITIVES
   -------------------------------------------------------------------------- */
.wrap{
  width:100%;
  max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
section{position:relative}
.band{padding-block:clamp(88px,11vw,160px)}

.eyebrow{
  font-family:var(--font-mono);
  font-size:.72rem;font-weight:500;
  letter-spacing:.22em;text-transform:uppercase;
  color:var(--ember);
  display:inline-flex;align-items:center;gap:12px;
  margin-bottom:22px;
}
.eyebrow::before{content:'';width:26px;height:1px;background:var(--grad)}

.h-xl{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(2.6rem,6.4vw,5.4rem);
  line-height:.98;letter-spacing:-.035em;
}
.h-lg{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(2.1rem,4.6vw,3.7rem);
  line-height:1.05;letter-spacing:-.03em;
}
.h-md{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(1.25rem,2vw,1.6rem);
  line-height:1.2;letter-spacing:-.02em;
}

.lede{
  font-size:clamp(1rem,1.35vw,1.16rem);
  color:var(--ink-2);line-height:1.75;max-width:56ch;
}

.gr{
  background:var(--grad);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
}

/* --------------------------------------------------------------------------
   4. PRELOADER
   -------------------------------------------------------------------------- */
.preloader{
  position:fixed;inset:0;z-index:9999;
  background:var(--bg);
  display:grid;place-items:center;
  transition:opacity .7s var(--ease),visibility .7s;
}
.preloader.done{opacity:0;visibility:hidden}
.pre-inner{text-align:center}
.pre-mark{width:52px;height:52px;margin:0 auto 20px;color:var(--red);animation:preSpin 1.6s var(--ease) infinite}
@keyframes preSpin{
  0%,100%{transform:rotate(0) scale(1);opacity:1}
  50%{transform:rotate(180deg) scale(.82);opacity:.5}
}
.pre-count{font-family:var(--font-mono);font-size:.8rem;letter-spacing:.2em;color:var(--ink-3)}
.pre-bar{width:150px;height:1px;margin:14px auto 0;background:var(--line);position:relative;overflow:hidden}
.pre-bar span{position:absolute;inset:0;width:0;background:var(--grad);transition:width .2s linear}

/* --------------------------------------------------------------------------
   5. CUSTOM CURSOR
   -------------------------------------------------------------------------- */
.cursor-dot,.cursor-ring{
  position:fixed;top:0;left:0;
  pointer-events:none;z-index:9000;border-radius:50%;
  will-change:transform;opacity:0;transition:opacity .3s;
}
.cursor-dot{width:6px;height:6px;background:var(--ember);margin:-3px 0 0 -3px}
.cursor-ring{
  width:36px;height:36px;
  border:1px solid rgba(255,255,255,.35);
  margin:-18px 0 0 -18px;
  transition:width .35s var(--ease),height .35s var(--ease),
             margin .35s var(--ease),border-color .35s var(--ease),
             background .35s var(--ease),opacity .3s;
}
body.cursor-ready .cursor-dot,
body.cursor-ready .cursor-ring{opacity:1}
body.cursor-hot .cursor-ring{
  width:66px;height:66px;margin:-33px 0 0 -33px;
  border-color:transparent;background:rgba(255,138,61,.13);
}
body.cursor-hot .cursor-dot{opacity:0}

/* Scroll progress */
.progress{
  position:fixed;top:0;left:0;height:2px;z-index:900;
  background:var(--grad);width:0;transition:width .1s linear;
}

/* --------------------------------------------------------------------------
   6. NAVIGATION
   -------------------------------------------------------------------------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:800;
  padding-block:18px;
  border-bottom:1px solid transparent;
  transition:padding .4s var(--ease),background .4s var(--ease),
             border-color .4s var(--ease),backdrop-filter .4s;
}
.nav.stuck{
  padding-block:11px;
  background:rgba(6,5,8,.72);
  backdrop-filter:blur(20px) saturate(1.4);
  -webkit-backdrop-filter:blur(20px) saturate(1.4);
  border-bottom-color:var(--line);
}
/* Sub-pages have no hero, so the bar is opaque from the start */
.nav.solid{
  background:rgba(6,5,8,.82);
  backdrop-filter:blur(20px) saturate(1.4);
  -webkit-backdrop-filter:blur(20px) saturate(1.4);
  border-bottom-color:var(--line);
}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px}

.brand{display:flex;align-items:center;gap:11px}
.brand-mark{width:34px;height:34px;flex-shrink:0;color:var(--red);transition:transform .6s var(--ease)}
.brand:hover .brand-mark{transform:rotate(-12deg) scale(1.08)}
.brand-name{
  font-family:var(--font-display);font-weight:700;
  font-size:1.06rem;letter-spacing:-.02em;line-height:1;
}
.brand-name small{
  display:block;font-family:var(--font-mono);font-weight:400;
  font-size:.56rem;letter-spacing:.26em;text-transform:uppercase;
  color:var(--ink-3);margin-top:3px;
}

.nav-links{display:flex;align-items:center;gap:6px;list-style:none}
.nav-links a{
  position:relative;font-size:.875rem;font-weight:450;
  color:var(--ink-2);padding:9px 15px;border-radius:50px;
  transition:color .3s var(--ease),background .3s var(--ease);
}
.nav-links a:hover{color:var(--ink);background:var(--surface-hi)}
.nav-links a.current{color:var(--ink)}

.nav-cta{
  display:inline-flex;align-items:center;gap:8px;
  padding:10px 20px !important;
  background:var(--grad);color:#fff !important;font-weight:600;
  border-radius:50px;
  box-shadow:0 4px 22px rgba(255,59,71,.26);
  transition:transform .35s var(--ease),box-shadow .35s var(--ease);
}
.nav-cta:hover{
  transform:translateY(-2px);
  box-shadow:0 10px 34px rgba(255,59,71,.4);
  background:var(--grad) !important;
}

.burger{
  display:none;width:42px;height:42px;
  border:1px solid var(--line);border-radius:11px;
  place-items:center;transition:border-color .3s,background .3s;
}
.burger:hover{border-color:var(--line-hi);background:var(--surface)}
.burger span{
  display:block;width:17px;height:1.5px;background:var(--ink);
  border-radius:2px;transition:transform .4s var(--ease),opacity .3s;
}
.burger span+span{margin-top:4.5px}
.burger.open span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.burger.open span:nth-child(2){opacity:0}
.burger.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* Mobile drawer */
.drawer{
  position:fixed;inset:0;z-index:790;
  background:rgba(6,5,8,.97);
  backdrop-filter:blur(26px);-webkit-backdrop-filter:blur(26px);
  display:flex;flex-direction:column;justify-content:center;
  padding:96px var(--gutter) 40px;
  transform:translateY(-100%);
  transition:transform .65s var(--ease);
}
.drawer.open{transform:translateY(0)}
.drawer a{
  font-family:var(--font-display);
  font-size:clamp(1.9rem,8vw,2.8rem);font-weight:600;
  letter-spacing:-.03em;padding-block:14px;
  border-bottom:1px solid var(--line);
  display:flex;align-items:baseline;gap:14px;
  color:var(--ink-2);
  transition:color .3s,padding-left .4s var(--ease);
}
.drawer a:hover{color:var(--ink);padding-left:10px}
.drawer a i{font-family:var(--font-mono);font-style:normal;font-size:.62rem;color:var(--ember);letter-spacing:.1em}
.drawer-foot{margin-top:36px;font-family:var(--font-mono);font-size:.76rem;color:var(--ink-3);line-height:2}
.drawer-foot a{font-family:var(--font-mono);font-size:.76rem;border:0;padding:0;display:inline;color:var(--ink-2)}

/* --------------------------------------------------------------------------
   7. BUTTONS
   -------------------------------------------------------------------------- */
.btn{
  position:relative;
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:15px 28px;border-radius:50px;
  font-size:.925rem;font-weight:600;letter-spacing:-.005em;white-space:nowrap;
  transition:transform .45s var(--ease),box-shadow .45s var(--ease),
             background .35s var(--ease),border-color .35s var(--ease);
  will-change:transform;
}
.btn svg{width:17px;height:17px;flex-shrink:0;transition:transform .4s var(--ease)}
.btn:hover svg{transform:translateX(4px)}

.btn-primary{background:var(--grad);color:#fff;box-shadow:0 6px 28px rgba(255,59,71,.3)}
.btn-primary:hover{box-shadow:0 14px 44px rgba(255,59,71,.44)}

.btn-ghost{
  background:var(--surface);border:1px solid var(--line);
  color:var(--ink);backdrop-filter:blur(10px);
}
.btn-ghost:hover{background:var(--surface-hi);border-color:var(--line-hi)}

.btn-row{display:flex;flex-wrap:wrap;gap:14px}

/* --------------------------------------------------------------------------
   8. CHIPS / STATUS PILLS
   -------------------------------------------------------------------------- */
.chip{
  display:inline-flex;align-items:center;gap:8px;
  padding:7px 15px;border:1px solid var(--line);
  background:var(--surface);border-radius:50px;
  font-family:var(--font-mono);font-size:.7rem;
  letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);
}
.chip svg{width:14px;height:14px}
.chip.live{color:#31d158;border-color:rgba(49,209,88,.28);background:rgba(49,209,88,.07)}
.chip.soon{color:var(--ember);border-color:rgba(255,138,61,.28);background:rgba(255,138,61,.07)}

.blip{
  width:7px;height:7px;border-radius:50%;background:#31d158;
  box-shadow:0 0 0 0 rgba(49,209,88,.65);
  animation:blip 2.4s ease-out infinite;flex-shrink:0;
}
@keyframes blip{
  0%{box-shadow:0 0 0 0 rgba(49,209,88,.6)}
  70%{box-shadow:0 0 0 9px rgba(49,209,88,0)}
  100%{box-shadow:0 0 0 0 rgba(49,209,88,0)}
}

/* --------------------------------------------------------------------------
   9. PAGE HERO (sub-pages)
   -------------------------------------------------------------------------- */
.page-hero{
  position:relative;
  padding-block:clamp(130px,15vw,180px) clamp(50px,6vw,80px);
  overflow:hidden;
}
.page-hero::before{
  content:'';position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(56% 60% at 76% 24%,rgba(255,59,71,.15),transparent 70%),
    radial-gradient(46% 50% at 14% 78%,rgba(139,92,246,.12),transparent 70%);
}
.page-hero::after{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:
    linear-gradient(rgba(255,255,255,.022) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.022) 1px,transparent 1px);
  background-size:72px 72px;
  mask-image:radial-gradient(100% 80% at 50% 30%,#000,transparent 76%);
  -webkit-mask-image:radial-gradient(100% 80% at 50% 30%,#000,transparent 76%);
}

.crumb{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--font-mono);font-size:.7rem;
  letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-3);margin-bottom:26px;
}
.crumb a{color:var(--ink-2);transition:color .3s}
.crumb a:hover{color:var(--ember)}
.crumb svg{width:12px;height:12px}

/* --------------------------------------------------------------------------
   10. LONG-FORM PROSE (legal pages, case studies)
   -------------------------------------------------------------------------- */
.prose{max-width:74ch}
.prose h2{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(1.4rem,2.6vw,1.95rem);
  letter-spacing:-.028em;line-height:1.2;
  margin:52px 0 16px;
}
.prose h2:first-child{margin-top:0}
.prose h3{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(1.08rem,1.7vw,1.25rem);
  letter-spacing:-.02em;margin:32px 0 12px;
}
.prose p{color:var(--ink-2);margin-bottom:16px;line-height:1.8}
.prose ul,.prose ol{color:var(--ink-2);margin:0 0 18px 22px;line-height:1.8}
.prose li{margin-bottom:9px}
.prose li::marker{color:var(--red)}
.prose a{color:var(--ember);text-decoration:underline;text-underline-offset:3px}
.prose a:hover{color:var(--ink)}
.prose strong{color:var(--ink);font-weight:600}
.prose hr{border:0;border-top:1px solid var(--line);margin:44px 0}
.prose code{
  font-family:var(--font-mono);font-size:.86em;
  background:var(--surface-hi);border:1px solid var(--line);
  padding:2px 7px;border-radius:6px;color:var(--ember);
}
.prose blockquote{
  border-left:2px solid var(--red);
  padding-left:22px;margin:26px 0;
  color:var(--ink-2);font-style:italic;
}

.updated{
  font-family:var(--font-mono);font-size:.72rem;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-3);
  padding:12px 18px;border:1px solid var(--line);
  border-radius:var(--r-sm);background:var(--surface);
  display:inline-block;margin-bottom:44px;
}

/* --------------------------------------------------------------------------
   11. BIG CTA
   -------------------------------------------------------------------------- */
.mega{
  position:relative;text-align:center;
  padding-block:clamp(90px,12vw,160px);
  border-top:1px solid var(--line);overflow:hidden;
}
.mega::before{
  content:'';position:absolute;inset:0;z-index:-1;
  background:radial-gradient(58% 100% at 50% 100%,rgba(255,59,71,.16),transparent 68%);
}
.mega h2{
  font-family:var(--font-display);
  font-size:clamp(2.4rem,7.5vw,6rem);font-weight:600;
  line-height:.96;letter-spacing:-.045em;margin-bottom:24px;
}
.mega p{
  color:var(--ink-2);font-size:clamp(1rem,1.4vw,1.14rem);
  max-width:50ch;margin:0 auto 40px;
}
.mega .btn-row{justify-content:center}

/* --------------------------------------------------------------------------
   12. FOOTER
   -------------------------------------------------------------------------- */
.footer{
  border-top:1px solid var(--line);
  background:var(--bg-raise);
  padding-block:64px 30px;
}
.footer-grid{
  display:grid;grid-template-columns:2.2fr 1fr 1fr 1fr;
  gap:clamp(30px,4vw,54px);margin-bottom:54px;
}
.footer-brand p{
  font-size:.895rem;color:var(--ink-2);
  line-height:1.7;margin-top:18px;max-width:34ch;
}
.footer h4{
  font-family:var(--font-mono);font-size:.66rem;font-weight:500;
  letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-3);margin-bottom:20px;
}
.footer-links{list-style:none}
.footer-links li{margin-bottom:11px}
.footer-links a{
  font-size:.885rem;color:var(--ink-2);
  transition:color .3s,padding-left .35s var(--ease);
  display:inline-block;
}
.footer-links a:hover{color:var(--ember);padding-left:5px}

.footer-bottom{
  border-top:1px solid var(--line);padding-top:28px;
  display:flex;align-items:center;justify-content:space-between;
  gap:20px;flex-wrap:wrap;
}
.footer-bottom p{
  font-family:var(--font-mono);font-size:.72rem;
  color:var(--ink-3);letter-spacing:.04em;
}
.socials{display:flex;gap:10px}
.social{
  width:38px;height:38px;
  border:1px solid var(--line);border-radius:11px;
  display:grid;place-items:center;color:var(--ink-3);
  transition:color .35s,border-color .35s,transform .35s var(--ease),background .35s;
}
.social svg{width:16px;height:16px}
.social:hover{
  color:var(--ink);border-color:var(--line-hi);
  background:var(--surface-hi);transform:translateY(-3px);
}

/* --------------------------------------------------------------------------
   13. SCROLL REVEAL
   -------------------------------------------------------------------------- */
.rv{
  opacity:0;transform:translateY(30px);
  transition:opacity .85s var(--ease),transform .85s var(--ease);
}
.rv.in{opacity:1;transform:none}

/* --------------------------------------------------------------------------
   14. RESPONSIVE SHELL
   -------------------------------------------------------------------------- */
@media(max-width:1080px){
  .footer-grid{grid-template-columns:1fr 1fr;gap:38px}
}
@media(max-width:860px){
  .nav-links{display:none}
  .burger{display:grid}
}
@media(max-width:620px){
  .footer-grid{grid-template-columns:1fr;gap:34px}
  .footer-bottom{flex-direction:column;text-align:center}
  .btn-row .btn{flex:1 1 100%}
}

/* --------------------------------------------------------------------------
   15. REDUCED MOTION / TOUCH
   -------------------------------------------------------------------------- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  .rv{opacity:1;transform:none}
  .cursor-dot,.cursor-ring{display:none}
}
@media(hover:none){
  .cursor-dot,.cursor-ring{display:none !important}
}
