/* =====================================================================
   Ma114 · v2 皮肤（清新蓝）
   ---------------------------------------------------------------------
   只在 PageV2 = True 的页面加载：body.v2 覆盖旧 token，再按组件覆盖。
   设计基调：淡蓝底 + 白卡 + 克制的红（CTA / 强调）+ 少量绿（状态 / 数据）。
   旧页面继续走 css/style.css，互不影响；全部页面迁移完成后再清理旧规则。
   ===================================================================== */

/* ---------------- 1. Design tokens ---------------- */
.v2{
  --brand:#2963BE;
  --brand-d:#1F4E9C;
  --brand-l:#E7EFFB;
  --brand-r:rgba(41,99,190,.15);
  --accent:#E60012;
  --accent-d:#C40010;
  --accent-l:#FFEBEC;
  --red:#E60012;
  --red-l:#FFEBEC;
  --green:#12B886;
  --green-l:#E6F9F2;
  --orange:#E8963A;
  --orange-l:#FFF4E6;
  --blue:#3B82F6;
  --blue-l:#EAF1FE;
  --purple:#7C6CF6;
  --purple-l:#F0EEFF;
  --gray-l:#EEF3FA;
  --bg:#F4F8FD;
  --card:#FFFFFF;
  --line:#E5EAF2;
  --line2:#D9E0EC;
  --text:#17233A;
  --sub:#64718A;
  --r:16px;
  --sh1:0 1px 2px rgba(15,42,92,.05);
  --sh2:0 10px 30px rgba(15,42,92,.08);
  --sh3:0 24px 60px rgba(15,42,92,.14);
  /* 实景 banner 的白色蒙版：左侧压住文字，右侧让照片明显透出 */
  --hero-veil:linear-gradient(90deg,
    rgba(255,255,255,.93) 0%,
    rgba(255,255,255,.88) 36%,
    rgba(255,255,255,.66) 62%,
    rgba(244,248,255,.32) 84%,
    rgba(234,243,255,.10) 100%);
}

