/* ════════════════════════════════════════════════════════════════════════
   ev3.css — 1019 两端美化定稿(网站)的设计底座:颜色 / 材质 / 字 / 按钮 / 小件 / 手感 / 进场,外加全站壳层(顶栏 / 页脚 / 底栏 / 外观浮钮)。
   来源:美化样机第三版 v3/ds.css + web2.css 通用件(Steven 1019「定稿了」+ 开工前复查 7 条全采纳)。
   用法:新版页面把内容包在 <div class="ev2 W">…</div>(落地页 .ev2.L),并在模板里 {% block body_class %}ev3-page{% endblock %};
         深浅跟 <html data-theme>(base.html 三档 + 跟随系统),不再要 data-mt;没改版的老页面只换壳层,内容不动。
   规矩:① 一个光源(表面 160°、高光只在上沿)② 材质三层(底 / 渐变玻璃 / 发光体,一屏发光 ≤ 2 处)③ 冷暖分工
         ④ 展示数字 Sora,白 / 墨色 ⑤ 字号阶梯 ⑥ 留白圆角成套 ⑦ 动有来处(按下 90ms 到位、松手 420ms 回弹)⑧ 小状态全设计。
   复查第 3 条:放白字的底色一律 ≥ 4.5:1——选中 #1f6fe0→#6146e8、主按钮 A #d63a5e→#c2410c→#b45309、我的红签 #d8344a→#c22f72、成功绿 #0b7a4b→#0e7490。
   浅色写法::where(:root[data-theme="light"]) .ev2.ev2 …(权重和样机 .ev2[data-mt=light] 一样,不会压过 .on / .is-press 这类状态)。
   字体:自托管(static/fonts),大标题 Noto Serif SC 900 切片(fonts/nss900.css,base.html 引)、数字 Sora;绝不引 fonts.googleapis.com。
   ════════════════════════════════════════════════════════════════════════ */
