/* ============================================================
   配色主题 · 蓝橙色系
   默认「蓝焰暮光」；页面右下角 🎨 可切换整套配色（选择会保存在本机）
   ============================================================ */
:root { /* 蓝焰暮光 · 深色（默认主题，变量直接写在这里） */
  --bg:#0a0e1a; --card:#121828; --card-soft:#161d31;
  --ink:#eef1f8; --muted:#93a0ba; --line:#232c45;
  --blue:#4c8dff; --blue-deep:#3b6fe0; --blue-soft:rgba(76,141,255,.16); --active-text:#7db1ff;
  --orange:#ff9f45; --orange-deep:#f0642b; --amber:#ffc061; --orange-soft:rgba(255,159,69,.15); --orange-deep-soft:rgba(240,100,43,.22);
  --red:#ff6f7d; --red-soft:rgba(255,111,125,.16); --green:#3dd6a8;
  --shadow:rgba(0,0,0,.45); --arrow:#4d5878; --chip-line:rgba(76,141,255,.45);
  --top-grad:linear-gradient(135deg,#0e2a6b,#3b6fe0);
  --hero-grad:linear-gradient(120deg,#123a8f 0%,#2e5fe0 50%,#e8651f 115%);
  --hero-scrim:linear-gradient(120deg,rgba(6,10,20,.05) 0%,rgba(6,10,20,.30) 100%);
  --tile-1:rgba(76,141,255,.18); --tile-2:rgba(255,159,69,.16); --tile-3:rgba(76,141,255,.24); --tile-4:rgba(255,192,97,.16); --tile-5:rgba(240,100,43,.2);
  --seg-sale:#6ba3ff; --seg-cal:#45d6bd; --seg-redeem:#ff8a4d;
  --seg-year:#9d80ff; --seg-sale-bg:#2a5fd8; --seg-cal-bg:#0e7a68; --seg-redeem-bg:#c0471a; --seg-year-bg:#5235ad;
  --cal-day-ink:#f4f7fc; --cal-today-ink:#a6c5ff; --cal-count-bg:rgba(76,141,255,.32); --cal-count-ink:#cfe0ff;
}
:root[data-theme="sky"] { /* 晴空蓝橙 · 浅色 */
  --bg:#f2f6fc; --card:#ffffff; --card-soft:#fafcff;
  --ink:#1b2437; --muted:#5f6f8a; --line:#e3e9f3;
  --blue:#2f6cfb; --blue-deep:#123fae; --blue-soft:#e8f0ff; --active-text:#1e4fd6;
  --orange:#f07f2e; --orange-deep:#d85618; --amber:#f5a623; --orange-soft:#fff1e3; --orange-deep-soft:#fdeae0;
  --red:#e0444f; --red-soft:#fde8ea; --green:#00a57a;
  --shadow:rgba(20,45,80,.08); --arrow:#c2ccda; --chip-line:#cfe0fa;
  --top-grad:linear-gradient(135deg,#123fae,#2f6cfb);
  --hero-grad:linear-gradient(125deg,#1e4fd6 0%,#2f6cfb 60%,#f07f2e 118%);
  --hero-scrim:linear-gradient(125deg,rgba(12,24,52,.04) 0%,rgba(12,24,52,.18) 100%);
  --tile-1:#eaf2ff; --tile-2:#fff1e3; --tile-3:#e6efff; --tile-4:#ffedd9; --tile-5:#fdeae0;
  --seg-sale:#2f6cfb; --seg-cal:#0fa48f; --seg-redeem:#d85618;
  --seg-year:#6c4fd8; --seg-sale-bg:#2456d8; --seg-cal-bg:#0b7f70; --seg-redeem-bg:#b54a10; --seg-year-bg:#5442b8;
  --cal-day-ink:#1b2437; --cal-today-ink:#2f6cfb; --cal-count-bg:#e8f0ff; --cal-count-ink:#2f6cfb;
}
:root[data-theme="ocean"] { /* 深海蓝橙 · 深色（参考截图） */
  --bg:#0f0f12; --card:#17181d; --card-soft:#1b1e26;
  --ink:#eef1f6; --muted:#98a2b3; --line:#272b36;
  --blue:#5b8cff; --blue-deep:#2456d8; --blue-soft:rgba(47,108,255,.16); --active-text:#7da2ff;
  --orange:#ff9a5c; --orange-deep:#ff7a3d; --amber:#ffb35c; --orange-soft:rgba(255,138,61,.16); --orange-deep-soft:rgba(216,86,24,.22);
  --red:#ff6b7a; --red-soft:rgba(255,107,122,.16); --green:#38d1a0;
  --shadow:rgba(0,0,0,.4); --arrow:#59627a; --chip-line:rgba(91,140,255,.4);
  --top-grad:linear-gradient(135deg,#101c3f,#2456d8);
  --hero-grad:linear-gradient(125deg,#0d1b45 0%,#1e4fd6 60%,#d85618 118%);
  --hero-scrim:linear-gradient(125deg,rgba(0,0,0,.06) 0%,rgba(0,0,0,.28) 100%);
  --tile-1:rgba(47,108,255,.16); --tile-2:rgba(255,138,61,.16); --tile-3:rgba(47,108,255,.22); --tile-4:rgba(255,154,92,.16); --tile-5:rgba(216,86,24,.2);
  --seg-sale:#4d8dff; --seg-cal:#3fd1b8; --seg-redeem:#ff7a3d;
  --seg-year:#9d80ff; --seg-sale-bg:#1f4fd8; --seg-cal-bg:#0c7a68; --seg-redeem-bg:#c0471a; --seg-year-bg:#4f32a6;
  --cal-day-ink:#f4f7fc; --cal-today-ink:#a5c2ff; --cal-count-bg:rgba(91,140,255,.30); --cal-count-ink:#cddbff;
}
:root[data-theme="royal"] { /* 藏蓝琥珀 · 浅色 */
  --bg:#f3f5f8; --card:#ffffff; --card-soft:#fbfcfe;
  --ink:#1a2233; --muted:#64748b; --line:#e2e8f0;
  --blue:#1e6ad2; --blue-deep:#0b3d91; --blue-soft:#e8f0fe; --active-text:#0b3d91;
  --orange:#e8862e; --orange-deep:#c05f14; --amber:#d98a1f; --orange-soft:#fdf1e3; --orange-deep-soft:#fbe7d6;
  --red:#d9485a; --red-soft:#fdecee; --green:#00a57a;
  --shadow:rgba(15,35,75,.08); --arrow:#c3ccd8; --chip-line:#c9dcf5;
  --top-grad:linear-gradient(135deg,#0b3d91,#1e6ad2);
  --hero-grad:linear-gradient(125deg,#0b3d91 0%,#1e6ad2 60%,#c05f14 118%);
  --hero-scrim:linear-gradient(125deg,rgba(9,20,44,.04) 0%,rgba(9,20,44,.20) 100%);
  --tile-1:#eaf2ff; --tile-2:#fdf1e3; --tile-3:#e3edff; --tile-4:#faecd9; --tile-5:#fbe7d6;
  --seg-sale:#1e6ad2; --seg-cal:#0d9488; --seg-redeem:#c05f14;
  --seg-year:#6d5bd0; --seg-sale-bg:#1e6ad2; --seg-cal-bg:#0b766c; --seg-redeem-bg:#a8500f; --seg-year-bg:#4f3db0;
  --cal-day-ink:#1a2233; --cal-today-ink:#1e6ad2; --cal-count-bg:#e8f0fe; --cal-count-ink:#1e6ad2;
}

* { box-sizing:border-box; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}
body { margin:0; background:var(--bg); color:var(--ink); font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; font-size:14px; line-height:1.55; }
button { font:inherit; }
.app-shell { width:100%; min-height:100vh; max-width:540px; margin:0 auto; background:var(--bg); box-shadow:0 0 38px var(--shadow); }
.top-bar { position:sticky; top:0; z-index:10; display:flex; flex-direction:column; align-items:center; gap:2px; padding:15px 20px 12px; color:#fff; background:var(--top-grad); }
.brand { font-size:17px; font-weight:700; letter-spacing:.04em; }.tagline { font-size:12px; opacity:.78; }
.user-menu { position:absolute; top:10px; right:14px; z-index:30; }
.user-menu.is-floating { position:fixed; top:12px; right:12px; backdrop-filter:blur(4px); }
.user-chip { display:flex; align-items:center; gap:6px; max-width:200px; padding:6px 11px; border-radius:999px; font-size:12px; cursor:pointer; }
/* 主站顶栏：所有主题下顶栏都是深色渐变，保持白字 */
.user-menu .user-chip { color:#fff; border:0; background:rgba(255,255,255,.14); }
.user-menu .user-chip:hover { background:rgba(255,255,255,.24); }
/* 独立日历页悬浮形态：压在页面内容上，跟随主题变量（浅色/深色主题均可读） */
.user-menu.is-floating .user-chip { color:var(--ink); border:1px solid var(--line); background:var(--card); box-shadow:0 2px 8px var(--shadow); }
.user-menu.is-floating .user-chip:hover { background:var(--card-soft); }
.user-menu.is-floating .user-chip-caret { color:var(--muted); opacity:1; }
.user-chip-id { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.user-chip-caret { font-size:10px; opacity:.8; }
.user-dropdown { position:absolute; right:0; top:calc(100% + 7px); min-width:160px; overflow:hidden; border:1px solid var(--line); border-radius:11px; background:var(--card); box-shadow:0 10px 26px var(--shadow); }
.user-dropdown-head { padding:10px 12px; color:var(--muted); font-size:12px; border-bottom:1px solid var(--line); white-space:nowrap; }
.user-dropdown-item { display:block; width:100%; padding:11px 12px; border:0; background:transparent; color:var(--ink); font-size:13px; text-align:left; cursor:pointer; }
.user-dropdown-item[hidden] { display:none; }
.user-dropdown-item:hover { color:var(--blue); background:var(--blue-soft); }
.user-dropdown-item:disabled { opacity:.6; cursor:default; }
.primary-nav,.sub-nav,.month-nav { display:flex; overflow-x:auto; scrollbar-width:none; background:var(--card); border-bottom:1px solid var(--line); }.primary-nav::-webkit-scrollbar,.sub-nav::-webkit-scrollbar,.month-nav::-webkit-scrollbar { display:none; }
.nav-item,.sub-item,.month-item { flex:0 0 auto; position:relative; border:0; background:transparent; color:var(--muted); cursor:pointer; white-space:nowrap; transition:color .18s ease; }
.nav-item::after,.month-item::after { content:''; position:absolute; left:50%; bottom:0; width:0; height:3px; border-radius:3px 3px 0 0; background:var(--blue); transform:translateX(-50%); transition:width .22s cubic-bezier(.22,.61,.36,1); }
.nav-item { padding:12px 14px 10px; font-size:13px; }.nav-item.is-active { color:var(--active-text); font-weight:700; }.nav-item.is-active::after { width:100%; animation:nav-underline-in .24s cubic-bezier(.22,.61,.36,1); }
.content { padding:16px; }.panel { display:none; }.panel.is-active { display:block; animation:panel-in .28s cubic-bezier(.22,.61,.36,1); will-change:opacity,transform; }
@keyframes nav-underline-in { from { opacity:0; transform:translateX(-50%) scaleX(.2); } to { opacity:1; transform:translateX(-50%) scaleX(1); } }
@keyframes panel-in { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:none; } }
.motion-item { animation:item-rise var(--motion-duration,.42s) cubic-bezier(.22,.61,.36,1) both; animation-delay:var(--motion-delay,0ms); will-change:opacity,transform; }
@keyframes item-rise { from { opacity:0; transform:translateY(var(--motion-distance,12px)) scale(.985); } to { opacity:1; transform:none; } }
#opportunityView.is-slide-next { animation:opportunity-next .26s cubic-bezier(.22,.61,.36,1) both; will-change:opacity,transform; }
#opportunityView.is-slide-prev { animation:opportunity-prev .26s cubic-bezier(.22,.61,.36,1) both; will-change:opacity,transform; }
@keyframes opportunity-next { from { opacity:0; transform:translateX(34px); } to { opacity:1; transform:none; } }
@keyframes opportunity-prev { from { opacity:0; transform:translateX(-34px); } to { opacity:1; transform:none; } }
.hero-card { position:relative; padding:20px; overflow:hidden; color:#fff; border-radius:14px; background:var(--hero-grad); box-shadow:0 8px 22px var(--shadow); }.hero-card::before { content:''; position:absolute; inset:0; background:var(--hero-scrim); }.hero-card::after { content:''; position:absolute; left:0; right:0; bottom:0; height:5px; background:linear-gradient(90deg,var(--orange),var(--amber)); }.hero-card > * { position:relative; z-index:1; }.eyebrow { margin:0 0 5px; font-size:15px; opacity:.88; }.hero-card h1 { margin:0; font-size:21px; letter-spacing:.01em; }.update-time { margin:6px 0 18px; font-size:11px; opacity:.74; }
.hero-grid { display:grid; grid-template-columns:repeat(3,1fr); }.metric { min-width:0; text-align:center; border-right:1px solid rgba(255,255,255,.22); }.metric:last-child { border-right:0; }.metric strong { display:block; overflow:hidden; font-size:18px; text-overflow:ellipsis; white-space:nowrap; }.metric span { font-size:11px; opacity:.78; }
.section { margin-top:20px; }.section-heading { display:flex; align-items:center; justify-content:space-between; margin:0 2px 9px; }.section-heading h2 { margin:0; font-size:15px; }.section-heading span { color:var(--muted); font-size:12px; }.text-button { padding:0; color:var(--blue); border:0; background:transparent; font-size:12px; cursor:pointer; }
.card { border:1px solid var(--line); border-radius:12px; background:var(--card); box-shadow:0 2px 6px var(--shadow); }.card.is-link { display:block; color:inherit; text-decoration:none; }.market-brief { padding:15px; }.index-row { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; padding:0 0 13px; margin:0 0 13px; border-bottom:1px solid var(--line); }.index-row div { min-width:0; padding:9px 10px; border:1px solid var(--line); border-radius:9px; background:var(--card-soft); }.index-row span { display:block; font-size:11px; color:var(--muted); }.index-row strong { display:block; margin-top:2px; font-size:13px; }.brief-body p { margin:0 0 10px; color:var(--ink); line-height:1.8; text-align:justify; }.brief-body p:last-child { margin-bottom:0; }.up { color:var(--red); }.down { color:var(--green); }
.event-list { overflow:hidden; }.event-row { display:flex; gap:10px; padding:13px 14px; border-bottom:1px solid var(--line); }.event-row:last-child { border-bottom:0; }.event-row.is-link { color:inherit; text-decoration:none; }.event-row.is-link:hover, .card.is-link:hover { background:var(--blue-soft); }.event-number { display:grid; flex:0 0 20px; height:20px; place-items:center; color:var(--blue); border-radius:50%; background:var(--blue-soft); font-size:11px; font-weight:700; }.event-copy { min-width:0; }.event-copy h3 { margin:0; font-size:13px; }.event-copy p { display:-webkit-box; margin:3px 0 0; overflow:hidden; color:var(--muted); font-size:12px; -webkit-box-orient:vertical; -webkit-line-clamp:2; }.event-tag { display:inline-block; margin-top:5px; color:var(--blue); font-size:11px; }.event-time { display:inline-block; margin-top:5px; margin-left:8px; color:var(--muted); font-size:11px; }
.sub-nav { position:relative; }.sub-nav::before { content:''; position:absolute; z-index:0; left:var(--sub-indicator-x,0px); bottom:4px; width:var(--sub-indicator-w,0px); height:29px; border-radius:999px; background:var(--blue-soft); transition:left .24s cubic-bezier(.22,.61,.36,1), width .24s cubic-bezier(.22,.61,.36,1), opacity .2s ease; }
.sub-item { z-index:1; }.sub-nav,.month-nav { margin:-16px -16px 16px; padding:0 11px; }.sub-item,.month-item { padding:11px 11px 9px; font-size:13px; }.sub-item.is-active,.month-item.is-active { color:var(--active-text); font-weight:700; }.month-item.is-active::after { width:100%; animation:nav-underline-in .24s cubic-bezier(.22,.61,.36,1); }
.view-heading { margin:0 0 10px; font-size:16px; }.notice { padding:11px 12px; margin:0 0 12px; border-radius:9px; color:var(--muted); background:var(--blue-soft); font-size:12px; }.info-card { padding:15px; margin-bottom:10px; }.info-card h3 { margin:0; font-size:15px; }.info-card p { margin:6px 0 0; color:var(--muted); font-size:13px; }.meta { display:flex; flex-wrap:wrap; gap:8px 14px; margin-top:10px; color:var(--muted); font-size:12px; }.badge { display:inline-block; padding:2px 7px; border-radius:999px; color:var(--orange-deep); background:var(--orange-deep-soft); font-size:11px; }
.ranking-gallery { display:grid; gap:12px; }.ranking-figure { margin:0; padding:12px; cursor:zoom-in; }.ranking-thumb { position:relative; display:grid; min-height:220px; overflow:hidden; place-items:center; border-radius:8px; background:var(--card-soft); }.ranking-thumb img { display:block; width:100%; opacity:0; transition:opacity .3s ease; }.ranking-thumb.is-loaded img { opacity:1; }.ranking-thumb.is-error::after { content:'图片加载失败，请稍后重试'; position:absolute; inset:0; display:grid; place-items:center; color:var(--muted); font-size:12px; }.ranking-loader { position:absolute; width:26px; height:26px; border:3px solid var(--line); border-top-color:var(--blue); border-radius:50%; animation:ranking-spin .9s linear infinite; }.ranking-thumb.is-loaded .ranking-loader, .ranking-thumb.is-error .ranking-loader { display:none; }
@keyframes ranking-spin { to { transform:rotate(360deg); } }
.md-body { margin-top:8px; color:var(--muted); font-size:13px; line-height:1.7; }.md-body p { margin:8px 0; }.md-body h2,.md-body h3,.md-body h4 { margin:14px 0 6px; color:var(--ink); }.md-body table { width:100%; border-collapse:collapse; margin:8px 0; font-size:12px; }.md-body th,.md-body td { border:1px solid var(--line); padding:5px 8px; text-align:left; }.md-body th { color:var(--ink); background:var(--blue-soft); font-weight:600; white-space:nowrap; }.md-body blockquote { margin:8px 0; padding:6px 10px; border-left:3px solid var(--blue); border-radius:0 8px 8px 0; color:var(--ink); background:var(--blue-soft); }.md-body ul,.md-body ol { margin:8px 0; padding-left:20px; }.md-body li { margin:3px 0; }.md-body code { padding:1px 5px; border-radius:5px; background:var(--card-soft); font-size:12px; }.md-body hr { border:none; border-top:1px dashed var(--line); margin:12px 0; }.md-body a { color:var(--blue); }
.product-card { padding:15px; margin-bottom:10px; }.product-top { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }.product-top h3 { margin:0; font-size:15px; }.product-rate { color:var(--orange-deep); font-size:18px; font-weight:700; white-space:nowrap; }.product-card p { margin:7px 0 0; color:var(--muted); font-size:12px; }
.empty { padding:34px 15px; color:var(--muted); text-align:center; }
/* ---------- 载体活动 ---------- */
.series-legend { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 12px; }
.series-chip { display:inline-flex; align-items:center; gap:6px; padding:5px 10px; border:1px solid var(--line); border-radius:999px; background:var(--card); color:var(--muted); font-size:12px; }
.series-dot { width:9px; height:9px; border-radius:50%; background:var(--series-color); }
.carrier-item { display:flex; align-items:stretch; width:100%; margin-bottom:10px; padding:0; overflow:hidden; text-align:left; border:1px solid var(--line); border-radius:12px; background:var(--card); cursor:pointer; box-shadow:0 2px 6px var(--shadow); transition:transform .12s ease; }
.carrier-item:active { transform:scale(.98); }
.series-bar { flex:0 0 5px; background:var(--series-color); }
.carrier-copy { flex:1; min-width:0; padding:11px 10px 11px 12px; }
.carrier-head { display:flex; align-items:center; gap:8px; margin-bottom:3px; }
.carrier-series-tag { color:var(--series-color); font-size:11px; font-style:normal; font-weight:700; }
.carrier-head b { color:var(--muted); font-size:11px; font-weight:500; }
.carrier-copy strong { display:block; font-size:14px; color:var(--ink); }
.carrier-intro { display:-webkit-box; margin-top:4px; overflow:hidden; color:var(--muted); font-size:12px; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.carrier-register { display:block; width:100%; margin-top:14px; padding:12px; text-align:center; border-radius:12px; background:var(--orange); color:#fff; font-size:14px; font-weight:700; text-decoration:none; box-shadow:0 4px 12px var(--shadow); }
.carrier-register:active { transform:scale(.98); }
.carrier-register.is-disabled { padding:11px; background:var(--card-soft); color:var(--muted); border:1px dashed var(--line); box-shadow:none; font-weight:500; }
.carrier-detail .carrier-back { display:inline-flex; align-items:center; gap:4px; padding:6px 12px 6px 8px; margin-bottom:12px; border:1px solid var(--line); border-radius:999px; background:var(--card); color:var(--active-text); font-size:12px; cursor:pointer; }
.carrier-detail .carrier-back:active { background:var(--bg); }
.carrier-series-name { display:inline-block; margin:0 0 6px; padding:3px 10px; border-radius:999px; background:var(--series-color); color:#fff; font-size:12px; font-weight:700; }
.carrier-meta { display:flex; flex-wrap:wrap; gap:6px 12px; margin:8px 0 0; color:var(--muted); font-size:12px; }
.carrier-meta span { padding:3px 9px; border-radius:999px; background:var(--card-soft); }
.carrier-intro-box { margin-top:10px; padding:12px; border-radius:10px; background:var(--card-soft); color:var(--ink); font-size:13px; line-height:1.7; white-space:pre-line; }
.carrier-poster-wrap { position:relative; display:grid; min-height:220px; margin-top:12px; overflow:hidden; place-items:center; border:1px solid var(--line); border-radius:12px; background:var(--card-soft); }
.carrier-poster { display:block; width:100%; opacity:0; transition:opacity .3s ease; }
.carrier-poster-wrap.is-loaded .carrier-poster { opacity:1; }
.carrier-poster-wrap.is-error::after { content:'图片加载失败，请稍后重试'; position:absolute; inset:0; display:grid; place-items:center; color:var(--muted); font-size:12px; }
.carrier-loader { position:absolute; width:26px; height:26px; border:3px solid var(--line); border-top-color:var(--blue); border-radius:50%; animation:ranking-spin .9s linear infinite; }
.carrier-poster-wrap.is-loaded .carrier-loader, .carrier-poster-wrap.is-error .carrier-loader { display:none; }
.carrier-poster.is-empty { display:grid; aspect-ratio:3/4; place-items:center; border:1px dashed var(--line); color:var(--muted); background:var(--card-soft); font-size:13px; }
.carrier-detail .notice { margin-top:14px; }
/* ---------- 产品日历 ---------- */
#calendar { overflow-anchor:none; }
.cal-seg { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; padding:2px 0 0; }
.cal-seg-item { position:relative; display:flex; min-height:76px; flex-direction:column; align-items:center; justify-content:center; gap:2px; padding:12px 8px 10px; overflow:hidden; border:1px solid var(--line); border-radius:12px; background:var(--card); cursor:pointer; box-shadow:0 2px 6px var(--shadow); transition:transform .12s ease, box-shadow .15s ease, background .15s ease, border-color .15s ease, color .15s ease; }
.cal-seg-item::before { content:''; position:absolute; inset:0 0 auto; height:3px; background:var(--c); }
.cal-seg-item strong { display:block; font-size:22px; line-height:1.2; color:var(--c); }
.cal-seg-item span { font-size:12px; color:var(--muted); }
.cal-seg-item:hover { box-shadow:0 6px 14px var(--shadow); }
.cal-seg-item:active { transform:scale(.96); }
.cal-seg-item.is-active { border-color:var(--c); background:var(--card); background:color-mix(in srgb, var(--c) 14%, var(--card)); box-shadow:inset 0 0 0 1px var(--c), 0 8px 18px var(--shadow); }
.cal-seg-item.is-active::before { background:var(--c); }
.cal-seg-item.is-active strong { color:var(--c); }
.cal-seg-item.is-active span { color:var(--ink); }
.cal-section { margin-top:16px; }
.cal-more-wrap { padding:10px 2px 2px; }
.cal-more { width:100%; padding:9px 0; border:1px dashed var(--line); border-radius:10px; background:var(--card-soft); color:var(--blue); font-size:12px; cursor:pointer; }
.cal-more:active { background:var(--bg); }
/* 开放日历搜索 */
.cal-search-bar { display:flex; align-items:center; gap:8px; margin:0 0 12px; }
.cal-search-wrap { position:relative; flex:1; min-width:0; }
.cal-search-icon { position:absolute; left:10px; top:50%; transform:translateY(-50%); font-size:12px; opacity:.75; pointer-events:none; }
.cal-search { width:100%; padding:7px 32px 7px 30px; border:1px solid var(--line); border-radius:999px; background:var(--card); color:var(--ink); font-size:12px; transition:border-color .15s ease; }
.cal-search:focus { outline:none; border-color:var(--blue); }
.cal-search::placeholder { color:var(--muted); }
.cal-search::-webkit-search-cancel-button { display:none; -webkit-appearance:none; }
.cal-search-clear { position:absolute; right:6px; top:50%; transform:translateY(-50%); display:grid; width:20px; height:20px; place-items:center; padding:0; border:0; border-radius:50%; background:var(--card-soft); color:var(--muted); font-size:10px; line-height:1; cursor:pointer; }
.cal-search-clear:active { background:var(--bg); }
.cal-search-hit { flex:0 0 auto; padding:4px 10px; border-radius:999px; background:var(--blue-soft); color:var(--active-text); font-size:11px; font-weight:600; white-space:nowrap; }
.cal-search-hit.is-empty { background:var(--orange-soft); color:var(--orange-deep); }
.cal-search-clear[hidden], .cal-search-hit[hidden] { display:none; }
.calendar-card { overflow:hidden; }
.cal-nav { display:flex; align-items:center; justify-content:space-between; padding:12px 14px 8px; }
.cal-month { font-size:15px; font-weight:700; }
.cal-arrow { width:30px; height:30px; border:1px solid var(--line); border-radius:8px; background:var(--card); color:var(--active-text); font-size:18px; line-height:1; cursor:pointer; }
.cal-arrow:active { background:var(--bg); }
.cal-weekdays { display:grid; grid-template-columns:repeat(7,1fr); padding:0 8px 6px; color:var(--muted); font-size:11px; text-align:center; }
.cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; padding:0 8px 12px; }
.cal-cell { position:relative; display:flex; min-height:48px; flex-direction:column; align-items:center; justify-content:center; border:0; border-radius:10px; background:transparent; cursor:pointer; }
.cal-cell.is-blank { cursor:default; }
.cal-day-num { color:var(--cal-day-ink); font-size:13px; line-height:1.1; }
.cal-cell.is-today .cal-day-num { color:var(--cal-today-ink); font-weight:700; }
.cal-cell.is-selected { background:var(--blue-deep); }
.cal-cell.is-selected .cal-day-num { color:#fff; }
.cal-count { min-width:16px; margin-top:3px; padding:0 4px; border-radius:999px; background:var(--cal-count-bg); color:var(--cal-count-ink); font-size:10px; font-style:normal; font-weight:700; line-height:14px; text-align:center; }
.cal-cell.is-selected .cal-count { background:rgba(255,255,255,.25); color:#fff; }
.cal-cell.is-today:not(.is-selected) { box-shadow:inset 0 0 0 1px var(--cal-today-ink); }
.cal-day-panel { padding:12px 14px 14px; border-top:1px solid var(--line); background:var(--card-soft); }
.cal-day-heading { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:10px; }
.cal-day-heading h3 { margin:0; font-size:14px; }
.cal-day-heading span { color:var(--muted); font-size:11px; }
.product-list { display:flex; flex-direction:column; gap:8px; }
.pi-item { overflow:hidden; border:1px solid var(--line); border-radius:12px; background:var(--card); box-shadow:0 2px 6px var(--shadow); }
.pi-main { display:flex; align-items:center; gap:10px; padding:12px; cursor:pointer; }
.pi-badge { flex:0 0 auto; padding:3px 8px; border-radius:999px; font-size:11px; font-weight:700; }
.badge-sale { color:var(--blue); background:var(--blue-soft); }
.badge-redeem { color:var(--orange-deep); background:var(--orange-deep-soft); }
.badge-open { color:var(--amber); background:var(--orange-soft); }
.pi-copy { flex:1; min-width:0; }
.pi-copy h4 { margin:0; overflow:hidden; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.pi-copy h4 em { margin-left:6px; color:var(--muted); font-size:11px; font-style:normal; font-weight:400; }
.pi-copy p { margin:3px 0 0; overflow:hidden; color:var(--muted); font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.pi-copy .pi-window { overflow:visible; white-space:normal; }
.pi-count { display:inline-block; margin-left:6px; padding:1px 6px; border-radius:999px; color:var(--blue); background:var(--blue-soft); font-size:10px; font-weight:700; vertical-align:1px; }
.pi-flag { display:inline-block; margin-left:6px; padding:1px 6px; border-radius:999px; font-size:10px; font-weight:700; vertical-align:1px; }
.pi-flag.is-closed { color:var(--red); background:var(--red-soft); }
.pi-flag.is-limited { color:var(--amber); background:var(--orange-soft); }
.pi-flag.is-focus { color:var(--amber); background:var(--orange-soft); }
.pi-arrow { flex:0 0 auto; color:var(--arrow); font-size:18px; transition:transform .15s ease; }
.cal-page-head { display:flex; align-items:center; gap:12px; padding:2px 2px 14px; }
.cal-back { flex:0 0 34px; width:34px; height:34px; border:1px solid var(--line); border-radius:50%; background:var(--card); color:var(--active-text); font-size:20px; line-height:1; cursor:pointer; box-shadow:0 2px 6px var(--shadow); }
.cal-back:active { background:var(--bg); }
.cal-page-title { min-width:0; }
.cal-page-title h3 { margin:0; font-size:17px; }
.cal-page-title p { margin:3px 0 0; color:var(--muted); font-size:11px; }
.member-item { display:block; padding:12px; text-decoration:none; color:inherit; }
.member-item .pi-main { padding:0; }
.member-main { cursor:default; }
.pi-links { display:flex; flex-wrap:wrap; gap:8px; padding-top:10px; margin-top:10px; border-top:1px dashed var(--line); }
.pi-link-chip { display:inline-flex; align-items:center; gap:3px; padding:6px 12px; border:1px solid var(--chip-line); border-radius:999px; background:var(--blue-soft); color:var(--blue); font-size:12px; font-weight:600; text-decoration:none; }
.pi-link-chip:active { transform:scale(.97); }
.member-item .pi-nolink { display:block; padding-top:10px; margin-top:10px; border-top:1px dashed var(--line); color:var(--arrow); font-size:11px; }
/* ---------- 独立产品日历页（calendar.html） ---------- */
.cal-hero { position:relative; padding:20px 20px 16px; overflow:hidden; border:1px solid var(--line); border-radius:14px; background:var(--card); box-shadow:0 4px 14px var(--shadow); }
.cal-hero::after { content:''; position:absolute; left:20px; right:20px; bottom:0; height:3px; border-radius:3px 3px 0 0; background:linear-gradient(90deg,var(--blue),var(--orange)); }
.cal-hero h1 { margin:0; font-size:20px; letter-spacing:.02em; color:var(--ink); }
.cal-hero .update-time { margin:6px 0 0; font-size:11px; color:var(--muted); }
.cal-footer { display:block; }
.cal-footer-band { display:block; height:3px; background:linear-gradient(90deg,var(--blue),var(--orange)); }

/* The standalone view carries its own dashboard composition while sharing data and controls with the main app. */
.app-shell.is-standalone { min-height:100vh; }
.is-standalone .content { padding:0 16px 28px; }
.is-standalone .cal-hero { min-height:202px; padding:47px 8px 20px; overflow:visible; border:0; border-radius:0; background:transparent; box-shadow:none; }
.is-standalone .cal-hero::after { display:none; }
.is-standalone .cal-hero-copy { position:relative; z-index:1; max-width:62%; }
.is-standalone .cal-hero h1 { color:var(--ink); font-size:30px; font-weight:750; line-height:1.25; letter-spacing:.02em; }
.is-standalone .cal-hero .update-time { margin-top:14px; color:var(--muted); font-size:14px; line-height:1.45; }
.cal-hero-illustration { position:absolute; top:34px; right:12px; width:132px; height:116px; transform:rotate(8deg); }
.cal-illus-sheet { position:absolute; right:6px; bottom:4px; display:grid; grid-template-columns:repeat(3,16px); gap:5px; width:110px; height:95px; padding:37px 14px 12px; border:1px solid rgba(255,255,255,.5); border-radius:10px; background:linear-gradient(160deg,#fff 5%,#dce7ff 100%); box-shadow:8px 10px 14px rgba(4,14,43,.24); }
.cal-illus-sheet::before { content:''; position:absolute; top:0; right:0; left:0; height:29px; border-radius:9px 9px 0 0; background:linear-gradient(90deg,#1749c3,#397bff); }
.cal-illus-sheet i { display:block; width:16px; height:15px; border-radius:2px; background:#cbd9fb; }
.cal-illus-sheet b { position:absolute; right:-3px; bottom:7px; display:grid; width:31px; height:31px; place-items:center; border:2px solid #fff; border-radius:50%; background:#3474ee; color:#fff; font-size:20px; line-height:1; transform:rotate(-8deg); }
.cal-illus-ring { position:absolute; z-index:2; top:2px; width:14px; height:27px; border:4px solid #183d9e; border-bottom:0; border-radius:9px 9px 0 0; background:transparent; }
.cal-illus-ring-left { left:43px; }.cal-illus-ring-right { right:30px; }
.is-standalone .cal-seg { gap:14px; padding:0; }
.is-standalone .cal-seg-item { min-height:0; border-radius:12px; box-shadow:0 8px 18px var(--shadow); transition:transform .16s ease, box-shadow .18s ease, background .18s ease, border-color .18s ease, color .18s ease, filter .18s ease, opacity .18s ease; }
.is-standalone .cal-seg-item::before { display:none; }
.is-standalone .cal-seg-sale, .is-standalone .cal-seg-redeem { grid-column:span 1; min-height:128px; flex-direction:row; align-items:center; justify-content:flex-start; gap:14px; padding:18px; border:0; color:#fff; }
.is-standalone .cal-seg-sale { background:linear-gradient(135deg,var(--blue-deep),var(--blue)); }
.is-standalone .cal-seg-redeem { background:linear-gradient(135deg,var(--orange-deep),var(--orange)); }
.is-standalone .cal-seg-sale, .is-standalone .cal-seg-redeem { min-height:104px; gap:12px; padding:14px 16px; }
.is-standalone .cal-seg-sale:not(.is-active), .is-standalone .cal-seg-redeem:not(.is-active) { filter:saturate(.72); opacity:.9; box-shadow:0 7px 16px var(--shadow); }
.is-standalone .cal-seg-sale.is-active, .is-standalone .cal-seg-redeem.is-active { filter:none; opacity:1; box-shadow:inset 0 0 0 2px rgba(255,255,255,.72), 0 14px 30px var(--shadow); }
.is-standalone .cal-seg-sale .cal-seg-icon, .is-standalone .cal-seg-redeem .cal-seg-icon { width:46px; height:46px; border-radius:14px; }
.is-standalone .cal-seg-sale .cal-seg-icon svg, .is-standalone .cal-seg-redeem .cal-seg-icon svg { width:24px; height:24px; }
.is-standalone .cal-seg-sale .cal-seg-content strong, .is-standalone .cal-seg-redeem .cal-seg-content strong { font-size:28px; }
.is-standalone .cal-seg-sale.is-active .cal-seg-content strong, .is-standalone .cal-seg-redeem.is-active .cal-seg-content strong { color:#fff; }
.is-standalone .cal-seg-sale .cal-seg-content b, .is-standalone .cal-seg-redeem .cal-seg-content b { font-size:15px; }
.is-standalone .cal-seg-sale.is-active .cal-seg-content b, .is-standalone .cal-seg-redeem.is-active .cal-seg-content b { color:#fff; text-shadow:0 1px 8px rgba(0,0,0,.24); }
.is-standalone .cal-seg-sale.is-active .cal-seg-icon, .is-standalone .cal-seg-redeem.is-active .cal-seg-icon { background:rgba(255,255,255,.24); box-shadow:inset 0 0 0 1px rgba(255,255,255,.42); }
:root[data-theme="sky"] .is-standalone .cal-seg-sale.is-active .cal-seg-icon { color:var(--blue-deep); }
:root[data-theme="sky"] .is-standalone .cal-seg-redeem.is-active .cal-seg-icon { color:var(--orange-deep); }
:root[data-theme="sky"] .is-standalone .cal-seg-sale.is-active .cal-seg-icon, :root[data-theme="sky"] .is-standalone .cal-seg-redeem.is-active .cal-seg-icon { background:rgba(255,255,255,.48); }
.is-standalone .cal-seg-sale .cal-seg-content em, .is-standalone .cal-seg-redeem .cal-seg-content em { margin-top:4px; font-size:11px; }
.is-standalone .cal-seg-calendar, .is-standalone .cal-seg-year { min-height:104px; flex-direction:row; align-items:center; justify-content:flex-start; gap:13px; padding:13px 15px; background:var(--card); }
.is-standalone .cal-seg-calendar.is-active, .is-standalone .cal-seg-year.is-active { border-color:var(--c); background:var(--card); background:color-mix(in srgb, var(--c) 13%, var(--card)); box-shadow:inset 0 0 0 1px var(--c), 0 12px 26px var(--shadow); }
.is-standalone .cal-seg-calendar.is-active .cal-seg-content em, .is-standalone .cal-seg-year.is-active .cal-seg-content em { color:var(--muted); }
.cal-seg-item .cal-seg-icon { display:grid; flex:0 0 auto; width:58px; height:58px; place-items:center; border-radius:18px; background:rgba(255,255,255,.15); color:#fff; }
.cal-seg-icon svg { display:block; width:30px; height:30px; }
.cal-seg-calendar .cal-seg-icon, .cal-seg-year .cal-seg-icon { width:52px; height:52px; border-radius:15px; }
.cal-seg-calendar .cal-seg-icon { background:rgba(50,206,198,.18); background:color-mix(in srgb, var(--c) 16%, transparent); color:#47d8ca; color:var(--c); }.cal-seg-year .cal-seg-icon { background:rgba(131,95,255,.22); background:color-mix(in srgb, var(--c) 20%, transparent); color:#9d80ff; color:var(--c); }
.cal-seg-calendar .cal-seg-icon svg, .cal-seg-year .cal-seg-icon svg { width:28px; height:28px; }
.cal-seg-content { min-width:0; text-align:left; }.cal-seg-content strong { display:block; color:inherit; font-size:36px; line-height:1; }.cal-seg-content b { display:block; margin-top:4px; color:inherit; font-size:17px; line-height:1.25; }.cal-seg-content em { display:block; margin-top:6px; color:var(--muted); font-size:12px; font-style:normal; line-height:1.3; }.cal-seg-sale .cal-seg-content, .cal-seg-redeem .cal-seg-content { color:#fff; }.cal-seg-sale .cal-seg-content em, .cal-seg-redeem .cal-seg-content em { color:rgba(255,255,255,.7); }
.cal-seg-calendar .cal-seg-content b, .cal-seg-year .cal-seg-content b { font-size:15px; white-space:nowrap; }.cal-seg-calendar .cal-seg-content em, .cal-seg-year .cal-seg-content em { margin-top:4px; font-size:11px; }
.cal-seg-arrow { display:none; margin-left:auto; color:var(--arrow); font-size:28px; line-height:1; }.cal-seg-calendar .cal-seg-arrow, .cal-seg-year .cal-seg-arrow { display:block; }.is-standalone .cal-seg-calendar, .is-standalone .cal-seg-year { position:relative; }.is-standalone .cal-seg-calendar .cal-seg-arrow, .is-standalone .cal-seg-year .cal-seg-arrow { position:absolute; right:14px; }.is-standalone .cal-seg-calendar.is-active .cal-seg-arrow, .is-standalone .cal-seg-year.is-active .cal-seg-arrow { color:var(--c); }
.is-standalone .cal-section { margin-top:42px; }.is-standalone .section-heading { margin:0 0 15px; }.is-standalone .section-heading h2 { font-size:22px; }.is-standalone .section-heading span { font-size:13px; }.is-standalone .product-list { gap:13px; }
.is-standalone .pi-item { border-radius:13px; box-shadow:0 5px 16px var(--shadow); }.is-standalone .pi-main { gap:14px; padding:17px 16px; }.is-standalone .pi-badge { min-width:58px; padding:8px 7px; text-align:center; font-size:16px; }.is-standalone .pi-copy h4 { font-size:17px; }.is-standalone .pi-copy h4 em { font-size:13px; }.is-standalone .pi-copy p { margin-top:5px; font-size:13px; }.is-standalone .pi-count { padding:3px 8px; font-size:12px; }.is-standalone .pi-arrow { font-size:29px; }
.is-standalone .cal-more-wrap { padding:16px 0 0; }.is-standalone .cal-more { padding:13px 0; border-style:solid; border-radius:12px; background:var(--card); font-size:15px; }.is-standalone .cal-footer { margin:0 -16px; }.is-standalone .site-footer { padding-top:30px; padding-bottom:calc(34px + env(safe-area-inset-bottom,0px)); font-size:13px; }
.is-standalone .cal-search-bar { gap:10px; margin-bottom:14px; }
.is-standalone .cal-search-wrap { border-radius:999px; box-shadow:0 6px 16px var(--shadow); }
.is-standalone .cal-search-icon { left:15px; font-size:15px; opacity:1; }
.is-standalone .cal-search { padding:12px 44px 12px 40px; border:1.5px solid var(--blue); border-radius:999px; background:var(--card); font-size:14px; box-shadow:0 0 0 4px var(--blue-soft); transition:border-color .15s ease, box-shadow .15s ease, background .15s ease; }
.is-standalone .cal-search:focus { border-color:var(--blue); box-shadow:0 0 0 4px var(--blue-soft), 0 6px 16px var(--shadow); }
.is-standalone .cal-search-clear { right:10px; width:24px; height:24px; font-size:12px; }
.is-standalone .cal-search-hit { padding:6px 12px; font-size:12px; }
.calendar-page { position:relative; }
.calendar-page .theme-widget { position:absolute; right:24px; bottom:24px; }
/* ---------- 全年开放查询（产品图册：策略子类 / 管理人） ---------- */
.catalog-head { display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin:2px 2px 12px; }
.catalog-head h2 { margin:0; font-size:16px; }
.catalog-head p { margin:0; color:var(--muted); font-size:11px; }
.catalog-mode-bar { display:flex; gap:4px; margin:0 0 14px; padding:4px; border:1px solid var(--line); border-radius:13px; background:var(--card-soft); }
.catalog-mode { flex:1; display:flex; min-height:48px; flex-direction:column; align-items:center; justify-content:center; gap:1px; padding:7px 8px; border:0; border-radius:10px; background:transparent; color:var(--muted); cursor:pointer; transition:background .15s ease, color .15s ease; }
.catalog-mode strong { font-size:12.5px; font-weight:600; line-height:1.35; text-align:center; }
.catalog-mode span { font-size:10px; opacity:.85; }
.catalog-mode.is-active { background:var(--blue); color:#fff; box-shadow:0 3px 10px var(--shadow); }
.catalog-mode.is-active span { opacity:.9; }
.catalog-mode:not(.is-active):active { background:var(--blue-soft); }
.catalog-body { min-height:140px; }
.catalog-back-row { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; padding:7px 10px; border-radius:10px; background:var(--card-soft); color:var(--muted); font-size:11px; }
.catalog-back { flex:0 0 auto; display:inline-flex; align-items:center; gap:3px; padding:4px 10px; border:1px solid var(--line); border-radius:999px; background:var(--card); color:var(--active-text); font-size:12px; cursor:pointer; }
.catalog-back:active { background:var(--bg); }
.catalog-item { display:flex; align-items:center; gap:10px; width:100%; padding:13px 14px; text-align:left; border:1px solid var(--line); border-radius:12px; background:var(--card); box-shadow:0 2px 6px var(--shadow); cursor:pointer; }
.catalog-item:active { transform:scale(.98); }
.catalog-item-main { flex:1; min-width:0; color:var(--ink); font-size:13px; }
.catalog-item-main em { display:block; margin-top:2px; color:var(--muted); font-size:11px; font-style:normal; }
.catalog-subline { margin:0 0 12px; color:var(--muted); font-size:12px; }
.catalog-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
.catalog-image-card { margin:0; overflow:hidden; border:1px solid var(--line); border-radius:12px; background:var(--card); box-shadow:0 2px 6px var(--shadow); }
.catalog-image-card.is-single { margin-bottom:20px; }
.catalog-img-wrap { position:relative; aspect-ratio:8/5; overflow:hidden; background:var(--card-soft); }
.catalog-image-card.is-single .catalog-img-wrap { aspect-ratio:4/3; }
.catalog-img-wrap::before { content:''; position:absolute; inset:0; background:linear-gradient(100deg, transparent 30%, var(--blue-soft) 50%, transparent 70%) 0 0/200% 100%; animation:shimmer 1.3s linear infinite; }
.catalog-img-wrap::after { content:''; position:absolute; left:50%; top:50%; width:22px; height:22px; transform:translate(-50%,-50%); border:2px solid var(--line); border-top-color:var(--blue); border-radius:50%; animation:spin .8s linear infinite; }
.catalog-img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; cursor:zoom-in; opacity:0; transition:opacity .25s ease; }
.catalog-image-card.is-single .catalog-img { object-fit:contain; }
.catalog-image-card.is-loaded .catalog-img { opacity:1; }
.catalog-image-card.is-loaded .catalog-img-wrap::before, .catalog-image-card.is-loaded .catalog-img-wrap::after,
.catalog-image-card.is-error .catalog-img-wrap::before, .catalog-image-card.is-error .catalog-img-wrap::after { display:none; }
.catalog-image-card.is-error .catalog-img-wrap::before { display:grid; content:'图片加载失败'; place-items:center; color:var(--muted); font-size:12px; background:var(--card-soft); animation:none; }
.catalog-image-card.is-missing .catalog-img-box { display:grid; aspect-ratio:8/5; place-items:center; border-bottom:1px dashed var(--line); background:var(--card-soft); color:var(--muted); font-size:12px; }
.catalog-image-card.is-single.is-missing .catalog-img-box { aspect-ratio:4/3; }
@keyframes shimmer { from { background-position:200% 0; } to { background-position:-200% 0; } }
@keyframes spin { to { transform:translate(-50%,-50%) rotate(360deg); } }
.catalog-image-card figcaption { display:flex; align-items:center; justify-content:space-between; gap:6px; padding:8px 10px; border-top:1px solid var(--line); color:var(--ink); font-size:12px; }
.catalog-image-card figcaption span { color:var(--muted); font-size:10px; }
/* ---------- 图片放大灯箱 ---------- */
body.has-lightbox { overflow:hidden; }
.lightbox { position:fixed; inset:0; z-index:999; display:flex; align-items:center; justify-content:center; padding:24px 16px 20px; background:rgba(4,7,15,.93); }
.lightbox[hidden] { display:none; }
.lightbox-close { position:absolute; top:14px; right:16px; z-index:2; display:grid; width:38px; height:38px; place-items:center; border:1px solid rgba(255,255,255,.28); border-radius:50%; background:rgba(255,255,255,.08); color:#fff; font-size:22px; line-height:1; cursor:pointer; }
.lightbox-nav { position:absolute; top:50%; z-index:2; display:grid; width:40px; height:40px; place-items:center; border:0; border-radius:50%; background:rgba(255,255,255,.14); color:#fff; font-size:24px; line-height:1; cursor:pointer; transform:translateY(-50%); }.lightbox-nav.is-prev { left:12px; }.lightbox-nav.is-next { right:12px; }
.lightbox-figure { position:relative; display:grid; max-width:94vw; max-height:84vh; margin:0; place-items:center; }.lightbox-img { max-width:94vw; max-height:84vh; border-radius:8px; box-shadow:0 18px 50px rgba(0,0,0,.6); opacity:0; transition:opacity .25s ease; }.lightbox-figure.is-loaded .lightbox-img { opacity:1; }.lightbox-figure.is-error::after { content:'图片加载失败，请稍后重试'; color:#bbb; font-size:13px; }
.lightbox-loader { position:absolute; width:26px; height:26px; border:3px solid rgba(255,255,255,.25); border-top-color:#fff; border-radius:50%; animation:ranking-spin .9s linear infinite; }.lightbox-figure.is-loaded .lightbox-loader, .lightbox-figure.is-error .lightbox-loader { display:none; }
.lightbox-caption { max-width:100%; margin:10px 0 0; color:#fff; font-size:13px; text-align:center; }.lightbox-count { position:absolute; right:0; bottom:12px; left:0; margin:0; color:#fff; font-size:12px; text-align:center; }
.lightbox-close:hover, .lightbox-nav:hover { background:rgba(255,255,255,.28); }
/* ---------- 配色切换器 ---------- */
.theme-widget { position:fixed; right:14px; bottom:18px; z-index:60; }
.theme-fab { display:grid; width:46px; height:46px; place-items:center; border:0; border-radius:50%; background:var(--top-grad); color:#fff; font-size:20px; cursor:pointer; box-shadow:0 6px 16px var(--shadow); }
.theme-sheet { position:absolute; right:0; bottom:56px; width:248px; padding:13px; border:1px solid var(--line); border-radius:14px; background:var(--card); box-shadow:0 14px 34px var(--shadow); }
.theme-sheet[hidden] { display:none; }
.theme-sheet-head { display:flex; align-items:center; justify-content:space-between; margin:0 0 10px; font-size:13px; font-weight:700; }
.theme-close { padding:0 4px; border:0; background:transparent; color:var(--muted); font-size:18px; line-height:1; cursor:pointer; }
.theme-options { display:flex; flex-direction:column; gap:7px; }
.theme-option { display:flex; align-items:center; gap:10px; width:100%; padding:8px 9px; text-align:left; border:1px solid var(--line); border-radius:10px; background:var(--bg); color:var(--ink); cursor:pointer; }
.theme-option.is-current { border-color:var(--blue); background:var(--blue-soft); }
.theme-swatches { display:flex; flex:0 0 auto; gap:4px; }
.swatch { width:15px; height:15px; border-radius:50%; border:1px solid rgba(0,0,0,.15); }
.theme-copy { min-width:0; }.theme-copy b { display:block; font-size:12px; }.theme-copy span { display:block; margin-top:1px; color:var(--muted); font-size:10px; }
.site-footer { display:flex; align-items:center; justify-content:center; gap:12px; padding:24px 16px calc(28px + env(safe-area-inset-bottom,0px)); color:var(--muted); font-size:12px; letter-spacing:.12em; text-align:center; white-space:nowrap; }
.site-footer::before,.site-footer::after { content:''; flex:0 0 auto; width:34px; height:1px; }
.site-footer::before { background:linear-gradient(90deg,transparent,var(--line)); }
.site-footer::after { background:linear-gradient(90deg,var(--line),transparent); }
.footer-name { color:var(--ink); font-weight:600; letter-spacing:.14em; }
.calendar-page .footer-name.cal-credit { color:var(--muted); font-weight:400; letter-spacing:.08em; opacity:.68; }
/* ---------- 重点商机（股东减持 / 分红 / 解禁） ---------- */
.opp-tools { display:flex; flex-direction:column; gap:8px; margin-bottom:12px; }
.opp-tool-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.opp-filter-group { display:flex; align-items:center; gap:7px; min-width:0; }
.opp-filter-label { display:inline-flex; flex:0 0 auto; align-items:center; gap:4px; font-size:11px; letter-spacing:.03em; }
.opp-filter-label::before { content:''; width:6px; height:6px; border-radius:50%; background:currentColor; }
.opp-group-seg .opp-filter-label { color:var(--active-text); }
.opp-group-range .opp-filter-label { color:var(--orange-deep); }
.opp-group-sort .opp-filter-label { color:var(--muted); }
/* 类型：分段控件，选中为实心蓝 */
.opp-seg { display:flex; gap:2px; padding:3px; overflow-x:auto; border:1px solid var(--line); border-radius:999px; background:var(--card-soft); scrollbar-width:none; }.opp-seg::-webkit-scrollbar { display:none; }
.opp-seg-item { flex:0 0 auto; padding:4px 12px; white-space:nowrap; border:0; border-radius:999px; background:transparent; color:var(--muted); font-size:12px; cursor:pointer; transition:background .15s ease, color .15s ease; }
.opp-seg-item.is-active { background:var(--blue); color:#fff; font-weight:600; box-shadow:0 2px 6px var(--shadow); }
.opp-seg-static { flex:0 0 auto; padding:5px 12px; white-space:nowrap; border-radius:999px; background:var(--blue-soft); color:var(--active-text); font-size:12px; font-weight:600; }
/* 时间：描边胶囊，选中为橙色（与类型区分） */
.opp-range { display:flex; gap:6px; }
.opp-range-item { padding:5px 11px; white-space:nowrap; border:1px solid var(--line); border-radius:999px; background:var(--card); color:var(--muted); font-size:12px; cursor:pointer; transition:border-color .15s ease, background .15s ease, color .15s ease; }
.opp-range-item.is-active { border-color:var(--orange); background:var(--orange-soft); color:var(--orange-deep); font-weight:600; }
/* 排序：文字按钮 + 箭头，下划线标识当前排序 */
.opp-sort { display:flex; align-items:center; gap:2px; }
.opp-sort-item { display:inline-flex; align-items:center; gap:2px; padding:5px 9px; white-space:nowrap; border:0; border-radius:8px; background:transparent; color:var(--muted); font-size:12px; cursor:pointer; transition:color .15s ease, background .15s ease; }
.opp-sort-item:active { background:var(--blue-soft); }
.opp-sort-item.is-active { color:var(--active-text); font-weight:700; text-decoration:underline; text-underline-offset:3px; }
.opp-sort-arrow { font-size:10px; font-style:normal; }
.opp-search { flex:1 1 140px; min-width:0; padding:6px 12px; border:1px solid var(--line); border-radius:999px; background:var(--card); color:var(--ink); font-size:12px; }
.opp-search::placeholder { color:var(--muted); }
.opp-head { display:flex; justify-content:space-between; align-items:center; margin:0 2px 8px; color:var(--muted); font-size:12px; }
.opp-row { margin-bottom:10px; padding:12px 14px; border:1px solid var(--line); border-radius:12px; background:var(--card); box-shadow:0 2px 6px var(--shadow); cursor:pointer; }
.opp-row.is-open { border-color:var(--blue); }
.opp-row-head { display:flex; align-items:center; gap:8px; }
.opp-company { flex:1; min-width:0; font-size:14px; }
.opp-score { flex:0 0 auto; padding:1px 8px; border-radius:999px; background:var(--blue-soft); color:var(--active-text); font-size:12px; font-weight:700; }
.opp-arrow { color:var(--muted); font-size:12px; }
.opp-meta { display:flex; flex-wrap:wrap; gap:6px 10px; margin-top:6px; color:var(--muted); font-size:12px; }
.opp-amount { margin-top:6px; color:var(--orange-deep); font-size:15px; font-weight:700; }
.opp-est { padding:0 6px; border-radius:999px; background:var(--orange-soft); color:var(--amber); font-size:11px; }
.opp-countdown { color:var(--orange-deep); }
.risk-chip { display:inline-block; padding:1px 8px; border-radius:999px; color:#fff; font-size:11px; }
.risk-red { background:#d9485a; }.risk-yellow { background:#d99a1f; }.risk-green { background:#00a57a; }
.risk-unknown { border:1px dashed var(--line); background:var(--card-soft); color:var(--muted); }
.opp-detail { margin-top:10px; padding-top:10px; border-top:1px dashed var(--line); }
.opp-holders { margin:0; padding:0; list-style:none; }
.opp-holders li { display:flex; flex-wrap:wrap; gap:4px 12px; padding:7px 0; border-bottom:1px solid var(--line); color:var(--muted); font-size:12px; }
.opp-holders li:last-child { border-bottom:0; }
.opp-holders b { color:var(--ink); font-size:13px; }
.opp-holders em { color:var(--orange-deep); font-style:normal; font-weight:600; }
.opp-hint { margin:8px 0 0; padding:8px 10px; border-left:3px solid var(--blue); border-radius:0 8px 8px 0; background:var(--blue-soft); color:var(--ink); font-size:12px; }
.opp-note { margin:6px 0 0; color:var(--muted); font-size:11px; }
.opp-coverage { margin:14px 2px 8px; color:var(--muted); font-size:11px; }
/* 近日打新 */
.opp-daxin { border-left:3px solid var(--orange); }
.opp-daxin-market { flex:0 0 auto; padding:2px 8px; border-radius:999px; color:var(--orange-deep); background:var(--orange-deep-soft); font-size:11px; font-weight:600; }
.opp-tbd { color:var(--muted); font-style:normal; }
.opp-ipo-row { display:flex; gap:10px; padding:7px 0; border-bottom:1px dashed var(--line); color:var(--muted); font-size:12px; }
.opp-ipo-row:last-child { border-bottom:0; }
.opp-ipo-row span { flex:0 0 60px; }
.opp-ipo-row b { color:var(--ink); font-weight:600; }
@media (min-width:541px) {
  body { padding:20px 0; }
  .app-shell { min-height:calc(100vh - 40px); border-radius:16px; overflow:hidden; }
  .app-shell.is-standalone { border:1px solid var(--line); box-shadow:0 24px 60px var(--shadow); }
  .top-bar { position:relative; }
  .theme-widget { right:24px; bottom:24px; }
}