body.v2{
  background:var(--bg);
  color:var(--text);
  -webkit-tap-highlight-color:transparent;
}
/* 首页 banner：与其他页面一致的浅色头图区（不再用深色大图） */
body.v2-home .v2-hero{
  position:relative;overflow:hidden;
  background:
    linear-gradient(90deg,rgba(8,30,60,.45) 0%,rgba(8,30,60,.22) 44%,rgba(8,30,60,0) 70%),
    url("../img/evart/banner-crowd-medal.jpg") center 50%/cover no-repeat,
    #0B2E5C;
  border:1px solid rgba(255,255,255,.12);border-radius:26px;
  padding:38px 44px 34px;box-shadow:0 22px 54px rgba(15,42,92,.16);
}
body.v2-home .v2-hero::before{display:none;}
body.v2-home .v2-hero::after{display:none;}
body.v2-home .v2-hero-bg{display:none;}
body.v2-home .v2-hero-illo{display:none;}
body.v2-home .v2-hero-in{max-width:46%;position:relative;z-index:1;animation:heroIn .8s ease both;}
@keyframes heroBg{0%{background-position:0% 50%}100%{background-position:100% 50%}}
@keyframes heroGlow{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:.95;transform:scale(1.08)}}
@keyframes heroLogo{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-8px) rotate(1deg)}}
@keyframes heroIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  body.v2-home .v2-hero,
  body.v2-home .v2-hero::after,
  body.v2-home .v2-hero-illo,
  body.v2-home .v2-hero-in{animation:none!important;}
}
.v2-hero-illo .h2r1{animation:h2run 4.6s ease-in-out infinite;}
.v2-hero-illo .h2r2{animation:h2run 4.6s ease-in-out infinite .8s;}
.v2-hero-illo .h2r3{animation:h2run 4.6s ease-in-out infinite 1.6s;}
.v2-hero-illo .h2medal{transform-box:view-box;transform-origin:648px 228px;animation:h2medal 11s ease-in-out infinite;}
.v2-hero-illo .h2halo{transform-box:fill-box;transform-origin:center;animation:h2halo 9s ease-in-out infinite;}
.v2-hero-illo .h2cf{transform-box:fill-box;transform-origin:center;animation:h2float 12s ease-in-out infinite;}
@keyframes h2run{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes h2medal{0%,100%{transform:translateY(0) rotate(-1.2deg)}50%{transform:translateY(-7px) rotate(1.4deg)}}
@keyframes h2halo{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:.95;transform:scale(1.05)}}
@keyframes h2float{0%,100%{opacity:.4;transform:translateY(0)}50%{opacity:.95;transform:translateY(-7px)}}
.v2-hero-illo .rnA{animation:heroRunA 4.6s ease-in-out infinite;}
.v2-hero-illo .rnB{animation:heroRunB 4.6s ease-in-out infinite .8s;}
.v2-hero-illo .rnC{animation:heroRunC 4.6s ease-in-out infinite 1.6s;}
.v2-hero-illo .medal{transform-box:view-box;transform-origin:1556px 336px;animation:heroMedal 11s ease-in-out infinite;}
.v2-hero-illo .halo{transform-box:fill-box;transform-origin:center;animation:heroHalo 9s ease-in-out infinite;}
.v2-hero-illo .cf{transform-box:fill-box;transform-origin:center;animation:heroFloat 12s ease-in-out infinite;}
.v2-hero-illo .cf:nth-of-type(2n){animation-delay:1.6s;}
.v2-hero-illo .cf:nth-of-type(3n){animation-delay:3.2s;}
.v2-hero-illo .cf:nth-of-type(4n){animation-delay:4.8s;}
.v2-hero-illo .route{animation:heroDash 26s linear infinite;}
@keyframes heroRunA{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes heroRunB{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes heroRunC{0%,100%{transform:translateY(0)}50%{transform:translateY(-2.5px)}}
@keyframes heroMedal{0%,100%{transform:translateY(0) rotate(-1.2deg)}50%{transform:translateY(-7px) rotate(1.4deg)}}
@keyframes heroHalo{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:.85;transform:scale(1.04)}}
@keyframes heroFloat{0%,100%{opacity:.35;transform:translateY(0) rotate(0)}50%{opacity:.9;transform:translateY(-9px) rotate(8deg)}}
@keyframes heroDash{to{stroke-dashoffset:-120}}
body.v2-home .v2-hero h1{color:#FFFFFF;font-size:36px;line-height:1.25;letter-spacing:-.8px;margin:0;text-shadow:0 2px 12px rgba(0,0,0,.35);}
body.v2-home .hero-feats{display:flex;flex-wrap:wrap;margin:14px 0 0;font-size:13.5px;font-weight:700;color:#9FC3FF;letter-spacing:.02em;}
body.v2-home .hero-feats span{padding:0 14px;border-left:1px solid rgba(159,195,255,.30);}
body.v2-home .hero-feats span:first-child{padding-left:0;border-left:0;}
body.v2-home .hero-search{max-width:500px;margin:16px 0 0;}
body.v2-home .hero-list{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:8px;}
body.v2-home .hero-list li{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;line-height:1.6;color:rgba(255,255,255,.82);}
body.v2-home .hero-list li b{color:#FFFFFF;font-weight:700;}
body.v2-home .hero-list li::before{content:"✓";flex:0 0 16px;width:16px;height:16px;border-radius:50%;background:#FFFFFF;color:#1F4E9C;font-size:10px;display:grid;place-items:center;margin-top:2px;}
body.v2-home .v2-cta{margin-top:18px;}
body.v2-home .v2-cta .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;}
body.v2-home .v2-cta .btn svg{width:16px;height:16px;flex:0 0 16px;}
@media (max-width:980px){
  .v2-hero-illo{display:none;}
  body.v2-home .v2-hero{
    background:
      linear-gradient(rgba(8,30,60,.86),rgba(8,30,60,.72)),
      url("../img/evart/banner-crowd-medal.jpg") center center/cover no-repeat,
      #0B2E5C;
    padding:32px 24px 26px;
  }
  body.v2-home .v2-hero-in{max-width:none;}
  body.v2-home .v2-hero h1{font-size:31px;}
  body.v2-home .hero-feats{font-size:13px;}
  body.v2-home .hero-list li{font-size:12px;}
}
@media (max-width:720px){
  body.v2-home .v2-hero{
    background:linear-gradient(135deg,#F7FAFF 0%,#EAF2FF 55%,#DEEBFF 100%);
    padding:26px 18px 22px;border-radius:20px;
    border-color:#E2EDFC;box-shadow:0 12px 28px rgba(41,99,190,.08);
  }
  body.v2-home .v2-hero h1{font-size:28px;color:#0E2B5C;text-shadow:none;}
  body.v2-home .hero-feats{color:#2963BE;}
  body.v2-home .hero-feats span{border-left-color:rgba(41,99,190,.25);}
  body.v2-home .hero-list li{color:#5A6B85;}
  body.v2-home .hero-list li b{color:#0E2B5C;}
  body.v2-home .hero-list li::before{background:#2963BE;color:#fff;}
  body.v2-home .hero-feats{font-size:12px;margin-top:10px;}
  body.v2-home .hero-feats span{padding:0 9px;}
  body.v2-home .hero-list{margin-top:12px;gap:6px;}
  body.v2-home .hero-list li{font-size:11.5px;}
  body.v2-home .v2-cta .btn{flex:1 1 auto;justify-content:center;}
}
.v2 .page{padding:22px 0 32px;}
/* 页面最后一块（如首页日历）不再额外留 30px，页脚自己留呼吸位即可 */
.v2 .container > .sec:last-child{margin-bottom:0;}
.v2 .container{max-width:1200px;}
.v2 ::selection{background:rgba(41,99,190,.22);}

/* ---------------- 2. 顶栏 ---------------- */
.v2 .topbar{
  background:rgba(255,255,255,.9);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  border-bottom:1px solid var(--line);
  box-shadow:0 1px 0 rgba(15,42,92,.03);
}
.v2 .tb-in{height:66px;gap:18px;position:relative;}
.v2 .tb-in .v2-next-chip{
  position:absolute;left:calc(50% - 170px);top:50%;transform:translate(-50%,-50%);
  margin:0;max-width:350px;z-index:2;
}
.v2 .tb-in .v2-next-chip:hover{transform:translate(-50%,calc(-50% - 1px));}
.v2 .brand{gap:10px;}
.v2 .brand-svg{height:40px;}
.v2 .brand-txt b{
  color:#0E2B5C;font-size:17px;font-weight:800;letter-spacing:.2px;line-height:1.2;
  background:linear-gradient(90deg,#0E2B5C 0%,#1F4E9C 58%,#2963BE 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
}
.v2 .brand-txt i{
  display:flex;align-items:center;gap:5px;margin-top:2px;
  font-style:normal;font-size:10.5px;font-weight:600;letter-spacing:.04em;color:#8A99B3;
}
.v2 .brand-txt i span:first-child{color:var(--brand);font-weight:800;}
.v2 .brand-txt i em{font-style:normal;font-weight:400;color:#C3CEDD;font-size:9px;}
.v2 .nav{gap:2px;}
.v2 .nav > a{
  padding:8px 14px;border-radius:10px;font-size:15px;color:#3E4C66;
  transition:background .16s,color .16s;
}
.v2 .nav > a:hover{background:var(--brand-l);color:var(--brand-d);}
.v2 .nav > a.on{background:var(--brand-l);color:var(--brand-d);font-weight:700;}
.v2 .tb-right .btn-ghost{border-color:var(--line2);color:#3E4C66;background:#fff;}
.v2 .tb-ava{
  flex:0 0 32px;width:32px;height:32px;border-radius:50%;overflow:hidden;
  border:1px solid var(--line2);display:block;background:#EEF3FA;
  margin-right:8px;
}
.v2 .tb-ava img{width:100%;height:100%;object-fit:cover;display:block;}
@media (max-width:720px){.v2 .tb-ava{display:none;}}
.pf-ava{display:flex;align-items:center;gap:14px;margin:0 0 16px;}
.pf-ava-box{position:relative;width:72px;height:72px;border-radius:50%;overflow:hidden;border:1px solid #E2EDFC;background:#EEF3FA;display:block;cursor:pointer;flex:0 0 72px;}
.pf-ava-box img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.pf-ava-file{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;}
.pf-ava-tx b{display:block;font-size:13px;color:#0E2B5C;}
.pf-ava-tx span{display:block;font-size:11.5px;color:#7A8BA6;margin-top:2px;}
.v2 .tb-right .btn-ghost:hover{background:var(--brand-l);border-color:#B9D5FF;color:var(--brand-d);}

/* 下一场胶囊 */
.v2-next-chip{
  display:inline-flex;align-items:center;gap:8px;height:40px;max-width:330px;
  padding:0 12px 0 8px;border-radius:999px;color:#fff;
  background:linear-gradient(135deg,#3F79D4,#2963BE);
  box-shadow:0 8px 18px rgba(41,99,190,.26);
  transition:transform .18s,box-shadow .18s;
}
.v2-next-chip:hover{transform:translateY(-1px);box-shadow:0 12px 24px rgba(41,99,190,.36);}
.v2-nc-ic{
  width:26px;height:26px;flex:0 0 26px;border-radius:50%;
  background:rgba(255,255,255,.18);display:grid;place-items:center;
}
.v2-nc-ic svg{width:15px;height:15px;}
.v2-nc-tx{min-width:0;display:flex;align-items:center;line-height:1.15;}
.v2-nc-tx i{font-style:normal;font-size:10.5px;letter-spacing:.5px;opacity:.78;}
.v2-nc-tx b{font-size:13px;font-weight:700;max-width:196px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.v2-next-chip em{
  flex:0 0 auto;font-style:normal;font-size:12.5px;font-weight:800;white-space:nowrap;
  background:rgba(255,255,255,.2);padding:4px 9px;border-radius:999px;
}

/* 账号下拉：新圆角与浅色 hover */
.v2 .udrop{top:46px;width:188px;border-radius:14px;padding:7px;box-shadow:0 18px 40px rgba(15,42,92,.14);}
.v2 .udrop a{border-radius:9px;font-size:13.5px;color:#33425C;}
.v2 .udrop a:hover{background:var(--brand-l);color:var(--brand-d);}
.v2 .udrop-name{color:var(--sub);}

/* ---------------- 3. 基础组件 ---------------- */
.v2 .btn{border-radius:11px;font-weight:600;}
.v2 .btn-sm{border-radius:9px;}
.v2 .btn-primary{  background:linear-gradient(135deg,#3F79D4,#2963BE);
  box-shadow:0 6px 16px rgba(41,99,190,.28);
}
.v2 .btn-primary:hover{box-shadow:0 10px 22px rgba(41,99,190,.34);}
.v2 .btn-red{
  background:linear-gradient(135deg,#FF1A1A,#E60012);
  box-shadow:0 6px 16px rgba(230,0,18,.28);
}
.v2 .btn-red:hover{box-shadow:0 10px 22px rgba(230,0,18,.36);}
.v2 .btn-ghost{background:#fff;border-color:var(--line2);color:#3E4C66;}
.v2 .btn-ghost:hover{background:var(--brand-l);border-color:#B9D5FF;color:var(--brand-d);}
.v2 .btn-wghost{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.5);color:#fff;}
.v2 .btn-wghost:hover{background:rgba(255,255,255,.26);border-color:#fff;}
.v2 .chip{border-radius:999px;border-color:var(--line2);color:#4A5C78;}
.v2 .chip:hover{border-color:#B9D5FF;background:var(--brand-l);color:var(--brand-d);}
.v2 .chip.on{background:var(--brand);border-color:var(--brand);color:#fff;}
.v2 .tag{border-radius:7px;}

/* ---------------- 4. 首页门面 ---------------- */
.v2-hero{
  position:relative;overflow:hidden;isolation:isolate;
  margin-bottom:24px;padding:44px 44px 26px;border-radius:26px;
  background:
    radial-gradient(58% 92% at 84% 6%,#D5E7FF 0%,rgba(213,231,255,0) 62%),
    linear-gradient(120deg,#E9F2FF 0%,#F8FBFF 46%,#DDEBFF 100%);
  border:1px solid #E2EDFC;
  box-shadow:0 22px 54px rgba(41,99,190,.09);
}
/* 纯色渐变 + 右侧抽象 SVG 动效 */
.v2-hero-bg{display:block;position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;}
.v2-hero-bg i,.v2-hero-bg .v2-grid{display:none;}
.v2-hero-art{
  position:absolute;right:-6px;top:50%;transform:translateY(-50%);
  width:min(48%,560px);height:auto;
}
.hero-route{animation:heroFlow 3.2s linear infinite;}
.hero-orbit-ring{animation:heroDash 16s linear infinite;}
.hero-pin{transform-box:fill-box;transform-origin:50% 100%;animation:heroBob 4.5s ease-in-out infinite;}
.hero-pin.p2{animation-delay:1.1s;}
.hero-pulse{transform-box:fill-box;transform-origin:center;animation:heroPulse 3s ease-out infinite;}
.hero-card{transform-box:fill-box;transform-origin:center;animation:heroFloat 6.5s ease-in-out infinite;}
.hero-spark{transform-box:fill-box;transform-origin:center;animation:heroTwinkle 3.6s ease-in-out infinite;}
.hero-spark.s2{animation-delay:.9s;}
.hero-spark.s3{animation-delay:1.6s;}
.hero-spark.s4{animation-delay:2.4s;}
/* 沿着跑道奔跑的小人：手脚摆动 + 轻微上下起伏，沿环形路径移动 */
.hero-runner .ra1,.hero-runner .ra2,.hero-runner .rl1,.hero-runner .rl2{transform-box:fill-box;}
.hero-runner .ra1,.hero-runner .rl1{transform-origin:100% 0%;}
.hero-runner .ra2,.hero-runner .rl2{transform-origin:0% 0%;}
.hero-runner .ra1{animation:runArmA .52s ease-in-out infinite;}
.hero-runner .ra2{animation:runArmB .52s ease-in-out infinite;}
.hero-runner .rl1{animation:runLegA .52s ease-in-out infinite;}
.hero-runner .rl2{animation:runLegB .52s ease-in-out infinite;}
.hero-runner .runner-bob{animation:runBob .52s ease-in-out infinite;}
@keyframes heroFlow{to{stroke-dashoffset:-52;}}
@keyframes heroDash{to{stroke-dashoffset:-160;}}
@keyframes runArmA{0%,100%{transform:rotate(-22deg);}50%{transform:rotate(22deg);}}
@keyframes runArmB{0%,100%{transform:rotate(22deg);}50%{transform:rotate(-22deg);}}
@keyframes runLegA{0%,100%{transform:rotate(28deg);}50%{transform:rotate(-28deg);}}
@keyframes runLegB{0%,100%{transform:rotate(-28deg);}50%{transform:rotate(28deg);}}
@keyframes runBob{0%,100%{transform:translateY(0);}50%{transform:translateY(-1.8px);}}
@keyframes heroBob{0%,100%{transform:translateY(-3px);}50%{transform:translateY(3px);}}
@keyframes heroPulse{0%{transform:scale(.7);opacity:.45;}70%,100%{transform:scale(1.8);opacity:0;}}
@keyframes heroFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-8px);}}
@keyframes heroTwinkle{0%,100%{opacity:.25;transform:scale(.9);}50%{opacity:1;transform:scale(1.15);}}
.v2-hero-bg i{position:absolute;border-radius:50%;filter:blur(46px);}
.v2-hero-bg .b1{width:440px;height:440px;right:-90px;top:-170px;background:rgba(122,180,255,.5);}
.v2-hero-bg .b2{width:300px;height:300px;left:-140px;bottom:-150px;background:rgba(255,138,138,.16);}
.v2-hero-bg .b3{width:260px;height:260px;left:36%;top:-130px;background:rgba(18,184,134,.10);}
.v2-grid{
  position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(41,99,190,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(41,99,190,.05) 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(ellipse at 26% 16%,#000 0%,transparent 72%);
  mask-image:radial-gradient(ellipse at 26% 16%,#000 0%,transparent 72%);
}
.v2-hero-in{position:relative;z-index:2;max-width:calc(56% - 40px);min-width:0;}
.v2-tag{
  display:inline-flex;align-items:center;gap:8px;
  padding:5px 13px;border-radius:999px;background:#fff;border:1px solid #DCE9FB;
  color:#3E5B86;font-size:12.5px;font-weight:600;
  box-shadow:0 4px 12px rgba(41,99,190,.08);
}
.v2-tag i{width:6px;height:6px;border-radius:50%;background:#12B886;box-shadow:0 0 0 3px rgba(18,184,134,.18);}
.v2-hero h1{
  margin-top:16px;font-size:40px;line-height:1.28;font-weight:900;
  letter-spacing:.3px;color:#0E2B5C;
}
.v2-hero h1 b{color:#2963BE;font-weight:900;}
.v2-hero h1 em{
  font-style:normal;padding:0 2px;
  background:linear-gradient(transparent 64%,rgba(230,0,18,.20) 64%);
}
.v2-lead{margin-top:12px;max-width:560px;font-size:15px;line-height:1.85;color:#5A6B85;}

.v2 .hero-search{
  max-width:560px;margin-top:24px;padding:7px 7px 7px 15px;
  background:#fff;border:1px solid #DCE9FB;border-radius:14px;
  box-shadow:0 12px 30px rgba(41,99,190,.12);
}
.v2 .hero-search input[type=text]{height:38px;font-size:15px;color:var(--text);background:transparent;}
.v2 .hero-search .hs-ico{color:#8FA6C8;}
.v2 .hs-btn{
  height:40px;padding:0 22px;border-radius:10px;font-size:14.5px;
  background:linear-gradient(135deg,#FF1A1A,#E60012);
  box-shadow:0 6px 14px rgba(230,0,18,.26);
}
.v2-cta{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px;}

/* 右侧 SVG 场景 */
.v2-art{
  position:absolute;right:6px;top:45%;transform:translateY(-50%);
  width:min(44%,500px);height:auto;z-index:1;pointer-events:none;
}
.v2-art .a-flow{stroke-dasharray:12 18;animation:v2Flow 2.4s linear infinite;}
.v2-art .a-bob{animation:v2Bob 2.4s ease-in-out infinite;}
.v2-art .a-flag{transform-box:fill-box;transform-origin:left center;animation:v2Flag 2s ease-in-out infinite;}
.v2-art .a-pin{transform-box:fill-box;transform-origin:50% 100%;animation:v2Pin 3s ease-in-out infinite;}
.v2-art .a-pin.p2{animation-delay:.6s;}
.v2-art .a-pulse{transform-box:fill-box;transform-origin:center;animation:v2Pulse 2.6s ease-out infinite;}
.v2-art .a-card{transform-box:fill-box;transform-origin:center;animation:v2Float 4.6s ease-in-out infinite;}
.v2-art .a-spark{transform-box:fill-box;transform-origin:center;animation:v2Spark 3s ease-in-out infinite;}
.v2-art .a-spark.s2{animation-delay:.8s;}
.v2-art .a-spark.s3{animation-delay:1.4s;}
.v2-art .a-ring{transform-box:view-box;transform-origin:389px 330px;animation:v2Spin 10s linear infinite;}
@keyframes v2Flow{to{stroke-dashoffset:-60;}}
@keyframes v2Bob{0%,100%{transform:translateY(0);}50%{transform:translateY(-6px);}}
@keyframes v2Flag{0%,100%{transform:rotate(-8deg) scaleX(.92);}50%{transform:rotate(8deg) scaleX(1.06);}}
@keyframes v2Pin{0%,100%{transform:translateY(-3px);}50%{transform:translateY(2px);}}
@keyframes v2Pulse{0%{transform:scale(.65);opacity:.5;}70%,100%{transform:scale(1.7);opacity:0;}}
@keyframes v2Float{0%,100%{transform:translateY(0) rotate(-5deg);}50%{transform:translateY(-7px) rotate(-3deg);}}
@keyframes v2Spark{0%,100%{opacity:.25;transform:scale(.9);}50%{opacity:1;transform:scale(1.12);}}
@keyframes v2Spin{to{transform:rotate(360deg);}}

/* 四格数据：白卡压在门面底部（替换旧的深色玻璃条） */
.v2-kpis{
  position:relative;z-index:2;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  margin-top:30px;background:#fff;border:1px solid #E2EDFC;border-radius:18px;
  box-shadow:0 16px 36px rgba(41,99,190,.10);overflow:hidden;
}
.v2-kpi{min-width:0;padding:15px 20px;border-left:1px solid #EDF3FC;transition:background .16s;}
.v2-kpi:first-child{border-left:0;}
.v2-kpi:hover{background:#F6FAFF;}
.v2-kpi b{
  display:block;font-size:26px;font-weight:800;line-height:1.15;
  color:#0E2B5C;font-variant-numeric:tabular-nums;
}
.v2-kpi span{display:block;margin-top:2px;font-size:12.5px;color:var(--sub);}
.v2-kpi:nth-child(2) b{color:var(--accent);}
.v2-kpi:nth-child(4) b{color:var(--green);}

/* 首页登录态：「我的下一场」单行条 */
.v2-nextbar{
  display:flex;align-items:center;gap:12px;
  margin:0 0 22px;padding:0 16px;height:60px;
  background:linear-gradient(90deg,#F4F8FF 0%,#FFFFFF 62%);
  border:1px solid var(--line);border-left:4px solid var(--brand);
  border-radius:14px;box-shadow:0 10px 26px rgba(41,99,190,.08);
  transition:transform .18s,box-shadow .18s,border-color .18s;
}
.v2-nextbar:hover{transform:translateY(-2px);border-color:#BBD4F5;box-shadow:0 16px 34px rgba(41,99,190,.14);}
.v2-nb-ic{
  flex:0 0 36px;width:36px;height:36px;border-radius:10px;background:var(--brand-l);
  color:var(--brand);display:grid;place-items:center;
}
.v2-nb-ic svg{width:19px;height:19px;}
.v2-nb-label{flex:0 0 auto;font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--brand);white-space:nowrap;}
.v2-nb-title{flex:1 1 auto;min-width:0;font-size:15px;font-weight:800;color:#0E2B5C;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.v2-nb-meta{flex:0 0 auto;font-size:12px;color:var(--sub);white-space:nowrap;}
.v2-nb-days{
  flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;
  color:var(--brand-d);background:var(--brand-l);padding:5px 10px;border-radius:999px;white-space:nowrap;
}
.v2-nb-days i{font-style:normal;font-size:10px;color:var(--brand);opacity:.75;}
.v2-nb-days b{font-size:11.5px;font-weight:800;}
.v2-nb-go{
  flex:0 0 auto;display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 12px;
  border-radius:8px;background:var(--brand);color:#fff;font-size:12px;font-weight:700;white-space:nowrap;
}
.v2-nb-go em{font-style:normal;}
@media (max-width:720px){
  .v2-nextbar{gap:9px;margin:0 0 16px;padding:0 12px;height:54px;border-radius:12px;}
  .v2-nb-ic{flex-basis:30px;width:30px;height:30px;border-radius:8px;}
  .v2-nb-ic svg{width:16px;height:16px;}
  .v2-nb-label{display:none;}
  .v2-nb-title{font-size:13px;}
  .v2-nb-meta{display:none;}
  .v2-nb-days{font-size:10px;padding:3px 7px;}
  .v2-nb-go{height:28px;padding:0 9px;font-size:11px;}
}

/* ---------------- 5. 首页其余区块 ---------------- */
.v2 .sec{margin-bottom:30px;}
.v2 .sec-hd h2{font-size:20px;color:#0E2B5C;}
.v2 .cat-nav{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;}
@media (max-width:980px){
  .v2 .cat-nav{grid-template-columns:repeat(3,minmax(0,1fr));}
}
.v2 .cat-tile{
  background:#fff;border:1px solid var(--line);border-radius:18px;
  padding:22px 12px 18px;box-shadow:var(--sh1);
}
.v2 .cat-tile:hover{transform:translateY(-4px);border-color:#BBD6FF;box-shadow:0 16px 32px rgba(41,99,190,.12);}
.v2 .cn-ic{width:54px;height:54px;border-radius:16px;}
.v2 .cn-tx b{font-size:15.2px;}
.v2 .cn-tx i{font-size:12.5px;}

.v2 .cal-big{
  background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--sh2);
}
.v2 .cal-big-hd{padding:18px 24px;background:linear-gradient(120deg,#F3F8FF 0%,#FFFFFF 62%);border-bottom:1px solid var(--line);}
.v2 .cal-big-hd h3{font-size:17.5px;color:#0E2B5C;letter-spacing:.02em;text-align:right;}
/* 首页日历：改用与 calendar.asp 同款的年月导航 */
.v2 .hm-cal-nav{display:flex;align-items:center;gap:6px;justify-content:flex-end;flex-wrap:wrap;}
.v2 .hm-cal-jump{display:flex;align-items:center;gap:6px;}
.v2 .hm-cal-ar{
  display:grid;place-items:center;width:26px;height:26px;border-radius:8px;
  background:#EAF2FF;color:#2963BE;text-decoration:none;font-weight:800;font-size:14px;
  transition:background .15s,color .15s;
}
.v2 .hm-cal-ar:hover{background:#2963BE;color:#fff;}
.v2 .hm-cal-nav .cal-sel{height:30px;font-size:12px;padding:0 6px;}
@media (max-width:720px){
  .v2 .hm-cal-nav{justify-content:flex-start;}
}
.v2 .cal-month-pill{
  display:inline-flex;align-items:center;padding:7px 16px;border-radius:999px;
  background:var(--brand-l);color:var(--brand-d);
  font-size:15px;font-weight:800;letter-spacing:.02em;line-height:1.2;
}
.v2 .cal-big-t{display:flex;align-items:center;gap:9px;color:#0E2B5C;font-weight:800;}
.v2 .cal-big-hd .cal-more-btn{
  display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;
  height:32px;padding:0 12px;border-radius:9px;
  background:var(--brand);color:#fff;font-size:12px;font-weight:700;
  box-shadow:0 6px 14px rgba(41,99,190,.22);
  transition:background .16s,transform .16s;
}
.v2 .cal-big-hd .cal-more-btn:hover{background:var(--brand-d);color:#fff;transform:translateY(-1px);}
.v2 .cal-ic{
  width:34px;height:34px;border-radius:10px;background:var(--brand-l);color:var(--brand);
  display:grid;place-items:center;flex:0 0 34px;
}
.v2 .cal-ic svg{width:19px;height:19px;}
.v2 .cm-day{border-radius:11px;background:#F5F9FF;}
.v2 .cal-big .cm-day{border-radius:12px;background:#F7FAFF;min-height:58px;transition:background .15s,transform .15s;}
.v2 .cm-day.has{background:#E7EFFB;color:#1F4E9C;}
.v2 .cm-day.has em{font-size:10.5px;font-weight:700;color:var(--brand);}
.v2 .cm-day.has:hover{background:#D9E8FF;transform:translateY(-1px);}
.v2 .cm-day.today{box-shadow:inset 0 0 0 2px var(--accent);color:var(--accent-d);position:relative;}
.v2 .cm-day.today::after{
  content:"今天";position:absolute;left:50%;bottom:8px;transform:translateX(-50%);
  font-size:8.5px;line-height:1;font-weight:700;color:#E60012;
  letter-spacing:.02em;pointer-events:none;white-space:nowrap;
}
.v2 .cm-day.today.has::after{left:auto;right:4px;bottom:auto;top:3px;transform:none;}
.v2 .cm-day.today.has{background:#FDEDEE;}
.v2 .cm-day.today.has em{color:var(--accent);}
.v2 .cal-mini-tip{display:flex;align-items:center;gap:14px;}
.v2 .cal-tip-tx{flex:1;min-width:0;}
.v2 .cal-tip-art{flex:0 0 auto;width:64px;height:20px;color:var(--brand);opacity:.45;}
@media (max-width:720px){
  .v2 .cal-tip-art{display:none;}
  .v2 .cal-big-hd h3{font-size:14px;text-align:left;}
  .v2 .cal-month-pill{font-size:13px;padding:6px 13px;}
}

.v2 .hm-band{
  background:linear-gradient(120deg,#2963BE 0%,#4E93FF 52%,#7DB5FF 100%);
  border-radius:24px;padding:34px 38px 30px;
  box-shadow:0 24px 60px rgba(41,99,190,.22);
}
.v2 .hm-band-bg .bb1{background:radial-gradient(circle,rgba(255,255,255,.55),rgba(255,255,255,0) 68%);}
.v2 .hm-band-bg .bb2{background:radial-gradient(circle,rgba(255,214,110,.5),rgba(255,214,110,0) 66%);}
.v2 .hm-band-hd h2{font-size:24px;}
.v2 .hm-band-hd h2 em{background:none;color:#FFE3A3;}
.v2 .hm-band-hd p{color:rgba(255,255,255,.88);}
.v2 .hm-step{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.24);border-radius:16px;}
.v2 .hs-num{background:linear-gradient(135deg,#FF1A1A,#E60012);}
.v2 .hm-feats span{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.28);}
.v2 .hm-band-ft .btn-red{background:#fff;color:#1F4E9C;box-shadow:0 10px 24px rgba(9,40,90,.18);}
.v2 .hm-band-ft .btn-red:hover{box-shadow:0 14px 30px rgba(9,40,90,.24);}
.v2 .hm-band-ft .btn-wghost{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.55);}

/* ---------------- 6. 页脚 + 底部导航 ---------------- */
.v2 .footer{background:#0E2B5C;border-radius:20px;box-shadow:0 20px 50px rgba(14,43,92,.18);}
.v2 .ft-pub{background:linear-gradient(135deg,#19C99A,#12B886);}
.v2 .ft-fb{background:linear-gradient(135deg,#FF1A1A,#E60012);}

.v2-tabbar{display:none;}

/* ---------------- 7. 响应式 ---------------- */
@media (max-width:1180px){
  /* 中屏顶栏先把「下一场」胶囊收成「下一场 · N 天」，避免与 5 个导航项抢宽 */
  .v2-nc-tx b{display:none;}
  .v2-next-chip{max-width:none;}
}
@media (max-width:980px){
  .v2 .tb-in{gap:12px;height:60px;}
  .v2 .brand-svg{height:34px;}
  .v2 .nav > a{padding:7px 9px;font-size:13.5px;}
  .v2 .v2-next-chip{display:none;}
  .v2 .tb-right .btn-sm{font-size:12.5px;padding:0 10px;}
  .v2-hero{padding:36px 30px 22px;}
  .v2-hero h1{font-size:33px;}
  .v2-hero-art{width:380px;right:-90px;opacity:.45;}
  .v2-hero-in{max-width:none;}
  .v2-art{width:360px;opacity:.2;right:-46px;top:auto;bottom:72px;transform:none;}
  .v2 .hm-band{padding:28px 26px 26px;}
}
@media (max-width:720px){
  .v2 .tb-in{height:56px;}
  /* 手机端品牌文字贴近盾徽，仅在右侧留 6px 与导航分隔 */
  .v2 .brand{gap:4px;}
  .v2 .brand-txt{padding:0 6px 0 0;}
  /* 手机端顶栏导航：赛事库 / 日历 / 跑团 / 资讯 四项常驻。 */
  .v2 .nav{
    display:flex;flex:1 1 auto;min-width:0;justify-content:flex-end;gap:0;
    overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;
    -webkit-overflow-scrolling:touch;
  }
  .v2 .nav::-webkit-scrollbar{display:none;height:0;}
  .v2 .nav > a{
    padding:12px 5.5px;font-size:13px;line-height:1.2;letter-spacing:-.2px;
    white-space:nowrap;
  }
  .v2 .nav > a.on::after{left:5px;right:5px;height:2px;}
  .v2 .v2-next-chip{display:none;}
  .v2 .brand-svg{height:34px;}
  .v2 .brand-txt b{font-size:15px;}
  .v2 .brand-txt i{font-size:9.5px;letter-spacing:.02em;margin-top:1px;gap:1px;}
  .v2 .tb-mine{border-color:var(--line2);color:#3E4C66;background:#fff;border-radius:10px;}
  .v2 .tb-mine.on{background:var(--brand-l);border-color:#B9D5FF;color:var(--brand-d);}
  body.v2{padding-bottom:calc(84px + env(safe-area-inset-bottom));}
  .v2 .page{padding:14px 0 26px;}

  .v2-hero{padding:26px 18px 18px;border-radius:20px;margin-bottom:18px;}
  .v2-hero h1{margin-top:12px;font-size:27px;}
  .v2-hero-art{width:300px;right:-80px;top:auto;bottom:-24px;transform:none;opacity:.24;}
  .hero-runner,.hero-trail{display:none;}
  .v2-lead{font-size:13px;line-height:1.75;}
  .v2-art{width:230px;opacity:.18;right:-70px;top:auto;bottom:74px;transform:none;}
  .v2 .hero-search{max-width:none;margin-top:18px;}
  .v2 .hero-search input[type=text]{height:36px;font-size:14px;}
  .v2 .hs-btn{height:38px;padding:0 16px;font-size:13.5px;}
  .v2-cta{gap:9px;margin-top:14px;}
  .v2-cta .btn{flex:1 1 auto;justify-content:center;}
  .v2-kpis{margin-top:20px;border-radius:14px;}
  .v2-kpi{padding:10px 5px;text-align:center;}
  .v2-kpi b{font-size:18px;}
  .v2-kpi span{font-size:10px;}
  .v2 .cat-nav{gap:9px;}
  .v2 .cat-tile{padding:14px 6px 12px;border-radius:14px;}
  .v2 .cn-ic{width:42px;height:42px;border-radius:13px;}

  .v2-tabbar{
    position:fixed;left:50%;right:auto;bottom:calc(8px + env(safe-area-inset-bottom));
    width:calc(100% - 16px);max-width:520px;transform:translateX(-50%);
    z-index:90;display:flex;align-items:flex-start;justify-content:space-around;
    background:rgba(255,255,255,.98);
    -webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);
    border:1px solid rgba(41,99,190,.14);
    border-radius:20px;
    box-shadow:0 12px 30px rgba(15,42,92,.16),0 2px 8px rgba(15,42,92,.06);
    padding:8px 3px 6px;
  }
  .v2-tab{
    flex:1;min-width:0;display:grid;grid-template-rows:30px 14px;row-gap:3px;
    justify-items:center;align-content:center;
    padding:0;font-size:10.5px;line-height:1.25;font-weight:700;color:#4A5B74;
  }
  .v2-tab svg{
    grid-row:1;align-self:center;
    width:18px;height:18px;padding:5px;box-sizing:content-box;border-radius:9px;
    color:#2B62BE;background:linear-gradient(135deg,#F4F8FF,#E8F1FF);
    box-shadow:inset 0 0 0 1px rgba(41,99,190,.10);
    transition:background .18s,color .18s,box-shadow .18s;
  }
  .v2-tab span{grid-row:2;white-space:nowrap;}
  .v2-tab.on{color:#17458F;font-weight:800;}
  .v2-tab.on svg{
    color:#fff;background:linear-gradient(135deg,#4C86DF,#2963BE);
    box-shadow:0 6px 14px rgba(41,99,190,.30);
    stroke-width:2.1;
  }
  /* 中间「首页」：比普通入口大一圈的悬浮圆钮，形成主次关系 */
  .v2-tab.v2-tab-home svg{
    width:20px;height:20px;padding:8px;border:4px solid #fff;border-radius:50%;
    color:#fff;background:linear-gradient(135deg,#4C86DF,#2963BE);
    box-shadow:0 8px 18px rgba(41,99,190,.40);
    transform:translateY(-8px);
  }
  .v2-tab.v2-tab-home.on svg{box-shadow:0 9px 20px rgba(41,99,190,.50);}
}
@media (max-width:400px){
  .v2 .nav > a{padding:12px 4.4px;font-size:12.5px;}
  .v2-hero h1{font-size:23px;}
  .v2-kpi b{font-size:16px;}
  .v2-kpi span{font-size:9.5px;}
}
@media (max-width:360px){
  .v2 .nav > a{padding:12px 3.3px;font-size:12px;}
  /* 五等分底栏在 320~360px 收紧，避免「我的赛事列表」截字 */
  .v2-tab{font-size:9.5px;grid-template-rows:26px 13px;row-gap:2px;letter-spacing:-.2px;}
  .v2-tab svg{width:16px;height:16px;padding:4px;border-radius:8px;}
  .v2-tab.v2-tab-home svg{width:18px;height:18px;padding:6px;border-width:3px;transform:translateY(-6px);}
  .v2-ft-pills a{font-size:10.5px;padding:0 1px;gap:3px;}
  /* 日历：极窄屏让三个分类和日期导航各保持一行 */
  .v2 .cal-bar .chip{padding:0 10px;font-size:12.5px;}
  .v2 .cal-sel{height:30px;font-size:11.5px;padding:0 4px;}
  .v2 .cal-nav .btn-sm{font-size:11.5px;padding:0 7px;}
}
@media (prefers-reduced-motion:reduce){
  .v2-art *{animation:none !important;}
  .hero-runner,.hero-trail{display:none;}
}

/* =====================================================================
   赛事库（events.asp）v2
   ===================================================================== */
.v2-hero-sm{padding:38px 44px 34px;}
/* 赛事库 / 日历：同一个 v2-hero-sm 骨架，换成各自的实景图 */
.v2-hero-events{
  background:
    var(--hero-veil),
    url("../img/evart/banner-start-medal.jpg") center 50%/cover no-repeat,
    #EAF3FF;
}
.v2-hero-cal{
  background:
    var(--hero-veil),
    url("../img/evart/banner-road.jpg") center 55%/cover no-repeat,
    #EAF3FF;
}
.v2-hero-sm .v2-hero-in{max-width:760px;}
.v2-hero-sm h1{font-size:36px;}
.v2-art-sm{width:min(38%,400px);top:50%;}

.v2-filterbar{
  position:sticky;top:70px;z-index:40;
  margin:0 0 22px;padding:12px 14px;border-radius:16px;
  background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  border:1px solid var(--line);box-shadow:0 10px 26px rgba(15,42,92,.08);
}
.v2-filterbar .fb-row{gap:9px;}
.v2-filterbar .fb-input{
  height:42px;border-radius:11px;border-color:var(--line2);
  background:#F8FBFF;font-size:14px;color:var(--text);
}
.v2-filterbar .fb-input:focus{background:#fff;border-color:#9CC2FF;box-shadow:0 0 0 3px rgba(41,99,190,.14);}
.v2-filterbar .btn{height:42px;border-radius:11px;}

.v2 .ev-sec{margin-bottom:26px;}
.v2 .evk-cards{gap:10px;}
.v2 .evk-card{
  border-radius:16px;border-color:var(--line);
  box-shadow:0 4px 14px rgba(15,42,92,.05);
  padding:12px 18px;
}
.v2 .evk-card:hover{border-color:#BBD6FF;box-shadow:0 14px 30px rgba(41,99,190,.12);}
.v2 .ec-date b{color:#0E2B5C;font-size:17px;}
.v2 .ec-dsub i{color:var(--brand);}
.v2 .ec-name{font-size:15.5px;color:#17233A;}
.v2 .ec-city{color:var(--sub);}
.v2 .ec-reg > span{color:var(--sub);}
.v2 .ec-r .er-join .btn{padding:5px 12px;font-size:12.5px;border-radius:9px;}
.v2 .ec-r .er-join .btn-ghost{background:var(--brand-l);color:var(--brand-d);}
.v2 .er-type{border-radius:999px;font-weight:700;}
.v2 .er-type.road{background:#FDECEC;color:#C62828;}
.v2 .er-type.trail{background:var(--green-l);color:#12B886;}
.v2 .ec-bdg.on{background:var(--green-l);color:#12B886;}
.v2 .ec-bdg.wait{background:var(--brand-l);color:var(--brand-d);}

/* 分段头：浅蓝底 + 蓝色竖条（替换旧版深蓝条 + 红竖条） */
.v2 .ev-sec-hd,
.v2 .ev-sec-hd.open,
.v2 .ev-sec-hd.soon,
.v2 .ev-sec-hd.closedreg,
.v2 .ev-sec-hd.pending,
.v2 .ev-sec-hd.done{
  background:#2963BE;
  border:1px solid #2963BE;border-left:4px solid var(--brand);
  border-radius:14px;padding:11px 16px;margin-bottom:2px;
}
.v2 .ev-sec-hd h2,
.v2 .ev-sec-hd h2 *{color:#fff;font-size:16.5px;font-weight:800;}
.v2 .ev-sec-hd{
  justify-content:space-between;width:100%;
}
.v2 .ev-quick{
  display:inline-flex;align-items:center;flex-wrap:nowrap;margin-left:auto;
  padding:3px;gap:3px;border-radius:12px;background:#fff;border:1px solid #fff;
  box-shadow:0 1px 2px rgba(11,28,61,.16);
}
.v2 .ev-sec-hd .ev-quick .chip{
  --qc:#2963BE;
  background:transparent;border:0;border-radius:9px;color:#4A5C78;
  font-size:12.5px;font-weight:600;padding:7px 15px;height:auto;line-height:1.25;
  transition:background .16s,color .16s,box-shadow .16s;
}
.v2 .ev-sec-hd .ev-quick .chip:hover{background:#EEF4FE;color:#1F4E9C;}
.v2 .ev-sec-hd .ev-quick .chip.on{
  background:var(--qc);color:#fff;
  box-shadow:0 1px 3px rgba(15,42,92,.22),inset 0 0 0 1px rgba(255,255,255,.12);
}
.v2 .ev-sec-hd .ev-quick .chip.road{--qc:#E60012;}
.v2 .ev-sec-hd .ev-quick .chip.trail{--qc:#0E8A5F;}
@media (max-width:720px){
  .v2 .ev-quick{display:flex;width:100%;margin:8px 0 0;}
  .v2 .ev-sec-hd .ev-quick .chip{flex:1;text-align:center;justify-content:center;padding:8px 6px;}
}
.v2 .ev-sec-hd .sec-horn{background:#12B886;box-shadow:0 0 0 3px rgba(18,184,134,.16);}
.v2 .ev-sec-hd .sec-horn::after{border-color:rgba(18,184,134,.5);}

/* 赛事库底部「热门地区」合并卡：城市 / 省份各一行 */
.v2 .ev-hot .card-bd{padding:6px 18px;}
.v2 .ev-hot-row{display:flex;align-items:center;gap:14px;padding:9px 0;min-width:0;}
.v2 .ev-hot-row + .ev-hot-row{border-top:1px dashed #E7EFFB;}
.v2 .ev-hot-lab{
  flex:0 0 auto;font-size:12px;font-weight:800;color:#2963BE;background:#EAF2FF;
  border-radius:8px;padding:5px 10px;letter-spacing:.04em;
}
.v2 .ev-hot-chips{display:flex;flex-wrap:nowrap;gap:8px;overflow:hidden;min-width:0;flex:1 1 auto;}
.v2 .ev-hot-chips .chip{flex:0 0 auto;}
@media (max-width:720px){
  .v2 .ev-hot-row{flex-direction:column;align-items:flex-start;gap:8px;}
  .v2 .ev-hot-chips{width:100%;}
}

@media (max-width:980px){
  .v2-hero-sm{padding:32px 24px 26px;}
  .v2-hero-sm .v2-hero-in{max-width:none;}
  .v2-hero-sm h1{font-size:31px;}
  .v2-art-sm{width:320px;opacity:.16;right:-40px;top:auto;bottom:40px;}
  .v2-filterbar{top:62px;}
}
@media (max-width:720px){
  .v2-hero-sm{padding:26px 18px 22px;}
  .v2-hero-sm h1{font-size:28px;}
  .v2-art-sm{display:none;}
  .v2-filterbar{position:static;margin:0 0 16px;padding:10px;border-radius:14px;}
  .v2-filterbar .fb-row{gap:8px;}
  .v2-filterbar .fb-input{height:44px;font-size:14px;}
  .v2-filterbar input[name="kw"]{flex:1 1 100% !important;}
  .v2-filterbar select[name="prov"]{flex:1 1 0;min-width:0;}
  .v2-filterbar select[name="type"]{flex:1 1 0;min-width:0;}
  .v2-filterbar .btn{flex:1 1 100%;height:44px;}
  .v2 .evk-card{padding:12px 14px;}
}

/* =====================================================================
   赛事日历（calendar.asp）v2
   ===================================================================== */
.v2 .cal-bar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:#fff;border:1px solid #E2EDFC;border-radius:16px;
  padding:10px 12px;box-shadow:0 8px 22px rgba(15,42,92,.05);margin-bottom:14px;
}
.v2 .cal-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.v2 .cal-jump{display:flex;align-items:center;gap:6px;}
.v2 .cal-sel{
  height:34px;border:1px solid #D8E6FA;border-radius:10px;background:#F7FBFF;
  color:#0E2B5C;font-size:13px;font-weight:700;padding:0 8px;cursor:pointer;
}
.v2 .cal-sel:focus{outline:none;border-color:#9CC2FF;box-shadow:0 0 0 3px rgba(41,99,190,.14);}
.v2 .cal-ym{display:flex;align-items:baseline;gap:5px;padding:0 4px;}
.v2 .cal-ym i{font-style:normal;font-size:12px;font-weight:600;color:#7A8BA6;}
.v2 .cal-ym em{font-style:normal;font-size:18px;font-weight:800;color:#0E2B5C;letter-spacing:.4px;}
.v2 .cal-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
@media (max-width:720px){
  .v2 .cal-bar{flex-direction:column;align-items:center;padding:10px;}
  .v2 .cal-bar .sp{display:none;}
  .v2 .cal-filters{width:100%;justify-content:center;}
  .v2 .cal-nav{width:100%;justify-content:center;}
}
.v2 .cal-cats{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px;}
/* 路跑=蓝，越野=绿：按钮与条目同色 */
.v2 .cal-bar .chip.road{background:#FDECEC;color:#C62828;border-color:#F5C2C2;}
.v2 .cal-bar .chip.road.on{background:#E60012;color:#fff;border-color:#E60012;}
.v2 .cal-bar .chip.trail{background:#E6F7EF;color:#0E8A5F;border-color:#BFE8D4;}
.v2 .cal-bar .chip.trail.on{background:#0E8A5F;color:#fff;border-color:#0E8A5F;}
.v2 .cal-ev.road{background:#FDECEC;color:#C62828;}
.v2 .cal-ev.trail{background:#E6F7EF;color:#0E8A5F;}
.v2 .cal-ag-i.road{border-left:3px solid #E60012;background:#FEF1F1;}
.v2 .cal-ag-i.trail{border-left:3px solid #0E8A5F;background:#F1FAF5;}
.v2 .cal-wrap{border-radius:18px;border-color:var(--line);box-shadow:var(--sh2);}
.v2 .cal th{background:#F5F9FF;border-bottom:1px solid var(--line);color:#5A6B85;font-weight:600;}
.v2 .cal th.wk{color:var(--accent);width:32%;}
.v2 .cal td{border-color:#EDF3FC;}
.v2 .cal-day .dn{color:#31425C;}
.v2 .cal-today{background:#E7EFFB;}
.v2 .cal-today .dn{color:var(--brand-d);}
.v2 .cal-ev{background:var(--brand-l);color:var(--brand-d);border-radius:7px;font-weight:400;}
.v2 .cal-ag-t{font-weight:400;}
.v2 .cal-ev.orange{background:#FFF4E6;color:#B26A12;}
.v2 .cal-ev.red{background:#FFEBEC;color:#C40010;}
.v2 .cal-ev.gray{background:#EEF3FA;color:#5F6C80;}
.v2 .cal-month-list{border-radius:18px;box-shadow:var(--sh2);}

.v2 .cal-agenda{display:none;}
@media (max-width:720px){
  .v2 .cal-wrap{display:none;}
  .v2 .cal-month-list{display:none;}
  .v2 .cal-agenda{
    display:block;background:#fff;border:1px solid var(--line);
    border-radius:18px;padding:8px 14px 14px;box-shadow:var(--sh2);
  }
  .v2 .cal-ag-d{
    display:flex;align-items:baseline;gap:8px;
    padding:14px 0 8px;border-bottom:1px dashed var(--line);
  }
  .v2 .cal-ag-d b{font-size:24px;font-weight:800;color:#0E2B5C;line-height:1;}
  .v2 .cal-ag-d span{font-size:12.5px;color:var(--sub);}
  .v2 .cal-ag-i{
    display:flex;flex-direction:column;gap:3px;
    padding:11px 8px 11px 24px;border-bottom:1px solid #F0F5FD;text-decoration:none;
  }
  .v2 .cal-ag-i:last-child{border-bottom:0;}
  .v2 .cal-ag-t{display:flex;align-items:flex-start;gap:6px;font-size:14.5px;font-weight:600;color:var(--text);line-height:1.45;}
  .v2 .cal-ag-k{
    flex:0 0 auto;display:inline-flex;align-items:center;height:19px;padding:0 6px;
    border-radius:5px;font-size:10.5px;font-weight:700;line-height:1;margin-top:2px;
  }
  .v2 .cal-ag-i.road .cal-ag-k{background:#FDECEC;color:#C62828;}
  .v2 .cal-ag-i.trail .cal-ag-k{background:#E6F7EF;color:#0E8A5F;}
  .v2 .cal-ag-m{display:flex;align-items:center;gap:4px;margin-left:3px;font-size:12px;color:var(--sub);}
  .v2 .cal-ag-pin{width:13px;height:13px;flex:0 0 13px;color:#6E809C;}
  .v2 .cal-ag-empty{padding:20px 0;color:var(--sub);font-size:13.5px;text-align:center;}
}

/* =====================================================================
   赛事详情（event.asp）v2
   ---------------------------------------------------------------------
   保留原 hero 的 DOM 与交互（主图 / 分享 / 加入 / 倒计时），
   只把深蓝底换成浅蓝渐变 + 白卡描边，文字改深色；
   下方 ev_info 的 .card 统一 18px 圆角与轻投影。
   ===================================================================== */
.v2 .dt-hero{
  background:linear-gradient(135deg,#3F7FE0 0%,#2963BE 55%,#1F4E9C 100%);
  border:1px solid rgba(255,255,255,.14);border-radius:22px;color:#fff;
  box-shadow:0 18px 44px rgba(31,78,156,.22);
}
.v2 .dt-hero .dt-orb,
.v2 .dt-hero .dt-sheen,
.v2 .dt-hero::after{display:none;}
.v2 .dt-hero h1{color:#fff;}
.v2 .dt-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.v2 .dt-src-tag{
  display:inline-flex;align-items:center;flex:0 0 auto;
  background:rgba(255,214,102,.18);border:1px solid rgba(255,214,102,.65);
  color:#FFE08A;border-radius:999px;padding:3px 10px;
  font-size:11.5px;font-weight:800;letter-spacing:.02em;line-height:1.4;
}
.v2 .dt-hero .dt-sub{color:rgba(255,255,255,.84);opacity:1;}
.v2 .dt-hero .dt-sub svg{color:rgba(255,255,255,.7);}
.v2 .dt-hero .dt-hit{color:rgba(255,255,255,.72);}
.v2 .dt-hero .tag{background:rgba(255,255,255,.18);color:#fff;border-color:rgba(255,255,255,.3);}
.v2 .dt-hero .btn-primary{
  background:linear-gradient(135deg,#FF1A1A,#E60012);
  box-shadow:0 8px 18px rgba(230,0,18,.28);
}
.v2 .dt-hero .btn-primary:hover{box-shadow:0 12px 24px rgba(230,0,18,.36);}
.v2 .dt-hero .btn-ghost{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.35);color:#fff;}
.v2 .dt-hero .btn-ghost:hover{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.55);color:#fff;}
.v2 .dt-hero .dt-left{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.85);}
.v2 .dt-hero .dt-left b{color:#fff;}
.v2 .dt-hero-flex .dt-mainimg{border-radius:16px;box-shadow:0 12px 28px rgba(15,42,92,.12);}

.v2 .card{border-color:var(--line);border-radius:18px;box-shadow:var(--sh2);}
.v2 .card-hd{border-color:#EEF3FC;}
.v2 .card-hd h3{color:#0E2B5C;}
.v2 .ev-disclaimer{
  background:#F7FBFF;border:1px dashed #CFE1FA;border-radius:14px;
  color:#5A6B85;padding:14px 16px;font-size:12.5px;line-height:1.8;margin-top:16px;
}
.v2 .ev-disclaimer b{color:#0E2B5C;}

/* =====================================================================
   个人中心（my/index.asp）v2
   ---------------------------------------------------------------------
   保留原有 DOM（头像 / 欢迎语 / 下一场 / 三枚操作 / 四格数据），
   把深色照片头图换成浅蓝渐变白卡；下方 .mm-* 列表沿用，
   靠 body.v2 的新 token 自动变成清新蓝。
   ===================================================================== */
.v2 .me-hd{
  background:linear-gradient(135deg,#3F7FE0 0%,#2963BE 55%,#1F4E9C 100%);
  border:1px solid rgba(255,255,255,.14);border-radius:22px;color:#fff;
  box-shadow:0 18px 44px rgba(31,78,156,.22);
}
.v2 .me-hd-bg{display:none;}
.v2 .me-hd h1{color:#fff;text-shadow:none;}
.v2 .me-hd .me-tx{position:relative;top:-5px;}
.v2 .me-eyebrow{color:rgba(255,255,255,.72);}
.v2 .me-meta{color:rgba(255,255,255,.82);text-shadow:none;}
.v2 .me-meta a{color:#fff;border-bottom-color:rgba(255,255,255,.45);}
.v2 .me-dot{color:rgba(255,255,255,.45);}
.v2 .me-ava{
  background:linear-gradient(135deg,#3F79D4,#2963BE);
  border-color:#fff;box-shadow:0 10px 24px rgba(41,99,190,.28);
  position:relative;overflow:hidden;cursor:pointer;
  flex:0 0 84px;width:84px;height:84px;font-size:32px;
}
.v2 .me-ava img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;}
.v2 .me-ava-file{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;z-index:2;}
.v2 .me-ava-edit{
  position:absolute;right:-2px;bottom:-2px;width:22px;height:22px;border-radius:50%;
  background:#fff;color:#2963BE;display:grid;place-items:center;z-index:3;pointer-events:none;
  box-shadow:0 2px 6px rgba(0,0,0,.22);border:1px solid #E2EDFC;
}
.v2 .me-ava-edit svg{width:12px;height:12px;}
.v2 .me-ava.is-up{opacity:.55;}
@media (max-width:720px){
  .v2 .me-ava{flex:0 0 68px;width:68px;height:68px;font-size:26px;}
  .v2 .me-hd .me-tx{top:0;}
}
.v2 .me-hd{position:relative;overflow:hidden;}
.v2 .me-hd::after{
  content:"";position:absolute;right:-90px;top:-130px;width:380px;height:380px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.18),rgba(255,255,255,0) 66%);
  pointer-events:none;
}
.v2 .me-hd-top{position:relative;z-index:2;}
.v2 .me-hd .btn-ghost{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.30);color:#fff;}
.v2 .me-hd .btn-ghost:hover{background:rgba(255,255,255,.24);border-color:rgba(255,255,255,.50);color:#fff;}
.v2 .me-acts{
  position:relative;z-index:2;
  background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.22);
  box-shadow:none;border-radius:14px;
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px;
}
.v2 .me-acts .me-btn{width:100%;justify-content:center;}
.v2 .me-acts .btn-ghost{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.22);color:#fff;}
.v2 .me-acts .btn-ghost:hover{background:rgba(255,255,255,.16);color:#fff;}
.v2 .me-stats{
  position:relative;z-index:2;margin:18px 0 0;
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.20);
  border-radius:14px;padding:12px 0;box-shadow:none;
}
.v2 .me-stat{flex:none;padding:0 14px;border-left:1px solid rgba(255,255,255,.16);display:flex;align-items:center;gap:6px;}
.v2 .me-stat:first-child{border-left:0;}
.v2 .me-stat-ic{
  flex:0 0 auto;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;
  background:rgba(255,255,255,.14);color:rgba(255,255,255,.90);
}
.v2 .me-stat-ic svg{width:14px;height:14px;}
.v2 .me-stat b{font-size:15px;color:#fff;line-height:1.15;order:2;margin-left:auto;}
.v2 .me-stat .me-stat-tx{font-size:15px;color:rgba(255,255,255,.92);font-weight:600;margin:0;order:1;letter-spacing:.02em;}
@media (max-width:720px){
  .v2 .me-stats{grid-template-columns:repeat(4,minmax(0,1fr));padding:10px 0;}
  .v2 .me-stat{padding:0 6px;gap:4px;}
  .v2 .me-stat-ic{display:none;}
  .v2 .me-stat b{font-size:13px;}
  .v2 .me-stat .me-stat-tx{font-size:13px;}
}
.v2 .sec-hd h2{color:#0E2B5C;}

/* =====================================================================
   /my/ 区域通用：旧 .page-hd 深色头图 → 浅蓝白卡
   （auto：header.asp 对 /my/ 下的页面默认开启 PageV2）
   ===================================================================== */
.v2 .page-hd{
  background:
    var(--hero-veil),
    url("../img/evart/banner-forest-medal.jpg") center 55%/cover no-repeat,
    #EAF3FF;
  border:1px solid #E2EDFC;border-radius:22px;color:var(--text);
  box-shadow:0 18px 44px rgba(41,99,190,.10);
}
.v2 .page-hd::after{display:none;}
.v2 .page-hd.has-art{padding-right:26px;}
.v2 .page-hd .hd-art{display:none;}
.v2 .page-hd .hd-fx{display:none;}
.v2 .page-hd h1{color:#0E2B5C;}
.v2 .page-hd p{color:#5A6B85;}
.v2 .page-hd .dt-sub{color:#5A6B85;opacity:1;}
.v2 .page-hd .btn-primary{background:linear-gradient(135deg,#FF1A1A,#E60012);box-shadow:0 8px 18px rgba(230,0,18,.26);}
.v2 .page-hd .btn-ghost{background:#fff;border-color:var(--line2);color:#3E4C66;}
.v2 .page-hd .btn-ghost:hover{background:var(--brand-l);border-color:#B9D5FF;color:var(--brand-d);}
.v2 .page-hd .btn-gray{background:#EEF3FA;color:#5A6B85;}
.v2 .page-hd .hd-mainimg{border-radius:16px;box-shadow:0 12px 28px rgba(15,42,92,.12);}
.v2 .page-hd .st-chip{background:var(--brand-l);border-color:#CFE1FA;color:var(--brand-d);}
.v2 .page-hd .st-chip .sic{filter:none;}
.v2 .page-hd .mm-sel{background:#fff;border-color:var(--line2);color:var(--text);}
.v2 .page-hd .mm-sel:focus{border-color:#9CC2FF;box-shadow:0 0 0 3px rgba(41,99,190,.14);}
.v2 .page-hd .dt-share{background:#fff;border-color:var(--line2);color:#3E4C66;}
.v2 .page-hd .dt-share:hover{background:var(--brand-l);border-color:#B9D5FF;color:var(--brand-d);}
.v2 .page-hd .tag{background:var(--brand-l);color:var(--brand-d);border-color:#CFE1FA;}

/* 表单控件统一成清新蓝 */
.v2 .inp,.v2 .tarea{border-color:var(--line2);border-radius:11px;background:#F8FBFF;color:var(--text);}
.v2 .inp:focus,.v2 .tarea:focus{
  border-color:#9CC2FF;background:#fff;
  box-shadow:0 0 0 3px rgba(41,99,190,.14);
}

/* =====================================================================
   跑团库 / 跑团详情 v2
   ===================================================================== */
.v2 .clb-hd{
  background:
    var(--hero-veil),
    url("../img/evart/banner-night-track.jpg") center 52%/cover no-repeat,
    #EAF3FF;
  border:1px solid #E2EDFC;border-radius:22px;color:var(--text);
  box-shadow:0 18px 44px rgba(41,99,190,.10);
}
.v2 .clb-hd-bg{display:none;}
.v2 .clb-hd h1{color:#0E2B5C;text-shadow:none;}
/* 跑团详情 banner：与“我的”页保持同一套蓝色渐变 */
.v2 .club-hero{
  background:linear-gradient(135deg,#3F7FE0 0%,#2963BE 55%,#1F4E9C 100%);
  border-color:rgba(255,255,255,.14);
  box-shadow:0 18px 44px rgba(31,78,156,.22);
  color:#fff;
}
.v2 .club-hero-main h1{color:#fff;}
.v2 .club-hero-main > p{color:rgba(255,255,255,.82);}
.v2 .club-hero .btn-ghost{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.35);color:#fff;}
.v2 .club-hero .btn-ghost:hover{background:rgba(255,255,255,.24);border-color:#fff;color:#fff;}
.v2 .club-hero .club-avatar{border:2px solid rgba(255,255,255,.85);border-radius:50%;box-shadow:0 10px 24px rgba(0,0,0,.18);}
.v2 .club-hero-acts{flex:0 0 300px;width:300px;grid-template-columns:minmax(0,1fr);align-self:center;margin-left:auto;}
.v2 .club-hero-acts:has(> .me-btn:only-child){grid-template-columns:minmax(0,1fr);}
@media (max-width:720px){
  .v2 .dt-title-row{justify-content:center;}
  .dt-hero .dt-hit{display:none !important;}
  .v2 .club-hero-acts{flex:1 1 100%;width:100%;margin-left:0;}
}
.v2 .clb-lead{color:#5A6B85;text-shadow:none;}
.v2 .clb-lead b.clb-num{color:#E60012;font-weight:800;}
@media (max-width:720px){
  .v2 .clb-lead .clb-l1,.v2 .clb-lead .clb-l2{display:block;}
}
.v2 .clb-eyebrow{background:#fff;border-color:#DCE9FB;color:#3E5B86;}
.v2 .clb-search{background:#fff;border-color:var(--line);box-shadow:0 12px 30px rgba(41,99,190,.10);}
.v2 .clb-search .fb-input{background:#F8FBFF;border-color:var(--line2);color:var(--text);}
.v2 .clb-search .fb-input:focus{background:#fff;border-color:#9CC2FF;box-shadow:0 0 0 3px rgba(41,99,190,.14);}
.v2 .club-card{border-radius:18px;border-color:var(--line);box-shadow:var(--sh2);}
.v2 .club-card:hover{border-color:#BBD6FF;box-shadow:0 16px 34px rgba(41,99,190,.12);}
.v2 .club-avatar{background:linear-gradient(135deg,#3F79D4,#2963BE);}
.v2 .club-hero{
  border-radius:20px;border-color:rgba(255,255,255,.14);box-shadow:0 18px 44px rgba(31,78,156,.22);
  background:linear-gradient(135deg,#3F7FE0 0%,#2963BE 55%,#1F4E9C 100%);
}
.v2 .club-hero-main h1{color:#fff;}
.v2 .wechat-box{border-radius:14px;background:#F8FBFF;}

/* =====================================================================
   资讯列表 / 详情 v2
   ===================================================================== */
.v2 .nws-hd{
  background:
    var(--hero-veil),
    url("../img/evart/banner-mountain-runners.jpg") center 54%/cover no-repeat,
    #EAF3FF;
  border:1px solid #E2EDFC;border-radius:22px;color:var(--text);
  box-shadow:0 18px 44px rgba(41,99,190,.10);
}
.v2 .nws-hd-bg{display:none;}
.v2 .nws-hd h1{color:#0E2B5C;text-shadow:none;}
.v2 .nws-lead{color:#5A6B85;text-shadow:none;}
.v2 .nws-eyebrow{background:#fff;border-color:#DCE9FB;color:#3E5B86;}
.v2 .nws-cats{background:#fff;border-color:var(--line);box-shadow:0 12px 30px rgba(41,99,190,.10);}
.v2 .nws-cats-l{color:var(--sub);}
.v2 .nws-chip{background:#F5F9FF;border-color:var(--line2);color:#4A5C78;}
.v2 .nws-chip:hover{background:var(--brand-l);border-color:#B9D5FF;color:var(--brand-d);}
.v2 .nws-chip.on{background:var(--brand);border-color:var(--brand);color:#fff;}
.v2 .nws-chip.on .nws-n{opacity:.85;}
.v2 .news-item{padding:18px 0;}
.v2 .news-thumb{border-radius:12px;}
.v2 .article{border-radius:20px;border-color:var(--line);box-shadow:var(--sh2);}
.v2 .article h1{color:#0E2B5C;}
.v2 .article .a-body{color:#33425C;font-size:15px;line-height:1.9;}

/* =====================================================================
   登录 / 注册 / 404 v2
   ===================================================================== */
.v2 .auth-wrap{max-width:520px;margin:44px auto 40px;position:relative;isolation:isolate;}
.v2 .auth-wrap::before{
  content:"";position:absolute;left:50%;top:-80px;transform:translateX(-50%);
  width:580px;height:400px;border-radius:50%;z-index:0;pointer-events:none;
  background:radial-gradient(circle,rgba(122,180,255,.42),rgba(122,180,255,0) 70%);
  filter:blur(18px);
}
.v2 .auth-wrap.wide{max-width:560px;}
.v2 .auth-card{
  position:relative;z-index:1;border-radius:24px;border-color:#E2EDFC;
  box-shadow:0 24px 60px rgba(41,99,190,.14);padding:36px 34px;
}
.v2 .auth-mark .auth-svg{height:54px;}
.v2 .auth-card h2{color:#0E2B5C;}
.v2 .auth-sub,.v2 .auth-note,.v2 .auth-help,.v2 .auth-foot{color:var(--sub);}

.v2 .v2-nf{
  padding:44px 26px;background:#fff;border:1px solid var(--line);
  border-radius:24px;box-shadow:var(--sh2);
}
.v2 .v2-nf h1{color:#0E2B5C;}

@media (max-width:720px){
  .v2 .auth-wrap{margin:20px auto 24px;padding:0 2px;}
  .v2 .auth-card{padding:26px 20px;border-radius:20px;}
  .v2 .v2-nf{padding:32px 18px;border-radius:20px;}
}

/* =====================================================================
   意见反馈 v2
   ===================================================================== */
.v2 .fbd-hero{
  background:
    var(--hero-veil),
    url("../img/evart/banner-finish-blue.jpg") center 50%/cover no-repeat,
    #EAF3FF;
  border:1px solid #E2EDFC;border-radius:22px;color:var(--text);
  box-shadow:0 18px 44px rgba(41,99,190,.10);
}
.v2 .fbd-hero::after,
.v2 .fbd-hero .hero-bg,
.v2 .fbd-hero .hd-art{display:none;}
.v2 .fbd-hero h1{color:#0E2B5C;}
.v2 .fbd-hero h1 em{
  background:none;-webkit-background-clip:border-box;background-clip:border-box;
  -webkit-text-fill-color:currentColor;color:var(--accent);
}
.v2 .fbd-hero p{color:#5A6B85;}
.v2 .fbd-hero-facts span{background:#fff;border-color:#DCE9FB;color:#3E5B86;}
.v2 .fbd-card{border-radius:20px;border-color:var(--line);box-shadow:var(--sh2);}
.v2 .fbd-item{border-radius:14px;border-color:var(--line);}

/* =====================================================================
   手机端收尾
   - iOS 上 <16px 的输入框聚焦会自动放大页面：只对「表单页」的控件补到 16px，
     赛事库/跑团库的筛选胶囊保持 14px，避免把一行三个控件挤爆。
   - 底部 tab 加一条极淡的上阴影，滚动时与内容分层更清楚。
   ===================================================================== */
@supports (-webkit-touch-callout:none){
  @media (max-width:720px){
    .v2 .form-row .inp,
    .v2 .form-row select,
    .v2 .tarea{font-size:16px;}
  }
}
@media (max-width:720px){
  .v2-tabbar{box-shadow:0 -6px 24px rgba(15,42,92,.06);}
  .v2 .page-hd{padding:18px 16px;border-radius:18px;}
  .v2 .page-hd h1{font-size:19px;}
  .v2 .page-hd p{font-size:12.5px;}
  .v2 .dt-hero .dt-side .btn,
  .v2 .dt-hero .dt-side form .btn{font-size:12.5px;}
}

/* =====================================================================
   添加赛事：两条入口 / 管理赛事：桌面双栏
   ===================================================================== */
.v2-entry{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px;}
.v2-entry-card{
  display:flex;align-items:center;gap:14px;padding:16px 18px;
  background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh1);
  transition:border-color .18s,box-shadow .18s,transform .18s;
}
.v2-entry-card:hover{transform:translateY(-2px);border-color:#BBD6FF;box-shadow:0 14px 30px rgba(41,99,190,.10);}
.v2-ec-ic{
  width:44px;height:44px;flex:0 0 44px;border-radius:13px;
  background:var(--brand-l);color:var(--brand-d);display:grid;place-items:center;
}
.v2-ec-tx b{display:block;font-size:15px;color:#0E2B5C;}
.v2-ec-tx i{font-style:normal;font-size:12px;color:var(--sub);}
#step1,#step2{scroll-margin-top:80px;}

.ee-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:18px;align-items:start;}
/* 自定义赛事编辑：无提示框时卡片与 banner 留 20px；有提示框时只靠提示框的 16px 下边距，保证上下一致 */
.ee-card{margin-top:20px;}
.alert + .ee-grid .ee-card{margin-top:0;}
.ee-col-main,.ee-col-side{min-width:0;}
@media (max-width:1000px){.ee-grid{grid-template-columns:minmax(0,1fr);}}
@media (max-width:720px){.v2-entry{grid-template-columns:1fr;}}

/* =====================================================================
   v2 页脚（统一版）
   ---------------------------------------------------------------------
   左：盾徽 + 备案号；右：6 个等宽胶囊按钮单行；底部居中版权。
   扁平：无动画、无光晕、无重阴影；1px 边框清晰。
   ===================================================================== */
.v2-footer{
  position:relative;overflow:hidden;
  width:100%;max-width:none;margin:16px 0 0;
  background:#2963BE;
  border:0;border-radius:26px 26px 0 0;
  color:#fff;box-shadow:none;padding-top:24px;
}
.v2-ft-in{
  display:flex;align-items:flex-start;justify-content:center;gap:20px;
  padding:0 24px 12px;position:relative;
  border-bottom:0;
}
.v2-ft-in::after{
  content:"";position:absolute;left:24px;right:24px;bottom:0;height:1px;
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.75),rgba(255,255,255,0));
  background-size:220% 100%;
  animation:ftLine 5s ease-in-out infinite,ftDraw .8s ease .15s both;
  transform-origin:center;
}
@keyframes ftLine{0%,100%{background-position:0% 0;opacity:.5}50%{background-position:100% 0;opacity:1}}
@keyframes ftDraw{from{transform:scaleX(0);opacity:0}to{transform:scaleX(1);opacity:1}}
@keyframes ftFadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.v2-ft-in,.v2-ft-contact,.v2-ft-copy{animation:ftFadeUp .55s ease both;}
.v2-ft-in{animation-delay:.05s;}
.v2-ft-contact{animation-delay:.15s;}
.v2-ft-copy{animation-delay:.25s;}
.v2-ft-brand{display:none;}
.v2-ft-logo{position:relative;left:25px;margin:0;}
.v2-ft-logo img{height:56px;width:auto;display:block;filter:none;}
.v2-ft-icp{font-size:10px;line-height:1.5;color:rgba(255,255,255,.45);letter-spacing:.02em;}
.v2-ft-icp a{display:block;color:rgba(255,255,255,.6);text-decoration:none;white-space:nowrap;}
.v2-ft-icp a:hover{color:#fff;}.v2-ft-pills{
  flex:1 1 auto;min-width:0;
  display:flex;flex-wrap:wrap;gap:6px 26px;margin:4px 0 0;justify-content:center;
}
.v2-ft-pills a{
  flex:0 0 auto;min-width:0;height:auto;padding:0;margin:0;
  display:inline-flex;align-items:center;justify-content:center;gap:5px;
  border-radius:0;background:transparent;
  border:0;
  color:#fff;font-size:13.5px;font-weight:600;
  text-decoration:none;white-space:nowrap;overflow:hidden;
  box-shadow:none;transition:color .15s,transform .15s;
  animation:ftFadeUp .45s ease both;
}
.v2-ft-pills a:nth-child(1){animation-delay:.10s;}
.v2-ft-pills a:nth-child(2){animation-delay:.16s;}
.v2-ft-pills a:nth-child(3){animation-delay:.22s;}
.v2-ft-pills a:nth-child(4){animation-delay:.28s;}
.v2-ft-pills a:nth-child(5){animation-delay:.34s;}
.v2-ft-pills a:nth-child(6){animation-delay:.40s;}
.v2-ft-pills a:hover{transform:translateY(-2px);}
.v2-ft-pills a:hover .v2-fp-ic{transform:scale(1.18) rotate(-4deg);}
.v2-ft-pills .v2-fp-ic{transition:transform .18s;}
.v2-ft-pills a:hover{background:transparent;color:#fff;text-decoration:underline;}
.v2-ft-pills .v2-fp-ic{
  display:inline-grid;place-items:center;
  width:14px;height:14px;flex:0 0 14px;
  border:0;background:none;border-radius:0;color:currentColor;
}
.v2-ft-pills .v2-fp-ic svg{width:14px;height:14px;}
.v2-ft-contact{
  display:flex;flex-wrap:wrap;justify-content:center;text-align:center;gap:6px 18px;
  padding:12px 24px 0;font-size:13px;color:rgba(255,255,255,.95);
}
.v2-ft-contact span,.v2-ft-contact a{white-space:nowrap;}
.v2-ft-contact .dot{opacity:.7;}
.v2-ft-contact a{color:rgba(255,255,255,.9);text-decoration:none;}
.v2-ft-contact a:hover{color:#fff;text-decoration:underline;}
.v2-fp-ic{
  width:20px;height:20px;flex:0 0 20px;border-radius:50%;
  border:1px solid rgba(255,255,255,.75);color:#fff;
  display:grid;place-items:center;background:rgba(255,255,255,.10);
}
.v2-fp-ic svg{width:11px;height:11px;}
.v2-ft-copy{
  margin-top:0;position:relative;top:0;padding:7px 24px 18px;
  text-align:center;font-size:12.5px;color:rgba(255,255,255,.95);
}
.v2-ft-copy a{color:rgba(255,255,255,.95);text-decoration:none;}
.v2-ft-copy a:hover{color:#fff;text-decoration:underline;}
.v2-ft-copy .dot{margin:0 7px;opacity:.7;}
@media (prefers-reduced-motion:reduce){
  .v2-ft-in,.v2-ft-contact,.v2-ft-copy,.v2-ft-pills a{animation:none;}
  .v2-ft-in::after{animation:none;}
  .v2-ft-pills a:hover,.v2-ft-pills a:hover .v2-fp-ic{transform:none;}
}
@media (max-width:1000px){
  .v2-ft-in{gap:14px;padding:14px 18px 10px;}
  .v2-ft-brand{flex-basis:120px;}
  .v2-ft-logo img{height:46px;}
  .v2-ft-pills{gap:6px;}
  .v2-ft-pills a{height:34px;padding:0 5px;gap:4px;}
  .v2-fp-ic{width:18px;height:18px;flex-basis:18px;}
  .v2-fp-ic svg{width:10px;height:10px;}
  .v2-ft-copy{padding:0 18px 5px;}
}
@media (max-width:720px){
  .v2-footer{width:100%;margin:12px 0 7px;padding-top:8px;}
  .v2-ft-in{align-items:center;flex-wrap:nowrap;gap:10px;padding:8px 12px 8px;}
  .v2-ft-brand{flex:0 0 118px;left:0;top:0;}
  .v2-ft-logo{left:20px;}
  .v2-ft-logo img{height:48px;}
  .v2-ft-icp{font-size:7.5px;line-height:1.45;white-space:nowrap;}
  .v2-ft-pills{flex:1 1 auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;}
  .v2-ft-pills a{height:27px;font-size:11px;padding:0 2px;gap:4px;}
  .v2-fp-ic{width:17px;height:17px;flex-basis:17px;}
  .v2-fp-ic svg{width:9px;height:9px;}
  /* 虚线下面：联系方式固定两列两行，四个点分隔符不再占位 */
  .v2-ft-contact{
    display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
    gap:2px 8px;padding:6px 14px 8px;line-height:1.4;font-size:clamp(10.5px,2.9vw,13px);
  }
  .v2-ft-contact .dot{display:none;}
  .v2-ft-copy{display:none;}
}

/* =====================================================================
   移动端性能层
   ---------------------------------------------------------------------
   手机端慢的主因不是服务端（同一套 ASP、同一个库、桌面端很快），
   而是移动 GPU 处理以下几类效果很吃力：
   1) 顶栏 / 底部 tab / 吸顶筛选条 / 搜索卡上的 backdrop-filter：
      滚动时浏览器每一帧都要重算「背景模糊」，iOS Safari 与微信 X5 上尤其卡；
   2) 头图里 7 组无限循环的 SVG 动画（手机端本来只是低透明度水印）；
   3) 头图背景三团 46px 高斯模糊。
   这里在 ≤720px 统一降级为「实色 + 静态」，桌面端保持毛玻璃与动效不变。
   ===================================================================== */
@media (max-width:720px){
  /* 1. 去毛玻璃：改用实色/近实色背景 */
  .v2 .topbar,
  .v2-tabbar,
  .v2-filterbar,
  .v2 .clb-search,
  .v2 .nws-cats,
  .v2 .me-stats,
  .v2 .me-acts,
  .v2 .clb-eyebrow,
  .v2 .nws-eyebrow,
  .v2 .clb-hd .btn-ghost,
  .v2 .nws-hd .btn-ghost,
  .v2 .me-hd .btn-ghost{
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
  }
  .v2 .topbar{background:#fff;}
  .v2-tabbar{background:#fff;}
  .v2-filterbar{background:#fff;}
  .v2 .clb-search,.v2 .nws-cats{background:#fff;}
  /* 我的赛事头图区在蓝色渐变上：保持半透明白底，避免白底白字把按钮/数据“藏”起来 */
  .v2 .me-stats,.v2 .me-acts{background:rgba(255,255,255,.12);}

  /* 2. 头图 SVG 动效停掉（手机端只是 18% 透明度的水印） */
  .v2-art *{animation:none !important;}
  .v2-hero-art *{animation:none !important;}
  .v2 .ev-sec-hd .sec-horn,
  .v2 .ev-sec-hd .sec-horn::after{animation:none !important;}

  /* 3. 大范围高斯模糊降级 */
  .v2-hero-bg i{filter:none;opacity:.22;}
  .v2 .v2-footer::before,
  .v2 .auth-wrap::before{display:none;}

  /* 4. 阴影收轻，减少滚动时的合成开销 */
  .v2 .card,
  .v2 .cat-tile,
  .v2 .evk-card,
  .v2 .club-card,
  .v2 .v2-kpis,
  .v2-hero,
  .v2 .page-hd,
  .v2 .dt-hero,
  .v2 .clb-hd,
  .v2 .nws-hd,
  .v2 .me-hd{
    box-shadow:0 4px 14px rgba(15,42,92,.06);
  }
}

/* 实景 banner 的蒙版：中等宽度加强左白、手机端改上下渐变，保证深色字可读 */
@media (max-width:980px){
  .v2{
    --hero-veil:linear-gradient(90deg,
      rgba(255,255,255,.96) 0%,
      rgba(255,255,255,.92) 52%,
      rgba(255,255,255,.80) 80%,
      rgba(244,248,255,.50) 100%);
  }
}
@media (max-width:720px){
  .v2{
    --hero-veil:linear-gradient(180deg,
      rgba(255,255,255,.90) 0%,
      rgba(255,255,255,.84) 55%,
      rgba(244,248,255,.74) 100%);
  }
}

/* =====================================================================
   我发起的赛事（my/launch.asp）：筛选条 + 卡片列表
   ===================================================================== */
.v2 .lv-filter{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#fff;border:1px solid #E2EDFC;border-radius:14px;padding:10px 14px;margin:0 0 16px;box-shadow:0 6px 18px rgba(15,42,92,.04);}
.v2 .lv-filter-lab{font-size:12px;font-weight:800;color:#7A8BA6;margin-right:2px;}
.v2 .lv-filter .chip em{font-style:normal;font-weight:800;margin-left:4px;opacity:.75;}
.v2 .lv-list{display:flex;flex-direction:column;gap:12px;}
.v2 .lv-card{
  display:grid;grid-template-columns:118px minmax(0,1fr) auto;gap:18px;align-items:center;
  background:#fff;border:1px solid #E2EDFC;border-radius:16px;padding:16px 18px;
  box-shadow:0 8px 22px rgba(15,42,92,.05);transition:box-shadow .15s,transform .15s;
}
.v2 .lv-card:hover{box-shadow:0 12px 28px rgba(15,42,92,.10);transform:translateY(-1px);}
.v2 .lv-date{text-align:center;border-right:1px dashed #E2EDFC;padding-right:14px;}
.v2 .lv-date b{display:block;font-size:13.5px;color:#0E2B5C;line-height:1.3;white-space:nowrap;letter-spacing:.01em;}
.v2 .lv-date span{display:block;font-size:11px;color:#7A8BA6;margin-top:3px;}
.v2 .lv-main{min-width:0;}
.v2 .lv-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.v2 .lv-title{font-size:15px;font-weight:700;color:#0E2B5C;text-decoration:none;}
.v2 .lv-title:hover{color:#2963BE;}
.v2 .lv-live{font-size:11px;color:#0E8A5F;background:#E6F7EF;border-radius:6px;padding:2px 6px;}
.v2 .lv-meta{margin:5px 0 0;font-size:12.5px;color:#7A8BA6;}
.v2 .lv-meta span{margin:0 5px;opacity:.6;}
.v2 .lv-meta .lv-loc{display:inline-flex;align-items:center;gap:3px;margin:0;opacity:1;}
.v2 .lv-loc svg{width:12px;height:12px;opacity:.65;flex:0 0 12px;}
.v2 .lv-reject{margin:5px 0 0;font-size:12px;color:#C62828;}
.v2 .lv-nums{margin:8px 0 0;font-size:12px;color:#7A8BA6;display:flex;gap:16px;flex-wrap:wrap;}
.v2 .lv-nums b{color:#0E2B5C;}
.v2 .lv-ops{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
@media (max-width:900px){
  .v2 .lv-card{grid-template-columns:minmax(0,1fr);gap:10px;}
  .v2 .lv-date{display:flex;align-items:baseline;gap:8px;text-align:left;border-right:0;padding-right:0;}
  .v2 .lv-ops{justify-content:flex-start;}
}

/* 发起人视角：banner「我发起的赛事」徽标 + 业主提示条 */
.v2 .lv-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.v2 .lv-own-tag{
  display:inline-flex;align-items:center;gap:5px;margin:0;
  background:rgba(255,214,102,.18);border:1px solid rgba(255,214,102,.65);
  color:#FFE08A;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:800;letter-spacing:.02em;
  flex:0 0 auto;
}
.v2 .lv-owner-bar{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:18px 0;
  background:linear-gradient(120deg,#FFF7E6,#FFEFC7);border:1px solid #F3D28B;
  border-radius:16px;padding:14px 18px;box-shadow:0 8px 20px rgba(180,130,20,.10);
}
.v2 .lv-owner-ic{width:34px;height:34px;border-radius:10px;background:#F5B301;color:#fff;display:grid;place-items:center;flex:0 0 34px;}
.v2 .lv-owner-ic svg{width:18px;height:18px;}
.v2 .lv-owner-tx{min-width:0;flex:1 1 auto;}
.v2 .lv-owner-tx b{display:block;font-size:14px;color:#7A4B00;margin-bottom:2px;}
.v2 .lv-owner-tx span{display:block;font-size:12.5px;color:#9A6A1E;line-height:1.6;}
.v2 .lv-owner-ops{display:flex;gap:8px;flex-wrap:wrap;}
.v2 .lv-in-btn{border-color:rgba(255,255,255,.55);color:#fff;background:rgba(255,255,255,.16);}
@media (max-width:720px){
  .v2 .lv-owner-bar{align-items:flex-start;}
  .v2 .lv-owner-ops{width:100%;}
}

/* 我发起的赛事：banner 按钮——蓝底 + 白边 + 白字 */
.v2 .me-hd .lch-acts{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.v2 .me-hd .lch-acts .lch-btn{
  min-width:140px;justify-content:center;
  background:#2963BE;border:1px solid #fff;color:#fff;
  box-shadow:0 6px 16px rgba(11,28,61,.18);
}
.v2 .me-hd .lch-acts .lch-btn:hover{background:#1F4E9C;border-color:#fff;color:#fff;}
/* 我发起的赛事：底部统计条——数字在左、标签紧随 */
.v2 .me-hd .lch-stats{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  margin-top:18px;background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.22);border-radius:14px;padding:12px 0;
}
.v2 .me-hd .lch-stat{display:flex;align-items:baseline;gap:8px;padding:0 18px;border-left:1px solid rgba(255,255,255,.16);}
.v2 .me-hd .lch-stat:first-child{border-left:0;}
.v2 .me-hd .lch-stat b{font-size:20px;color:#fff;line-height:1.2;}
.v2 .me-hd .lch-stat span{font-size:11.5px;color:rgba(255,255,255,.72);}
@media (max-width:720px){
  .v2 .me-hd .lch-acts{width:100%;}
  .v2 .me-hd .lch-acts .lch-btn{flex:1;min-width:0;}
  .v2 .me-hd .lch-stats{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:10px;}
  .v2 .me-hd .lch-stat:nth-child(3){border-left:0;}
}
/* 我发起的赛事：banner 小标签——白底胶囊 + 绿点 + 深蓝字（独立类名，避免被 me-eyebrow 覆盖） */
.v2 .me-hd .lch-pill{
  display:inline-flex;align-items:center;gap:7px;
  width:auto;height:auto;
  background:#fff;color:#0E2B5C;
  border-radius:999px;padding:5px 13px;
  font-size:12px;font-weight:800;letter-spacing:.02em;line-height:1.5;
  text-transform:none;box-shadow:0 2px 8px rgba(15,42,92,.16);
}
.v2 .me-hd .lch-pill::before{
  content:"";display:block;width:8px;height:8px;border-radius:50%;background:#12B886;flex:0 0 8px;
}
.v2 .me-hd .me-sub{display:block;margin-top:6px;font-size:12.5px;line-height:1.65;color:rgba(255,255,255,.78);max-width:560px;}
.v2 .me-btn svg{width:14px;height:14px;flex:0 0 14px;}
/* 我发起的赛事：列表卡（参考赛事库的日期/标题/状态/操作结构） */
.v2 .lv-cal{width:13px;height:13px;margin-right:5px;vertical-align:-2px;color:#2963BE;}
.v2 .ec-city{display:inline-flex;align-items:center;gap:3px;}
.v2 .ec-city svg{width:12px;height:12px;flex:0 0 12px;opacity:.65;}
.v2 .lv-evk-nums{font-size:11.5px;color:#7A8BA6;white-space:nowrap;line-height:1.5;margin:0;}
.v2 .lv-evk-nums b{color:#0E2B5C;}
.v2 .lv-evk-line{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:6px 0 0;}
.v2 .lv-evk-line .lv-evk-nums{margin:0;}
.v2 .lv-actions{flex-direction:row;align-items:center;justify-content:flex-end;gap:14px;flex-wrap:wrap;text-align:left;}
.v2 .lv-link{font-size:12.5px;color:#2963BE;text-decoration:none;white-space:nowrap;}
.v2 .lv-link:hover{text-decoration:underline;}
.v2 .lv-actions .lnk-del{background:none;border:0;padding:0;color:#C62828;font-size:12.5px;cursor:pointer;font-family:inherit;}
@media (max-width:720px){
  .v2 .evk-card .ec-r{align-items:flex-start;text-align:left;}
}


