/* ==========================================================================
   星空首页（仅 body[data-page="portal"]，由 css/style.css 之后加载）
   视觉稿：star-map-preview.html（已由用户确认）
   所有类统一 sh- 前缀；所有选择器限定在门户 body 作用域，避免污染其他页。
   ========================================================================== */

/* ---------------------------------------------------------------- 门户令牌 */
body[data-page="portal"]{
  --bg:#040914; --bg-soft:#0a1329;
  --surface:rgba(13,24,48,.72); --surface-2:rgba(10,20,42,.58);
  --border:rgba(160,190,255,.16); --border-2:rgba(160,190,255,.30);
  --text:#f2f6ff; --text-2:#c9d6ee; --muted:#93a3c4;
  --primary:#6fb0ff; --primary-d:#4d8fe8; --primary-l:rgba(111,176,255,.16);
  --accent:#f6c86a; --success:#34d399; --danger:#f87171;
  --danger-l:rgba(248,113,113,.14); --success-l:rgba(52,211,153,.14);
  --purple:#a78bfa;
  --ring-on:#f6c86a; --ring-off:rgba(160,190,255,.18); --ring-core:#0a1428;
  --ink:#f4f8ff; --gold:#f6c86a;
  --line:rgba(168,198,255,.15); --muted-2:rgba(198,218,250,.44);
  --phys:#6fb0ff; --phys-soft:rgba(111,176,255,.22); --phys-line:rgba(111,176,255,.28);
  --math:#35d6b2; --math-soft:rgba(53,214,178,.20);  --math-line:rgba(53,214,178,.26);
  --eng:#f47fbe;  --eng-soft:rgba(244,127,190,.20);  --eng-line:rgba(244,127,190,.26);
}

/* ---------------------------------------------------------------- 基础 */
body[data-page="portal"] *,
body[data-page="portal"] *::before,
body[data-page="portal"] *::after{box-sizing:border-box}
body[data-page="portal"]{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
  font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
body[data-page="portal"] a{color:inherit;text-decoration:none}
body[data-page="portal"] a:hover{text-decoration:none}
body[data-page="portal"] h1,
body[data-page="portal"] h2,
body[data-page="portal"] h3,
body[data-page="portal"] p{margin:0}

/* ---------------------------------------------------------------- 星空背景 */
body[data-page="portal"] .sh-space-bg{
  position:fixed;inset:0;z-index:-3;
  background:url("../assets/star-bg.webp") center/cover no-repeat #040914;   /* 20261031 性能优化：PNG 978KB→WebP 39KB（画质目检无损）；兜底纯色防个别旧浏览器不支持 WebP */
  animation:sh-breathe 22s ease-in-out infinite alternate;
}
@keyframes sh-breathe{from{filter:saturate(.96) brightness(.94)}to{filter:saturate(1.07) brightness(1.03)}}
body[data-page="portal"] .sh-space-bg::before{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(4,9,20,.42) 0%,rgba(4,9,20,.20) 24%,rgba(4,9,20,.62) 76%,rgba(4,9,20,.86) 100%),
    radial-gradient(900px 640px at 16% 18%,rgba(4,9,20,.42),rgba(4,9,20,0) 66%);
}
body[data-page="portal"] .sh-stars{position:fixed;inset:0;z-index:-2;pointer-events:none;overflow:hidden}
body[data-page="portal"] .sh-star{
  position:absolute;border-radius:50%;background:#fff;opacity:.4;
  animation:sh-twinkle var(--dur,6s) ease-in-out var(--delay,0s) infinite;
}
@keyframes sh-twinkle{0%,100%{opacity:.12;transform:scale(.75)}50%{opacity:.95;transform:scale(1.25)}}

/* ---------------------------------------------------------------- 页面容器 */
body[data-page="portal"] .sh-page{width:min(1200px,calc(100% - 48px));margin:0 auto;padding-bottom:22px;position:relative}

