
/* =========================================================
   SIGNAL FOR ALL V15 — VISUAL FUTURE / MOTION SYSTEM
   Progressive enhancement. Every motion layer has a calm /
   reduced-motion fallback.
   ========================================================= */

@view-transition { navigation:auto; }
::view-transition-old(root){animation:v15-fade-out .18s ease both}
::view-transition-new(root){animation:v15-fade-in .28s ease both}
@keyframes v15-fade-out{to{opacity:0;filter:blur(5px)}}
@keyframes v15-fade-in{from{opacity:0;filter:blur(6px)}to{opacity:1;filter:none}}

:root{
  --v15-x:50%;
  --v15-y:30%;
  --v15-theme-a:rgba(113,89,255,.10);
  --v15-theme-b:rgba(53,214,221,.08);
}

body{
  transition:background-color .6s ease,background-image .6s ease;
  background-image:
    radial-gradient(circle at var(--v15-x) var(--v15-y),var(--v15-theme-a),transparent 34rem),
    radial-gradient(circle at calc(100% - var(--v15-x)) calc(15% + var(--v15-y)),var(--v15-theme-b),transparent 38rem);
}
body.v15-theme-sport{--v15-theme-a:rgba(53,214,221,.12);--v15-theme-b:rgba(255,120,199,.09)}
body.v15-theme-parking{--v15-theme-a:rgba(115,228,188,.12);--v15-theme-b:rgba(113,89,255,.09)}
body.v15-theme-research{--v15-theme-a:rgba(113,89,255,.12);--v15-theme-b:rgba(255,229,138,.08)}

.v15-signal-field{
  position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.7;
  mix-blend-mode:multiply;
}
.hero>.shell,.page-hero>.shell,.v14-lab-hero>.shell{position:relative;z-index:2}
.hero,.page-hero,.v14-lab-hero{position:relative;overflow:hidden;isolation:isolate}

.v15-grain{
  pointer-events:none;position:fixed;inset:0;z-index:490;opacity:.025;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E");
}
.v15-spotlight{
  position:fixed;width:320px;height:320px;border-radius:50%;pointer-events:none;z-index:0;
  left:0;top:0;transform:translate(-50%,-50%);
  background:radial-gradient(circle,rgba(114,88,255,.08),rgba(53,214,221,.025) 38%,transparent 70%);
  opacity:0;transition:opacity .25s ease;
}
body.v15-pointer .v15-spotlight{opacity:1}

.v15-loader{
  position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:#fffdfa;
  transition:opacity .45s ease,visibility .45s ease;
}
.v15-loader[hidden]{display:none}
.v15-loader.is-done{opacity:0;visibility:hidden}
.v15-loader-mark{display:flex;gap:10px;align-items:center}
.v15-loader-mark i{width:15px;height:15px;border-radius:50%;background:linear-gradient(135deg,var(--purple),var(--cyan));animation:v15-load 1s ease-in-out infinite}
.v15-loader-mark i:nth-child(2){animation-delay:.12s}
.v15-loader-mark i:nth-child(3){animation-delay:.24s}
.v15-loader-mark i:nth-child(4){animation-delay:.36s}
@keyframes v15-load{0%,100%{transform:translateY(0);opacity:.45}50%{transform:translateY(-10px);opacity:1}}

.header{view-transition-name:sfa-header}
.hero-art,.page-art{view-transition-name:sfa-project-visual}
.navlinks{position:relative}
.v15-nav-indicator{
  position:absolute;height:3px;border-radius:999px;background:linear-gradient(90deg,var(--purple),var(--cyan));
  bottom:-8px;left:0;width:0;opacity:0;transition:left .28s ease,width .28s ease,opacity .2s ease;
}

.v15-glass{
  background:linear-gradient(135deg,rgba(255,255,255,.78),rgba(255,255,255,.48));
  backdrop-filter:blur(22px) saturate(145%);
  -webkit-backdrop-filter:blur(22px) saturate(145%);
  border:1px solid rgba(255,255,255,.72);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 22px 55px rgba(35,26,90,.10);
}

.v15-tilt{transform-style:preserve-3d;will-change:transform;transition:transform .25s ease,box-shadow .25s ease}
.v15-tilt>*{transform:translateZ(1px)}
@media(hover:hover) and (pointer:fine){
  .v15-tilt:hover{box-shadow:0 28px 70px rgba(42,32,100,.14)}
}

.v15-magnetic{transition:transform .18s ease}
.v15-ripple{position:relative;overflow:hidden}
.v15-ripple::after{
  content:"";position:absolute;left:var(--rx,50%);top:var(--ry,50%);width:8px;height:8px;border-radius:50%;
  background:rgba(113,89,255,.22);transform:translate(-50%,-50%) scale(0);opacity:0;
}
.v15-ripple.is-rippling::after{animation:v15-ripple .55s ease-out}
@keyframes v15-ripple{0%{transform:translate(-50%,-50%) scale(0);opacity:.8}100%{transform:translate(-50%,-50%) scale(18);opacity:0}}

