/* FIRSTWAY 5.29 · Luminous technology surfaces. Readable without JavaScript. */
:root {
  --fx-blue: #3c6dcf;
  --fx-cyan: #289caf;
  --fx-lilac: #937bcf;
  --fx-curve: cubic-bezier(.2,.7,.2,1);
}
body.app-body,body.auth-body,body.fw-site,body.firstway-investor,body.fw-donate-body {
  background-image: radial-gradient(ellipse at 94% 5%,rgba(141,208,233,.24),transparent 43%),radial-gradient(ellipse at 5% 20%,rgba(202,192,243,.22),transparent 36%) !important;
}
/* Glass-like depth without filtering text or adding layers above controls. */
:where(.topbar,.fw-header-inner,.workspace-bar) { backdrop-filter: blur(16px) saturate(1.08); }
:where(.cockpit-hero.tech-cockpit-hero,.ai-hero,.module-banner,.hero-panel,.finance-hero,.org-command-hero,.mail-hero) {
  background: radial-gradient(ellipse at 90% 16%,rgba(153,197,242,.3),transparent 60%),radial-gradient(ellipse at 50% 100%,rgba(198,189,241,.17),transparent 55%),linear-gradient(115deg,#fff,#f1f8fc) !important;
  box-shadow: 0 20px 65px rgba(62,102,158,.1),inset 0 1px 0 #fff !important;
  border-color: #c8deee !important;
}
.fw-fx-hero { position: relative; isolation: isolate; }
.fw-fx-orbits {
  position: absolute; right: 0; top: 0; bottom: 0; width: min(52%,620px);
  z-index: -1; overflow: hidden; border-radius: inherit; pointer-events: none;
  contain: layout paint; opacity: .65;
}
.fw-fx-orbits::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background-image: linear-gradient(rgba(107,153,190,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(107,153,190,.07) 1px,transparent 1px);
  background-size: 38px 38px; mask-image: radial-gradient(ellipse at 85% 50%,#000,transparent 73%);
}
.fw-fx-ring {
  position: absolute; right: -85px; top: calc(50% - 190px); width: 380px; height: 380px;
  border: 1px solid rgba(81,133,205,.22); border-radius: 50%;
  box-shadow: 0 0 0 18px rgba(116,171,218,.035),inset 0 0 30px rgba(96,169,205,.04);
  animation: fw-fx-orbit 24s linear infinite; animation-play-state: paused;
}
.fw-fx-ring::before {
  content: ''; position: absolute; left: 46px; top: 46px; width: 7px; height: 7px;
  border-radius: 50%; background: #5b97bd;
  box-shadow: 0 0 0 5px rgba(84,153,189,.1),0 0 16px rgba(85,173,208,.3);
}
.fw-fx-ring-2 { width: 280px; height: 280px; top: calc(50% - 140px); right: -35px; animation-direction: reverse; animation-duration: 18s; border-color: rgba(134,106,193,.23); }
.fw-fx-ring-2::before { left: 35px; top: 35px; background: #9a80c3; box-shadow: 0 0 0 5px rgba(151,117,207,.09); }
.fw-fx-ring-3 { width: 480px; height: 480px; right: -135px; top: calc(50% - 240px); animation-duration: 32s; border-style: dashed; border-color: rgba(106,175,193,.22); }
.fw-fx-ring-3::before { left: 63px; top: 63px; width: 5px; height: 5px; }
.fw-fx-energy {
  position: absolute; inset: 10% -15% 10% 30%; border-radius: 50%;
  background: radial-gradient(ellipse,rgba(132,200,228,.2),rgba(177,160,225,.08) 45%,transparent 70%);
  animation: fw-fx-energy 9s ease-in-out infinite alternate; animation-play-state: paused;
}
html[data-fw-motion=on] .fw-fx-hero.fw-fx-visible :is(.fw-fx-ring,.fw-fx-energy) { animation-play-state: running; }
/* Cards get a faint perimeter and a light streak, with no changes to their content. */
.fw-fx-card { position: relative; isolation: isolate; transition: translate .25s var(--fx-curve),box-shadow .25s ease,border-color .25s ease; }
.fw-fx-card > .fw-fx-edge {
  position: absolute; inset: 0; border-radius: inherit; pointer-events: none; overflow: hidden; z-index: -1;
  display: block; width: auto; height: auto; margin: 0; padding: 0;
  background: none !important; box-shadow: none !important;
  border: 1px solid rgba(122,177,215,.1);
}
.fw-fx-edge::after {
  content: ''; position: absolute; inset: 0; border-radius: inherit;
  background: linear-gradient(110deg,transparent 30%,rgba(91,169,205,.09) 48%,rgba(158,130,218,.045) 53%,transparent 69%);
  transform: translateX(-110%); animation: fw-fx-trace 8s var(--fx-curve) infinite;
  animation-play-state: paused;
}
html[data-fw-motion=on] .fw-fx-card.fw-fx-visible .fw-fx-edge::after { animation-play-state: running; }
.fw-fx-delay-1 .fw-fx-edge::after { animation-delay: -2s; }
.fw-fx-delay-2 .fw-fx-edge::after { animation-delay: -4s; }
.fw-fx-delay-3 .fw-fx-edge::after { animation-delay: -6s; }
html[data-fw-motion=on] .fw-fx-card.fw-fx-visible {
  animation: fw-fx-materialize .65s var(--fx-curve) backwards;
}
html[data-fw-motion=on] .fw-fx-card.fw-fx-delay-1 { animation-delay: .04s; }
html[data-fw-motion=on] .fw-fx-card.fw-fx-delay-2 { animation-delay: .08s; }
html[data-fw-motion=on] .fw-fx-card.fw-fx-delay-3 { animation-delay: .12s; }
html[data-fw-motion=on] :is(.auth-core,.forgeai-orb,.tech-system-card,.orbit-core) {
  animation: fw-fx-float 6s ease-in-out infinite !important;
}
html[data-fw-motion=on] :is(.auth-orbit,.fw-ai-orbit span,.fw-ai-orbit i,.org-core-ring) {
  animation-iteration-count: infinite !important; animation-duration: 18s !important;
}
/* Interactive transitions are limited to pointing devices, and avoid form panels. */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  html[data-fw-motion=on] .fw-fx-card:hover {
    translate: 0 -5px;
    border-color: #8eb6d4 !important;
    box-shadow: 0 17px 38px rgba(57,102,151,.13),0 0 0 1px rgba(127,186,224,.2) !important;
    transition: translate .25s var(--fx-curve),box-shadow .25s ease,border-color .25s ease;
  }
  html[data-fw-motion=on] :is(.button.primary,.fw-btn-primary,.forgeai-send,.hero-cta):hover:not(:disabled) {
    translate: 0 -2px; scale: 1.015;
    box-shadow: 0 9px 28px rgba(46,113,185,.26),0 0 0 4px rgba(70,146,210,.08) !important;
  }
  html[data-fw-motion=on] .nav-link:hover .nav-icon { rotate: -6deg; scale: 1.1; transition: rotate .22s ease,scale .22s ease; }
}
html[data-fw-motion=on] :is(.button.primary,.fw-btn-primary,.forgeai-send,.hero-cta):focus-visible {
  box-shadow: 0 0 0 5px rgba(76,132,205,.13) !important;
}
/* The pause control participates in navigation; it never intercepts a form submit. */
button.fw-fx-toggle {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px; flex: 0 0 auto;
  min-width: 40px; min-height: 40px; padding: 9px 11px; margin: 0;
  background: #f7fbff !important; color: #375f7a !important;
  border: 1px solid #c3d9e9 !important; border-radius: 12px;
  font: 650 12px/1.2 system-ui,sans-serif; box-shadow: 0 3px 12px rgba(44,85,128,.06);
  cursor: pointer; white-space: nowrap;
}
button.fw-fx-toggle[aria-pressed=true] { background: linear-gradient(120deg,#edf8fc,#f3effd) !important; }
button.fw-fx-toggle:focus-visible { outline: 3px solid #315fd1; outline-offset: 3px; }
button.fw-fx-toggle:disabled { opacity: 1; color: #576d80 !important; background: #f1f5fa !important; cursor: default; }
.fw-fx-toggle-icon { font-size: 20px; line-height: 1; }
.topbar-actions .fw-fx-toggle-label,.fw-header-actions .fw-fx-toggle-label { display: none; }
button.fw-fx-toggle-floating { position: fixed; right: 18px; top: 16px; z-index: 400; }
.auth-foot .fw-fx-toggle { display: flex; margin: 14px auto 0; }
.auth-recovery .brand { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.clubdata-trust-card .fw-fx-toggle { margin-top: 10px; }
.fw-donate-body .top { flex-wrap: wrap; }
.fw-donate-body .top .back { margin-left: auto; }
.firstway-investor .nav nav { gap: clamp(10px,2vw,28px); }
/* Pausing hides no content and never changes loading or payment status. */
html[data-fw-motion=off] :is(.fw-fx-card,.fw-fx-ring,.fw-fx-energy,.auth-core,.forgeai-orb,.tech-system-card,.orbit-core,.auth-orbit,.fw-ai-orbit,.org-core-ring),
html[data-fw-motion=off] .fw-fx-edge::after,
html[data-fw-motion=off] :is(.auth-ambient i,.auth-ambient span,.fw-ambient-orb,.fw-ambient-scan,.fw-noise,.system-wave i,.app-grid-field,.ai-core-orb,.mail-node,.tenant-label span,.system-live i,.tech-system-card>div i,.fw-ai-orbit span,.fw-ai-orbit i,.fw-donate-body .hero-copy,.fw-donate-body .purpose,.orbit-point) {
  animation: none !important;
}
html[data-fw-motion=off] :is(.forgeai-orb,.forgeai-status-card,.ai-welcome-mark)::after,
html[data-fw-motion=off] .forgeai-status-card::before,
html[data-fw-motion=off] .fw-fx-hero::before,
html[data-fw-motion=off] .fw-fx-hero::after { animation: none !important; }
html[data-fw-motion=off] :is(.content > section,.content > article,.auth-shell > section,[data-portal-card],.metric-card,.solution-card,.org-card,.fw-fx-card) {
  animation: none !important; transform: none !important; translate: none !important;
}
html[data-fw-motion=off] .fw-fx-edge::after { opacity: 0; }
html[data-fw-motion-visibility=paused] :is(.fw-fx-card,.fw-fx-ring,.fw-fx-energy,.auth-core,.forgeai-orb,.tech-system-card,.orbit-core,.auth-orbit,.fw-ai-orbit span,.fw-ai-orbit i,.org-core-ring),
html[data-fw-motion-visibility=paused] .fw-fx-edge::after { animation-play-state: paused !important; }
@keyframes fw-fx-orbit { to { transform: rotate(360deg); } }
@keyframes fw-fx-energy { from { transform: translate(-8%,0) scale(.9); opacity: .55; } to { transform: translate(6%,-5%) scale(1.08); opacity: .9; } }
@keyframes fw-fx-trace { 0%,35% { transform: translateX(-110%); } 70%,100% { transform: translateX(110%); } }
@keyframes fw-fx-materialize { from { opacity: .65; translate: 0 13px; } to { opacity: 1; translate: 0 0; } }
@keyframes fw-fx-float { 0%,100% { translate: 0 0; } 50% { translate: 0 -7px; } }
@media(max-width:820px) {
  .fw-fx-orbits { width: 50%; opacity: .38; }
  .fw-fx-ring-3 { display: none; }
  .fw-fx-toggle-label { display: none; }
  button.fw-fx-toggle { min-width: 40px; min-height: 40px; padding: 8px; }
  .fw-fx-energy { display: none; }
}
@media(max-width:520px) {
  button.fw-fx-toggle-floating { right: 10px; top: 10px; }
  .auth-recovery .shell { padding-top: 50px; }
}
@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .fw-fx-edge::after { display: none; }
  .fw-fx-card { translate: none !important; }
  .fw-fx-orbits { opacity: .3; }
}
@media print {
  .fw-fx-orbits,.fw-fx-edge,button.fw-fx-toggle { display: none !important; }
  *,*::before,*::after { animation: none !important; transition: none !important; translate: none !important; }
}