@font-face { font-family: "Sora"; font-style: normal; font-weight: 100 800; font-display: swap; src: url(fonts/sora.woff2) format("woff2"); }
.ev2, body.ev3-shell .topbar, body.ev3-shell .site-footer, body.ev3-shell .tabbar, body.ev3-shell .theme-fab {
  --g0: #04061a;
  --g1: #090d2c;
  --g2: #141a4a;
  --g3: #1f2866;
  --au-cyan: #3ee0ff;
  --au-ice: #5aa8ff;
  --au-vio: #8a6cff;
  --au-rose: #ff6fb1;
  --au-mint: #5cf2c4;
  --em-a: #ff5e57;
  --em-b: #ff8a3d;
  --em-c: #ffc24a;
  --em-ink: #ffb38a;
  --gd-a: #ffe9b0;
  --gd-b: #f3b76b;
  --gd-c: #e98cb4;
  --gd-ink: #ffd99a;
  --ink: #f4f6ff;
  --ink-2: #cdd3f2;
  --ink-3: #b3bbe6;
  --ink-4: #a1a9d6;
  --glass: rgba(30,37,96,.46);
  --glass-2: rgba(255,255,255,.045);
  --glass-3: rgba(255,255,255,.08);
  --edge-hi: rgba(255,255,255,.30);
  --edge-lo: rgba(255,255,255,.05);
  --hair: rgba(170,182,255,.12);
  --hair-2: rgba(170,182,255,.2);
  --shade: rgba(2,3,18,.72);
  --glow-ice: rgba(90,168,255,.45);
  --glow-em: rgba(255,110,70,.5);
  --glow-gd: rgba(243,183,107,.45);
  --ok: #6ff0b0;
  --warn: #ffcf6e;
  --bad: #ff8590;
  --deal: #e5483b;
  --sel: linear-gradient(100deg, #1f6fe0, #6146e8);
  --t-coral: #ff6b6b;
  --t-gold: #ffc94a;
  --t-green: #57d98a;
  --t-blue: #4fa3ff;
  --t-vio: #b48cff;
  --f-ui: -apple-system, "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", sans-serif;
  --f-disp: "Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", serif;
  --f-num: "Sora", -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  --e-out: cubic-bezier(.16,1,.3,1);
  --e-spring: cubic-bezier(.2,.9,.25,1.18);
  --e-io: cubic-bezier(.65,0,.35,1);
  --r-xl: 28px;
  --r-l: 20px;
  --r-m: 14px;
  --r-s: 10px;
  --m-base: rgba(48,52,146,.46);
  --m-tint-a: rgba(80,150,255,.34);
  --m-tint-b: rgba(150,105,255,.3);
  --m-tint-c: rgba(255,140,190,.22);
  --m-gloss: rgba(255,255,255,.08);
  --m-hi: rgba(255,255,255,.26);
  --m-glow: rgba(150,170,255,.2);
  --m-cshadow: rgba(110,100,255,.36);
  --m-ring-hi: rgba(255,255,255,.72);
  --m-edge: rgba(110,200,255,.66);
  --m-edge2: rgba(166,123,255,.66);
  --rp-solid: rgba(255,255,255,.38);
  --rp-glass: rgba(120,190,255,.26);
  --rp-row: rgba(140,170,255,.16);
  --d-in: calc(var(--ts, 1) * 90ms);
  --d-out: calc(var(--ts, 1) * 420ms);
  --d-rp: calc(var(--ts, 1) * 560ms);
  --d-fl: calc(var(--ts, 1) * 300ms);
  --e-press: cubic-bezier(.2,1.5,.4,1);
  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  --a-1: #d63a5e;
  --a-2: #c2410c;
  --a-3: #b45309;
  --mine-1: #d8344a;
  --mine-2: #c22f72;
  --okd-1: #0b7a4b;
  --okd-2: #0e7490;
  --deep-1: #1f6fe0;
  --deep-2: #6146e8;
  --deep-3: #8a5bd0;
}
/* 浅色令牌:新页面一条、全站壳层一条(分开写:老浏览器不认 :where() 时只丢新页面这条,壳层照样换浅色) */
:where(:root[data-theme="light"]) .ev2.ev2 {
  --g0: #eef1ff;
  --g1: #e6ebff;
  --g2: #f6f2ff;
  --g3: #d7e2ff;
  --au-cyan: #2bc6ec;
  --au-ice: #3d8ef0;
  --au-vio: #7c5cf0;
  --au-rose: #ea5f9f;
  --au-mint: #2fd3a3;
  --em-a: #e2453f;
  --em-b: #e2621d;
  --em-c: #d99212;
  --em-ink: #b5401c;
  --gd-a: #c9932f;
  --gd-b: #b9722b;
  --gd-c: #b4467a;
  --gd-ink: #8a5300;
  --ink: #111633;
  --ink-2: #2f3662;
  --ink-3: #4a5180;
  --ink-4: #5d6592;
  --glass: rgba(255,255,255,.58);
  --glass-2: rgba(255,255,255,.5);
  --glass-3: rgba(255,255,255,.72);
  --edge-hi: rgba(255,255,255,.95);
  --edge-lo: rgba(120,130,200,.12);
  --hair: rgba(60,70,140,.11);
  --hair-2: rgba(60,70,140,.18);
  --shade: rgba(60,70,140,.22);
  --glow-ice: rgba(61,142,240,.32);
  --glow-em: rgba(226,98,29,.34);
  --glow-gd: rgba(201,147,47,.3);
  --ok: #0b7a4b;
  --warn: #8a5a00;
  --bad: #c22f40;
  --sel: linear-gradient(100deg, #1f6fe0, #6146e8);
  --t-coral: #e2453f;
  --t-gold: #c98a0c;
  --t-green: #1fa45c;
  --t-blue: #2f7fe0;
  --t-vio: #8a5cf0;
  --m-base: rgba(255,255,255,.4);
  --m-tint-a: rgba(170,215,255,.66);
  --m-tint-b: rgba(205,190,255,.56);
  --m-tint-c: rgba(255,205,220,.5);
  --m-gloss: rgba(255,255,255,.55);
  --m-hi: rgba(255,255,255,.98);
  --m-glow: rgba(150,130,255,.12);
  --m-cshadow: rgba(120,100,240,.26);
  --m-ring-hi: rgba(255,255,255,.98);
  --m-edge: rgba(80,170,245,.62);
  --m-edge2: rgba(150,110,250,.6);
  --rp-solid: rgba(255,255,255,.42);
  --rp-glass: rgba(61,142,240,.2);
  --rp-row: rgba(90,110,220,.12);
}
:root[data-theme="light"] body.ev3-shell .topbar, :root[data-theme="light"] body.ev3-shell .site-footer, :root[data-theme="light"] body.ev3-shell .tabbar, :root[data-theme="light"] body.ev3-shell .theme-fab {
  --g0: #eef1ff;
  --g1: #e6ebff;
  --g2: #f6f2ff;
  --g3: #d7e2ff;
  --au-cyan: #2bc6ec;
  --au-ice: #3d8ef0;
  --au-vio: #7c5cf0;
  --au-rose: #ea5f9f;
  --au-mint: #2fd3a3;
  --em-a: #e2453f;
  --em-b: #e2621d;
  --em-c: #d99212;
  --em-ink: #b5401c;
  --gd-a: #c9932f;
  --gd-b: #b9722b;
  --gd-c: #b4467a;
  --gd-ink: #8a5300;
  --ink: #111633;
  --ink-2: #2f3662;
  --ink-3: #4a5180;
  --ink-4: #5d6592;
  --glass: rgba(255,255,255,.58);
  --glass-2: rgba(255,255,255,.5);
  --glass-3: rgba(255,255,255,.72);
  --edge-hi: rgba(255,255,255,.95);
  --edge-lo: rgba(120,130,200,.12);
  --hair: rgba(60,70,140,.11);
  --hair-2: rgba(60,70,140,.18);
  --shade: rgba(60,70,140,.22);
  --glow-ice: rgba(61,142,240,.32);
  --glow-em: rgba(226,98,29,.34);
  --glow-gd: rgba(201,147,47,.3);
  --ok: #0b7a4b;
  --warn: #8a5a00;
  --bad: #c22f40;
  --sel: linear-gradient(100deg, #1f6fe0, #6146e8);
  --t-coral: #e2453f;
  --t-gold: #c98a0c;
  --t-green: #1fa45c;
  --t-blue: #2f7fe0;
  --t-vio: #8a5cf0;
  --m-base: rgba(255,255,255,.4);
  --m-tint-a: rgba(170,215,255,.66);
  --m-tint-b: rgba(205,190,255,.56);
  --m-tint-c: rgba(255,205,220,.5);
  --m-gloss: rgba(255,255,255,.55);
  --m-hi: rgba(255,255,255,.98);
  --m-glow: rgba(150,130,255,.12);
  --m-cshadow: rgba(120,100,240,.26);
  --m-ring-hi: rgba(255,255,255,.98);
  --m-edge: rgba(80,170,245,.62);
  --m-edge2: rgba(150,110,250,.6);
  --rp-solid: rgba(255,255,255,.42);
  --rp-glass: rgba(61,142,240,.2);
  --rp-row: rgba(90,110,220,.12);
}
.ev2 {
  position: relative;
  min-height: 100%;
  color: var(--ink);
  font-family: var(--f-ui);
  font-size: 15px;
  line-height: 1.55;
  letter-spacing: .005em;
  -webkit-font-smoothing: antialiased;
  isolation: isolate;
  background: radial-gradient(1200px 700px at 50% -260px, var(--g3), transparent 70%), radial-gradient(1000px 800px at 100% 42%, rgba(138,108,255,.17), transparent 70%),
    radial-gradient(900px 800px at 0% 72%, rgba(62,160,255,.14), transparent 70%), radial-gradient(900px 600px at 70% 100%, rgba(255,111,177,.1), transparent 70%),
    linear-gradient(180deg, var(--g1), var(--g0) 900px, #070a26);
  background-color: var(--g0);
}
:where(:root[data-theme="light"]) .ev2.ev2 {
  background: radial-gradient(1100px 640px at 50% -240px, #ffffff, transparent 70%), radial-gradient(900px 700px at 100% 40%, rgba(255,190,220,.5), transparent 70%),
    radial-gradient(900px 700px at 0% 70%, rgba(170,210,255,.55), transparent 70%), linear-gradient(180deg, #e4e9ff, #ece6ff 900px, #f1e9ff);
  background-color: #ece8ff;
}
.ev2 *, .ev2 *::before, .ev2 *::after { box-sizing: border-box; }
.ev2 ::selection { background: rgba(138,108,255,.45); color: #fff; }
.ev2 button { all: unset; box-sizing: border-box; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.ev2 button:focus-visible, .ev2 a:focus-visible, .ev2 [tabindex]:focus-visible { outline: 2px solid var(--au-ice); outline-offset: 3px; border-radius: 12px; }
.ev2 .tnum, .ev2 .num { font-variant-numeric: tabular-nums; }
.ev2 .num { font-family: var(--f-num); font-weight: 700; letter-spacing: -.01em; }
.ev2 .num small, .ev2 .unit { font-family: var(--f-ui); font-size: .55em; font-weight: 700; opacity: .62; margin-left: .12em; letter-spacing: 0; }
.ev2 .disp { font-family: var(--f-disp); font-weight: 900; letter-spacing: .02em; line-height: 1.08; }
.ev2 .eb { font-size: 11.5px; font-weight: 800; letter-spacing: .2em; color: var(--ink-3); text-transform: uppercase; }
.ev2 .dim { color: var(--ink-3); } .ev2 .dim2 { color: var(--ink-4); }
.ev2 .g-ice { background: linear-gradient(100deg, var(--ink) 0%, #9fd9ff 38%, var(--au-vio) 100%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.ev2 .g-ice2 { background: linear-gradient(100deg, var(--au-cyan), var(--au-ice) 45%, var(--au-vio)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.ev2 .g-em { background: linear-gradient(100deg, var(--em-c), var(--em-b) 45%, var(--em-a)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.ev2 .g-gd { background: linear-gradient(100deg, var(--gd-a), var(--gd-b) 50%, var(--gd-c)); -webkit-background-clip: text; background-clip: text; color: transparent; }
:where(:root[data-theme="light"]) .ev2.ev2 .g-ice { background-image: linear-gradient(100deg, #10204f 0%, #1f5fd6 45%, #5b3fd8 100%); }
:where(:root[data-theme="light"]) .ev2.ev2 .g-ice2 { background-image: linear-gradient(100deg, #1f5fd6, #5b3fd8); }
:where(:root[data-theme="light"]) .ev2.ev2 .g-gd { background-image: linear-gradient(100deg, #8a5300, #b9722b 50%, #a83d72); }

/* ── 底:夜空 + 极光 + 颗粒 + 星 + 雪 ── */
.ev2 .ground { position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.ev2 .ground::after { content: ""; position: absolute; inset: 0; background-image: var(--grain); opacity: .07; mix-blend-mode: overlay; }
:where(:root[data-theme="light"]) .ev2.ev2 .ground::after { opacity: .05; mix-blend-mode: multiply; }
.ev2 .aurora { position: absolute; left: -10%; right: -10%; top: -160px; height: 820px; filter: saturate(1.15); }
.ev2 .aurora i { position: absolute; border-radius: 50%; opacity: .62; will-change: transform; animation: ev3Au 26s var(--e-io) infinite alternate; }
.ev2 .aurora i:nth-child(1) { left: 6%; top: 40px; width: 52%; height: 420px; background: radial-gradient(closest-side, var(--au-cyan), transparent); opacity: .34; }
.ev2 .aurora i:nth-child(2) { left: 30%; top: -20px; width: 60%; height: 520px; background: radial-gradient(closest-side, var(--au-vio), transparent); animation-duration: 32s; animation-delay: -8s; }
.ev2 .aurora i:nth-child(3) { right: 0; top: 80px; width: 44%; height: 380px; background: radial-gradient(closest-side, var(--au-rose), transparent); opacity: .28; animation-duration: 38s; animation-delay: -16s; }
.ev2 .aurora i:nth-child(4) { left: -6%; top: 180px; width: 40%; height: 360px; background: radial-gradient(closest-side, var(--au-ice), transparent); opacity: .4; animation-duration: 30s; animation-delay: -4s; }
:where(:root[data-theme="light"]) .ev2.ev2 .aurora i { opacity: .28; }
.ev2 .aurora.ev3-off i { animation-play-state: paused; }
@keyframes ev3Au { 0% { transform: translate3d(0,0,0) rotate(0deg) scale(1); } 100% { transform: translate3d(6%, 4%, 0) rotate(8deg) scale(1.12); } }
.ev2 .stars { position: absolute; inset: 0 0 auto 0; height: 900px; background-image: radial-gradient(1px 1px at 12% 18%, rgba(255,255,255,.7), transparent 60%), radial-gradient(1px 1px at 28% 8%, rgba(255,255,255,.5), transparent 60%),
  radial-gradient(1.2px 1.2px at 46% 22%, rgba(255,255,255,.65), transparent 60%), radial-gradient(1px 1px at 63% 12%, rgba(255,255,255,.5), transparent 60%), radial-gradient(1.4px 1.4px at 81% 26%, rgba(255,255,255,.7), transparent 60%),
  radial-gradient(1px 1px at 91% 6%, rgba(255,255,255,.45), transparent 60%), radial-gradient(1px 1px at 7% 36%, rgba(255,255,255,.4), transparent 60%), radial-gradient(1.1px 1.1px at 72% 40%, rgba(255,255,255,.5), transparent 60%);
  mask-image: linear-gradient(180deg, #000, transparent); -webkit-mask-image: linear-gradient(180deg, #000, transparent); }
:where(:root[data-theme="light"]) .ev2.ev2 .stars { display: none; }
.ev2 .snow { position: sticky; top: 0; display: block; width: 100%; height: 0; overflow: visible; z-index: 0; pointer-events: none; }
.ev2 .snow canvas { position: absolute; left: 0; top: 0; width: 100%; pointer-events: none; }
.ev2 .ember-floor { position: absolute; left: 50%; bottom: -220px; width: 1100px; height: 520px; transform: translateX(-50%); border-radius: 50%;
  background: radial-gradient(closest-side, rgba(255,110,60,.32), rgba(255,160,70,.12) 55%, transparent); pointer-events: none; }

/* ── 玻璃(第二层):3F 渐变玻璃 = 带色调渐变底(150°)+ 磨砂 + 渐变描边(左上高光 → 冰蓝 → 紫 → 右下高光)+ 上沿高光 + 带色调投影 ── */
.ev2 .glass { position: relative; border-radius: var(--r-l);
  background: linear-gradient(180deg, var(--m-gloss), transparent 42%), linear-gradient(150deg, var(--m-tint-a), var(--m-base) 46%, var(--m-tint-b) 80%, var(--m-tint-c));
  -webkit-backdrop-filter: blur(24px) saturate(170%); backdrop-filter: blur(24px) saturate(170%);
  box-shadow: inset 0 1px 0 var(--m-hi), inset 0 0 26px var(--m-glow), 0 24px 46px -28px var(--m-cshadow), 0 3px 10px -6px var(--m-cshadow); }
.ev2 .glass::before { content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px; pointer-events: none; z-index: 1;
  background: radial-gradient(200px circle at var(--mx, 50%) var(--my, 50%), rgba(255,255,255,var(--sa, 0)), transparent 70%),
    linear-gradient(135deg, var(--m-ring-hi), var(--m-edge) 24%, var(--m-edge2) 70%, var(--m-ring-hi));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite: exclude; }
.ev2 .glass.spot:hover { --sa: .95; }
.ev2 .glass.lit { --m-edge: rgba(120,215,255,.92); --m-edge2: rgba(170,130,255,.9);
  box-shadow: inset 0 1px 0 var(--m-hi), inset 0 0 30px var(--m-glow), 0 30px 70px -34px var(--glow-ice), 0 24px 48px -30px var(--m-cshadow); }
.ev2 .glass.gold { --m-tint-a: rgba(255,220,150,.2); --m-tint-b: rgba(255,140,190,.13); --m-tint-c: rgba(150,110,255,.1); --m-edge: rgba(255,225,170,.85); --m-edge2: rgba(233,140,180,.6); --m-cshadow: rgba(243,183,107,.3); }
/* 区块主色调:同一套材质,换一组色调,整页有颜色 */
.ev2 .glass.h-ice { --m-tint-a: rgba(62,200,255,.34); --m-tint-b: rgba(90,140,255,.26); --m-tint-c: rgba(140,120,255,.2); --m-edge: rgba(120,220,255,.78); --m-edge2: rgba(110,150,255,.62); }
.ev2 .glass.h-vio { --m-tint-a: rgba(150,110,255,.38); --m-tint-b: rgba(110,90,255,.26); --m-tint-c: rgba(255,120,200,.22); --m-edge: rgba(190,150,255,.74); --m-edge2: rgba(255,140,210,.5); --m-cshadow: rgba(140,90,255,.38); }
.ev2 .glass.h-rose { --m-tint-a: rgba(255,120,180,.32); --m-tint-b: rgba(160,110,255,.26); --m-tint-c: rgba(255,170,120,.2); --m-edge: rgba(255,160,210,.72); --m-edge2: rgba(170,130,255,.56); --m-cshadow: rgba(220,90,170,.32); }
.ev2 .glass.h-mint { --m-tint-a: rgba(80,240,200,.28); --m-tint-b: rgba(80,150,255,.24); --m-tint-c: rgba(150,110,255,.18); --m-edge: rgba(120,245,210,.66); --m-edge2: rgba(110,170,255,.56); --m-cshadow: rgba(60,170,200,.32); }
.ev2 .glass.h-ember { --m-tint-a: rgba(255,140,90,.32); --m-tint-b: rgba(255,90,120,.2); --m-tint-c: rgba(150,110,255,.18); --m-edge: rgba(255,170,120,.76); --m-edge2: rgba(255,110,150,.5); --m-cshadow: rgba(255,110,80,.3); }
:where(:root[data-theme="light"]) .ev2.ev2 .glass.h-ice { --m-tint-a: rgba(150,225,255,.72); --m-tint-b: rgba(190,210,255,.58); --m-tint-c: rgba(215,200,255,.5); --m-edge: rgba(40,170,240,.62); --m-edge2: rgba(90,120,250,.5); }
:where(:root[data-theme="light"]) .ev2.ev2 .glass.h-vio { --m-tint-a: rgba(205,185,255,.72); --m-tint-b: rgba(190,190,255,.56); --m-tint-c: rgba(255,200,230,.52); --m-edge: rgba(130,90,245,.6); --m-edge2: rgba(230,100,170,.46); }
:where(:root[data-theme="light"]) .ev2.ev2 .glass.h-rose { --m-tint-a: rgba(255,195,225,.72); --m-tint-b: rgba(215,195,255,.56); --m-tint-c: rgba(255,215,190,.52); --m-edge: rgba(230,95,160,.56); --m-edge2: rgba(140,100,245,.5); }
:where(:root[data-theme="light"]) .ev2.ev2 .glass.h-mint { --m-tint-a: rgba(175,245,225,.72); --m-tint-b: rgba(180,215,255,.56); --m-tint-c: rgba(210,200,255,.5); --m-edge: rgba(20,180,150,.56); --m-edge2: rgba(70,140,240,.5); }
:where(:root[data-theme="light"]) .ev2.ev2 .glass.h-ember { --m-tint-a: rgba(255,205,175,.74); --m-tint-b: rgba(255,195,210,.56); --m-tint-c: rgba(215,200,255,.5); --m-edge: rgba(240,120,60,.58); --m-edge2: rgba(230,90,140,.46); }
:where(:root[data-theme="light"]) .ev2.ev2 .glass.gold { --m-tint-a: rgba(255,235,195,.8); --m-tint-b: rgba(255,215,230,.6); --m-tint-c: rgba(225,210,255,.5); --m-edge: rgba(201,147,47,.75); --m-edge2: rgba(180,70,122,.5); --m-cshadow: rgba(201,147,47,.3); }
:where(:root[data-theme="light"]) .ev2.ev2 .glass.lit { --m-edge: rgba(40,160,245,.8); --m-edge2: rgba(125,92,240,.75); }
.ev2 .well { border-radius: var(--r-m); background: var(--glass-2); box-shadow: inset 0 0 0 1px var(--hair); }
.ev2 .sep { height: 1px; background: linear-gradient(90deg, transparent, var(--hair-2) 12%, var(--hair-2) 88%, transparent); }
/* 聚光:鼠标靠近时卡片表面与描边被照亮(fx.js 写 --mx --my) */
.ev2 .spot::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; opacity: 0; transition: opacity .3s;
  background: radial-gradient(260px circle at var(--mx, 50%) var(--my, 50%), rgba(255,255,255,.09), transparent 62%); }
.ev2 .spot:hover::after { opacity: 1; }
:where(:root[data-theme="light"]) .ev2.ev2 .spot::after { background: radial-gradient(260px circle at var(--mx, 50%) var(--my, 50%), rgba(255,255,255,.7), transparent 62%); }

/* ── 发光体(第三层)与按钮:三种按钮 + 统一手感 ──
   位移 / 缩放拆成变量合成:磁吸 --mgx --mgy(fx.js)· 悬停 --lift · 按下 --sc;按下 90ms 到位,松手 420ms 回弹(--e-press),描边闪一次,波纹从指针处扩散 */
.ev2 .btn, .ev2 .btn-ice, .ev2 .btn-ghost { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-radius: 999px; white-space: nowrap; isolation: isolate;
  --lift: 0px; --sc: 1; transform: translate3d(var(--mgx, 0px), calc(var(--mgy, 0px) + var(--lift)), 0) scale(var(--sc));
  transition: transform var(--d-out) var(--e-press), box-shadow calc(var(--ts, 1) * 320ms) ease, filter calc(var(--ts, 1) * 200ms) ease; }
.ev2 .btn { height: 44px; padding: 0 22px; overflow: hidden; font-size: 15px; font-weight: 800; color: #fff; letter-spacing: .02em; text-shadow: 0 1px 1px rgba(90,20,0,.3);
  background: linear-gradient(180deg, rgba(255,255,255,.34), rgba(255,255,255,.06) 50%, transparent 56%), linear-gradient(105deg, var(--a-1) 0%, var(--a-2) 55%, var(--a-3) 100%);
  box-shadow: inset 0 1px 0 rgba(255,236,210,.55), inset 0 0 0 1px rgba(246,220,174,.42), inset 0 -2px 5px rgba(90,20,0,.28), 0 14px 30px -12px var(--glow-em); }
.ev2 .btn::after { content: ""; position: absolute; top: 0; bottom: 0; left: -60%; width: 40%; transform: skewX(-20deg); pointer-events: none; z-index: 2;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.5), transparent); transition: left calc(var(--ts, 1) * 700ms) var(--e-out); }
.ev2 .btn.lg { height: 56px; padding: 0 34px; font-size: 17px; }
.ev2 .btn.sm { height: 34px; padding: 0 15px; font-size: 13px; }
.ev2 .btn-ice { height: 40px; padding: 0 18px; overflow: hidden; font-size: 14px; font-weight: 800; color: #fff; text-shadow: 0 1px 0 rgba(30,40,140,.25);
  background: linear-gradient(180deg, rgba(255,255,255,.32), rgba(255,255,255,.05) 50%, transparent 56%), linear-gradient(105deg, var(--deep-1), var(--deep-2) 70%, var(--deep-3));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.55), inset 0 -2px 5px rgba(40,30,160,.22), 0 12px 26px -12px var(--glow-ice), 0 0 0 1px rgba(150,180,255,.3); }
.ev2 .btn-ghost { height: 40px; padding: 0 16px; font-size: 14px; font-weight: 800; color: var(--ink);
  background: linear-gradient(180deg, rgba(255,255,255,.17), rgba(255,255,255,.04) 62%), linear-gradient(135deg, rgba(90,170,255,.24), rgba(150,110,255,.2) 60%, rgba(255,130,190,.17));
  -webkit-backdrop-filter: blur(14px) saturate(170%); backdrop-filter: blur(14px) saturate(170%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.34), 0 8px 18px -10px rgba(110,100,255,.6); }
.ev2 .btn-ghost::before { content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px; pointer-events: none; z-index: 1;
  background: linear-gradient(135deg, rgba(255,255,255,.88), rgba(120,210,255,.8) 30%, rgba(170,130,255,.74) 70%, rgba(255,160,210,.7));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask-composite: exclude; }
.ev2 .btn-ghost .ico { color: #8fd2ff; } .ev2 .btn-ghost .ico.warm, .ev2 .btn-ghost.warm .ico { color: var(--em-ink); }
:where(:root[data-theme="light"]) .ev2.ev2 .btn-ghost { color: #151d45; background: linear-gradient(180deg, rgba(255,255,255,.96), rgba(255,255,255,.6) 70%), linear-gradient(135deg, rgba(150,215,255,.7), rgba(200,185,255,.6) 60%, rgba(255,200,225,.55));
  box-shadow: inset 0 1px 0 #fff, 0 8px 18px -10px rgba(90,80,220,.42); }
:where(:root[data-theme="light"]) .ev2.ev2 .btn-ghost::before { background: linear-gradient(135deg, #fff, rgba(60,160,245,.78) 30%, rgba(125,92,240,.7) 70%, rgba(234,95,159,.6)); }
:where(:root[data-theme="light"]) .ev2.ev2 .btn-ghost .ico { color: #2a64c8; }
.ev2 .btn-ghost.sm, .ev2 .btn-ice.sm { height: 32px; padding: 0 13px; font-size: 12.5px; }
@media (hover: hover) {
  .ev2 .btn:hover, .ev2 .btn-ice:hover, .ev2 .btn-ghost:hover { --lift: -2px; }
  .ev2 .btn:hover { box-shadow: inset 0 1px 0 rgba(255,255,255,.62), inset 0 -2px 5px rgba(150,40,0,.24), 0 22px 42px -14px var(--glow-em), 0 0 0 1px rgba(255,150,100,.42); }
  .ev2 .btn:hover::after { left: 130%; }
  .ev2 .btn-ice:hover { box-shadow: inset 0 1px 0 rgba(255,255,255,.55), inset 0 -2px 5px rgba(40,30,160,.22), 0 20px 38px -14px var(--glow-ice), 0 0 0 1px rgba(150,180,255,.4); }
  .ev2 .btn-ghost:hover { box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 14px 26px -12px rgba(110,100,255,.7); filter: brightness(1.08); }
}
.ev2 .btn.is-press, .ev2 .btn-ice.is-press, .ev2 .btn-ghost.is-press { --sc: .96; --lift: 0px; transition-duration: var(--d-in); filter: brightness(.94) saturate(1.1); }
.ev2 .btn.is-press { box-shadow: inset 0 1px 0 rgba(255,255,255,.5), inset 0 -1px 3px rgba(150,40,0,.3), 0 6px 14px -8px var(--glow-em), 0 0 0 1px rgba(255,150,100,.3); }
.ev2 .btn-ice.is-press { box-shadow: inset 0 1px 0 rgba(255,255,255,.45), 0 6px 14px -8px var(--glow-ice); }
.ev2 .btn-ghost.is-press { box-shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 4px 10px -6px rgba(110,100,255,.6); }
.ev2 .btn[disabled], .ev2 .btn-ghost[disabled], .ev2 .btn-ice[disabled], .ev2 .is-dis { opacity: .5; filter: grayscale(.75) saturate(.6); cursor: default; pointer-events: none; box-shadow: none; }
.ev2 .btn[disabled]::after { display: none; }
/* 波纹 + 描边闪(fx.js 往可按的东西里塞一个 .fx-rp) */
.ev2 .fx-rp { position: absolute; inset: 0; border-radius: inherit; overflow: hidden; pointer-events: none; z-index: 3; }
.ev2 .fx-rp b { position: absolute; left: var(--x); top: var(--y); width: var(--d); height: var(--d); margin: calc(var(--d) / -2) 0 0 calc(var(--d) / -2); border-radius: 50%;
  background: radial-gradient(closest-side, var(--rc, var(--rp-solid)), transparent); transform: scale(.06); opacity: 1; animation: ev3FxRp var(--d-rp) cubic-bezier(.2,.7,.3,1) forwards; }
@keyframes ev3FxRp { 60% { opacity: .9; } 100% { transform: scale(1); opacity: 0; } }
.ev2 .fx-rp.fl { animation: ev3FxFl var(--d-fl) ease-out; }
@keyframes ev3FxFl { 0% { box-shadow: inset 0 0 0 0 rgba(255,255,255,0); } 35% { box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.95), inset 0 0 16px rgba(255,255,255,.3); } 100% { box-shadow: inset 0 0 0 1.5px rgba(255,255,255,0); } }
:where(:root[data-theme="light"]) .ev2.ev2 .fx-rp.fl { animation-name: ev3FxFlL; }
@keyframes ev3FxFlL { 0% { box-shadow: inset 0 0 0 0 rgba(90,120,255,0); } 35% { box-shadow: inset 0 0 0 1.5px rgba(90,120,255,.7), inset 0 0 16px rgba(90,120,255,.18); } 100% { box-shadow: inset 0 0 0 1.5px rgba(90,120,255,0); } }
.ev2 .btn-ghost .fx-rp b, .ev2 .chip .fx-rp b, .ev2 .tile .fx-rp b { --rc: var(--rp-glass); }
/* 点了以后:转圈 → 勾(保存类)/ 勾 + 已复制 / 进度光(截图更新、去做)/ 下拉从按钮里长出来 */
.ev2 .fx-lb { display: inline-flex; align-items: center; gap: inherit; transition: transform calc(var(--ts, 1) * 260ms) var(--e-out), opacity calc(var(--ts, 1) * 200ms); }
.ev2 .fx-st { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 6px; pointer-events: none; opacity: 0; transform: translateY(70%);
  transition: transform calc(var(--ts, 1) * 360ms) var(--e-spring), opacity calc(var(--ts, 1) * 200ms); z-index: 2; }
.ev2 .fx-host.is-busy > .fx-lb, .ev2 .fx-host.is-done > .fx-lb { transform: translateY(-110%); opacity: 0; }
.ev2 .fx-host.is-busy > .fx-st, .ev2 .fx-host.is-done > .fx-st { transform: none; opacity: 1; }
.ev2 .fx-spin { width: 16px; height: 16px; border-radius: 50%; border: 2px solid currentColor; border-right-color: transparent; animation: ev3FxSpin calc(var(--ts, 1) * 700ms) linear infinite; }
@keyframes ev3FxSpin { to { transform: rotate(360deg); } }
.ev2 .fx-ck { width: 16px; height: 16px; flex: none; } .ev2 .fx-ck path { fill: none; stroke: currentColor; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 20; stroke-dashoffset: 20; }
.ev2 .fx-host.is-done > .fx-st .fx-ck path { animation: ev3FxCk calc(var(--ts, 1) * 320ms) var(--e-out) calc(var(--ts, 1) * 80ms) forwards; }
@keyframes ev3FxCk { to { stroke-dashoffset: 0; } }
.ev2 .fx-okbg { position: absolute; inset: 0; border-radius: inherit; z-index: 0; opacity: 0; transition: opacity calc(var(--ts, 1) * 260ms);
  background: linear-gradient(180deg, rgba(255,255,255,.3), transparent 56%), linear-gradient(105deg, var(--okd-1), var(--okd-2)); }
.ev2 .fx-host.is-done > .fx-okbg { opacity: 1; }
.ev2 .fx-host.is-done { color: #fff !important; text-shadow: 0 1px 0 rgba(0,90,60,.3); }
.ev2 .btn-ghost.fx-host.is-done::before { background: linear-gradient(135deg, #fff, #5ef0b8 40%, #2fd3c4); }
.ev2 .tag.fx-host.is-done { background: linear-gradient(100deg, var(--okd-1), var(--okd-2)); color: #fff; box-shadow: 0 6px 14px -8px rgba(16,185,129,.7); }
.ev2 .fx-pg { position: absolute; inset: 0; border-radius: inherit; overflow: hidden; pointer-events: none; z-index: 2; }
.ev2 .fx-pg::before { content: ""; position: absolute; top: 0; bottom: 0; width: 46%; left: -50%; transform: skewX(-18deg);
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.55), transparent); animation: ev3FxPgSw calc(var(--ts, 1) * 620ms) linear 3; }
.ev2 .fx-pg::after { content: ""; position: absolute; left: 10%; right: 10%; bottom: 3px; height: 2px; border-radius: 1px; transform-origin: left; transform: scaleX(0);
  background: linear-gradient(90deg, var(--au-cyan), var(--au-vio)); box-shadow: 0 0 8px var(--glow-ice); animation: ev3FxPgBar calc(var(--ts, 1) * 1860ms) var(--e-io) forwards; }
.ev2 .btn .fx-pg::after { background: linear-gradient(90deg, #fff, #fff3d0); box-shadow: 0 0 8px rgba(255,255,255,.8); }
@keyframes ev3FxPgSw { to { left: 120%; } }
@keyframes ev3FxPgBar { to { transform: scaleX(1); } }
.ev2 .live-dot { position: relative; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--em-b); box-shadow: 0 0 0 0 var(--glow-em); animation: ev3Pulse 2s ease-out infinite; }
@keyframes ev3Pulse { 0% { box-shadow: 0 0 0 0 var(--glow-em); } 70% { box-shadow: 0 0 0 10px transparent; } 100% { box-shadow: 0 0 0 0 transparent; } }

/* ── 小件 ── */
.ev2 .chip { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; border-radius: 999px; font-size: 12.5px; font-weight: 700; color: var(--ink-2);
  background: var(--glass-2); box-shadow: inset 0 0 0 1px var(--hair-2); transition: transform .12s var(--e-spring), color .2s, background .2s; white-space: nowrap; }
.ev2 .chip.on { color: #fff; background: var(--sel); box-shadow: inset 0 1px 0 rgba(255,255,255,.35), 0 8px 18px -10px var(--glow-ice); }
.ev2 .chip.warm { color: #fff; background: linear-gradient(100deg, var(--a-1), var(--a-2)); box-shadow: inset 0 1px 0 rgba(255,255,255,.35); }
.ev2 .tag { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 7px; font-size: 11.5px; font-weight: 800; white-space: nowrap; }
.ev2 .tag.mine { color: #fff; background: linear-gradient(100deg, var(--mine-1), var(--mine-2)); box-shadow: 0 6px 14px -8px var(--glow-em); }
.ev2 .tag.ice { color: var(--ink); background: rgba(90,168,255,.16); box-shadow: inset 0 0 0 1px rgba(90,168,255,.32); }
.ev2 .tag.ok { color: var(--ok); background: rgba(111,240,176,.1); box-shadow: inset 0 0 0 1px rgba(111,240,176,.28); }
:where(:root[data-theme="light"]) .ev2.ev2 .tag.ok { background: rgba(11,122,75,.1); box-shadow: inset 0 0 0 1px rgba(11,122,75,.3); }
:where(:root[data-theme="light"]) .ev2.ev2 .tag.ice { color: #163c86; }
.ev2 .tag.gold { color: #3a2400; background: linear-gradient(100deg, var(--gd-a), var(--gd-b)); }
.ev2 .tag.quiet { color: var(--ink-3); background: var(--glass-2); box-shadow: inset 0 0 0 1px var(--hair); }
:where(:root[data-theme="light"]) .ev2.ev2 .tag.gold { color: #2c1a00; }
.ev2 .deal { position: absolute; left: -2px; top: -10px; height: 22px; padding: 0 9px; border-radius: 8px 8px 8px 2px; font-family: var(--f-num); font-size: 12px; font-weight: 800; color: #fff;
  background: linear-gradient(180deg, #d43a32, #b8281c); box-shadow: 0 6px 14px -6px rgba(229,72,59,.7); display: inline-flex; align-items: center; }
.ev2 .ico[class*=" i-"] { display: inline-block; width: 18px; height: 18px; flex: none; background-color: currentColor; -webkit-mask: var(--i) center / contain no-repeat; mask: var(--i) center / contain no-repeat; }
.ev2 .gem { display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: 14px; color: #fff; flex: none;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 10px 22px -12px var(--shade); }
.ev2 .gem .ico { width: 20px; height: 20px; }
.ev2 .gem.c1 { background: linear-gradient(160deg, #ff9b7a, #f2557a); } .ev2 .gem.c2 { background: linear-gradient(160deg, #5ff0c8, #1fa6d8); }
.ev2 .gem.c3 { background: linear-gradient(160deg, #82b6ff, #5b52ff); } .ev2 .gem.c4 { background: linear-gradient(160deg, #ffc35e, #ff6f4a); }
.ev2 .gem.c5 { background: linear-gradient(160deg, #d39bff, #ff6fb5); } .ev2 .gem.c6 { background: linear-gradient(160deg, #ffe39a, #d9963a); }
.ev2 .crest { position: relative; display: inline-grid; place-items: center; width: 56px; height: 56px; border-radius: 18px; flex: none;
  font-family: var(--f-num); font-weight: 800; font-size: 16px; letter-spacing: .04em; color: #2c1a00;
  background: linear-gradient(160deg, #fff4d6, #f3c27a 60%, #e0a456); box-shadow: inset 0 1px 0 rgba(255,255,255,.85), 0 14px 30px -14px var(--glow-gd); }
:where(:root[data-theme="light"]) .ev2.ev2 .crest { background: linear-gradient(160deg, #fff6df, #f3d38a 60%, #d9a54a); }
.ev2 .crest::after { display: none; }
.ev2 .seg { display: inline-flex; padding: 4px; border-radius: 999px; background: var(--glass-2); box-shadow: inset 0 0 0 1px var(--hair-2); position: relative; }
.ev2 .seg span { position: relative; z-index: 1; padding: 6px 14px; border-radius: 999px; font-size: 13px; font-weight: 700; color: var(--ink-3); }
.ev2 .seg span.on { color: #fff; background: var(--sel); box-shadow: 0 6px 14px -8px var(--glow-ice); }
.ev2 .input { display: flex; align-items: center; gap: 8px; height: 42px; padding: 0 14px; border-radius: 13px; color: var(--ink-4); font-size: 14px;
  background: var(--glass-2); box-shadow: inset 0 1px 2px rgba(0,0,0,.18), inset 0 0 0 1px var(--hair-2); }
/* 开关:渐变轨道 + 玻璃圆钮;按住圆钮变宽,松手弹过去 */
.ev2 .switch { position: relative; width: 48px; height: 28px; border-radius: 14px; flex: none; cursor: pointer; background: var(--glass-3);
  box-shadow: inset 0 1px 3px rgba(0,0,0,.28), inset 0 0 0 1px var(--hair-2); }
.ev2 .switch::before { content: ""; position: absolute; inset: 0; border-radius: inherit; opacity: 1; transition: opacity calc(var(--ts, 1) * 240ms) ease;
  background: linear-gradient(180deg, rgba(255,255,255,.32), transparent 60%), linear-gradient(100deg, #4fb8ff, #8b6cff); box-shadow: 0 6px 16px -6px var(--glow-ice), inset 0 1px 0 rgba(255,255,255,.4); }
.ev2 .switch::after { content: ""; position: absolute; left: 3px; top: 3px; width: 22px; height: 22px; border-radius: 11px; transform: translateX(20px);
  background: linear-gradient(180deg, #ffffff, #e8ecff); box-shadow: 0 3px 8px rgba(10,14,60,.35), inset 0 -1px 0 rgba(0,0,0,.06);
  transition: transform var(--d-out) var(--e-press), width var(--d-out) var(--e-press); }
.ev2 .switch.off::before { opacity: 0; } .ev2 .switch.off::after { transform: translateX(0); }
.ev2 .switch.is-press::after { width: 29px; transform: translateX(13px); transition-duration: calc(var(--ts, 1) * 160ms); }
.ev2 .switch.off.is-press::after { transform: translateX(0); }
.ev2 .bar { position: relative; height: 6px; border-radius: 3px; background: var(--glass-3); overflow: hidden; }
.ev2 .bar > i { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 3px; background: linear-gradient(90deg, var(--au-cyan), var(--au-vio)); box-shadow: 0 0 12px var(--glow-ice); }
.ev2 .skel { position: relative; overflow: hidden; border-radius: 8px; background: var(--glass-3); }
.ev2 .skel::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient(90deg, transparent, rgba(255,255,255,.12), transparent); animation: ev3Shimmer 1.6s infinite; }
@keyframes ev3Shimmer { to { transform: translateX(100%); } }
.ev2 .go { margin-left: auto; color: var(--ink-3); font-size: 13px; font-weight: 600; white-space: nowrap; display: inline-flex; align-items: center; gap: 2px; }
.ev2 .go.ice { color: var(--au-ice); }
:where(:root[data-theme="light"]) .ev2.ev2 .go.ice { color: #2a64c8; }

/* ── 页面骨架 ── */
.ev2 .wrapw { max-width: 1152px; margin: 0 auto; padding: 0 40px; }
.ev2 .links { position: relative; margin-left: auto; display: flex; gap: 2px; padding: 4px; border-radius: 999px; background: var(--glass-2); box-shadow: inset 0 0 0 1px var(--hair); }
.ev2 .links span { position: relative; z-index: 1; padding: 6px 15px; border-radius: 999px; font-size: 14px; font-weight: 700; color: var(--ink-3); transition: color .2s; cursor: pointer; }
.ev2 .links span.on { color: var(--ink); }
.ev2 .links .ind { position: absolute; z-index: 0; top: 4px; bottom: 4px; border-radius: 999px; background: var(--glass-3); box-shadow: inset 0 1px 0 var(--edge-hi), 0 6px 14px -8px var(--shade); transition: left .42s var(--e-spring), width .42s var(--e-spring); }
.ev2 .ev3-rv { animation: ev3Rv .8s var(--e-out) backwards; }
@keyframes ev3Rv { from { opacity: 0; transform: translateY(18px); filter: blur(6px); } }
@media (max-width: 760px) {
  .ev2 { font-size: 14px; }
  .ev2 .wrapw { padding: 0 16px; }
  }
@media (prefers-reduced-motion: reduce) { .ev2 .aurora i, .ev2 .live-dot, .ev2 .skel::after, .ev2 .ev3-rv { animation: none !important; } }

/* ════ 第三版:小件的手感(胶囊滑块 / 工具格 / 行 / 底栏 / 导航收紧 / 3D 轻倾)════ */
.ev2 .chip, .ev2 .tag, .ev2 .row, .ev2 .tile, .ev2 .plan, .ev2 .seg span, .ev2 .mtab span { position: relative; }
.ev2 .chip { cursor: pointer; --sc: 1; transform: scale(var(--sc)); transition: transform var(--d-out) var(--e-press), color calc(var(--ts, 1) * 200ms), background calc(var(--ts, 1) * 200ms);
  background: linear-gradient(180deg, rgba(255,255,255,.1), rgba(255,255,255,.02)), var(--glass-2); box-shadow: inset 0 0 0 1px var(--hair-2), inset 0 1px 0 rgba(255,255,255,.1); }
:where(:root[data-theme="light"]) .ev2.ev2 .chip { background: linear-gradient(180deg, #fff, rgba(255,255,255,.6)); box-shadow: inset 0 0 0 1px rgba(100,110,220,.22), 0 4px 10px -8px rgba(90,80,220,.4); }
.ev2 .chip.on { color: #fff; background: linear-gradient(180deg, rgba(255,255,255,.3), transparent 56%), var(--sel); box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 8px 18px -10px var(--glow-ice); }
.ev2 .chip.is-press, .ev2 .seg span.is-press, .ev2 .tag.is-press { --sc: .94; transition-duration: var(--d-in); }
.ev2 .tag { --sc: 1; transform: scale(var(--sc)); transition: transform var(--d-out) var(--e-press), background calc(var(--ts, 1) * 240ms), color calc(var(--ts, 1) * 240ms); }
.ev2 .seg span { cursor: pointer; --sc: 1; transform: scale(var(--sc)); transition: transform var(--d-out) var(--e-press), color calc(var(--ts, 1) * 200ms); }
/* 滑块:一组胶囊里选中的那块是一块会滑的渐变胶囊(fx.js 塞 .fx-sl),中途略拉长再回弹 */
.ev2 .has-sl { isolation: isolate; }
.ev2 .chips, .ev2 .wr, .ev2 .mb-f { position: relative; }
.ev2 .has-sl > .fx-sl { position: absolute; z-index: 0; top: 0; left: 0; height: 0; width: 0; border-radius: 999px; pointer-events: none;
  background: linear-gradient(180deg, rgba(255,255,255,.3), transparent 56%), var(--sel); box-shadow: inset 0 1px 0 rgba(255,255,255,.42), 0 8px 18px -8px var(--glow-ice); }
.ev2 .has-sl > :not(.fx-sl) { z-index: 1; }
.ev2 .has-sl > .on, .ev2 .chips.has-sl > .chip.on, .ev2 .seg.has-sl > span.on { background: transparent !important; box-shadow: none !important; color: #fff; }
.ev2 .chips.has-sl > .chip:not(.on), .ev2 .mb-f.has-sl > .chip:not(.on) { background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.02)); }
/* 工具格:按下格子下沉、宝石弹一下;松手宝石闪一道光 */
.ev2:not(.L) .tile { --lift: 0px; --sc: 1; transform: translate3d(var(--mgx, 0px), calc(var(--mgy, 0px) + var(--lift)), 0) scale(var(--sc)); transition: transform var(--d-out) var(--e-press), box-shadow calc(var(--ts, 1) * 300ms); }
@media (hover: hover) { .ev2:not(.L) .tile:hover { --lift: -4px; } }
.ev2:not(.L) .tile.is-press { --sc: .95; --lift: 1px; transition-duration: var(--d-in); }
.ev2 .gem { position: relative; overflow: hidden; transition: transform var(--d-out) var(--e-press); }
.ev2 .gem::after { content: ""; position: absolute; top: -20%; bottom: -20%; left: -70%; width: 50%; transform: skewX(-20deg); pointer-events: none; background: linear-gradient(90deg, transparent, rgba(255,255,255,.8), transparent); opacity: 0; }
.ev2 .tile.is-press .gem { transform: scale(1.14) rotate(-7deg); transition-duration: calc(var(--ts, 1) * 160ms); }
.ev2 .tile.is-rel .gem::after { animation: ev3FxGlint calc(var(--ts, 1) * 520ms) ease-out; }
@keyframes ev3FxGlint { 0% { left: -70%; opacity: 1; } 100% { left: 130%; opacity: 1; } }
@media (hover: hover) { .ev2 .tile:hover .gem { transform: translateY(-2px) scale(1.05); } }
/* 整行 / 卡片:按下 .985,底色从指针处铺开,箭头往右挪 */
.ev2 .row, .ev2 [data-press="row"] { --sc: 1; transform: scale(var(--sc)); transition: transform var(--d-out) var(--e-press), background calc(var(--ts, 1) * 200ms); cursor: pointer; }
.ev2 .row.is-press, .ev2 [data-press="row"].is-press { --sc: .985; transition-duration: var(--d-in); }
.ev2 .row .fx-rp b, .ev2 [data-press="row"] .fx-rp b { --rc: var(--rp-row); }
.ev2 .go { transition: transform var(--d-out) var(--e-press), color .2s; }
.ev2 .is-press .go, .ev2 .go.is-press { transform: translateX(3px); transition-duration: var(--d-in); }
@media (hover: hover) { .ev2 .row:hover .go, .ev2 [data-press="row"]:hover .go { transform: translateX(2px); color: var(--ink-2); } }
/* 键盘聚焦 */
.ev2 .chip:focus-visible, .ev2 .tile:focus-visible, .ev2 .row:focus-visible, .ev2 .plan:focus-visible { outline: 2px solid var(--au-ice); outline-offset: 2px; }
/* 3D 轻倾(fx.js 写 --trx --try,≤4°)*/
.ev2 [data-tilt] { --lift: 0px; --sc: 1; transform: perspective(1100px) rotateX(var(--trx, 0deg)) rotateY(var(--try, 0deg)) translateY(var(--lift)) scale(var(--sc));
  transition: transform calc(var(--ts, 1) * 600ms) var(--e-out); transform-style: flat; }
.ev2 [data-tilt].tilting { transition: transform calc(var(--ts, 1) * 140ms) linear; }
.ev2 [data-tilt].is-press { --sc: .985; transition: transform var(--d-in) ease-out; }
/* 导航:滚动后收成更紧的玻璃条 */
.ev2 .links .ind { background: linear-gradient(180deg, rgba(255,255,255,.3), transparent 60%), var(--sel); box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 8px 16px -8px var(--glow-ice); }
.ev2 .links span.at, :where(:root[data-theme="light"]) .ev2.ev2 .links span.at { color: #fff; }
.ev2 .links.has-gold .ind { background: linear-gradient(180deg, rgba(255,255,255,.3), transparent 60%), linear-gradient(100deg, #f3b76b, #e98cb4); box-shadow: 0 8px 16px -8px var(--glow-gd); }
/* 数字滚动时宽度不跳 */
.ev2 [data-count] { font-variant-numeric: tabular-nums; }
@media (prefers-reduced-motion: reduce) {
  .ev2 .btn, .ev2 .btn-ice, .ev2 .btn-ghost, .ev2 .chip, .ev2 .tile, .ev2 .row, .ev2 [data-tilt], .ev2 .switch::after, .ev2 .gem, .ev2 .go, .ev2 .tag { transition: none !important; }
  .ev2 .fx-rp b, .ev2 .fx-rp.fl, .ev2 .fx-pg::before, .ev2 .tile.is-rel .gem::after { animation: none !important; display: none; }
}
/* 工具格:每格带一点自己宝石的颜色 */
.ev2 .tile.glass:has(.gem.c1) { --m-tint-a: rgba(255,130,120,.3); --m-edge: rgba(255,170,160,.7); }
.ev2 .tile.glass:has(.gem.c2) { --m-tint-a: rgba(80,230,200,.26); --m-edge: rgba(120,240,215,.66); }
.ev2 .tile.glass:has(.gem.c3) { --m-tint-a: rgba(110,150,255,.34); --m-edge: rgba(150,180,255,.72); }
.ev2 .tile.glass:has(.gem.c4) { --m-tint-a: rgba(255,180,90,.28); --m-edge: rgba(255,200,130,.7); }
.ev2 .tile.glass:has(.gem.c5) { --m-tint-a: rgba(220,140,255,.3); --m-edge: rgba(230,170,255,.7); }
.ev2 .tile.glass:has(.gem.c6) { --m-tint-a: rgba(255,220,140,.26); --m-edge: rgba(255,225,160,.7); }
:where(:root[data-theme="light"]) .ev2.ev2 .tile.glass:has(.gem.c1) { --m-tint-a: rgba(255,200,195,.75); --m-edge: rgba(240,110,100,.5); }
:where(:root[data-theme="light"]) .ev2.ev2 .tile.glass:has(.gem.c2) { --m-tint-a: rgba(180,245,228,.75); --m-edge: rgba(20,180,150,.5); }
:where(:root[data-theme="light"]) .ev2.ev2 .tile.glass:has(.gem.c3) { --m-tint-a: rgba(190,210,255,.8); --m-edge: rgba(80,110,245,.5); }
:where(:root[data-theme="light"]) .ev2.ev2 .tile.glass:has(.gem.c4) { --m-tint-a: rgba(255,222,180,.78); --m-edge: rgba(240,140,50,.5); }
:where(:root[data-theme="light"]) .ev2.ev2 .tile.glass:has(.gem.c5) { --m-tint-a: rgba(238,205,255,.8); --m-edge: rgba(190,90,240,.48); }
:where(:root[data-theme="light"]) .ev2.ev2 .tile.glass:has(.gem.c6) { --m-tint-a: rgba(255,236,190,.8); --m-edge: rgba(210,150,40,.5); }
/* 第三版复查:浅色下暖色胶囊不被通用浅色胶囊盖成白底白字 */
:where(:root[data-theme="light"]) .ev2.ev2 .chip.warm { color: #fff; background: linear-gradient(180deg, rgba(255,255,255,.3), transparent 56%), linear-gradient(100deg, var(--a-1), var(--a-2)); box-shadow: inset 0 1px 0 rgba(255,255,255,.35), 0 8px 18px -10px rgba(255,110,70,.55); }

/* ════ 内页积木(.W):行 / 分组标题 / 两栏 / 大数字 / 工具格 / 盒子 / 空态 ════ */
.W .hide-m { }
.W .ml { margin-left: auto; }
.W .gem.sm { width: 34px; height: 34px; border-radius: 11px; } .W .gem.sm .ico { width: 17px; height: 17px; }
.W .gem.xs { width: 28px; height: 28px; border-radius: 9px; } .W .gem.xs .ico { width: 15px; height: 15px; }
.W .gnum { font-size: 13px; font-weight: 800; }
.W .crest.sm { width: 40px; height: 40px; border-radius: 13px; font-size: 12px; } .W .crest.sm::after { inset: 3px; border-radius: 10px; }
.W .okc { color: var(--ok); }
.W .row { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: 18px; }
.W .row .rt { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; }
.W .sh { display: flex; align-items: baseline; margin: 10px 4px -2px; font-size: 13px; color: var(--ink-3); letter-spacing: .12em; }
.W .sh b { font-weight: 800; }
.W .sh .go { letter-spacing: 0; }
.W .cols { display: grid; grid-template-columns: minmax(0, 1.62fr) minmax(0, 1fr); gap: 24px; margin-top: 24px; align-items: start; }
.W .colm, .W .cols-side { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.W .big { font-size: 38px; line-height: 1.05; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.W .big.nm { font-size: 26px; font-weight: 800; padding-top: 8px; }
.W .tools { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; }
.W .tile { display: flex; flex-direction: column; align-items: center; gap: 9px; padding: 18px 6px 15px; border-radius: 20px; text-align: center; font-size: 13.5px; cursor: pointer; }
.W .tile b { font-weight: 700; } .W .tile small { margin-top: -6px; font-size: 11px; color: var(--ink-3); font-family: var(--f-ui); }
.W .board { padding: 18px 20px; border-radius: 22px; }
.W .bd-in { display: flex; gap: 10px; margin-top: 12px; } .W .bd-in .input { flex: 1; }
.W .empty { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 18px 0 4px; font-size: 13px; } .W .empty .ico { width: 16px; height: 16px; opacity: .6; }
.W .chips { display: flex; flex-wrap: wrap; gap: 6px; }
.W .box { padding: 6px 18px; border-radius: 22px; }
.W .box .hr { display: flex; align-items: center; gap: 10px; padding: 12px 0; box-shadow: inset 0 -1px 0 var(--hair); }
.W .box .hr:last-child { box-shadow: none; }
.W .box .hr.todo b { color: var(--em-ink); }
.W .box .hr .ico.okc { width: 16px; height: 16px; }
.W .box .two { display: flex; flex-direction: column; } .W .box .two span { font-size: 12.5px; }
.W .box .okt { margin-left: auto; color: var(--ok); font-weight: 800; font-size: 13px; } .W .box .okt + .go { margin-left: 6px; }
.W .box .lk { display: flex; flex-wrap: wrap; gap: 16px; padding: 12px 0 14px; font-size: 13px; font-weight: 700; color: var(--au-ice); }
:where(:root[data-theme="light"]) .W.W .box .lk { color: #2a64c8; }
.W .box .cap { display: flex; align-items: center; padding: 12px 0 6px; }
.W .box .ir, .W .box .br { display: grid; grid-template-columns: 84px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 10px 0; box-shadow: inset 0 -1px 0 var(--hair); font-size: 13.5px; }
.W .box .ir:last-child, .W .box .br:last-child { box-shadow: none; }
.W .box .ir > span:nth-child(2) { font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.W .box .br .num, .W .box .ir .num { font-size: 15px; }
.W .lnk { flex: 1; min-width: 0; height: 34px; font-size: 12.5px; color: var(--ink-2); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.ev2.W .aurora { transform: translate3d(calc(var(--px, 0) * 18px), calc(var(--sy, 0) * .9px + var(--py, 0) * 12px), 0); will-change: transform; }
.ev2.W .stars { transform: translate3d(calc(var(--px, 0) * -8px), calc(var(--sy, 0) * .55px), 0); }
.W .bar > i[style*="--w"] { width: var(--w); }
.W .ev3-rv .bar > i { animation: ev3BarIn calc(var(--ts, 1) * 1200ms) var(--e-out) calc(var(--ts, 1) * 250ms) backwards; }
@keyframes ev3BarIn { from { width: 0; } }
.W .box .hr[data-press], .W .box .br[data-press] { position: relative; border-radius: 12px; margin: 0 -8px; padding-left: 8px; padding-right: 8px; }
@media (max-width: 760px) {
  .W .hide-m { display: none; }
  .W .cols { grid-template-columns: minmax(0, 1fr); gap: 12px; margin-top: 12px; }
  .W .big { font-size: 28px; } .W .big.nm { font-size: 20px; }
  .W .tools { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; } .W .tile { padding: 12px 2px 10px; font-size: 12px; border-radius: 16px; } .W .tile .gem { width: 36px; height: 36px; border-radius: 12px; }
}

/* ════ 生产版:不和老样式打架(.ev2 里面)════ */
/* 老样式里 a / h1 / h2 / .empty 是全局规则;新页面里统一归零,由 ev3 的类来定 */
.ev2 a { color: inherit; text-decoration: none; }
.ev2 a:hover { color: inherit; }
.ev2 :is(h1, h2, h3, h4) { margin: 0; color: inherit; letter-spacing: inherit; font-weight: 800; line-height: 1.25; }
.ev2 h1 { font-size: 30px; } .ev2 h2 { font-size: 22px; } .ev2 h3 { font-size: 17px; } .ev2 h4 { font-size: 15px; }
.W .empty { padding: 0; background: none; color: var(--ink-3); }
/* ux.css 的全站按下态(scale .97 + 变淡 .72)在新页面里由 ev3.js 的按下手感接管,别叠两次 */
.ev2 :is(.btn, .btn-ice, .btn-ghost, .chip, .seg > span, .tile, .row, [data-press], .plan, .switch, .tag[data-fx], .links > span):active { scale: none; opacity: 1; }
/* 站内图标(_icons.html 的 <svg class="fz-ico"><use href="#i-…"/></svg>)放进宝石 / 按钮 */
.ev2 .gem .fz-ico { width: 20px; height: 20px; color: #fff; }
.W .gem.sm .fz-ico { width: 17px; height: 17px; } .W .gem.xs .fz-ico { width: 15px; height: 15px; }
.ev2 :is(.btn, .btn-ice, .btn-ghost) .fz-ico { width: 16px; height: 16px; flex: none; }
.ev2 .btn-ghost .fz-ico { color: #8fd2ff; } :where(:root[data-theme="light"]) .ev2.ev2 .btn-ghost .fz-ico { color: #2a64c8; }

/* ════ 新版页面的底(模板里 {% block body_class %}ev3-page{% endblock %})════ */
body.ev3-page { background: #090d2c; }
:root[data-theme="light"] body.ev3-page { background: #e6ebff; }
body.ev3-page::before, body.ev3-page .snowfall { display: none; }
body.ev3-page main { width: 100%; max-width: none; margin: 0; padding: 0; }
body.ev3-page .ev2 { padding-bottom: 24px; }
body.ev3-page .ev2 > .flash-wrap { margin: 0 auto; padding-top: 12px; }
body.ev3-page .ev2 > .flash-wrap .flash { border: 0; border-radius: 16px; box-shadow: inset 0 0 0 1px var(--hair-2), 0 14px 30px -18px var(--shade);
  -webkit-backdrop-filter: blur(18px) saturate(160%); backdrop-filter: blur(18px) saturate(160%); }
body.ev3-page .ev2 > .flash-wrap .flash:not(.flash-success):not(.flash-error):not(.flash-danger):not(.flash-warning) { background: rgba(22,28,82,.78); color: var(--ink); }
:where(:root[data-theme="light"]) body.ev3-page .ev2 > .flash-wrap .flash:not(.flash-success):not(.flash-error):not(.flash-danger):not(.flash-warning) { background: rgba(255,255,255,.84); }
body.ev3-page .ev2 > .flash-wrap .flash + .flash { margin-top: 8px; }
@media (max-width: 860px) { body.has-tabbar.ev3-page main { padding-bottom: 0; } }

/* ════ 全站壳层(base.html 里 body.ev3-shell;老页面也套着):玻璃顶栏 + 选中块滑动 + 滚动后收紧 / 页脚 / 手机底栏胶囊 / 外观浮钮 ════
   顶栏、页脚、底栏的类名和结构一个不改(测试锁着 class="topbar" / <footer class="site-footer"> / <nav class="tabbar">),只叠样式 */
body.ev3-shell .topbar {
  background: linear-gradient(180deg, rgba(6,9,32,.8), rgba(6,9,32,.56)); border-bottom: 0;
  -webkit-backdrop-filter: blur(20px) saturate(170%); backdrop-filter: blur(20px) saturate(170%);
  box-shadow: inset 0 -1px 0 var(--hair); transition: background .32s, box-shadow .32s, padding .32s;
}
body.ev3-shell .topbar.is-scrolled { background: linear-gradient(180deg, rgba(10,14,48,.92), rgba(16,20,70,.8)); box-shadow: inset 0 -1px 0 rgba(140,170,255,.22), 0 12px 30px -16px rgba(0,0,0,.6); }
:root[data-theme="light"] body.ev3-shell .topbar { background: linear-gradient(180deg, rgba(248,250,255,.88), rgba(248,250,255,.64)); }
:root[data-theme="light"] body.ev3-shell .topbar.is-scrolled { background: linear-gradient(180deg, rgba(255,255,255,.95), rgba(244,242,255,.88)); box-shadow: inset 0 -1px 0 rgba(90,100,200,.14), 0 12px 30px -18px rgba(80,70,200,.35); }
body.ev3-shell .topbar .brand { color: var(--ink); font-weight: 800; letter-spacing: .02em; text-shadow: none; }
body.ev3-shell .topbar .brand-logo { filter: drop-shadow(0 4px 10px rgba(243,183,107,.4)); }
@media (min-width: 861px) {
  body.ev3-shell .topbar { padding-top: 12px; padding-bottom: 12px; }
  body.ev3-shell .topbar.is-scrolled { padding-top: 8px; padding-bottom: 8px; }
  body.ev3-shell .topbar .nav { margin-left: auto; display: flex; align-items: center; gap: 10px; }
  body.ev3-shell .topbar .ev3-links { position: relative; display: flex; align-items: center; gap: 2px; padding: 4px; border-radius: 999px; isolation: isolate;
    background: var(--glass-2); box-shadow: inset 0 0 0 1px var(--hair); }
  body.ev3-shell .topbar .nav a { position: relative; z-index: 1; min-height: 0; padding: 6px 15px; border: 0; border-radius: 999px; background: none; box-shadow: none;
    font-size: 14px; font-weight: 700; color: var(--ink-3); text-decoration: none; transition: color .2s; }
  body.ev3-shell .topbar .ev3-links a:hover { color: var(--ink); background: none; }
  body.ev3-shell .topbar .ev3-links a.is-active:not(.primary-link) { color: #fff; background: none; box-shadow: none; }
  body.ev3-shell .topbar .ev3-links a.ev3-at { color: #fff; }
  body.ev3-shell .topbar .ev3-ind { position: absolute; z-index: 0; top: 4px; bottom: 4px; left: 0; width: 0; border-radius: 999px; pointer-events: none;
    background: linear-gradient(180deg, rgba(255,255,255,.3), transparent 60%), var(--sel); box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 8px 16px -8px var(--glow-ice);
    transition: left .42s var(--e-spring), width .42s var(--e-spring), opacity .2s; }
  body.ev3-shell .topbar .ev3-links:not(.has-at) .ev3-ind { opacity: 0; }
  body.ev3-shell .topbar .ev3-links:not(.ev3-ready) a.is-active:not(.primary-link) { background: linear-gradient(180deg, rgba(255,255,255,.3), transparent 60%), var(--sel); box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 8px 16px -8px var(--glow-ice); }
  /* 切换管理员页面:玻璃描边小钮;登录:文字;注册:主按钮 A */
  body.ev3-shell .topbar .nav a.nav-admin { color: var(--ink); font-size: 13px; padding: 6px 14px;
    background: linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,255,255,.03)), linear-gradient(135deg, rgba(90,170,255,.2), rgba(150,110,255,.16));
    box-shadow: inset 0 0 0 1px var(--hair-2), inset 0 1px 0 rgba(255,255,255,.2); }
  body.ev3-shell .topbar .nav a.nav-admin.is-active { box-shadow: inset 0 0 0 1px rgba(120,210,255,.6), inset 0 1px 0 rgba(255,255,255,.3); }
  body.ev3-shell .topbar .nav a.nav-login { color: var(--ink-2); }
  body.ev3-shell .topbar .nav a.nav-login:hover, body.ev3-shell .topbar .nav a.nav-login.is-active { color: var(--ink); }
  body.ev3-shell .topbar .nav a.primary-link { color: #fff; padding: 7px 18px; font-weight: 800; text-shadow: 0 1px 1px rgba(90,20,0,.3);
    background: linear-gradient(180deg, rgba(255,255,255,.28), rgba(255,255,255,.04) 52%, transparent 58%), linear-gradient(105deg, var(--a-1), var(--a-2) 55%, var(--a-3));
    box-shadow: inset 0 1px 0 rgba(255,236,210,.55), inset 0 0 0 1px rgba(246,220,174,.42), 0 10px 22px -12px var(--glow-em); }
  body.ev3-shell .topbar .nav a.primary-link:hover { color: #fff; filter: brightness(1.06); }
}
body.ev3-shell .nv-dot { background: var(--mine-1); box-shadow: 0 0 0 2px rgba(6,9,32,.6); }

/* 页脚:透明,一道发丝线;品牌在左、链接在右 */
body.ev3-shell .site-footer { background: none; }
body.ev3-shell .site-footer-inner { background: none; border: 0; box-shadow: inset 0 1px 0 var(--hair); border-radius: 0; }
body.ev3-shell .site-footer-brand strong { color: var(--ink); }
body.ev3-shell .site-footer-brand small { color: var(--ink-3); }
body.ev3-shell .site-footer-links a { color: var(--ink-3); background: none; border: 0; box-shadow: none; }
body.ev3-shell .site-footer-links a:hover { color: var(--ink); }
body.ev3-shell .site-footer-icp a { color: var(--ink-4); }

/* 手机底栏:悬浮玻璃胶囊 + 选中块滑过去 + 中间主按钮 A */
@media (max-width: 860px) {
  body.ev3-shell .topbar { padding-top: 12px; padding-bottom: 12px; }
  body.ev3-shell .topbar-kingdom { color: var(--ink-3); }
  body.ev3-shell .tabbar { isolation: isolate; border: 0;
    background: linear-gradient(160deg, var(--glass-3), var(--glass)); -webkit-backdrop-filter: blur(24px) saturate(170%); backdrop-filter: blur(24px) saturate(170%);
    box-shadow: inset 0 1px 0 var(--edge-hi), inset 0 0 0 1px var(--edge-lo), 0 20px 40px -16px var(--shade); }
  body.ev3-shell .tabbar a { position: relative; z-index: 1; color: var(--ink-3); font-weight: 700; }
  body.ev3-shell .tabbar a.is-active { color: #fff; }
  body.ev3-shell .tabbar a.is-active .tb-i { filter: none; }
  body.ev3-shell .tabbar .ev3-tind { position: absolute; z-index: 0; top: 7px; bottom: 7px; left: 0; width: 0; border-radius: 20px; pointer-events: none;
    background: linear-gradient(180deg, rgba(255,255,255,.28), transparent 60%), var(--sel); box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 8px 18px -8px var(--glow-ice);
    transition: left .46s var(--e-spring), width .46s var(--e-spring); }
  body.ev3-shell .tabbar:not(.ev3-ready) a.is-active::before { content: ""; position: absolute; z-index: -1; inset: -1px 6px; border-radius: 20px; pointer-events: none;
    background: linear-gradient(180deg, rgba(255,255,255,.28), transparent 60%), var(--sel); box-shadow: inset 0 1px 0 rgba(255,255,255,.4), 0 8px 18px -8px var(--glow-ice); }
  body.ev3-shell .tabbar .tb-plus { color: #fff; border: 0; text-shadow: 0 1px 1px rgba(90,20,0,.3);
    background: linear-gradient(180deg, rgba(255,255,255,.3), transparent 55%), linear-gradient(105deg, var(--a-1), var(--a-2) 55%, var(--a-3));
    box-shadow: inset 0 1px 0 rgba(255,236,210,.55), 0 10px 22px -8px var(--glow-em); }
  :root[data-theme="light"] body.ev3-shell .tabbar a { color: var(--ink-3); }
  :root[data-theme="light"] body.ev3-shell .tabbar a.is-active { color: #fff; }
  body.ev3-shell .tabbar .nv-dot { box-shadow: 0 0 0 2px rgba(255,255,255,.6); }
}
/* 外观浮钮:玻璃圆钮 + 渐变描边 */
body.ev3-shell .theme-fab { color: var(--ink); border: 0;
  background: linear-gradient(160deg, var(--glass-3), var(--glass)); box-shadow: inset 0 1px 0 var(--edge-hi), inset 0 0 0 1px var(--hair-2), 0 12px 26px -12px var(--shade); }

/* 不支持磨砂 / 系统减少透明度:退回实底 */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  body.ev3-shell .topbar, body.ev3-shell .topbar.is-scrolled { background: #0b0f36; }
  :root[data-theme="light"] body.ev3-shell .topbar, :root[data-theme="light"] body.ev3-shell .topbar.is-scrolled { background: #f6f7ff; }
  .ev2 .glass { background: linear-gradient(150deg, #262c78, #1b2060); }
  :where(:root[data-theme="light"]) .ev2.ev2 .glass { background: linear-gradient(150deg, #f4f7ff, #ece8ff); }
}
@media (prefers-reduced-transparency: reduce) {
  body.ev3-shell .topbar, body.ev3-shell .topbar.is-scrolled { background: #0b0f36; }
  :root[data-theme="light"] body.ev3-shell .topbar, :root[data-theme="light"] body.ev3-shell .topbar.is-scrolled { background: #f6f7ff; }
}
@media (prefers-reduced-motion: reduce) {
  body.ev3-shell .topbar, body.ev3-shell .topbar .ev3-ind, body.ev3-shell .tabbar .ev3-tind { transition: none; }
}