.hero h1,.page-hero h1{transition:letter-spacing .5s ease,transform .5s ease}
body.v15-scrolled .hero h1,body.v15-scrolled .page-hero h1{letter-spacing:-.055em}

.v15-orbit-section{padding-block:70px;background:linear-gradient(180deg,rgba(255,255,255,.4),rgba(244,241,255,.62))}
.v15-orbit-wrap{display:grid;grid-template-columns:.78fr 1.22fr;gap:34px;align-items:center}
.v15-orbit-copy h2{font-size:clamp(2.4rem,5vw,5.4rem);line-height:.95;letter-spacing:-.06em}
.v15-orbit{
  position:relative;min-height:530px;border-radius:40px;overflow:hidden;
  background:
    radial-gradient(circle at center,rgba(113,89,255,.10),transparent 32%),
    linear-gradient(145deg,#fff,#f7f4ff 55%,#eefdfa);
  border:1px solid var(--line);box-shadow:var(--shadow-soft);
}
.v15-orbit svg{position:absolute;inset:8%;width:84%;height:84%;overflow:visible}
.v15-orbit-ring{fill:none;stroke:#ddd8ff;stroke-width:1.4;stroke-dasharray:5 8}
.v15-orbit-link{stroke:url(#v15linkgrad);stroke-width:2;opacity:.42;stroke-dasharray:8 10;animation:v15-dash 6s linear infinite}
@keyframes v15-dash{to{stroke-dashoffset:-180}}
.v15-core{
  position:absolute;left:50%;top:50%;width:150px;height:150px;transform:translate(-50%,-50%);
  border-radius:50%;display:grid;place-items:center;text-align:center;padding:20px;
  background:linear-gradient(135deg,#171f52,#7159ff 58%,#0d7d83);color:#fff;
  box-shadow:0 24px 65px rgba(45,34,120,.27);
}
.v15-node{
  position:absolute;width:152px;min-height:82px;border:1px solid var(--line);border-radius:22px;
  background:rgba(255,255,255,.84);backdrop-filter:blur(12px);padding:14px;text-align:left;
  box-shadow:0 15px 35px rgba(45,34,120,.09);cursor:pointer;transition:transform .25s ease,border-color .25s ease,background .25s ease;
}
.v15-node strong{display:block;font-size:.94rem}.v15-node small{display:block;margin-top:5px;color:var(--muted);line-height:1.35}
.v15-node:nth-of-type(1){left:8%;top:11%}.v15-node:nth-of-type(2){right:7%;top:16%}.v15-node:nth-of-type(3){right:8%;bottom:12%}.v15-node:nth-of-type(4){left:7%;bottom:15%}
.v15-node[aria-pressed="true"]{border-color:#9584ff;background:#f2efff;transform:translateY(-4px) scale(1.025)}
.v15-node-panel{margin-top:18px;padding:18px;border-radius:22px;border:1px solid var(--line);background:#fff}
.v15-node-panel strong{font-size:1.15rem}.v15-node-panel p{margin:6px 0 0;color:var(--muted)}

.v15-scroll-story{padding:80px 0}
.v15-story-grid{display:grid;grid-template-columns:.7fr 1.3fr;gap:34px}
.v15-story-intro{position:sticky;top:110px;align-self:start}
.v15-story-intro h2{font-size:clamp(2.4rem,5vw,5.2rem);line-height:.95;letter-spacing:-.055em}
.v15-story-steps{display:grid;gap:24px}
.v15-story-step{
  min-height:300px;padding:30px;border-radius:30px;border:1px solid var(--line);
  background:linear-gradient(145deg,#fff,#faf8ff);opacity:.45;transform:translateY(18px) scale(.985);
  transition:opacity .5s ease,transform .5s ease,border-color .5s ease;
}
.v15-story-step.is-active{opacity:1;transform:none;border-color:#c8beff}
.v15-story-step b{font-size:.72rem;letter-spacing:.14em;color:#6a55d8}.v15-story-step h3{font-size:2rem;margin:.6rem 0}.v15-story-step p{max-width:52ch}
.v15-story-progress{height:6px;background:#ece9f8;border-radius:999px;overflow:hidden;margin-top:18px}.v15-story-progress i{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--purple),var(--cyan));transition:width .35s ease}

.v15-flow-section,.v15-architecture-section,.v15-wave-section,.v15-device-section,.v15-before-after,.v15-roadmap-section{padding:58px 0}
.v15-flow-board,.v15-architecture-board,.v15-wave-board,.v15-device-board,.v15-before-after-board,.v15-roadmap-board{
  border:1px solid var(--line);border-radius:34px;background:linear-gradient(145deg,#fff,#f9f7ff);padding:28px;box-shadow:var(--shadow-soft)
}
.v15-flow-line{display:grid;grid-template-columns:1fr 70px 1fr 70px 1fr;gap:12px;align-items:center}
.v15-flow-node{padding:22px;border:1px solid var(--line);border-radius:22px;background:#fff;text-align:center}
.v15-flow-rail{height:4px;border-radius:99px;background:#ebe8f8;position:relative;overflow:hidden}
.v15-flow-particle{position:absolute;left:-14px;top:50%;width:12px;height:12px;margin-top:-6px;border-radius:50%;background:linear-gradient(135deg,var(--cyan),var(--pink));box-shadow:0 0 18px rgba(53,214,221,.55)}
.v15-flow-board.is-running .v15-flow-particle{animation:v15-flow 1.2s ease forwards}
@keyframes v15-flow{to{left:calc(100% + 4px)}}
.v15-flow-board[data-state="lost"] .v15-flow-rail{background:repeating-linear-gradient(90deg,#eee 0 9px,#fff 9px 18px)}
.v15-flow-board[data-state="lost"] .v15-flow-node:last-child{opacity:.45}
.v15-flow-status{margin-top:16px;padding:15px;border-radius:18px;background:#fff;border:1px solid var(--line)}

.v15-wave-svg{width:100%;height:auto;display:block}
.v15-wave-path{fill:none;stroke:url(#v15wavegrad);stroke-width:5;stroke-linecap:round;stroke-linejoin:round}
.v15-wave-grid line{stroke:#eceaf4;stroke-width:1}
.v15-wave-controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}

.v15-architecture{
  position:relative;display:grid;grid-template-columns:repeat(5,1fr);gap:18px;align-items:center
}
.v15-arch-node{padding:22px 14px;border-radius:20px;background:#fff;border:1px solid var(--line);text-align:center;position:relative}
.v15-arch-node:not(:last-child)::after{content:"→";position:absolute;right:-16px;top:50%;transform:translateY(-50%);color:#8c7cf4;font-weight:950}
.v15-arch-node.is-active{border-color:#9d8eff;background:#f4f1ff}
.v15-arch-node.is-offline{opacity:.42;filter:grayscale(.8)}
.v15-arch-event{margin-top:18px;padding:16px;border-radius:18px;background:#fff;border:1px solid var(--line)}
.v15-arch-board.is-flowing .v15-arch-node{animation:v15-arch-pulse 1.25s ease both}
.v15-arch-board.is-flowing .v15-arch-node:nth-child(2){animation-delay:.12s}
.v15-arch-board.is-flowing .v15-arch-node:nth-child(3){animation-delay:.24s}
.v15-arch-board.is-flowing .v15-arch-node:nth-child(4){animation-delay:.36s}
.v15-arch-board.is-flowing .v15-arch-node:nth-child(5){animation-delay:.48s}
@keyframes v15-arch-pulse{50%{transform:translateY(-5px);border-color:#9e90ff}}

.v15-device-stage{display:grid;grid-template-columns:.85fr 1.15fr;gap:30px;align-items:center}
.v15-device-copy h2{font-size:clamp(2.4rem,5vw,5rem);line-height:.96;letter-spacing:-.055em}
.v15-device{
  width:min(330px,80vw);aspect-ratio:.58;margin:auto;border-radius:44px;
  background:linear-gradient(145deg,#161c43,#493578 58%,#0d737a);
  border:1px solid rgba(255,255,255,.28);box-shadow:0 38px 80px rgba(32,25,80,.28);
  transform-style:preserve-3d;position:relative;padding:18px;transition:transform .2s ease;
}
.v15-device-screen{height:100%;border-radius:31px;background:linear-gradient(180deg,#fff,#f8f7ff);padding:22px;display:grid;grid-template-rows:auto 1fr auto}
.v15-device-notch{width:84px;height:16px;border-radius:99px;background:#171f52;margin:auto}
.v15-device-command{align-self:center;text-align:center}
.v15-device-command span{font-size:.72rem;letter-spacing:.14em;color:#777f9e;font-weight:950}
.v15-device-command strong{display:block;font-size:3rem;margin-top:12px}
.v15-device-button{justify-self:center;width:78px;height:78px;border-radius:50%;border:none;background:linear-gradient(135deg,var(--purple),var(--pink));box-shadow:0 15px 35px rgba(113,89,255,.3)}
.v15-device-shadow{width:58%;height:20px;border-radius:50%;background:rgba(24,20,62,.18);filter:blur(15px);margin:22px auto 0}

.v15-before-after-wrap{position:relative;border-radius:28px;overflow:hidden;border:1px solid var(--line);min-height:420px}
.v15-before,.v15-after{position:absolute;inset:0;padding:34px;display:grid;align-content:center}
.v15-before{background:#efeff3;color:#3c4357}
.v15-after{background:linear-gradient(135deg,#fff,#edfdf8 48%,#f6efff);clip-path:inset(0 0 0 var(--split,50%))}
.v15-ba-handle{position:absolute;left:var(--split,50%);top:0;bottom:0;width:3px;background:#6d57e9;transform:translateX(-1.5px);pointer-events:none}
.v15-ba-handle::after{content:"↔";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#fff;border:1px solid #cfc8ff;color:#604ad0;font-weight:950}
.v15-ba-range{width:100%;margin-top:14px}
.v15-before h3,.v15-after h3{font-size:clamp(2rem,4vw,4rem);max-width:12ch}
.v15-before p,.v15-after p{max-width:50ch}

.v15-roadmap-svg{width:100%;height:auto;display:block}
.v15-roadmap-path{fill:none;stroke:url(#v15roadgrad);stroke-width:8;stroke-linecap:round;stroke-dasharray:900;stroke-dashoffset:900}
.v15-roadmap-section.is-drawn .v15-roadmap-path{animation:v15-draw 2.4s cubic-bezier(.2,.8,.2,1) forwards}
@keyframes v15-draw{to{stroke-dashoffset:0}}
.v15-roadmap-dot{fill:#fff;stroke:#6f57ff;stroke-width:4}
.v15-roadmap-label{font-size:17px;font-weight:800;fill:#17204f}

.v15-focus-toggle{position:absolute;right:22px;top:22px;z-index:5}
body.v15-focus-mode .header,body.v15-focus-mode .footer,body.v15-focus-mode .access-dock,body.v15-focus-mode .cookie{opacity:.12;pointer-events:none}
body.v15-focus-mode main{max-width:1300px}
body.v15-focus-mode .v14-campus-panel{box-shadow:0 34px 100px rgba(30,24,75,.20);transform:scale(1.01)}

.v15-expandable{transition:grid-template-rows .35s ease,background .35s ease}
.v15-expand-detail{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease}
.v15-expand-detail>div{overflow:hidden}
.v15-expandable.is-open .v15-expand-detail{grid-template-rows:1fr}
.v15-expandable.is-open{background:#faf8ff}

.v15-counter{font-variant-numeric:tabular-nums}

body.sfa-calm .v15-signal-field,
body.sfa-calm .v15-grain,
body.sfa-calm .v15-spotlight,
body.sfa-calm .v15-loader,
body.sfa-calm .v15-orbit svg,
body.sfa-calm .v15-ba-handle,
body.sfa-motion-off .v15-signal-field,
body.sfa-motion-off .v15-grain,
body.sfa-motion-off .v15-spotlight{display:none!important}
body.sfa-calm .v15-tilt,body.sfa-motion-off .v15-tilt{transform:none!important}
body.sfa-calm .v15-story-step,body.sfa-motion-off .v15-story-step{opacity:1;transform:none}
body.sfa-calm .v15-orbit-link,body.sfa-motion-off .v15-orbit-link{animation:none}
body.sfa-calm .v15-roadmap-path,body.sfa-motion-off .v15-roadmap-path{stroke-dashoffset:0;animation:none}

@media(max-width:960px){
  .v15-orbit-wrap,.v15-story-grid,.v15-device-stage{grid-template-columns:1fr}
  .v15-story-intro{position:static}
  .v15-orbit{min-height:620px}
  .v15-flow-line{grid-template-columns:1fr;gap:8px}
  .v15-flow-rail{height:54px;width:4px;justify-self:center}
  .v15-flow-particle{left:50%;top:-14px;margin:0 0 0 -6px}
  .v15-flow-board.is-running .v15-flow-particle{animation:v15-flow-y 1.2s ease forwards}
  @keyframes v15-flow-y{to{top:calc(100% + 4px)}}
  .v15-architecture{grid-template-columns:1fr}
  .v15-arch-node:not(:last-child)::after{content:"↓";right:auto;left:50%;top:auto;bottom:-22px;transform:translateX(-50%)}
}
@media(max-width:680px){
  .v15-orbit{min-height:760px}
  .v15-node{width:132px}
  .v15-node:nth-of-type(1){left:4%;top:6%}.v15-node:nth-of-type(2){right:4%;top:25%}.v15-node:nth-of-type(3){right:4%;bottom:8%}.v15-node:nth-of-type(4){left:4%;bottom:29%}
  .v15-core{width:130px;height:130px}
  .v15-story-step{min-height:auto;padding:24px}
}
@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .v15-signal-field,.v15-grain,.v15-spotlight,.v15-loader{display:none!important}
  .v15-story-step{opacity:1;transform:none}
  .v15-roadmap-path{stroke-dashoffset:0}
}
