/* 先锋科创登录页点阵视觉。只作用于 .pioneer-login，不改动内页业务组件样式。 */
:root{--pn-ink:#eaf3ff;--pn-soft:#a9c4ea;--pn-dim:#7f9cc6;--pn-line:#9fd0ff;--pn-cyan:#7fe0ff;--pn-blue:#0b4fb3;
 --pn-bg:linear-gradient(180deg,#06132f 0%,#0a2253 48%,#0c3486 100%);
 --pn-grid:linear-gradient(#7fb0ff0d 1px,transparent 1px),linear-gradient(90deg,#7fb0ff0d 1px,transparent 1px);
 --pn-font:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC","Source Han Sans SC","Hiragino Sans GB",sans-serif}

/* ---------- 科创点阵场景 ---------- */
.pioneer-scene{pointer-events:none}
.pioneer-svg{display:block;width:100%;height:100%;overflow:visible}
.pioneer-svg line,.pioneer-svg path,.pioneer-svg polygon,.pioneer-svg ellipse{fill:none;stroke:var(--pn-line);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:0 6.5}
.ps-floor line{stroke-width:1.5;stroke-dasharray:0 7;opacity:.32}
.pioneer-svg .ps-scan{stroke:#bfe8ff;stroke-width:2;stroke-dasharray:none;opacity:0}
.pioneer-svg .ps-bar{fill:url(#psBar);stroke:#9fd8ff;stroke-width:1.6;stroke-dasharray:0 5}
.pioneer-svg .ps-trend{stroke:#7fe0ff;stroke-width:2.4;opacity:.9}
.pioneer-svg .ps-trend-pulse{stroke:#f2fbff;stroke-width:4;stroke-dasharray:9 120;stroke-dashoffset:109;opacity:0}
.pioneer-svg .ps-node{fill:#7fe0ff;stroke:none}
.ps-circuit path{stroke-width:2;opacity:.55}
.ps-circuit-pulse path{stroke:#e9f8ff;stroke-width:3.2;stroke-dasharray:12 130;stroke-dashoffset:112;opacity:0}
.ps-pads circle{fill:#0b2459;stroke:#7fe0ff;stroke-width:2}
.pioneer-svg .ps-core-glow{fill:url(#psGlow);stroke:none}
.pioneer-svg .ps-orbit{stroke-width:1.8;opacity:.55}
.pioneer-svg .ps-electron{stroke:#fff;stroke-width:7;stroke-dasharray:.1 99.9;stroke-dashoffset:0;opacity:.95}
.ps-bulb path,.ps-bulb line{stroke:#d9f1ff;stroke-width:2.6}
.pioneer-svg .ps-filament{stroke:#ffe9a8;stroke-width:2.4;stroke-dasharray:0 5}
.pioneer-svg .ps-core{fill:#fff6cf;stroke:none;filter:drop-shadow(0 0 8px #ffe48a)}
.pioneer-svg .ps-link{stroke-width:1.6;stroke-dasharray:0 6;opacity:.5}
.pioneer-svg .ps-hex{stroke:#9fd8ff;stroke-width:2;fill:#0f2f6c66}
.pioneer-svg .ps-hex-dot{fill:#7fe0ff;stroke:none}
.pioneer-svg .ps-spark{fill:#bfe6ff;stroke:none;opacity:.55}
.ps-labels text{fill:#cfe2ff;font:500 17px/1 var(--pn-font);letter-spacing:2px;opacity:.85}

/* ---------- 点阵标题 ---------- */
.dot-title{position:relative;margin:0;font:600 clamp(48px,6vw,90px)/1.14 var(--pn-font);letter-spacing:.05em;color:#f3f8ff}
.dot-line{display:block;white-space:nowrap}
.dot-title.is-dotted .dot-line{color:transparent}
.dot-canvas{position:absolute;left:0;top:0;pointer-events:none;z-index:2}
.dot-title.fx-live{cursor:crosshair}

/* ---------- 登录页 ---------- */
body.login{background:#06132f}
.pioneer-login{position:relative;isolation:isolate;min-height:calc(100vh - 73px);overflow:hidden;color:var(--pn-ink);font-family:var(--pn-font);
 background:var(--pn-grid),radial-gradient(1100px 520px at 30% 18%,#1a4fae55,transparent 70%),var(--pn-bg);background-size:56px 56px,56px 56px,auto,auto;
 display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,430px);grid-template-rows:auto 1fr;column-gap:clamp(32px,5vw,96px);padding:0 clamp(24px,5.5vw,104px) 40px}
.pioneer-login::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(60% 50% at 50% 108%,#2c78ff40,transparent 70%);pointer-events:none}
.pl-scene{position:absolute;left:0;right:0;bottom:0;height:min(56vh,540px);z-index:-1}
.pl-scene::after{content:"";position:absolute;inset:auto 0 0;height:90px;background:linear-gradient(transparent,#0b2f78cc)}
.pl-top{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:26px 0 0}
.pl-product{display:flex;align-items:baseline;gap:12px;font-size:20px;font-weight:800;letter-spacing:2px;color:#fff}
.pl-product small{font-size:13px;font-weight:500;letter-spacing:2px;color:var(--pn-soft)}
.pl-emblem{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#fff;color:var(--pn-blue);box-shadow:0 0 0 4px #ffffff1f}
.pl-emblem .icon{width:24px;height:24px}
.pioneer-login .env-pill{background:#ffffff14;color:#cfe3ff;border:1px solid #9fc6ff40}
.pl-hero{align-self:start;padding-top:clamp(28px,7vh,84px);min-width:0}
.pl-badge{display:inline-flex;align-items:center;gap:12px;padding:5px 18px 5px 5px;border:1px solid #8fbcff59;border-radius:999px;background:#0a1f4dcc;font-size:15px;color:#e5efff;letter-spacing:.5px}
.pl-badge-icons{display:flex}
.pl-badge-icons span{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#fff;color:var(--pn-blue);border:2px solid #0a1f4d;margin-right:-8px}
.pl-badge-icons span:last-child{margin-right:2px}
.pl-badge-icons .icon{width:16px;height:16px}
.pl-hero .dot-title{margin-top:26px;font-size:clamp(48px,6.2vw,96px);line-height:1.12}
.pl-hero .dot-title .pl-title-sub{font-size:1em;letter-spacing:.05em}
.pl-lead{max-width:34em;margin:22px 0 0;font-size:17px;line-height:1.85;color:#c3d6f3}
.pl-flows{position:absolute;left:clamp(24px,5.5vw,104px);bottom:22px;width:min(820px,60vw);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0;padding:0;list-style:none}
.pl-flows li{display:grid;justify-items:center;gap:3px;padding:6px 8px;text-align:center;text-shadow:0 1px 8px #031033}
.pl-flows .icon{width:20px;height:20px;color:var(--pn-cyan);margin-bottom:3px}
.pl-flows strong{font-size:16px;color:#fff;letter-spacing:1px}
.pl-flows small{font-size:12px;color:var(--pn-dim)}
.pl-panel{align-self:start;padding-top:clamp(20px,5vh,64px)}
.pl-card{display:grid;gap:18px;padding:36px 34px 28px;border-radius:20px;border:1px solid #a9cdff3d;background:linear-gradient(160deg,#10306ad9,#081a42e6);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 24px 60px #01081e80,inset 0 1px 0 #ffffff1a}
.pl-card h2{margin:0;font-size:30px;color:#fff;letter-spacing:2px}
.pl-card>.pl-sub{margin:-8px 0 4px;color:var(--pn-soft);font-size:14px}
.pl-card .field{display:grid;gap:8px;font-size:14px;color:#d5e5ff}
.pl-card input{width:100%;height:50px;padding:0 16px;border-radius:12px;border:1px solid #9fc6ff47;background:#ffffff0d;color:#fff;font-size:15px;font-family:inherit}
.pl-card input::placeholder{color:#a9c4ea8c}
.pl-card input:focus{outline:none;border-color:var(--pn-cyan);box-shadow:0 0 0 3px #7fe0ff33;background:#ffffff14}
.pl-card .password-wrap{position:relative;display:block}
.pl-card .pw-toggle{position:absolute;right:10px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--pn-cyan);font-size:13px;cursor:pointer;padding:6px}
.pl-submit{display:flex;align-items:center;justify-content:center;gap:8px;height:52px;margin-top:6px;border:0;border-radius:999px;background:#fff;color:#0b3a8c;font:700 17px/1 var(--pn-font);letter-spacing:4px;cursor:pointer;box-shadow:0 8px 24px #4aa3ff40;transition:transform .15s,box-shadow .15s}
.pl-submit:hover{transform:translateY(-1px);box-shadow:0 12px 30px #4aa3ff66}
.pl-submit:focus-visible{outline:3px solid var(--pn-cyan);outline-offset:3px}
.pl-submit .arrow{letter-spacing:0;font-size:18px}
.pl-foot{display:grid;justify-items:center;gap:6px;margin:4px 0 0;padding-top:16px;border-top:1px dashed #9fc6ff33;font-size:13px}
.pl-foot a{color:var(--pn-cyan);text-decoration:none}
.pl-foot a:hover{text-decoration:underline}
.pl-foot span{color:var(--pn-dim);font-size:12px}
.pl-card .notice{margin:0}

/* ---------- 动效：持续轻动，遵循系统减少动态效果 ---------- */
@media (prefers-reduced-motion:no-preference){
 .pioneer-login .ps-atom{transform-box:view-box;transform-origin:880px 278px;animation:ps-spin 60s linear infinite}
 .pioneer-login .ps-electron{animation:ps-orbit-run 6s linear infinite}
 .pioneer-login .ps-el1{animation-duration:8s;animation-delay:-2s}.pioneer-login .ps-el2{animation-duration:10s;animation-delay:-5s}
 .pioneer-login .ps-core-glow,.pioneer-login .ps-core{transform-box:fill-box;transform-origin:center;animation:ps-breathe 3.6s ease-in-out infinite}
 .pioneer-login .ps-filament{animation:ps-flicker 3.6s ease-in-out infinite}
 .pioneer-login .ps-bar{transform-box:fill-box;transform-origin:50% 100%;animation:ps-grow 1.2s cubic-bezier(.2,.7,.2,1) both}
 .pioneer-login .ps-bar-1{animation-delay:.08s}.pioneer-login .ps-bar-2{animation-delay:.16s}.pioneer-login .ps-bar-3{animation-delay:.24s}.pioneer-login .ps-bar-4{animation-delay:.32s}.pioneer-login .ps-bar-5{animation-delay:.4s}.pioneer-login .ps-bar-6{animation-delay:.48s}
 .pioneer-login .ps-trend-pulse{animation:ps-dash-a 4.5s 1.4s ease-in-out infinite}
 .pioneer-login .ps-circuit-pulse path{animation:ps-dash-b 3.8s linear infinite}
 .pioneer-login .ps-cp1{animation-delay:-1.2s}.pioneer-login .ps-cp2{animation-delay:-2.1s;animation-duration:4.6s}.pioneer-login .ps-cp3{animation-delay:-.6s;animation-duration:5.2s}.pioneer-login .ps-cp4{animation-duration:2.4s}
 .pioneer-login .ps-tw0{animation:ps-twinkle 3.2s ease-in-out infinite}.pioneer-login .ps-tw1{animation:ps-twinkle 4.1s -1s ease-in-out infinite}.pioneer-login .ps-tw2{animation:ps-twinkle 2.7s -.4s ease-in-out infinite}.pioneer-login .ps-tw3{animation:ps-twinkle 5s -2.2s ease-in-out infinite}
 .pioneer-login .ps-scan{transform-box:view-box;animation:ps-scan 7s 1s ease-in infinite}
 .pl-hero>*,.pl-card{animation:ps-rise .7s cubic-bezier(.2,.7,.2,1) both}
 .pl-hero>:nth-child(2){animation-delay:.08s}.pl-hero>:nth-child(3){animation-delay:.5s}.pl-hero>:nth-child(4){animation-delay:.62s}.pl-card{animation-delay:.2s}
 .pl-flows li{transition:transform .25s,color .25s}.pl-flows li:hover{transform:translateY(-3px)}.pl-flows li:hover .icon{filter:drop-shadow(0 0 6px #7fe0ff)}
}
@keyframes ps-spin{to{transform:rotate(360deg)}}
@keyframes ps-orbit-run{to{stroke-dashoffset:-100}}
@keyframes ps-breathe{0%,100%{transform:scale(1);opacity:.85}50%{transform:scale(1.12);opacity:1}}
@keyframes ps-flicker{0%,100%{opacity:.75}50%{opacity:1}}
@keyframes ps-grow{from{transform:scaleY(0)}to{transform:none}}
@keyframes ps-dash-a{0%{stroke-dashoffset:9;opacity:0}8%{opacity:1}85%{opacity:1}100%{stroke-dashoffset:-100;opacity:0}}
@keyframes ps-dash-b{0%{stroke-dashoffset:12;opacity:0}10%{opacity:1}80%{opacity:1}100%{stroke-dashoffset:-100;opacity:0}}
@keyframes ps-twinkle{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes ps-scan{0%{transform:translateY(0);opacity:0}10%{opacity:.7}100%{transform:translateY(168px);opacity:0}}
@keyframes ps-rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ---------- 响应式 ---------- */
@media (max-width:900px){
 .pioneer-login{grid-template-columns:1fr;padding:0 20px 32px}
 .pl-flows{position:static;width:auto;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:26px}
 .pl-flows li{justify-items:start;text-align:left;padding:12px 14px;border-radius:12px;background:#071a44b3;border:1px solid #9fc6ff26}
 .pl-hero{padding-top:28px}.pl-panel{padding-top:28px}.pl-card{max-width:520px}
 .pl-scene{height:46vh;opacity:.75}
}
@media (max-width:560px){
 .pl-top{padding-top:18px}.pl-product{font-size:17px}.pl-product small{display:none}
 .pl-badge{font-size:12px;padding-right:12px}.pl-badge-icons span{width:26px;height:26px}
 .pl-lead{font-size:15px}.pl-flows{display:none}.pl-hero .dot-title{margin-top:20px}
 .pl-card{padding:26px 20px 22px;border-radius:16px}.pl-card h2{font-size:24px}
}

/* ---------- 2026-11-04 登录页改版（简洁版）：.kc-login ---------- */
body.login{background:#0b2150}
.kc-login{position:relative;min-height:calc(100vh - 74px);display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:clamp(32px,5vw,88px);align-items:center;
 padding:clamp(32px,6vh,72px) clamp(20px,6vw,104px);color:#eaf2ff;font-family:var(--pn-font);overflow:hidden;
 background:linear-gradient(90deg,#071a44 0%,#0a2560f2 46%,#0b2c6ecc 70%,#0b2c6e99 100%),url("/assets/banners/workspace.webp") right center/cover no-repeat}
.kc-login:before{content:"";position:absolute;inset:0;background:linear-gradient(#ffffff08 1px,transparent 1px) 0 0/32px 32px,linear-gradient(90deg,#ffffff08 1px,transparent 1px) 0 0/32px 32px;pointer-events:none}
.kc-login>*{position:relative}
.kl-eyebrow{margin:0 0 14px;font-size:14px;letter-spacing:2px;color:#9cc2f5}
.kl-intro h1{margin:0;font-size:clamp(40px,4.6vw,60px);line-height:1.1;font-weight:800;letter-spacing:6px;color:#fff}
.kl-intro h1 span{display:block;margin-top:14px;font-size:clamp(18px,1.7vw,24px);font-weight:500;letter-spacing:8px;color:#bcd6fb}
.kl-lead{max-width:600px;margin:22px 0 30px;font-size:15px;line-height:1.9;color:#c9dbf6}
.kl-biz{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:720px}
.kl-biz li{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:12px;background:#ffffff0f;border:1px solid #ffffff1f;transition:background .2s,border-color .2s}
.kl-biz li:hover{background:#ffffff1a;border-color:#9cc2f566}
.kl-biz .icon{flex:none;width:34px;height:34px;padding:7px;border-radius:9px;background:#2f8cff33;color:#9fd0ff}
.kl-biz strong{display:block;font-size:15px;color:#fff;letter-spacing:1px}
.kl-biz small{display:block;margin-top:3px;font-size:12px;color:#a9c4ea}
.kl-more{display:flex;flex-wrap:wrap;gap:10px 22px;margin:22px 0 0;font-size:14px;color:#bcd6fb}
.kl-more span{display:inline-flex;align-items:center;gap:6px}
.kl-more .icon{width:16px;height:16px}
.kl-card{display:grid;gap:16px;padding:36px 34px 28px;border-radius:16px;background:#fff;color:#1d2b45;box-shadow:0 24px 60px #01081e66}
.kl-card h2{margin:0;font-size:24px;letter-spacing:2px;color:#0b2c6e}
.kl-card .kl-sub{margin:-8px 0 6px;color:#6b7a90;font-size:14px}
.kl-card .field{display:grid;gap:8px;font-size:14px;color:#33435c}
.kl-card input{width:100%;height:46px;padding:0 14px;border-radius:10px;border:1px solid #d6e0ee;background:#f7f9fc;color:#1d2b45;font-size:15px;font-family:inherit}
.kl-card input:focus{outline:none;border-color:#2f8cff;box-shadow:0 0 0 3px #2f8cff26;background:#fff}
.kl-card .password-wrap{position:relative;display:block}
.kl-card .pw-toggle{position:absolute;right:10px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:#1d6fe0;font-size:13px;cursor:pointer;padding:6px}
.kl-submit{height:48px;margin-top:6px;border:0;border-radius:10px;background:linear-gradient(90deg,#1d6fe0,#0b4fb3);color:#fff;font-size:16px;letter-spacing:6px;font-weight:600;cursor:pointer;font-family:inherit;transition:filter .2s}
.kl-submit:hover{filter:brightness(1.08)}
.kl-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;margin:4px 0 0;padding-top:14px;border-top:1px solid #edf1f7;font-size:13px;color:#8a97ab}
.kl-foot a{color:#1d6fe0;text-decoration:none}
@media (max-width:1100px){.kc-login{grid-template-columns:1fr}.kl-panel{max-width:440px;width:100%}.kl-biz{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.kc-login{padding:24px 16px;gap:24px}.kl-panel{order:-1}.kl-intro h1{font-size:34px}.kl-lead{font-size:14px;margin:14px 0 18px}.kl-biz{grid-template-columns:1fr 1fr;gap:8px}.kl-biz li{padding:10px;gap:8px}.kl-biz .icon{width:28px;height:28px;padding:5px}.kl-biz small{display:none}.kl-card{padding:26px 20px 22px}.kl-intro h1{letter-spacing:3px}}
/* 点阵屏版：标题用 LED 点阵（pioneer.js），背景叠加细点阵，其余保持简洁 */
.kc-login:before{background:radial-gradient(circle,#9fc6ff2e 1.1px,transparent 1.6px) 0 0/14px 14px}
.kl-intro .kl-dot{margin:0;font-size:clamp(64px,7vw,104px);line-height:1.08;letter-spacing:.06em;font-weight:800;color:#f3f8ff}
.kl-subtitle{margin:16px 0 0;font-size:clamp(18px,1.6vw,24px);letter-spacing:8px;color:#bcd6fb}
@media (max-width:560px){.kl-intro .kl-dot{font-size:56px}.kl-subtitle{font-size:16px;letter-spacing:4px}}
.kl-intro h1.kl-dot span.dot-line{display:block;margin:0;font-size:1em;font-weight:800;letter-spacing:.06em;color:#f3f8ff}
.kl-intro h1.kl-dot.is-dotted span.dot-line{color:transparent}
.kc-login:before{z-index:0}.kc-login>.kl-intro,.kc-login>.kl-panel{z-index:1}
/* 核心流程（替换六项业务卡片） */
.kl-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:760px;counter-reset:s}
.kl-steps li{position:relative;display:flex;align-items:center;gap:12px;padding:14px 16px 14px 14px;border-radius:12px;background:#ffffff0f;border:1px solid #ffffff1f;transition:background .2s,border-color .2s}
.kl-steps li:hover{background:#ffffff1a;border-color:#9cc2f566}
.kl-steps li:not(:nth-child(3n)):after{content:"";position:absolute;right:-12px;top:50%;width:12px;height:2px;background:repeating-linear-gradient(90deg,#9fd0ff 0 3px,transparent 3px 6px);opacity:.7}
.kl-steps .kl-no{position:absolute;top:8px;right:12px;font:700 12px/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:#7fe0ff;opacity:.85;letter-spacing:1px}
.kl-steps .icon{flex:none;width:34px;height:34px;padding:7px;border-radius:9px;background:#2f8cff33;color:#9fd0ff}
.kl-steps strong{display:block;font-size:15px;color:#fff;letter-spacing:1px}
.kl-steps small{display:block;margin-top:3px;font-size:12px;color:#a9c4ea;line-height:1.5}
.kl-more{font-size:13px;color:#9cc2f5}
@media (max-width:1100px){.kl-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.kl-steps li:after{display:none}}
@media (max-width:560px){.kl-steps{gap:8px}.kl-steps li{padding:10px;gap:8px}.kl-steps .icon{width:28px;height:28px;padding:5px}.kl-steps small{display:none}}
