@font-face {
  font-family: "Montserrat";
  src: url("/fonts/Montserrat-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Montserrat";
  src: url("/fonts/Montserrat-Bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
:root {
  --container: 1280px;
  --gutter: 36px;
  --gap: 40px;
  --radius: var(--ps-radius-xl);
  --sectionY: 108px;

  --bg-midnight: var(--ps-midnight);
  --bg-maroon: var(--ps-maroon);
  --accent-magenta: var(--ps-magenta);
  --accent-magenta-deep: var(--ps-magenta-deep);
  --accent-magenta-soft: rgba(255, 45, 143, 0.28);
  --accent-magenta-border: rgba(255, 45, 143, 0.42);
  --accent-magenta-focus: rgba(255, 45, 143, 0.62);
  --glow-magenta: 0 0 0 1px rgba(255, 45, 143, 0.18), 0 14px 30px rgba(230, 0, 122, 0.16);
  --glow-magenta-soft: 0 0 0 1px rgba(255, 45, 143, 0.12), 0 10px 22px rgba(230, 0, 122, 0.12);

  --bg: var(--bg-midnight);
  --panel: #0b0b14;
  --panel2: #111224;
  --surface: #17182b;

  --text: var(--ps-ink);
  --muted: rgba(232, 234, 246, 0.95);
  --muted2: rgba(210, 212, 228, 0.96);

  --accent: var(--ps-red);
  --accentDeep: var(--ps-red-deep);
  --blue: var(--ps-blue);
  --cyan: var(--ps-cyan);

  --stroke: rgba(245, 247, 250, 0.10);
  --stroke2: rgba(245, 247, 250, 0.18);

  --shadow: 0 22px 60px rgba(0, 0, 0, 0.6);
  --shadow2: 0 32px 82px rgba(0, 0, 0, 0.7);
  --btnShadow: 0 16px 34px rgba(0, 0, 0, 0.5);

  --frame-radius-xs: var(--ps-radius-xs);
  --frame-radius-sm: var(--ps-radius-sm);
  --frame-radius-md: var(--ps-radius-md);
  --frame-radius-lg: var(--ps-radius-lg);
  --frame-border: rgba(245, 247, 250, 0.11);
  --frame-border-strong: rgba(245, 247, 250, 0.2);
  --frame-line: rgba(245, 247, 250, 0.14);
  --frame-surface: linear-gradient(180deg, rgba(12, 12, 20, 0.74), rgba(8, 8, 14, 0.82));
  --frame-surface-strong: linear-gradient(180deg, rgba(14, 14, 23, 0.86), rgba(9, 9, 15, 0.9));
  --frame-shadow: 0 12px 28px rgba(0, 0, 0, 0.32);
  --frame-shadow-hover: 0 18px 38px rgba(0, 0, 0, 0.42);
  --frame-fade-red: rgba(226, 64, 64, 0.14);
  --frame-fade-blue: rgba(94, 148, 246, 0.12);

  --glass: rgba(12, 12, 20, 0.72);
  --glass2: rgba(12, 12, 20, 0.5);

  --bg-shift: 0px;
  --bg-shift2: 0px;

  --fs-xs: 16px;
  --fs-sm: 18px;
  --fs-md: 20px;
  --fs-lg: 24px;
  --fs-xl: 32px;
  --lh: 1.75;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  font-family: var(--ps-font);
  font-size: 16px;
  font-weight: 400;
  line-height: var(--lh);
  color: var(--text);
  text-rendering: geometricPrecision;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body { overflow-x: hidden; }
html.no-scroll,
body.no-scroll {
  overflow: hidden;
  height: 100%;
}
html,
body {
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 45, 45, 0.78) rgba(255, 255, 255, 0.12);
}

html::-webkit-scrollbar,
body::-webkit-scrollbar {
  width: 12px;
  height: 12px;
}

html::-webkit-scrollbar-track,
body::-webkit-scrollbar-track {
  background: rgba(255, 255, 255, 0.08);
}

html::-webkit-scrollbar-thumb,
body::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, rgba(255, 45, 45, 0.95), rgba(185, 15, 31, 0.95));
  border: 2px solid rgba(6, 6, 11, 0.8);
  border-radius: 999px;
}

html::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(180deg, rgba(255, 70, 70, 1), rgba(205, 22, 40, 1));
}

button, input, textarea, select { font: inherit; }

a { color: inherit; }

html { background-color: var(--bg); }

.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: fixed;
  top: 14px;
  left: 16px;
  z-index: 1500;
  padding: 10px 14px;
  border-radius: var(--frame-radius-sm);
  border: 1px solid rgba(255, 45, 143, 0.55);
  background: linear-gradient(140deg, rgba(26, 10, 20, 0.95), rgba(8, 14, 28, 0.95));
  color: var(--text);
  text-decoration: none;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.42);
  transform: translateY(-170%);
  transition: transform 0.2s ease;
}

.skip-link:focus,
.skip-link:focus-visible {
  transform: translateY(0);
  outline: 2px solid var(--accent-magenta-focus);
  outline-offset: 2px;
}

body {
  background:
    radial-gradient(950px 520px at 12% calc(-10% + var(--bg-shift)), rgba(76, 141, 255, 0.18), transparent 62%),
    radial-gradient(920px 540px at 88% calc(8% + var(--bg-shift2)), rgba(35, 11, 16, 0.34), transparent 68%),
    radial-gradient(760px 420px at 8% calc(102% + var(--bg-shift2)), rgba(35, 11, 16, 0.22), transparent 70%),
    radial-gradient(900px 520px at 50% calc(120% + var(--bg-shift)), rgba(0, 0, 0, 0.75), transparent 60%),
    linear-gradient(180deg, var(--bg-midnight) 0%, #090913 55%, #040409 100%);
  background-color: var(--bg);
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: 0.12;
  background:
    repeating-linear-gradient(
      135deg,
      rgba(255, 255, 255, 0.08) 0px,
      rgba(255, 255, 255, 0.08) 1px,
      transparent 1px,
      transparent 120px
    ),
    repeating-linear-gradient(
      45deg,
      rgba(0, 0, 0, 0.35) 0px,
      rgba(0, 0, 0, 0.35) 2px,
      transparent 2px,
      transparent 140px
    );
  mask-image: radial-gradient(900px 600px at 20% calc(-10% + var(--bg-shift2)), rgba(0,0,0,1), transparent 70%);
}

/* Medium compact density for smaller viewports only. */
@media (max-width: 980px) {
  :root {
    --gutter: 30px;
    --gap: 34px;
    --sectionY: 96px;
    --fs-xs: 15px;
    --fs-sm: 17px;
    --fs-md: 19px;
    --fs-lg: 22px;
  }
}

@media (max-width: 720px) {
  :root {
    --gutter: 16px;
    --gap: 24px;
    --sectionY: 86px;
    --fs-xs: 14px;
    --fs-sm: 16px;
    --fs-md: 18px;
    --fs-lg: 21px;
  }
}


