/* 品牌开屏动画样式（可移植版）—— 无站点依赖，类名统一 intro- 前缀。 */
body.intro-visible{overflow:hidden}
.brand-intro{position:fixed;inset:0;z-index:9999;overflow:hidden;background:transparent}
.intro-scene,.intro-mask{position:absolute;inset:0;width:100%;height:100%}
.intro-scene{background:#fff;transition:opacity .7s ease}
.intro-scene img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .15s linear;user-select:none;-webkit-user-drag:none}
.intro-scene img.is-active{opacity:1}
.intro-mask{opacity:0;transition:opacity .05s linear}
.brand-intro.is-mask-in .intro-mask{opacity:1}
.brand-intro.is-exiting .intro-scene,.brand-intro.is-exiting .intro-mask{opacity:0;transition:opacity .7s ease}

/* 加载态（圆环 + Logo + 可选提示文字） */
.intro-loader{position:absolute;inset:0;z-index:5;display:grid;place-items:center;background:#fff;opacity:1;visibility:visible;transition:opacity .6s ease,visibility .6s ease}
.intro-loader img{position:relative;z-index:1;width:min(132px,25vw);height:auto;filter:brightness(0);animation:introLogoPulse 1.5s ease-in-out infinite}
.intro-loader-text{position:relative;z-index:1;margin-top:14px;font:14px/1 sans-serif;color:#666;letter-spacing:.1em}
.intro-loader-ring{position:absolute;width:min(174px,33vw);aspect-ratio:1;border:1px solid #000000b3;border-top-color:transparent;border-right-color:#00000066;border-radius:50%;animation:introLoaderSpin 1.3s linear infinite}
.brand-intro.is-loaded .intro-loader{opacity:0;visibility:hidden;pointer-events:none}
@keyframes introLoaderSpin{to{transform:rotate(360deg)}}
@keyframes introLogoPulse{0%,100%{opacity:.55;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}

/* 品牌 Logo 矢量（letter 模式） */
.intro-logo-vector{position:fixed;z-index:2;height:auto;overflow:visible;color:#fff;pointer-events:none;opacity:0;transition:left .7s cubic-bezier(.65,0,.35,1),top .7s cubic-bezier(.65,0,.35,1),width .7s cubic-bezier(.65,0,.35,1),transform .7s cubic-bezier(.65,0,.35,1),opacity .7s ease,filter .4s ease;filter:drop-shadow(0 0 18px #ffffff42)}
.intro-letter{opacity:0;transition:opacity .2s ease}
.intro-letter.is-visible{opacity:1}
.brand-intro.is-ready .intro-logo-vector{transform:none;color:var(--intro-logo-color,#fff);filter:drop-shadow(0 0 18px #ffffff42)}
.brand-intro.is-centered .intro-logo-vector{transform:translateX(var(--intro-center-shift,0));color:var(--intro-logo-color,#fff)}
.brand-intro.is-moving .intro-logo-vector{left:var(--intro-target-left)!important;top:var(--intro-target-top)!important;width:var(--intro-target-width)!important;transform:translateX(0);filter:none}
.brand-intro.is-logo-hidden .intro-logo-vector{opacity:0;transition:opacity 0s}

@media(prefers-reduced-motion:reduce){.brand-intro{display:none}.intro-loader img,.intro-loader-ring{animation:none}}

/* 兢仁医疗「J」字母镂空适配：J 以描边路径绘制，需覆盖默认填充 */
.intro-hole-vector{fill:none;stroke-width:5.5}
.intro-letter{fill:none;stroke:currentColor;stroke-width:5.5;stroke-linecap:butt}

/* 仅加载遮罩模式（.brand-loader，无动画序列） */
.brand-loader{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:#fff;transition:opacity .65s ease,visibility .65s ease}
.brand-loader img{position:relative;z-index:1;width:min(132px,25vw);height:auto;filter:brightness(0);animation:introLogoPulse 1.5s ease-in-out infinite}
.brand-loader .intro-loader-ring{position:absolute;width:min(174px,33vw);aspect-ratio:1;border:1px solid #000000b3;border-top-color:transparent;border-right-color:#00000066;border-radius:50%;animation:introLoaderSpin 1.3s linear infinite}
.brand-loader.is-done{opacity:0;visibility:hidden;pointer-events:none}
@media(prefers-reduced-motion:reduce){.brand-loader img,.brand-loader .intro-loader-ring{animation:none}}