/* ---------------------------------------------------------------- 顶栏 */
body[data-page="portal"] .topbar{
  background:rgba(4,9,20,.72);
  border-bottom:1px solid rgba(168,198,255,.12);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
}
body[data-page="portal"] .topbar-inner{
  width:min(1200px,calc(100% - 48px));max-width:none;
  margin:0 auto;padding:13px 0;gap:26px;
}
body[data-page="portal"] .brand{color:var(--text);font-size:16.5px;flex:0 0 auto}
body[data-page="portal"] .brand>span:not(.sh-mark){white-space:nowrap}
body[data-page="portal"] .brand b{display:block;font-size:16.5px;font-weight:800;letter-spacing:.3px;line-height:1.2}
body[data-page="portal"] .brand small{
  display:block;margin-top:2px;font-size:11px;font-weight:500;letter-spacing:.5px;color:var(--muted);
}
body[data-page="portal"] .sh-mark{
  width:28px;height:28px;border-radius:0;flex:none;display:grid;place-items:center;
  background:none;box-shadow:none;
}
body[data-page="portal"] .sh-mark img{width:28px;height:28px;display:block}
body[data-page="portal"] .sh-mark .mk-color{display:none}
body[data-page="portal"] .sh-nav{display:flex;align-items:center;gap:4px;margin-left:10px;flex:none}
body[data-page="portal"] .sh-nav a{
  padding:8px 12px;border-radius:999px;font-size:12.5px;font-weight:600;
  color:rgba(224,236,255,.62);transition:.22s;white-space:nowrap;
}
body[data-page="portal"] .sh-nav a:hover{color:#fff;background:rgba(255,255,255,.06)}
body[data-page="portal"] .sh-actions{margin-left:auto;display:flex;align-items:center;gap:8px}
body[data-page="portal"] .sh-tlink{
  padding:8px 10px;border-radius:999px;font-size:12.5px;
  color:rgba(224,236,255,.60);transition:.22s;white-space:nowrap;
}
body[data-page="portal"] .sh-tlink:hover{color:#fff;background:rgba(255,255,255,.06)}

/* ---------------------------------------------------------------- 账号/同步深色 */
body[data-page="portal"] .acct{margin-right:0}
body[data-page="portal"] .acct-btn{
  background:rgba(10,20,42,.55);border-color:var(--border);color:var(--text-2);
}
body[data-page="portal"] .acct-btn:hover{
  background:rgba(111,176,255,.16);border-color:var(--primary);color:#fff;
}
body[data-page="portal"] .acct-btn.primary{background:#2563eb;border-color:#2563eb;color:#fff}
body[data-page="portal"] .acct-btn.primary:hover{background:#1d4ed8;border-color:#1d4ed8}
body[data-page="portal"] .acct-ava{background:linear-gradient(135deg,#3b82f6,#8b5cf6);color:#fff}
body[data-page="portal"] .acct-user:hover,
body[data-page="portal"] .acct-user[aria-expanded="true"]{background:rgba(255,255,255,.06);border-color:var(--border)}
body[data-page="portal"] .sync-chip{
  background:rgba(10,20,42,.55);border-color:var(--border);color:var(--muted);
}
body[data-page="portal"] .sync-chip.sync-ok{color:#6ee7b7;background:rgba(52,211,153,.12);border-color:rgba(52,211,153,.30)}
body[data-page="portal"] .sync-chip.sync-wait{color:#f6c86a;background:rgba(246,200,106,.10);border-color:rgba(246,200,106,.28)}
body[data-page="portal"] .sync-chip.sync-busy{color:#93c5fd;background:rgba(111,176,255,.12);border-color:rgba(111,176,255,.30)}
body[data-page="portal"] .sync-chip.sync-err{color:#fca5a5;background:rgba(248,113,113,.12);border-color:rgba(248,113,113,.30)}
body[data-page="portal"] .acct-modal{
  background:linear-gradient(165deg,#0d1830,#070e20);border-color:var(--border);
  box-shadow:0 30px 80px rgba(0,0,0,.60);
}
body[data-page="portal"] .acct-modal input{background:rgba(10,20,42,.60);color:var(--text);border-color:var(--border)}
body[data-page="portal"] .acct-modal input:focus{border-color:var(--primary)}
body[data-page="portal"] .acct-veil{background:rgba(2,7,18,.72)}
body[data-page="portal"] .xmodal{
  background:linear-gradient(165deg,#0d1830,#070e20);border-color:var(--border);
  box-shadow:0 30px 80px rgba(0,0,0,.60);
}
body[data-page="portal"] .xmodal-veil{background:rgba(2,7,18,.72)}
body[data-page="portal"] .btn.primary{background:#2563eb;border-color:#2563eb;color:#fff}
body[data-page="portal"] .btn.primary:hover{background:#1d4ed8;border-color:#1d4ed8}
body[data-page="portal"] .btn.danger{background:#dc2626;border-color:#dc2626;color:#fff}
body[data-page="portal"] .btn.danger:hover{background:#b91c1c;border-color:#b91c1c}

/* ---------------------------------------------------------------- Hero */
body[data-page="portal"] .sh-hero{position:relative;max-width:880px;padding:58px 0 30px}
body[data-page="portal"] .sh-eyebrow{
  display:flex;align-items:center;gap:10px;font-size:11.5px;font-weight:600;
  letter-spacing:2.2px;color:rgba(198,220,255,.60);
}
body[data-page="portal"] .sh-eyebrow::before{
  content:"";width:26px;height:1px;background:linear-gradient(90deg,rgba(246,200,106,0),var(--gold));
}
body[data-page="portal"] .sh-hero h1{
  margin-top:14px;font-size:clamp(34px,4.4vw,54px);line-height:1.12;
  letter-spacing:-1.4px;font-weight:800;color:#f8fbff;
  text-shadow:0 12px 46px rgba(0,0,0,.55);
}
body[data-page="portal"] .sh-hero h1 em{font-style:normal;color:var(--gold);text-shadow:0 0 36px rgba(246,200,106,.32)}
body[data-page="portal"] .sh-hero p{
  max-width:660px;margin-top:15px;font-size:14px;line-height:1.85;
  color:var(--muted);letter-spacing:.15px;
}
body[data-page="portal"] .sh-hero p b{color:#eaf3ff;font-weight:600}
body[data-page="portal"] .sh-stats{
  display:flex;flex-wrap:wrap;align-items:center;gap:0 18px;margin-top:20px;
  font-size:11.5px;color:var(--muted-2);
}
body[data-page="portal"] .sh-stats span{white-space:nowrap}
body[data-page="portal"] .sh-stats b{margin-right:3px;font-size:13px;font-weight:800;color:#dfeaff}
body[data-page="portal"] .sh-gold{color:var(--gold)}
body[data-page="portal"] .sh-enter{
  display:inline-flex;align-items:center;gap:7px;margin-top:18px;
  font-size:12.5px;font-weight:700;color:var(--gold);letter-spacing:.4px;
}
body[data-page="portal"] .sh-enter span{display:inline-block;animation:sh-bob 2.2s ease-in-out infinite}
@keyframes sh-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}

/* ---------------------------------------------------------------- 板块标题 */
body[data-page="portal"] .sh-section-head{display:flex;align-items:baseline;gap:12px;margin:0 0 16px}
body[data-page="portal"] .sh-idx{font-size:10.5px;font-weight:800;letter-spacing:1.8px;color:var(--gold)}
body[data-page="portal"] .sh-section-head h2{font-size:23px;font-weight:800;letter-spacing:.2px;color:#f6faff}
body[data-page="portal"] .sh-sub{font-size:12px;color:var(--muted);letter-spacing:.2px}
body[data-page="portal"] .sh-line{flex:1;min-width:24px;height:1px;background:rgba(168,198,255,.14);transform:translateY(-3px)}

/* ---------------------------------------------------------------- 学习工具 */
body[data-page="portal"] .sh-tools{margin-top:0;scroll-margin-top:84px}
body[data-page="portal"] .sh-dock{
  position:relative;padding:17px 19px 19px;border-radius:22px;overflow:hidden;
  background:linear-gradient(155deg,rgba(22,27,60,.82) 0%,rgba(7,13,30,.64) 100%);
  border:1px solid rgba(168,198,255,.16);
  box-shadow:0 20px 50px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.05);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
}
body[data-page="portal"] .sh-dock::before{
  content:"";position:absolute;left:19px;right:19px;top:0;height:1px;
  background:linear-gradient(90deg,rgba(246,200,106,0),rgba(246,200,106,.7),rgba(255,255,255,0));
}
body[data-page="portal"] .sh-dock::after{
  content:"";position:absolute;right:-10%;top:-60%;width:46%;height:200%;
  background:radial-gradient(ellipse,rgba(139,92,246,.12),rgba(0,0,0,0) 70%);
  pointer-events:none;
}
body[data-page="portal"] .sh-dock-head{
  position:relative;z-index:1;display:flex;align-items:center;gap:9px;
  font-size:11.5px;color:var(--muted);
}
body[data-page="portal"] .sh-dock-dot{width:5px;height:5px;border-radius:50%;background:var(--gold);box-shadow:0 0 10px var(--gold);flex:0 0 5px}
body[data-page="portal"] .sh-dock-head b{font-size:12.5px;font-weight:800;letter-spacing:1px;color:#eaf2ff}
body[data-page="portal"] .sh-dock-note{color:rgba(198,218,250,.46)}
body[data-page="portal"] .sh-dock-line{flex:1;height:1px;background:rgba(168,198,255,.12)}
body[data-page="portal"] .sh-tool-grid{
  position:relative;z-index:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin-top:14px;
}
body[data-page="portal"] .sh-tool{
  display:flex;align-items:center;gap:13px;padding:14px 15px;border-radius:16px;
  border:1px solid rgba(168,198,255,.14);background:rgba(8,17,38,.55);
  transition:translate .3s,border-color .3s,background .3s;
}
body[data-page="portal"] .sh-tool:hover{translate:0 -3px;border-color:var(--tc-line);background:rgba(12,22,48,.70)}
body[data-page="portal"] .sh-tool:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
body[data-page="portal"] .sh-tool-ico{
  width:44px;height:44px;border-radius:13px;flex:0 0 44px;display:grid;place-items:center;
  font-size:20px;font-weight:800;color:#fff;
  background:linear-gradient(140deg,var(--t1),var(--t2));
  box-shadow:0 8px 22px var(--t-shadow),inset 0 1px 0 rgba(255,255,255,.30);
}
/* 学习工具入口图标（20261109）：线性 SVG 替代原来的 A / ✓ / 文 */
body[data-page="portal"] .sh-tool-ico svg{
  width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round;
}
body[data-page="portal"] .sh-tool-body{flex:1;min-width:0}
body[data-page="portal"] .sh-tool-name{display:block;font-size:17px;font-weight:800;letter-spacing:.3px;color:#f4f9ff}
body[data-page="portal"] .sh-tool-desc{
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;
  margin-top:2px;font-size:11.5px;line-height:1.5;color:rgba(210,228,255,.58);
}
body[data-page="portal"] .sh-tool-meta{display:block;margin-top:3px;font-size:10.5px;color:rgba(198,218,250,.40)}
body[data-page="portal"] .sh-tool-go{
  font-size:11.5px;font-weight:700;color:var(--tg);white-space:nowrap;
  display:flex;align-items:center;gap:5px;
}
body[data-page="portal"] .sh-tool-go i{font-style:normal;transition:transform .3s}
body[data-page="portal"] .sh-tool:hover .sh-tool-go i{transform:translateX(3px)}
body[data-page="portal"] .sh-tool.vocab{--t1:#8b5cf6;--t2:#6366f1;--tg:#c4b5fd;--tc-line:rgba(139,92,246,.40);--t-shadow:rgba(99,102,241,.35)}
body[data-page="portal"] .sh-tool.wrong{--t1:#f6c86a;--t2:#f59e0b;--tg:#ffdf9e;--tc-line:rgba(246,200,106,.40);--t-shadow:rgba(245,158,11,.30)}
body[data-page="portal"] .sh-tool.comp{--t1:#fb7185;--t2:#e11d48;--tg:#fecdd3;--tc-line:rgba(251,113,133,.40);--t-shadow:rgba(225,29,72,.30)}
body[data-page="portal"] .sh-tool.plan{--t1:#34d399;--t2:#0d9488;--tg:#a7f3d0;--tc-line:rgba(52,211,153,.40);--t-shadow:rgba(13,148,136,.30)}

/* ---------------------------------------------------------------- 学科主课件 */
body[data-page="portal"] .sh-subjects{scroll-margin-top:84px;margin-top:50px;padding-top:6px}
body[data-page="portal"] .sh-subject-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
body[data-page="portal"] .sh-subject{
  display:flex;flex-direction:column;gap:10px;border-radius:20px;outline:none;min-width:0;
}
body[data-page="portal"] .sh-subject:focus-visible .sh-plate{outline:2px solid var(--gold);outline-offset:4px}
body[data-page="portal"] .sh-subject-stage{
  position:relative;height:248px;display:grid;place-items:center;border-radius:20px;
}
body[data-page="portal"] .sh-subject-stage::before{
  content:"";position:absolute;left:50%;top:52%;width:78%;height:78%;transform:translate(-50%,-50%);
  background:radial-gradient(circle at 50% 50%,var(--c-soft),rgba(4,9,20,0) 70%);
  filter:blur(16px);z-index:0;pointer-events:none;
}
body[data-page="portal"] .sh-subject-orbit{
  position:absolute;left:50%;top:50%;width:100%;height:94%;
  transform:translate(-50%,-50%) rotate(-12deg);
  border:1px dashed var(--c-line);border-radius:50%;opacity:.7;z-index:1;pointer-events:none;
}
body[data-page="portal"] .sh-subject-no{
  position:absolute;left:14px;top:10px;z-index:3;
  font-size:10.5px;font-weight:700;letter-spacing:2px;color:rgba(198,218,250,.38);
}
body[data-page="portal"] .sh-planet-float{
  position:relative;z-index:2;display:grid;place-items:center;
  animation:sh-float var(--dur,10s) ease-in-out var(--delay,0s) infinite;
}
@keyframes sh-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
body[data-page="portal"] .sh-p-planet{
  position:relative;width:var(--ps);height:var(--ps);
  transition:transform .5s cubic-bezier(.2,.7,.2,1);
}
body[data-page="portal"] .sh-subject:hover .sh-p-planet{transform:scale(1.03)}
body[data-page="portal"] .sh-p-body{
  position:absolute;inset:0;border-radius:50%;overflow:hidden;z-index:2;
  box-shadow:inset -24px -18px 60px rgba(0,0,0,.88),inset 0 0 0 1px rgba(255,255,255,.08),0 0 60px var(--c-soft);
}
body[data-page="portal"] .sh-p-body::after{
  content:"";position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle at 73% 75%,rgba(0,0,0,0) 24%,rgba(0,0,0,.46) 78%);
  mix-blend-mode:multiply;
}
body[data-page="portal"] .sh-p-shine{
  position:absolute;left:17%;top:11%;width:38%;height:27%;border-radius:50%;
  background:radial-gradient(ellipse,rgba(255,255,255,.32),rgba(255,255,255,0) 70%);
  filter:blur(9px);transform:rotate(-28deg);pointer-events:none;z-index:4;opacity:.8;
}
body[data-page="portal"] .sh-subject.physics{--c:var(--phys);--c-soft:var(--phys-soft);--c-line:var(--phys-line);--dur:10s;--delay:-1s}
body[data-page="portal"] .sh-subject.math{--c:var(--math);--c-soft:var(--math-soft);--c-line:var(--math-line);--dur:12s;--delay:-4s}
body[data-page="portal"] .sh-subject.english{--c:var(--eng);--c-soft:var(--eng-soft);--c-line:var(--eng-line);--dur:11s;--delay:-2s}
body[data-page="portal"] .sh-subject.physics .sh-p-planet{--ps:clamp(168px,15vw,214px)}
body[data-page="portal"] .sh-subject.math .sh-p-planet{--ps:clamp(150px,13.5vw,192px)}
body[data-page="portal"] .sh-subject.english .sh-p-planet{--ps:clamp(158px,14.2vw,202px)}
body[data-page="portal"] .sh-subject.physics .sh-p-body{
  background:
    radial-gradient(circle at 31% 24%,rgba(226,246,255,.62),rgba(226,246,255,0) 32%),
    repeating-linear-gradient(102deg,rgba(255,255,255,.07) 0 8px,rgba(2,10,30,.06) 8px 20px),
    radial-gradient(circle at 36% 30%,#a8d8ff 0%,#5a9bf0 19%,#2563eb 42%,#0c2458 70%,#040a18 100%);
}
body[data-page="portal"] .sh-subject.physics .sh-p-ring{
  position:absolute;left:50%;top:50%;width:150%;height:150%;margin:-75% 0 0 -75%;
  border-radius:50%;border:2px solid rgba(196,229,255,.42);background:none;
  box-shadow:0 0 18px rgba(120,180,255,.28),inset 0 0 12px rgba(120,180,255,.20);
  transform:rotate(-20deg) scaleY(.27);z-index:0;
}
body[data-page="portal"] .sh-subject.physics .sh-p-ring-clip{
  position:absolute;inset:-25%;z-index:3;clip-path:inset(50% 0 0 0);pointer-events:none;
}
body[data-page="portal"] .sh-subject.physics .sh-p-ring-clip .sh-p-ring{
  left:0;top:0;width:100%;height:100%;margin:0;border-color:rgba(210,238,255,.55);
}
body[data-page="portal"] .sh-subject.math .sh-p-body{
  background:
    radial-gradient(circle at 32% 26%,rgba(226,255,247,.60),rgba(226,255,247,0) 32%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.085) 0 1px,rgba(255,255,255,0) 1px 26px),
    repeating-linear-gradient(90deg,rgba(255,255,255,.085) 0 1px,rgba(255,255,255,0) 1px 26px),
    radial-gradient(circle at 35% 30%,#a7f3d0 0%,#34d399 18%,#0f766e 48%,#04302c 76%,#020b09 100%);
}
body[data-page="portal"] .sh-subject.english .sh-p-body{
  background:
    radial-gradient(circle at 30% 24%,rgba(255,236,247,.72),rgba(255,236,247,0) 34%),
    radial-gradient(ellipse 64% 18% at 52% 36%,rgba(255,255,255,.14),rgba(255,255,255,0) 72%),
    radial-gradient(ellipse 70% 16% at 46% 64%,rgba(255,255,255,.10),rgba(255,255,255,0) 72%),
    radial-gradient(circle at 34% 30%,#ffd1e8 0%,#f472b6 17%,#be185d 45%,#4c0b2a 73%,#14020c 100%);
}

/* 学科信息牌 */
body[data-page="portal"] .sh-plate{
  position:relative;display:flex;flex-direction:column;flex:1;
  padding:14px 16px 13px;border-radius:16px;
  background:linear-gradient(160deg,rgba(12,24,52,.84) 0%,rgba(6,13,30,.64) 100%);
  border:1px solid rgba(168,198,255,.16);
  box-shadow:0 14px 36px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.05);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  transition:translate .3s,border-color .3s,box-shadow .3s;
}
body[data-page="portal"] .sh-plate::before{
  content:"";position:absolute;left:16px;right:16px;top:0;height:1px;
  background:linear-gradient(90deg,rgba(255,255,255,0),var(--c),rgba(255,255,255,0));opacity:.75;
}
body[data-page="portal"] .sh-plate-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
body[data-page="portal"] .sh-plate-k{
  display:flex;align-items:center;gap:6px;font-size:9.5px;font-weight:700;
  letter-spacing:1.6px;color:var(--c);
}
body[data-page="portal"] .sh-plate-k::before{content:"";width:4px;height:4px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c)}
body[data-page="portal"] .sh-plate-edition{font-size:10px;color:rgba(210,228,255,.42);letter-spacing:.3px}
body[data-page="portal"] .sh-plate-name{margin-top:5px;font-size:23px;font-weight:800;letter-spacing:.4px;color:#f6faff;line-height:1.25}
/* 学科角标（20261109）：物理/数学/英语的小图标，随科目标题字号缩放 */
body[data-page="portal"] .sh-subj-ico{
  display:inline-flex;width:.82em;height:.82em;margin-right:.34em;
  vertical-align:-.08em;color:var(--c);
}
body[data-page="portal"] .sh-subj-ico svg{
  display:block;width:100%;height:100%;fill:none;stroke:currentColor;
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
body[data-page="portal"] .sh-plate-meta{margin-top:3px;font-size:11.5px;line-height:1.6;color:rgba(210,228,255,.60)}
body[data-page="portal"] .sh-progress{display:flex;align-items:center;gap:9px;margin-top:10px}
body[data-page="portal"] .sh-bar{flex:1;height:4px;border-radius:999px;background:rgba(168,198,255,.12);overflow:hidden}
body[data-page="portal"] .sh-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--c),rgba(255,255,255,.70))}
body[data-page="portal"] .sh-pct{font-size:10.5px;font-weight:700;color:rgba(210,228,255,.55);white-space:nowrap}
body[data-page="portal"] .sh-plate-foot{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:11px;padding-top:10px;border-top:1px solid rgba(168,198,255,.10);
  font-size:11.5px;font-weight:700;color:var(--c);letter-spacing:.3px;
}
body[data-page="portal"] .sh-plate-foot i{font-style:normal;transition:transform .3s}
body[data-page="portal"] .sh-subject:hover .sh-plate{translate:0 -4px;border-color:var(--c-line);box-shadow:0 22px 46px rgba(0,0,0,.46),0 0 30px var(--c-soft)}
body[data-page="portal"] .sh-subject:hover .sh-plate-foot i{transform:translateX(3px)}

/* ---------------------------------------------------------------- 页脚 */
body[data-page="portal"] .sh-footer{
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
  margin-top:42px;padding:18px 0 26px;border-top:1px solid rgba(168,198,255,.10);
  font-size:11px;color:rgba(198,218,250,.42);
}
body[data-page="portal"] .sh-footer-brand{display:flex;align-items:center;gap:9px}
body[data-page="portal"] .sh-footer-brand b{font-size:12.5px;color:rgba(230,240,255,.70)}
body[data-page="portal"] .sh-footer-links{display:flex;align-items:center;gap:16px}
body[data-page="portal"] .sh-footer-links a:hover{color:#fff}
body[data-page="portal"] .sh-footer-note{color:rgba(198,218,250,.32)}
body[data-page="portal"] .sh-clear{
  font:inherit;font-size:11px;color:rgba(198,218,250,.42);background:none;border:0;
  padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px;
}
body[data-page="portal"] .sh-clear:hover{color:var(--danger)}

/* ---------------------------------------------------------------- Toast */
body[data-page="portal"] .sh-toast{
  position:fixed;left:50%;bottom:30px;z-index:30;transform:translate(-50%,14px);
  padding:10px 16px;border-radius:10px;background:rgba(10,20,44,.95);
  border:1px solid var(--line);color:#dfeaff;font-size:12px;opacity:0;
  pointer-events:none;transition:.3s;max-width:calc(100% - 32px);text-align:center;
}
body[data-page="portal"] .sh-toast.sh-on{opacity:1;transform:translate(-50%,0)}

/* ---------------------------------------------------------------- 响应式 */
@media (max-width:1200px){
  body[data-page="portal"] .sh-nav{display:none}
  body[data-page="portal"] .topbar-inner{padding:12px 0;gap:18px}
}
/* 平板竖屏（如 iPad mini 768）：登录后账号区、同步胶囊与进度条变宽，
   隐藏次要入口并限制账号名宽度，避免把顶栏挤爆 */
@media (max-width:1000px){
  body[data-page="portal"] .sh-tlink{display:none}
  body[data-page="portal"] .acct-who{max-width:72px}
}
@media (max-width:900px){
  body[data-page="portal"] .sh-hero{padding-top:40px}
  body[data-page="portal"] .sh-hero h1{letter-spacing:-.8px}
  body[data-page="portal"] .sh-subject-grid{grid-template-columns:1fr;gap:14px}
  body[data-page="portal"] .sh-subject{flex-direction:row;align-items:center;gap:16px}
  body[data-page="portal"] .sh-subject-stage{width:172px;height:172px;flex:0 0 172px}
  body[data-page="portal"] .sh-subject.physics .sh-p-planet{--ps:142px}
  body[data-page="portal"] .sh-subject.math .sh-p-planet{--ps:128px}
  body[data-page="portal"] .sh-subject.english .sh-p-planet{--ps:134px}
  body[data-page="portal"] .sh-subject-stage::before{width:100%;height:100%;filter:blur(12px)}
  body[data-page="portal"] .sh-subject-orbit{height:100%}
  body[data-page="portal"] .sh-plate{min-height:0}
  body[data-page="portal"] .sh-tool-grid{grid-template-columns:1fr}
  body[data-page="portal"] .sh-tool-desc{display:block;overflow:visible}
}
@media (max-width:760px){
  body[data-page="portal"] .acct-who{display:none}
  body[data-page="portal"] .topbar-inner{padding:10px 0;gap:10px}
}
@media (max-width:640px){
  body[data-page="portal"] .topbar-inner,
  body[data-page="portal"] .sh-page{width:calc(100% - 32px)}
  body[data-page="portal"] .brand small{display:none}
  body[data-page="portal"] .sh-hero h1{font-size:clamp(31px,9.2vw,40px);letter-spacing:-.4px}
  body[data-page="portal"] .sh-hero p{font-size:13.5px}
  body[data-page="portal"] .sh-section-head{flex-wrap:wrap;gap:8px 10px}
  body[data-page="portal"] .sh-line{display:none}
  body[data-page="portal"] .sh-subject{flex-direction:row;align-items:center;gap:12px}
  body[data-page="portal"] .sh-subject-stage{width:132px;height:132px;flex:0 0 132px}
  body[data-page="portal"] .sh-subject.physics .sh-p-planet{--ps:108px}
  body[data-page="portal"] .sh-subject.math .sh-p-planet{--ps:96px}
  body[data-page="portal"] .sh-subject.english .sh-p-planet{--ps:101px}
  body[data-page="portal"] .sh-plate{padding:12px 13px 11px}
  body[data-page="portal"] .sh-plate-name{font-size:20px}
  body[data-page="portal"] .sh-plate-meta{font-size:10.5px}
  body[data-page="portal"] .sh-plate-edition{display:none}
  body[data-page="portal"] .sh-pct{font-size:10px}
  body[data-page="portal"] .sh-plate-foot{font-size:10.5px}
  body[data-page="portal"] .sh-dock{padding:15px}
  body[data-page="portal"] .sh-dock-note{display:none}
  body[data-page="portal"] .sh-tool{padding:13px;gap:12px}
  body[data-page="portal"] .sh-tool-ico{width:42px;height:42px;flex-basis:42px;font-size:19px}
  body[data-page="portal"] .sh-tool-name{font-size:16.5px}
  body[data-page="portal"] .sh-tool-desc{font-size:10.8px}
  body[data-page="portal"] .sh-footer{flex-direction:column;align-items:flex-start;gap:8px}
}
@media (max-width:480px){
  body[data-page="portal"] .sh-stats{gap:14px 18px}
  body[data-page="portal"] .sh-footer{flex-direction:column;gap:10px;text-align:center}
  body[data-page="portal"] .acct-btn{padding:6px 10px;font-size:12px}
  body[data-page="portal"] .sh-actions{gap:6px}
  /* 窄屏也保留品牌名（20261111）：图标 + 名称同排，名称过长省略；
     style.css 的 480px 规则会把非图标 span 恢复显示，这里补上 portal 的尺寸 */
  body[data-page="portal"] .brand{gap:8px;min-width:0}
  body[data-page="portal"] .brand>.sh-mark{display:grid}
  body[data-page="portal"] .brand b{
    font-size:14.5px;line-height:1.25;max-width:46vw;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
}
@media (prefers-reduced-motion:reduce){
  body[data-page="portal"] *,
  body[data-page="portal"] *::before,
  body[data-page="portal"] *::after{animation:none !important;transition:none !important}
}

/* ==========================================================================
   移动端 H5 兼容（2026-10-28）
   --------------------------------------------------------------------------
   P1 触摸目标 ≥40px：页脚链接、清空进度、进入工具等手指可点区域
   P2 关键信息字号上调：面向小学四年级~初三学生，承载信息的描述/元数据
      提升到 11.5~12.5px；纯装饰的序号（sh-idx / sh-subject-no）保持原样，
      避免破坏星图密集版式的精致感。
   ========================================================================== */
@media (max-width:720px){
  /* ---------- P1 触摸目标 ---------- */
  body[data-page="portal"] .sh-enter{padding:10px 2px}
  body[data-page="portal"] .sh-tool{min-height:76px}
  body[data-page="portal"] .sh-footer-links a{padding:10px 2px;font-size:12.5px}
  body[data-page="portal"] .sh-clear{
    min-height:40px;padding:8px 6px;font-size:12px;
    display:inline-flex;align-items:center;
  }

  /* ---------- P2 关键信息字号 ---------- */
  body[data-page="portal"] .sh-eyebrow{font-size:12px}
  body[data-page="portal"] .sh-tool-desc{font-size:12.5px;line-height:1.65}
  body[data-page="portal"] .sh-tool-meta{font-size:11.5px}
  body[data-page="portal"] .sh-tool-go{font-size:12.5px}
  body[data-page="portal"] .sh-plate-k{font-size:11px}
  body[data-page="portal"] .sh-plate-meta{font-size:12px;line-height:1.65}
  body[data-page="portal"] .sh-pct{font-size:11.5px}
  body[data-page="portal"] .sh-plate-foot{font-size:12px}
  body[data-page="portal"] .sh-dock-note{font-size:12px}
  body[data-page="portal"] .sh-footer{font-size:12px}
}

/* ==========================================================================
   粉梦主题（body[data-page="portal"][data-theme="pink"]，2026-10-31）
   --------------------------------------------------------------------------
   梦幻粉色全套皮肤：仅覆盖配色与视觉质感，结构与星空主题共用。
   所有覆盖选择器比基础规则多一个属性限定，天然获得更高优先级，
   且严格限定在门户作用域内，不影响其他页面。
   ========================================================================== */

/* ---------------------------------------------------------------- 粉梦令牌 */
body[data-page="portal"][data-theme="pink"]{
  --bg:#fff3f9; --bg-soft:#ffe8f2;
  --surface:rgba(255,255,255,.74); --surface-2:rgba(255,244,250,.62);
  --border:rgba(240,110,160,.18); --border-2:rgba(240,110,160,.34);
  --text:#83304f; --text-2:#9c4a70; --muted:#ab557c;
  --primary:#f06292; --primary-d:#e0457b; --primary-l:rgba(240,98,146,.13);
  --accent:#f8a5c2; --success:#2fa583; --danger:#dd4f68;
  --danger-l:rgba(221,79,104,.12); --success-l:rgba(47,165,131,.12);
  --purple:#c58ae0;
  --ring-on:#f06292; --ring-off:rgba(240,98,146,.18); --ring-core:#fff0f6;
  --ink:#83304f; --gold:#e8548d;
  --line:rgba(240,110,160,.15); --muted-2:rgba(189,115,150,.50);
  --phys:#6aa7e0; --phys-soft:rgba(127,180,232,.24); --phys-line:rgba(127,180,232,.34);
  --math:#3dbf9e; --math-soft:rgba(88,207,176,.22);  --math-line:rgba(88,207,176,.32);
  --eng:#e85f9d;  --eng-soft:rgba(244,127,190,.22);  --eng-line:rgba(244,127,190,.32);
}

/* ---------------------------------------------------------------- 粉梦背景 */
body[data-page="portal"][data-theme="pink"] .sh-space-bg{
  background:
    radial-gradient(1100px 700px at 12% -10%,rgba(255,214,235,.95),rgba(255,214,235,0) 62%),
    radial-gradient(900px 620px at 88% 10%,rgba(232,208,255,.85),rgba(232,208,255,0) 64%),
    radial-gradient(1200px 800px at 50% 118%,rgba(255,192,222,.90),rgba(255,192,222,0) 66%),
    linear-gradient(180deg,#fff6fb 0%,#ffeaf4 46%,#fde7f3 100%);
  animation:none;
}
body[data-page="portal"][data-theme="pink"] .sh-space-bg::before{
  background:
    radial-gradient(700px 460px at 20% 22%,rgba(255,255,255,.55),rgba(255,255,255,0) 70%),
    linear-gradient(180deg,rgba(255,255,255,0) 0%,rgba(255,240,248,.30) 55%,rgba(255,226,242,.55) 100%);
}
body[data-page="portal"][data-theme="pink"] .sh-star{background:#ffd9ec}

/* ---------------------------------------------------------------- 粉梦顶栏 */
body[data-page="portal"][data-theme="pink"] .topbar{
  background:rgba(255,255,255,.66);
  border-bottom:1px solid rgba(240,110,160,.16);
}
/* 粉梦页头是浅色玻璃底，反白标看不清 → 换成彩版图形标 */
body[data-page="portal"][data-theme="pink"] .sh-mark .mk-rev{display:none}
body[data-page="portal"][data-theme="pink"] .sh-mark .mk-color{display:block}
body[data-page="portal"][data-theme="pink"] .sh-nav a{color:rgba(158,66,108,.66)}
body[data-page="portal"][data-theme="pink"] .sh-nav a:hover{color:#c2406f;background:rgba(240,98,146,.10)}
body[data-page="portal"][data-theme="pink"] .sh-tlink{color:rgba(158,66,108,.64)}
body[data-page="portal"][data-theme="pink"] .sh-tlink:hover{color:#c2406f;background:rgba(240,98,146,.10)}

/* ---------------------------------------------------------------- 粉梦账号/同步 */
body[data-page="portal"][data-theme="pink"] .acct-btn{
  background:rgba(255,255,255,.60);border-color:var(--border);color:var(--text-2);
}
body[data-page="portal"][data-theme="pink"] .acct-btn:hover{
  background:rgba(240,98,146,.12);border-color:var(--primary);color:#c2406f;
}
body[data-page="portal"][data-theme="pink"] .acct-btn.primary{background:#f06292;border-color:#f06292}
body[data-page="portal"][data-theme="pink"] .acct-btn.primary:hover{background:#e0457b;border-color:#e0457b}
body[data-page="portal"][data-theme="pink"] .acct-ava{background:linear-gradient(135deg,#f8a5c2,#c58ae0)}
body[data-page="portal"][data-theme="pink"] .acct-user:hover,
body[data-page="portal"][data-theme="pink"] .acct-user[aria-expanded="true"]{
  background:rgba(255,255,255,.55);border-color:var(--border);
}
body[data-page="portal"][data-theme="pink"] .sync-chip{
  background:rgba(255,255,255,.60);border-color:var(--border);color:var(--muted);
}
body[data-page="portal"][data-theme="pink"] .sync-chip.sync-ok{color:#1e8a6c;background:rgba(47,165,131,.10);border-color:rgba(47,165,131,.30)}
body[data-page="portal"][data-theme="pink"] .sync-chip.sync-wait{color:#c2762a;background:rgba(240,170,90,.12);border-color:rgba(240,170,90,.30)}
body[data-page="portal"][data-theme="pink"] .sync-chip.sync-busy{color:#3d7bc4;background:rgba(110,170,240,.12);border-color:rgba(110,170,240,.30)}
body[data-page="portal"][data-theme="pink"] .sync-chip.sync-err{color:#cf4258;background:rgba(221,79,104,.10);border-color:rgba(221,79,104,.28)}
body[data-page="portal"][data-theme="pink"] .acct-modal,
body[data-page="portal"][data-theme="pink"] .xmodal{
  background:linear-gradient(165deg,#fff,#ffeef6);border-color:var(--border);
  box-shadow:0 30px 80px rgba(240,98,146,.22);
}
body[data-page="portal"][data-theme="pink"] .acct-modal input{
  background:rgba(255,255,255,.85);color:var(--ink);border-color:var(--border);
}
body[data-page="portal"][data-theme="pink"] .acct-veil,
body[data-page="portal"][data-theme="pink"] .xmodal-veil{background:rgba(255,226,242,.66)}
body[data-page="portal"][data-theme="pink"] .btn.primary{background:#f06292;border-color:#f06292}
body[data-page="portal"][data-theme="pink"] .btn.primary:hover{background:#e0457b;border-color:#e0457b}
body[data-page="portal"][data-theme="pink"] .btn.danger{background:#dd4f68;border-color:#dd4f68}
body[data-page="portal"][data-theme="pink"] .btn.danger:hover{background:#c24058;border-color:#c24058}

/* ---------------------------------------------------------------- 粉梦 Hero */
body[data-page="portal"][data-theme="pink"] .sh-eyebrow{color:rgba(186,104,146,.78)}
body[data-page="portal"][data-theme="pink"] .sh-hero h1{
  color:#a5365f;text-shadow:0 12px 46px rgba(240,98,146,.16);
}
body[data-page="portal"][data-theme="pink"] .sh-hero h1 em{
  color:var(--gold);text-shadow:0 0 36px rgba(232,84,141,.24);
}
body[data-page="portal"][data-theme="pink"] .sh-hero p b{color:#a5365f}
body[data-page="portal"][data-theme="pink"] .sh-stats b{color:#a5567c}

/* ---------------------------------------------------------------- 粉梦板块标题 */
body[data-page="portal"][data-theme="pink"] .sh-section-head h2{color:#a5365f}
body[data-page="portal"][data-theme="pink"] .sh-line{background:rgba(240,110,160,.18)}

/* ---------------------------------------------------------------- 粉梦学习工具 */
body[data-page="portal"][data-theme="pink"] .sh-dock{
  background:linear-gradient(155deg,rgba(255,255,255,.82) 0%,rgba(255,236,246,.62) 100%);
  border-color:rgba(240,110,160,.18);
  box-shadow:0 20px 50px rgba(240,98,146,.13),inset 0 1px 0 rgba(255,255,255,.70);
}
body[data-page="portal"][data-theme="pink"] .sh-dock::before{
  background:linear-gradient(90deg,rgba(232,84,141,0),rgba(232,84,141,.55),rgba(255,255,255,0));
}
body[data-page="portal"][data-theme="pink"] .sh-dock::after{
  background:radial-gradient(ellipse,rgba(244,127,190,.14),rgba(255,255,255,0) 70%);
}
body[data-page="portal"][data-theme="pink"] .sh-dock-head b{color:#a5365f}
body[data-page="portal"][data-theme="pink"] .sh-dock-note{color:rgba(150,58,100,.62)}
body[data-page="portal"][data-theme="pink"] .sh-dock-line{background:rgba(240,110,160,.16)}
body[data-page="portal"][data-theme="pink"] .sh-tool{
  border-color:rgba(240,110,160,.16);background:rgba(255,255,255,.58);
}
body[data-page="portal"][data-theme="pink"] .sh-tool:hover{background:rgba(255,255,255,.82)}
body[data-page="portal"][data-theme="pink"] .sh-tool-name{color:#a5365f}
body[data-page="portal"][data-theme="pink"] .sh-tool-desc{color:rgba(146,56,100,.76)}
body[data-page="portal"][data-theme="pink"] .sh-tool-meta{color:rgba(146,56,100,.62)}
body[data-page="portal"][data-theme="pink"] .sh-tool.vocab{
  --t1:#c99ae8;--t2:#a674e0;--tg:#8d54c9;--tc-line:rgba(166,116,224,.42);--t-shadow:rgba(166,116,224,.24);
}
body[data-page="portal"][data-theme="pink"] .sh-tool.wrong{
  --t1:#f9c78b;--t2:#f2a35e;--tg:#c9823e;--tc-line:rgba(242,163,94,.42);--t-shadow:rgba(242,163,94,.24);
}
body[data-page="portal"][data-theme="pink"] .sh-tool.comp{
  --t1:#f88ba7;--t2:#ef5b86;--tg:#d84a76;--tc-line:rgba(239,91,134,.42);--t-shadow:rgba(239,91,134,.24);
}
body[data-page="portal"][data-theme="pink"] .sh-tool.plan{
  --t1:#5eead4;--t2:#14b8a6;--tg:#0f766e;--tc-line:rgba(20,184,166,.42);--t-shadow:rgba(20,184,166,.24);
}

/* ---------------------------------------------------------------- 粉梦学科星球 */
body[data-page="portal"][data-theme="pink"] .sh-subject-no{color:rgba(158,66,108,.40)}
body[data-page="portal"][data-theme="pink"] .sh-p-body{
  box-shadow:
    inset -24px -18px 60px rgba(196,96,148,.28),
    inset 0 0 0 1px rgba(255,255,255,.38),
    0 0 60px var(--c-soft);
}
body[data-page="portal"][data-theme="pink"] .sh-p-body::after{
  background:radial-gradient(circle at 73% 75%,rgba(255,255,255,0) 24%,rgba(196,96,148,.20) 78%);
}
body[data-page="portal"][data-theme="pink"] .sh-subject.physics .sh-p-body{
  background:
    radial-gradient(circle at 31% 24%,rgba(255,255,255,.85),rgba(255,255,255,0) 34%),
    repeating-linear-gradient(102deg,rgba(255,255,255,.12) 0 8px,rgba(127,180,232,.10) 8px 20px),
    radial-gradient(circle at 36% 30%,#eef7ff 0%,#c3e2fb 22%,#93c6f2 46%,#d3e9fc 74%,#f2f9ff 100%);
}
body[data-page="portal"][data-theme="pink"] .sh-subject.physics .sh-p-ring{
  border-color:rgba(127,180,232,.50);
  box-shadow:0 0 18px rgba(150,195,240,.30),inset 0 0 12px rgba(150,195,240,.20);
}
body[data-page="portal"][data-theme="pink"] .sh-subject.physics .sh-p-ring-clip .sh-p-ring{
  border-color:rgba(170,205,245,.60);
}
body[data-page="portal"][data-theme="pink"] .sh-subject.math .sh-p-body{
  background:
    radial-gradient(circle at 32% 26%,rgba(255,255,255,.82),rgba(255,255,255,0) 34%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.16) 0 1px,rgba(255,255,255,0) 1px 26px),
    repeating-linear-gradient(90deg,rgba(255,255,255,.16) 0 1px,rgba(255,255,255,0) 1px 26px),
    radial-gradient(circle at 35% 30%,#f0fffa 0%,#c8f3e5 22%,#96e3cb 48%,#daf6ee 76%,#f4fffc 100%);
}
body[data-page="portal"][data-theme="pink"] .sh-subject.english .sh-p-body{
  background:
    radial-gradient(circle at 30% 24%,rgba(255,255,255,.82),rgba(255,255,255,0) 36%),
    radial-gradient(ellipse 64% 18% at 52% 36%,rgba(255,255,255,.22),rgba(255,255,255,0) 72%),
    radial-gradient(ellipse 70% 16% at 46% 64%,rgba(255,255,255,.16),rgba(255,255,255,0) 72%),
    radial-gradient(circle at 34% 30%,#fff3f9 0%,#ffd9ec 24%,#f7a8cd 50%,#ffe2f0 78%,#fff7fb 100%);
}

/* ---------------------------------------------------------------- 粉梦信息牌 */
body[data-page="portal"][data-theme="pink"] .sh-plate{
  background:linear-gradient(160deg,rgba(255,255,255,.86) 0%,rgba(255,238,247,.66) 100%);
  border-color:rgba(240,110,160,.18);
  box-shadow:0 14px 36px rgba(240,98,146,.12),inset 0 1px 0 rgba(255,255,255,.70);
}
body[data-page="portal"][data-theme="pink"] .sh-plate-edition{color:rgba(146,56,100,.58)}
body[data-page="portal"][data-theme="pink"] .sh-plate-name{color:#a5365f}
body[data-page="portal"][data-theme="pink"] .sh-plate-meta{color:rgba(146,56,100,.74)}
body[data-page="portal"][data-theme="pink"] .sh-bar{background:rgba(240,110,160,.15)}
body[data-page="portal"][data-theme="pink"] .sh-bar i{
  background:linear-gradient(90deg,var(--c),rgba(255,255,255,.80));
}
body[data-page="portal"][data-theme="pink"] .sh-pct{color:rgba(146,56,100,.70)}
body[data-page="portal"][data-theme="pink"] .sh-plate-foot{border-top-color:rgba(240,110,160,.16)}
body[data-page="portal"][data-theme="pink"] .sh-subject:hover .sh-plate{
  border-color:var(--c-line);
  box-shadow:0 22px 46px rgba(240,98,146,.18),0 0 30px var(--c-soft);
}

/* ---------------------------------------------------------------- 粉梦页脚/Toast */
body[data-page="portal"][data-theme="pink"] .sh-footer{
  border-top-color:rgba(240,110,160,.16);color:rgba(158,66,108,.55);
}
body[data-page="portal"][data-theme="pink"] .sh-footer-brand b{color:rgba(146,54,100,.82)}
body[data-page="portal"][data-theme="pink"] .sh-footer-links a:hover{color:#c2406f}
body[data-page="portal"][data-theme="pink"] .sh-footer-note{color:rgba(150,58,100,.55)}
body[data-page="portal"][data-theme="pink"] .sh-clear{color:rgba(150,58,100,.68)}
body[data-page="portal"][data-theme="pink"] .sh-toast{
  background:rgba(255,255,255,.95);border-color:var(--border);color:#a5365f;
  box-shadow:0 14px 40px rgba(240,98,146,.18);
}

/* ---------------------------------------------------------------- 主题切换按钮（双主题通用） */
body[data-page="portal"] .sh-theme-toggle{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 12px;border-radius:999px;cursor:pointer;white-space:nowrap;
  font:inherit;font-size:12.5px;font-weight:700;letter-spacing:.3px;
  color:var(--gold);background:var(--primary-l);border:1px solid var(--border-2);
  transition:background .22s,border-color .22s,color .22s,translate .22s;
}
body[data-page="portal"] .sh-theme-toggle:hover{translate:0 -1px;border-color:var(--gold)}
body[data-page="portal"] .sh-theme-toggle:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
body[data-page="portal"] .sh-theme-toggle svg{width:14px;height:14px;flex:none;fill:currentColor}
