:root{--sw-ink:#17212c;--sw-muted:#6a7684;--sw-blue:#246bff;--sw-cyan:#25c7b8;--sw-paper:#f4f7fb;--sw-line:#dbe3ed}.sw-page{background:var(--sw-paper);color:var(--sw-ink);font:16px/1.75 'PingFang SC','Microsoft YaHei',sans-serif}.sw-shell{width:min(1180px,calc(100% - 48px));margin:auto}.sw-page h1,.sw-page h2,.sw-page h3,.sw-page p{margin-top:0}.sw-page h1{font-size:clamp(40px,5vw,68px);line-height:1.2;letter-spacing:-.045em;margin:24px 0}.sw-page h1 em,.sw-page h2 em{font-style:normal;color:#7ec8d4}.sw-page h2{font-size:clamp(32px,4vw,52px);line-height:1.22;letter-spacing:-.035em;margin-bottom:34px}.sw-page h2 span{color:#718196}.sw-page h3{font-size:21px;line-height:1.35}.sw-kicker{font:11px/1.4 ui-monospace,SFMono-Regular,monospace;letter-spacing:2.2px;color:var(--sw-blue);margin-bottom:14px}.sw-hero{background:#101923;color:#f3f7fc;min-height:690px;display:flex;align-items:center;overflow:hidden;position:relative}.sw-hero:before{content:'';position:absolute;inset:0;background:linear-gradient(120deg,#0e1822 0%,#111e2e 52%,#152c3b 100%)}.sw-hero:after{content:'';position:absolute;width:700px;height:700px;right:-240px;top:-180px;border-radius:50%;background:radial-gradient(circle,#24c7b82e,transparent 68%);filter:blur(8px)}.sw-hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:1.05fr .95fr;gap:42px;align-items:center}.sw-hero .sw-kicker{color:#81d9d4}.sw-hero-copy{padding:70px 0}.sw-lead{color:#bdcad8;font-size:20px;max-width:620px;margin-bottom:28px}.sw-actions{display:flex;gap:12px;flex-wrap:wrap}.sw-btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 21px;border:1px solid transparent;transition:.25s;text-decoration:none}.sw-btn-primary{background:#55d5c5;color:#0c2027;box-shadow:0 8px 25px #1ca89744}.sw-btn-primary:hover{background:#8de8dc;transform:translateY(-3px)}.sw-btn-ghost{border-color:#607384;color:#e1ebf3}.sw-btn-ghost:hover{border-color:#65d8cf;color:#65d8cf}.sw-proof{display:flex;gap:26px;margin-top:54px;color:#899aaa;font:11px ui-monospace,monospace}.sw-proof b{color:#6dd5cc;font-size:15px;margin-right:8px}.sw-console{height:460px;position:relative;isolation:isolate}.sw-console:before{content:'';position:absolute;inset:13% 7%;border:1px solid #76b5c633;transform:perspective(500px) rotateY(-14deg) rotateX(8deg);background:linear-gradient(145deg,#ffffff0c,#3a738b0a);box-shadow:inset 0 0 80px #48b8bd10,0 0 45px #56d8d014}.sw-console-orbit{position:absolute;left:50%;top:50%;border:1px solid #6bd9d355;border-radius:50%;transform:translate(-50%,-50%) rotateX(68deg) rotateZ(-18deg);animation:sw-orbit 20s linear infinite}.sw-orbit-one{width:390px;height:170px}.sw-orbit-two{width:280px;height:125px;animation-duration:14s;animation-direction:reverse;border-color:#658aff55}.sw-core{position:absolute;left:50%;top:50%;width:150px;height:150px;transform:translate(-50%,-50%);border:1px solid #8de8dcaa;background:radial-gradient(circle at 35% 30%,#2e706f,#172c37 65%);border-radius:22px;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 0 50px #42d2c633,inset 0 0 25px #84e5d822;animation:sw-core-breathe 5s ease-in-out infinite}.sw-core i{width:34px;height:34px;border-radius:50%;border:1px solid #a5fff0;background:#56d9c5;box-shadow:0 0 24px #57e5d5;display:block;margin-bottom:12px}.sw-core strong{font:14px ui-monospace,monospace;letter-spacing:2px}.sw-core small{color:#8bb0bb;font:9px ui-monospace,monospace;letter-spacing:1px}.sw-node{position:absolute;width:93px;padding:12px 14px;border:1px solid #79c7d080;background:#162b37e8;box-shadow:0 10px 25px #07101966;animation:sw-node-float 6s ease-in-out infinite}.sw-node b{display:block;color:#a5eee3;font:13px ui-monospace,monospace}.sw-node span{display:block;color:#8199a9;font:9px ui-monospace,monospace;margin-top:3px}.sw-node-a{left:3%;top:25%}.sw-node-b{right:2%;top:17%;animation-delay:-2s}.sw-node-c{right:9%;bottom:18%;animation-delay:-4s}.sw-console-line{position:absolute;height:1px;background:linear-gradient(90deg,transparent,#65d8cd,transparent);transform-origin:left center;opacity:.6;animation:sw-line-pulse 3s ease-in-out infinite}.sw-line-a{width:175px;left:22%;top:35%;transform:rotate(16deg)}.sw-line-b{width:160px;left:59%;top:36%;transform:rotate(-23deg)}.sw-line-c{width:145px;left:57%;top:63%;transform:rotate(30deg);animation-delay:-1s}.sw-section{padding:110px 0}.sw-light{background:#f4f7fb}.sw-friction{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.sw-friction article{position:relative;padding:27px 22px 30px;background:#fff;border:1px solid var(--sw-line);min-height:205px;transition:.3s}.sw-friction article:hover{transform:translateY(-7px);border-color:#82aaff;box-shadow:0 18px 35px #233c5c14}.sw-friction article>b{font:12px ui-monospace,monospace;color:#6482b0}.sw-friction h3{margin:32px 0 12px}.sw-friction p{color:var(--sw-muted);font-size:15px}.sw-arrow{position:absolute;right:19px;bottom:16px;color:#7191c3}.sw-role-section{background:#e9eef5}.sw-section-head{display:flex;justify-content:space-between;gap:45px;align-items:end;margin-bottom:45px}.sw-section-head>p{max-width:340px;color:var(--sw-muted)}.sw-roles{display:grid;grid-template-columns:280px 1fr;background:#fff;border:1px solid var(--sw-line);min-height:350px;box-shadow:0 18px 40px #263f5d0d}.sw-role-tabs{border-right:1px solid var(--sw-line);display:flex;flex-direction:column}.sw-role-tabs button{border:0;border-bottom:1px solid var(--sw-line);background:#fff;text-align:left;padding:21px 24px;color:#59697b;font:inherit;cursor:pointer;transition:.25s}.sw-role-tabs button:last-child{border-bottom:0}.sw-role-tabs button[aria-selected=true]{background:#17283a;color:#fff}.sw-role-tabs button span{font:11px ui-monospace,monospace;color:#79a0d3;margin-right:14px}.sw-role-tabs button small{display:block;margin:4px 0 0 27px;color:#98a8b8;font:9px ui-monospace,monospace;letter-spacing:1px}.sw-role-panel{padding:58px 65px;position:relative}.sw-role-content h3{font-size:34px;margin:14px 0}.sw-role-content>p:not(.sw-overline){color:var(--sw-muted);font-size:18px;max-width:530px}.sw-overline{font:10px ui-monospace,monospace;letter-spacing:1.5px;color:var(--sw-blue)}.sw-role-tags{display:flex;gap:9px;flex-wrap:wrap;margin:24px 0 29px}.sw-role-tags span{padding:7px 12px;background:#eef3f8;color:#61748b;font-size:13px}.sw-role-content a{color:var(--sw-blue)}.sw-dark{background:#111d2a;color:#ecf5fb}.sw-dark .sw-kicker{color:#73d8cf}.sw-framework-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #476170}.sw-framework-grid article{position:relative;padding:27px 22px 32px;border-right:1px solid #476170;min-height:250px;transition:.3s}.sw-framework-grid article:last-child{border-right:0}.sw-framework-grid article:hover{background:#1b3342;transform:translateY(-5px)}.sw-framework-grid article>span{font:11px ui-monospace,monospace;color:#7ca8bc}.sw-framework-grid strong{display:block;margin-top:20px;font:10px ui-monospace,monospace;letter-spacing:1.2px;color:#69d8cd}.sw-framework-grid h3{font-size:24px;margin:12px 0}.sw-framework-grid p{color:#aebfcc;font-size:15px}.sw-framework-grid i{position:absolute;right:20px;bottom:18px;color:#70d9cf;font-style:normal}.sw-journey{display:grid;grid-template-columns:repeat(5,1fr);position:relative;margin-top:50px}.sw-journey:before{content:'';position:absolute;left:5%;right:5%;top:21px;height:1px;background:#a8bbd0}.sw-journey>div{position:relative;text-align:center}.sw-journey b{display:flex;width:43px;height:43px;border-radius:50%;align-items:center;justify-content:center;margin:0 auto 18px;background:#fff;border:1px solid #90a9c1;color:#3169ca;font:11px ui-monospace,monospace}.sw-journey strong,.sw-journey span{display:block}.sw-journey strong{font-size:17px}.sw-journey span{font:10px ui-monospace,monospace;color:#8492a3;margin-top:4px}.sw-soft-dark{background:#dbe5ef}.sw-delivery{display:grid;grid-template-columns:repeat(3,1fr);gap:0 35px;list-style:none;padding:0;margin:48px 0 78px;counter-reset:sw}.sw-delivery li{counter-increment:sw;border-top:1px solid #9fb2c4;padding:21px 0;color:#425469}.sw-delivery li b{font:11px ui-monospace,monospace;color:#4578c2;margin-right:20px}.sw-cta{display:flex;align-items:center;justify-content:space-between;gap:30px;padding-top:30px;border-top:1px solid #adbfce}.sw-cta h3{font-size:28px;margin:0}.sw-page [hidden]{display:none!important}@keyframes sw-orbit{to{transform:translate(-50%,-50%) rotateX(68deg) rotateZ(342deg)}}@keyframes sw-core-breathe{50%{transform:translate(-50%,-50%) scale(1.04)}}@keyframes sw-node-float{50%{transform:translateY(-9px)}}@keyframes sw-line-pulse{50%{opacity:1;box-shadow:0 0 10px #6de4d7}}@media(max-width:850px){.sw-hero{min-height:0;padding:70px 0}.sw-hero-grid{grid-template-columns:1fr}.sw-hero-copy{padding:0}.sw-console{height:370px;margin-top:10px}.sw-friction,.sw-framework-grid{grid-template-columns:repeat(2,1fr)}.sw-framework-grid article:nth-child(2){border-right:0}.sw-framework-grid article:nth-child(n+3){border-top:1px solid #476170}.sw-roles{grid-template-columns:210px 1fr}.sw-role-panel{padding:38px 35px}.sw-delivery{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.sw-shell{width:calc(100% - 36px)}.sw-section{padding:70px 0}.sw-page{font-size:16px}.sw-page h1{font-size:39px}.sw-page h2{font-size:34px}.sw-proof{gap:12px;flex-wrap:wrap;margin-top:36px}.sw-console{height:290px}.sw-console:before{inset:8% 0}.sw-console-orbit{transform:translate(-50%,-50%) scale(.72) rotateX(68deg) rotateZ(-18deg)}.sw-core{width:120px;height:120px}.sw-node{transform:scale(.78);transform-origin:center}.sw-node-a{left:-4%}.sw-node-b{right:-5%}.sw-node-c{right:0;bottom:8%}.sw-section-head{display:block}.sw-section-head>p{margin-top:-16px}.sw-friction,.sw-framework-grid,.sw-delivery{grid-template-columns:1fr}.sw-framework-grid article{border-right:0!important;border-top:1px solid #476170}.sw-framework-grid article:first-child{border-top:0}.sw-roles{display:block}.sw-role-tabs{border-right:0;border-bottom:1px solid var(--sw-line);display:grid;grid-template-columns:repeat(2,1fr)}.sw-role-tabs button{padding:15px 14px;border-right:1px solid var(--sw-line)}.sw-role-tabs button:nth-child(2){border-right:0}.sw-role-tabs button:nth-child(n+3){border-top:1px solid var(--sw-line)}.sw-role-panel{padding:34px 25px;min-height:280px}.sw-role-content h3{font-size:29px}.sw-journey{grid-template-columns:1fr;gap:20px;margin-top:30px}.sw-journey:before{left:21px;top:22px;bottom:22px;width:1px;height:auto}.sw-journey>div{text-align:left;display:grid;grid-template-columns:44px 1fr;column-gap:15px;align-items:center}.sw-journey b{grid-row:span 2;margin:0}.sw-journey span{margin:0}.sw-cta{display:block}.sw-cta .sw-btn{margin-top:22px}}@media(prefers-reduced-motion:reduce){.sw-page *{animation:none!important;transition:none!important}}
.sw-page :is(h1,h2,h3) :is(em,span){display:inline-block;text-wrap:balance}
.sw-page .sw-console-grid{position:absolute;inset:8% 0;pointer-events:none;
  background-image:linear-gradient(#8fd6d214 1px,transparent 1px),linear-gradient(90deg,#8fd6d214 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(70% 70% at 50% 50%,#000 30%,transparent 76%);
  mask-image:radial-gradient(70% 70% at 50% 50%,#000 30%,transparent 76%)}
.sw-page .sw-console-topline{position:absolute;left:0;right:0;top:0;display:flex;
  justify-content:space-between;align-items:center;gap:12px;padding-bottom:9px;
  border-bottom:1px solid #ffffff14;pointer-events:none;color:#6d8798;
  font:9px ui-monospace,SFMono-Regular,monospace;letter-spacing:1.8px}
.sw-page .sw-console-topline b{color:#6dd5cc;font-weight:400}
.sw-page .sw-readout{position:absolute;bottom:2%;display:flex;flex-direction:column;gap:3px;
  pointer-events:none;font-family:ui-monospace,SFMono-Regular,monospace}
.sw-page .sw-readout small{color:#6d8798;font-size:9px;line-height:1;letter-spacing:1.8px}
.sw-page .sw-readout strong{color:#e8f7f5;font-size:27px;line-height:1;font-weight:600;letter-spacing:.5px}
.sw-page .sw-readout span{color:#6dd5cc;font-size:9px;line-height:1;letter-spacing:1.8px}
.sw-page .sw-readout-a{left:0}
.sw-page .sw-readout-b{right:0;align-items:flex-end}
@media(max-width:850px){
  .sw-page .sw-console-topline{font-size:8.5px;letter-spacing:1.4px;padding-bottom:7px}
  .sw-page .sw-readout strong{font-size:22px}
}
@media(max-width:560px){
  .sw-page .sw-console-topline{letter-spacing:1.1px}
  .sw-page .sw-readout{display:none}
}
.sw-page .sw-dev{position:absolute;inset:0;overflow:hidden;
  container-type:size;
  perspective:1050px;perspective-origin:54% 42%;
  pointer-events:none}
.sw-page .sw-dev-scene{position:absolute;inset:0;
  font:400 10px/1 ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:clamp(7px,2.25cqmin,11.5px);
  color:#9dbccb}
.sw-page .sw-dev-floor{position:absolute;left:-4%;right:-4%;bottom:5%;height:54%;
  transform-origin:50% 100%;transform:rotateX(66deg);
  background-image:linear-gradient(#7fd9d21f 1px,transparent 1px),linear-gradient(90deg,#7fd9d21f 1px,transparent 1px);
  background-size:2.6em 2.6em;
  -webkit-mask-image:radial-gradient(56% 60% at 50% 58%,#000 18%,transparent 78%);
  mask-image:radial-gradient(56% 60% at 50% 58%,#000 18%,transparent 78%)}
.sw-page .sw-dev-win{position:absolute;box-sizing:border-box;
  border:1px solid #ffffff29;border-radius:.55em;
  background:linear-gradient(168deg,#162b38f5,#0d1e27fa);
  box-shadow:0 1.6em 3em -.9em #02090dcc,inset 0 .08em 0 #ffffff14;
  overflow:hidden;display:flex;flex-direction:column;
  animation:sw-dv-in .8s cubic-bezier(.22,.74,.24,1) backwards}
@keyframes sw-dv-in{
  from{opacity:0;transform:translateZ(-70px) var(--dv-t)}
  to{opacity:1;transform:var(--dv-t)}
}
.sw-page .sw-dev-ide{left:0;top:6.5%;width:64%;height:54%;z-index:2;
  --dv-t:rotateY(-15deg) rotateX(5deg);
  transform:var(--dv-t);transform-origin:left center}
.sw-page .sw-dev-bar{flex:none;display:flex;align-items:center;gap:.7em;height:2.1em;
  padding:0 .8em;border-bottom:1px solid #ffffff1a;background:#0c1a22a6}
.sw-page .sw-dev-lights{display:flex;gap:.34em;flex:none}
.sw-page .sw-dev-lights i{width:.52em;height:.52em;border-radius:50%;background:#ffffff26}
.sw-page .sw-dev-lights i:first-child{background:#ff7a6b59}
.sw-page .sw-dev-lights i:nth-child(2){background:#ffc86159}
.sw-page .sw-dev-lights i:last-child{background:#6dd5cc59}
.sw-page .sw-dev-tabs{display:flex;align-items:center;gap:.25em;min-width:0;overflow:hidden}
.sw-page .sw-dev-tabs b{font-weight:400;font-size:.84em;letter-spacing:.04em;color:#6d8798;
  padding:.42em .8em;border-radius:.35em .35em 0 0;border-bottom:1.5px solid transparent;white-space:nowrap}
.sw-page .sw-dev-tabs b.is-on{color:#dff4f8;background:#ffffff0f;border-bottom-color:#6dd5cc}
.sw-page .sw-dev-code{flex:1;min-height:0;overflow:hidden;padding:.9em 0 .6em;position:relative}
.sw-page .sw-dev-row{display:flex;gap:.75em;font-size:.95em;line-height:1.5;
  padding:0 2.5em 0 .9em;white-space:nowrap;
  animation:sw-dv-row .38s ease-out var(--sw-d,0s) backwards}
.sw-page .sw-dev-row>b{flex:none;width:1.8em;text-align:right;font-weight:400;font-size:.86em;color:#4d6a7a}
.sw-page .sw-dev-row code{flex:1;min-width:0;overflow:hidden;color:#a8c0cd}
.sw-page .sw-dev-row.is-active{background:linear-gradient(90deg,#6dd5cc14,#6dd5cc00);
  box-shadow:inset 2px 0 0 #6dd5cc99}
@keyframes sw-dv-row{from{opacity:0;transform:translateX(-.6em)}to{opacity:1;transform:none}}
.sw-page .sw-dev-code .sw-c{color:#5d7c8c;font-style:italic}
.sw-page .sw-dev-code .sw-k{color:#5fc9e8}
.sw-page .sw-dev-code .sw-f{color:#e8f6fa}
.sw-page .sw-dev-code .sw-s{color:#8fdcaa}
.sw-page .sw-dev-code .sw-p{color:#c9a7e6}
.sw-page .sw-dev-map{position:absolute;right:.75em;top:3.2em;bottom:2.5em;width:1.05em;
  display:flex;flex-direction:column;gap:.24em;opacity:.5}
.sw-page .sw-dev-map i{height:.17em;border-radius:1px;background:#5fd0c7;flex:none}
.sw-page .sw-dev-map i:nth-child(3n){background:#8fb6c6}
.sw-page .sw-dev-status{flex:none;display:flex;align-items:center;gap:.9em;height:2.1em;
  padding:0 .9em;border-top:1px solid #ffffff1a;background:#0c1a22b3;
  font-size:.8em;letter-spacing:.06em;color:#5f7d8c}
.sw-page .sw-dev-ok{display:flex;align-items:center;gap:.45em;margin-right:auto;color:#7fd9d2}
.sw-page .sw-dev-ok:before{content:'';width:.5em;height:.5em;border-radius:50%;
  background:#6dd5cc;box-shadow:0 0 .5em #6dd5cc;animation:sw-dv-ok 2.4s ease-in-out infinite}
@keyframes sw-dv-ok{50%{opacity:.35}}
.sw-page .sw-dev-ide:after{content:'';position:absolute;left:0;right:0;top:-30%;height:26%;
  background:linear-gradient(#6dd5cc00,#6dd5cc1f,#6dd5cc00);
  animation:sw-dv-sweep 7.5s cubic-bezier(.4,0,.6,1) infinite}
@keyframes sw-dv-sweep{
  0%{transform:translateY(0);opacity:0}
  14%{opacity:1}
  70%,100%{transform:translateY(520%);opacity:0}
}
.sw-page .sw-dev-term{left:3%;top:62%;width:57%;height:22%;z-index:3;
  --dv-t:rotateY(-11deg) rotateX(8deg);
  transform:var(--dv-t);transform-origin:left center;
  animation-delay:.16s}
.sw-page .sw-dev-termname{font-size:.8em;letter-spacing:.16em;color:#5f7d8c}
.sw-page .sw-dev-log{flex:1;min-height:0;overflow:hidden;padding:.95em;
  font-size:.9em;line-height:1.32}
.sw-page .sw-dev-log p{margin:0;white-space:nowrap;overflow:hidden;
  animation:sw-dv-row .4s ease-out var(--sw-d,0s) backwards}
.sw-page .sw-dev-log em,.sw-page .sw-dev-log i{font-style:normal;color:#6dd5cc;margin-right:.5em}
.sw-page .sw-dev-log .is-cmd{color:#c9e3ec}
.sw-page .sw-dev-log .is-ok{color:#8fdcaa}
.sw-page .sw-dev-log .is-out{color:#8bb0bb}
.sw-page .sw-dev-caret{display:inline-block;width:.5em;height:.95em;margin-left:.4em;
  vertical-align:-.14em;background:#6dd5cc;animation:sw-dv-caret 1.05s steps(1) infinite}
@keyframes sw-dv-caret{50%{opacity:0}}
.sw-page .sw-dev-pipe{left:68%;top:6.5%;width:32%;height:77.5%;z-index:1;
  position:absolute;box-sizing:border-box;padding:1.1em;display:flex;flex-direction:column;
  border:1px solid #ffffff1f;border-radius:.55em;
  background:linear-gradient(170deg,#132531d9,#0c1a22e6);
  box-shadow:0 1.4em 2.6em -.9em #02090db3;
  --dv-t:rotateY(13deg) rotateX(4deg);
  transform:var(--dv-t);transform-origin:right center;
  animation-delay:.3s}
.sw-page .sw-dev-pipelabel{flex:none;display:flex;align-items:baseline;gap:.55em;
  font-size:.82em;letter-spacing:.2em;color:#5f7d8c}
.sw-page .sw-dev-pipelabel b{font-weight:400;color:#6dd5cc;letter-spacing:.06em}
.sw-page .sw-dev-pipelabel i{font-style:normal;margin-left:auto;color:#7fd9d2;opacity:.7}
.sw-page .sw-dev-stages{flex:1;min-height:0;position:relative;margin-top:.9em;
  display:flex;flex-direction:column;justify-content:space-between}
.sw-page .sw-dev-stages:before{content:'';position:absolute;left:.62em;top:.7em;bottom:.7em;width:1px;
  background:linear-gradient(#6dd5cc55,#6dd5cc22 46%,#ffffff12)}
.sw-page .sw-dev-flow{position:absolute;left:.62em;top:.7em;width:.44em;height:.44em;margin-left:-.15em;
  border-radius:50%;background:#a5eee3;box-shadow:0 0 .7em #6dd5cc;
  animation:sw-dv-flow 3.4s cubic-bezier(.5,0,.5,1) infinite}
@keyframes sw-dv-flow{
  0%{top:.7em;opacity:0}
  12%{opacity:1}
  88%{opacity:1}
  100%{top:calc(100% - .7em);opacity:0}
}
.sw-page .sw-dev-stage{display:flex;align-items:center;gap:.7em}
.sw-page .sw-dev-stage>i{flex:none;width:1.25em;height:1.25em;border-radius:50%;z-index:1;
  display:flex;align-items:center;justify-content:center;font-size:.78em;font-style:normal;
  border:1px solid #ffffff2e;background:#0e1e28;color:#7d9aa8}
.sw-page .sw-dev-stage>div{display:flex;flex-direction:column;gap:.18em;min-width:0}
.sw-page .sw-dev-stage b{font-weight:500;font-size:.92em;color:#c9e3ec;white-space:nowrap}
.sw-page .sw-dev-stage b em{font-style:normal;margin-left:.45em;font-size:.82em;
  letter-spacing:.14em;color:#5f7d8c}
.sw-page .sw-dev-stage small{font-size:.78em;letter-spacing:.1em;color:#6d8798;white-space:nowrap}
.sw-page .sw-dev-stage.is-done>i{border-color:#6dd5cc88;background:#123039;color:#8de8dc}
.sw-page .sw-dev-stage.is-done>i:before{content:'✓'}
.sw-page .sw-dev-stage.is-run>i{border-color:#6dd5cc;background:#17515a;
  animation:sw-dv-run 2.2s ease-out infinite}
.sw-page .sw-dev-stage.is-run>i:before{content:'';width:.42em;height:.42em;border-radius:50%;background:#8de8dc}
.sw-page .sw-dev-stage.is-run b{color:#eafbf8}
.sw-page .sw-dev-stage.is-run small{color:#7fd9d2}
.sw-page .sw-dev-stage.is-wait{opacity:.6}
@keyframes sw-dv-run{
  0%{box-shadow:0 0 0 0 #6dd5cc70}
  70%{box-shadow:0 0 .55em .1em #6dd5cc00}
  100%{box-shadow:0 0 0 0 #6dd5cc00}
}
@media(max-width:850px){
  .sw-page .sw-dev-scene{font-size:clamp(7px,2.2cqmin,11px)}
  .sw-page .sw-dev-ide{width:60%;height:55%}
  .sw-page .sw-dev-term{left:3%;top:62.5%;width:54%;height:21.5%}
  .sw-page .sw-dev-pipe{left:64%;width:36%}
}
@media(max-width:560px){
  .sw-page .sw-dev-code{padding-block:.55em .3em}
  .sw-page .sw-dev-row{padding-right:.9em}
  .sw-page .sw-dev-map{display:none}
  .sw-page .sw-dev-log{line-height:1.25}
  .sw-page .sw-dev-status span+span{display:none}
  .sw-page .sw-dev-stage b em{display:none}
}
@media(prefers-reduced-motion:reduce){
  .sw-page .sw-dev *,.sw-page .sw-dev{animation:none!important}
}
.sw-page .sw-growth{position:relative;overflow:hidden}
.sw-page .swg-bg{position:absolute;inset:0;pointer-events:none;
  background-image:
    linear-gradient(#c2d3e61a 1px,transparent 1px),
    linear-gradient(90deg,#c2d3e61a 1px,transparent 1px);
  background-size:44px 44px;
  -webkit-mask-image:radial-gradient(74% 60% at 50% 76%,#000,transparent 74%);
  mask-image:radial-gradient(74% 60% at 50% 76%,#000,transparent 74%)}
.sw-page .swg-bg:after{content:'';position:absolute;inset:0;
  background:radial-gradient(46% 58% at 50% 78%,#25c7b812,transparent 70%)}
.sw-page .sw-growth .sw-shell{position:relative;z-index:1}
.sw-page .swg-note{display:block;margin-top:14px;color:#9dacbe;
  font:10px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:1.6px}
.sw-page .swg-note b{font-weight:400;color:#25958c;margin-right:7px}
.sw-page .swg{display:grid;grid-template-columns:repeat(5,1fr);position:relative;margin-top:50px}
.sw-page .swg-rail{position:absolute;left:10%;right:10%;top:21px;height:1px;z-index:0;pointer-events:none}
.sw-page .swg-rail:before{content:'';position:absolute;inset:0;
  background:linear-gradient(90deg,#c6d3e3,#a9bfd3 44%,#8fcbc9)}
.sw-page .swg-rail:after{content:'';position:absolute;left:0;right:0;top:-1px;height:3px;opacity:0;
  background:linear-gradient(90deg,#246bff00,#25c7b866 32%,#246bff73 64%,#25c7b800);
  transform-origin:left center;
  animation:swg-sweep 6s cubic-bezier(.4,0,.6,1) infinite}
@keyframes swg-sweep{
  0%{transform:scaleX(.02);opacity:0}
  16%{opacity:1}
  74%{transform:scaleX(1);opacity:.85}
  100%{transform:scaleX(1);opacity:0}}
.sw-page .swg-pulse{position:absolute;left:0;top:50%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;
  border-radius:50%;background:#25c7b8;box-shadow:0 0 0 3px #25c7b81f,0 0 12px #25c7b899;opacity:0;
  animation:swg-pulse 6s cubic-bezier(.42,0,.58,1) infinite}
@keyframes swg-pulse{
  0%{left:0;opacity:0}
  10%{opacity:1}
  84%{opacity:1}
  96%,100%{left:100%;opacity:0}}
.sw-page .swg-step{position:relative;z-index:1;text-align:center}
.sw-page .swg-node{position:relative;display:flex;width:43px;height:43px;margin:0 auto 18px;
  align-items:center;justify-content:center;border-radius:50%;
  background:#fff;border:1px solid #d5e0ee;color:#2f5fb8;
  font:11px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em;
  box-shadow:0 6px 16px #233c5c12,inset 0 1px 0 #fff;
  transition:transform .32s cubic-bezier(.22,.74,.24,1),border-color .32s,box-shadow .32s}
.sw-page .swg-node b{font-weight:400}
.sw-page .swg-node:before{content:'';position:absolute;inset:-3px;border-radius:50%;opacity:.8;
  background:conic-gradient(from -90deg,#3f74d8,#2fbdb2 var(--swg-p,100%),#e2e9f3 var(--swg-p,100%));
  -webkit-mask:radial-gradient(closest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
  mask:radial-gradient(closest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
  transition:opacity .32s}
.sw-page .swg-tick{position:absolute;left:50%;top:47px;width:1px;height:9px;margin-left:-.5px;
  transform-origin:center top;background:linear-gradient(#c9d7e8,#c9d7e800)}
.sw-page .swg-step>strong{display:block;font-size:17px;font-weight:600;letter-spacing:-.01em;
  color:#17212c;transition:color .32s}
.sw-page .swg-meta{display:block;margin-top:4px;white-space:nowrap;
  font:10px ui-monospace,SFMono-Regular,Menlo,monospace;line-height:1.4;color:#8492a3}
.sw-page .swg-rail + .swg-step .swg-meta{line-height:1.15}
.sw-page .swg-meta em{font-style:normal;color:#3169ca}
.sw-page .swg-meta em:after{content:'·';margin:0 7px;color:#b9c7d8}
.sw-page .swg-step:hover .swg-node{transform:translateY(-3px);border-color:#bdd3ea;
  box-shadow:0 12px 26px #233c5c1f,inset 0 1px 0 #fff}
.sw-page .swg-step:hover .swg-node:before{opacity:1}
.sw-page .swg-step:hover>strong{color:#1a3a63}
.sw-page .swg-node,.sw-page .swg-step>strong,.sw-page .swg-meta,.sw-page .swg-tick{
  animation:swg-in .58s cubic-bezier(.22,.74,.24,1) backwards;
  animation-delay:calc(var(--swg-i,0) * .09s)}
.sw-page .swg-tick{animation-name:swg-tick-in;animation-duration:.4s;
  animation-delay:calc(var(--swg-i,0) * .09s + .18s)}
@keyframes swg-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@keyframes swg-tick-in{from{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}
@media(max-width:560px){
  .sw-page .swg{grid-template-columns:1fr;gap:20px;margin-top:30px}
  .sw-page .swg-rail{left:21px;right:auto;top:22px;bottom:22px;width:1px;height:auto}
  .sw-page .swg-rail:before{background:linear-gradient(180deg,#c6d3e3,#a9bfd3 44%,#8fcbc9)}
  .sw-page .swg-rail:after{left:-1px;right:auto;top:0;bottom:0;width:3px;height:auto;
    transform-origin:center top;animation-name:swg-sweep-v}
  .sw-page .swg-pulse{left:50%;top:0;animation-name:swg-pulse-v}
  .sw-page .swg-step{text-align:left;display:grid;grid-template-columns:44px 1fr;
    column-gap:15px;align-items:center}
  .sw-page .swg-node{grid-row:span 2;margin:0}
  .sw-page .swg-meta{margin:0}
  .sw-page .swg-tick,.sw-page .swg-note{display:none}
}
@keyframes swg-sweep-v{
  0%{transform:scaleY(.02);opacity:0}
  16%{opacity:1}
  74%{transform:scaleY(1);opacity:.85}
  100%{transform:scaleY(1);opacity:0}}
@keyframes swg-pulse-v{
  0%{top:0;opacity:0}
  10%{opacity:1}
  84%{opacity:1}
  96%,100%{top:100%;opacity:0}}
@media(prefers-reduced-motion:reduce){
  .sw-page .swg-rail:after,.sw-page .swg-pulse,.sw-page .swg-tick,
  .sw-page .swg-node,.sw-page .swg-step>strong,.sw-page .swg-meta{animation:none!important}}
