  :root{
    --bg:#0f1420;
    --bg2:#161d2e;
    --panel:#1c2540;
    --panel2:#222d4d;
    --line:#2e3a5e;
    --text:#e8ecf6;
    --muted:#9aa6c4;
    --accent:#5b8cff;
    --accent2:#ffcb5b;
    /* relationship colors */
    --c-family:#ff6fae;
    --c-team:#3aa0ff;
    --c-teach:#a878ff;
    --c-exam:#2fd6a6;
    --c-enemy:#ff5b5b;
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
  html,body{margin:0;padding:0;height:100%;}
  body{
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
    background:radial-gradient(1200px 800px at 70% -10%,#1d2742 0%,var(--bg) 55%);
    color:var(--text);
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  header{
    padding:18px 22px 14px;
    border-bottom:1px solid var(--line);
    background:linear-gradient(180deg,rgba(28,37,64,.9),rgba(28,37,64,.4));
    backdrop-filter:blur(6px);
  }
  header h1{
    margin:0;font-size:20px;font-weight:700;letter-spacing:.5px;
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  }
  header h1 .badge{
    font-size:12px;font-weight:600;color:#0f1420;background:var(--accent2);
    padding:2px 9px;border-radius:20px;
  }
  header p{margin:6px 0 0;color:var(--muted);font-size:13px;}

  .layout{
    display:grid;
    grid-template-columns:1.55fr 1fr;
    gap:16px;
    padding:16px;
    align-items:start;
  }
  @media (max-width:980px){
    .layout{grid-template-columns:1fr;}
  }

  .card{
    background:linear-gradient(180deg,var(--panel),var(--bg2));
    border:1px solid var(--line);
    border-radius:16px;
    overflow:hidden;
    box-shadow:0 10px 30px rgba(0,0,0,.35);
  }
  .card-head{
    display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding:12px 16px;border-bottom:1px solid var(--line);
  }
  .card-head h2{margin:0;font-size:15px;font-weight:700;}
  .card-head .hint{font-size:12px;color:var(--muted);}

  /* ===== graph zone ===== */
  .graph-wrap{position:relative;}
  .toolbar{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    padding:12px 16px;border-bottom:1px solid var(--line);
  }
  .search{
    flex:1;min-width:160px;display:flex;align-items:center;gap:8px;
    background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:8px 12px;
  }
  .search input{
    flex:1;background:transparent;border:0;outline:0;color:var(--text);font-size:14px;
  }
  .search svg{width:16px;height:16px;fill:var(--muted);flex:none;}
  .btn{
    background:var(--panel2);border:1px solid var(--line);color:var(--text);
    border-radius:10px;padding:8px 12px;font-size:13px;cursor:pointer;transition:.15s;
  }
  .btn:hover{border-color:var(--accent);color:#fff;}

  .legend{display:flex;flex-wrap:wrap;gap:8px;padding:10px 16px;border-bottom:1px solid var(--line);}
  .legend .chip{
    display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);
    background:var(--bg);border:1px solid var(--line);border-radius:20px;padding:4px 10px;cursor:pointer;user-select:none;transition:.15s;
  }
  .legend .chip .dot{width:10px;height:10px;border-radius:50%;}
  .legend .chip.off{opacity:.35;text-decoration:line-through;}

  /* ===== 角色筛选面板（折叠式，按角色姓名开关） ===== */
  .filter-panel{border-bottom:1px solid var(--line);}
  .filter-toggle{
    display:flex;align-items:center;gap:10px;width:100%;
    background:var(--bg);border:0;color:var(--text);cursor:pointer;
    padding:11px 16px;font-size:13px;font-weight:700;transition:.15s;
  }
  .filter-toggle:hover{background:var(--panel2);}
  .filter-toggle .ft-label{display:flex;align-items:center;gap:6px;}
  .filter-count{margin-left:auto;font-size:11px;font-weight:600;color:var(--muted);
    background:var(--panel2);border:1px solid var(--line);border-radius:20px;padding:2px 9px;}
  .filter-toggle .caret{transition:transform .2s;color:var(--muted);font-size:11px;}
  .filter-panel.open .filter-toggle .caret{transform:rotate(180deg);}
  .filter-body{
    display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s ease;
    background:var(--bg2);
  }
  .filter-panel.open .filter-body{grid-template-rows:1fr;}
  .filter-body-inner{overflow:hidden;}
  .filter-legend{
    display:flex;flex-wrap:wrap;gap:10px 16px;padding:10px 16px 4px;
    font-size:11.5px;color:var(--muted);
  }
  .filter-legend .fl{display:flex;align-items:center;gap:6px;}
  .filter-legend .fl i{width:10px;height:10px;border-radius:50%;display:inline-block;}
  .filter-actions{display:flex;gap:8px;padding:8px 16px 6px;}
  .btn-mini{
    background:var(--panel2);border:1px solid var(--line);color:var(--text);
    border-radius:8px;padding:4px 10px;font-size:12px;cursor:pointer;transition:.15s;
  }
  .btn-mini:hover{border-color:var(--accent);color:#fff;}
  .filter-list{display:flex;flex-wrap:wrap;gap:7px;padding:6px 16px 14px;}
  .filter-item{
    display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text);
    background:var(--bg);border:1px solid var(--line);border-radius:20px;
    padding:5px 11px;cursor:pointer;user-select:none;transition:.15s;
  }
  .filter-item:hover{border-color:var(--accent);}
  .filter-item input{accent-color:var(--accent);width:14px;height:14px;cursor:pointer;}
  .filter-item .fi-emoji{font-size:14px;}
  .filter-item.off{opacity:.4;}
  .filter-item.off .fi-name{text-decoration:line-through;}

  #graph{display:block;width:100%;height:560px;background:
     radial-gradient(900px 500px at 50% 40%,rgba(91,140,255,.08),transparent 70%);
     touch-action:none;cursor:grab;}
  #graph:active{cursor:grabbing;}
  @media (max-width:980px){#graph{height:62vh;min-height:420px;}}

  .node-circle{stroke:#0f1420;stroke-width:2.5;cursor:pointer;transition:filter .15s;}
  .node-circle:hover{filter:brightness(1.18);}
  .node-emoji{font-size:20px;text-anchor:middle;dominant-baseline:central;pointer-events:none;user-select:none;}
  .node-label{font-size:12.5px;font-weight:600;text-anchor:middle;fill:var(--text);pointer-events:none;user-select:none;paint-order:stroke;stroke:#0f1420;stroke-width:3px;stroke-linejoin:round;}
  .edge{stroke-width:2;transition:opacity .15s;}
  .edge-label{font-size:11px;font-weight:600;text-anchor:middle;fill:var(--muted);pointer-events:none;user-select:none;paint-order:stroke;stroke:#0f1420;stroke-width:3px;}
  .dim{opacity:.08 !important;}
  .hit .node-circle{stroke:var(--accent2);stroke-width:4;filter:drop-shadow(0 0 8px var(--accent2));}
  .search-hit .node-circle{stroke:#fff;stroke-width:4;filter:drop-shadow(0 0 10px var(--accent));}

  /* detail panel */
  .detail{
    position:absolute;top:12px;right:12px;width:280px;max-width:calc(100% - 24px);
    background:rgba(22,29,46,.96);border:1px solid var(--accent);border-radius:14px;
    padding:14px 16px;box-shadow:0 12px 34px rgba(0,0,0,.5);
    transform:translateY(-12px);opacity:0;pointer-events:none;transition:.2s;z-index:5;
  }
  .detail.show{transform:translateY(0);opacity:1;pointer-events:auto;}
  .detail .dclose{position:absolute;top:8px;right:10px;cursor:pointer;color:var(--muted);font-size:18px;line-height:1;}
  .detail .dname{font-size:17px;font-weight:800;margin:0 0 2px;}
  .detail .dtitle{font-size:12.5px;color:var(--accent2);font-weight:600;margin-bottom:8px;}
  .detail .ddesc{font-size:13px;color:#d4dbf0;margin:0 0 10px;}
  .detail .drel{font-size:12.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:8px;}
  .detail .drel b{color:var(--text);}
  @media (max-width:560px){
    .detail{top:auto;bottom:12px;left:12px;right:12px;width:auto;}
  }

  /* ===== plot zone ===== */
  .plot-list{padding:8px 14px 16px;max-height:640px;overflow:auto;}
  @media (max-width:980px){.plot-list{max-height:none;}}
  .plot-item{border:1px solid var(--line);border-radius:12px;margin:10px 0;overflow:hidden;background:var(--bg);}
  .plot-q{
    display:flex;gap:10px;align-items:flex-start;padding:12px 14px;cursor:pointer;transition:.15s;
  }
  .plot-q:hover{background:var(--panel2);}
  .plot-q .num{
    flex:none;width:24px;height:24px;border-radius:50%;background:var(--accent);color:#0f1420;
    font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px;
  }
  .plot-q .qt{font-size:13.5px;font-weight:600;color:#eaf0ff;flex:1;}
  .plot-q .arrow{flex:none;color:var(--muted);transition:transform .2s;font-size:13px;margin-top:3px;}
  .plot-item.open .plot-q .arrow{transform:rotate(90deg);}
  .plot-a{max-height:0;overflow:hidden;transition:max-height .3s ease;background:var(--bg2);}
  .plot-item.open .plot-a{max-height:480px;overflow:auto;}
  .plot-a p{margin:0;padding:12px 16px 14px 48px;font-size:13px;color:#cdd6ef;border-top:1px dashed var(--line);}

  /* 双色高亮：人物 / 行为 */
  .hl-who{color:#6fd3ff;font-weight:700;}
  .hl-what{color:#ffc857;}

  /* 周总结 + 折叠 */
  .week-summary{
    margin:0;padding:10px 16px;font-size:13px;line-height:1.7;
    color:#bcd0ff;background:rgba(91,140,255,.08);
    border-bottom:1px solid var(--line);
  }
  .plot-week-head{
    display:flex;align-items:center;gap:8px;padding:14px 16px 2px;
    font-size:14px;font-weight:800;color:#fff;cursor:pointer;user-select:none;
  }
  .plot-week-head .wbadge{
    font-size:11px;font-weight:600;color:#0f1420;background:var(--accent2);
    padding:2px 8px;border-radius:20px;
  }
  /* 每周剧情可折叠：点击周标题展开 / 收起本周内容 */
  .plot-week{margin:4px 0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--bg2);}
  .plot-week-head::before{content:'▾';font-size:12px;color:var(--muted);transition:transform .2s ease;}
  .plot-week.collapsed > .plot-week-head::before{transform:rotate(-90deg);}
  .plot-week.collapsed > .week-summary,
  .plot-week.collapsed > .plot-item{display:none;}
  .plot-head-right{display:flex;align-items:center;gap:10px;}
  .legend-inline{display:inline-flex;align-items:center;font-size:12px;color:var(--muted);}
  .legend-inline .sw{width:11px;height:11px;border-radius:3px;display:inline-block;margin:0 3px 0 8px;vertical-align:-1px;}
  .legend-inline .sw.who{background:#6fd3ff;}
  .legend-inline .sw.what{background:#ffc857;}
  .collapse-btn{
    width:30px;height:30px;border-radius:9px;border:1px solid var(--line);
    background:var(--panel2);color:var(--text);font-size:18px;line-height:1;cursor:pointer;
    display:flex;align-items:center;justify-content:center;transition:.15s;
  }
  .collapse-btn:hover{border-color:var(--accent);color:#fff;}

  /* 剧情人物筛选工具条 */
  .plot-toolbar{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    padding:10px 16px;border-bottom:1px solid var(--line);
  }
  .plot-toolbar .search{flex:1;min-width:150px;}
  .plot-toolbar .filter-tip{
    font-size:12px;color:var(--accent2);white-space:nowrap;
  }
  .plot-empty{
    padding:26px 16px;text-align:center;color:var(--muted);font-size:13px;
  }

  .footer{padding:14px 18px;color:var(--muted);font-size:12px;text-align:center;border-top:1px solid var(--line);}
  a{color:var(--accent);}

  /* 异能嵌入区块（底部独立区块，数据来自米达拉角色异能图.html） */
  .ability-embed{margin-top:4px;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--bg2);}
  .ability-embed iframe{width:100%;border:none;display:block;min-height:880px;background:transparent;}

  /* ===== 技能一览（按派系折叠） ===== */
  .skills-section{margin-top:20px;}
  .skills-section .card-head h2{font-size:15px;}
  .skills-section .hint{font-size:12px;color:var(--muted);}
  .faction{
    border:1px solid var(--line);border-radius:14px;overflow:hidden;
    background:linear-gradient(180deg,var(--panel),var(--bg2));
    margin-bottom:12px;
  }
  .faction-head{
    display:flex;align-items:center;gap:12px;width:100%;
    padding:14px 16px;background:transparent;border:0;cursor:pointer;
    color:var(--text);font:inherit;text-align:left;transition:background .15s;
  }
  .faction-head:hover{background:var(--panel2);}
  .faction-head .fdot{width:14px;height:14px;border-radius:50%;flex:none;box-shadow:0 0 0 3px rgba(255,255,255,.06);}
  .faction-head .fname{font-weight:700;font-size:16px;}
  .faction-head .fcount{margin-left:auto;font-size:12px;color:var(--muted);}
  .faction-head .fcaret{transition:transform .22s ease;color:var(--muted);font-size:12px;}
  .faction.open .fcaret{transform:rotate(90deg);}
  .faction-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .28s ease;background:var(--bg2);}
  .faction.open .faction-body{grid-template-rows:1fr;}
  .faction-body-inner{overflow:hidden;}
  .skill-list{padding:4px 0;}
  .skill-item{padding:12px 16px;border-top:1px solid var(--line);}
  .skill-item:first-child{border-top:0;}
  .skill-name{font-weight:700;font-size:14px;color:var(--text);}
  .skill-tags{display:flex;flex-wrap:wrap;gap:6px;margin:7px 0 6px;}
  .skill-tag{font-size:11px;line-height:1.6;padding:2px 9px;border-radius:999px;background:var(--bg);border:1px solid var(--line);color:var(--muted);white-space:nowrap;}
  .skill-tag b{color:var(--text);font-weight:600;margin-right:3px;}
  .skill-eff{font-size:13px;color:var(--text);line-height:1.65;opacity:.92;}
  /* SP 消耗红点可视化 */
  .skill-sp{display:flex;align-items:center;gap:5px;margin:7px 0 6px;flex-wrap:wrap;}
  .skill-sp .sp-label{font-size:11px;color:var(--muted);font-weight:700;margin-right:2px;}
  .sp-dot{width:11px;height:11px;border-radius:50%;background:#ff5b5b;box-shadow:0 0 6px rgba(255,91,91,.55);display:inline-block;}
  .sp-none{font-size:11px;color:var(--muted);}
  .sp-legend{color:#ff5b5b;}
  /* 派系彩色标签（多派系时一张卡显示多个 → 清晰可辨） */
  .skill-factions{display:flex;flex-wrap:wrap;gap:6px;margin:7px 0 4px;}
  .faction-tag{font-size:11px;line-height:1.5;padding:2px 9px;border-radius:999px;color:#0c0f18;font-weight:700;}
  /* 跨派系技能：卡片加左侧高亮边 + 徽标，一眼识别 */
  .skill-item.cross-faction{border-left:3px solid #ffd43b;background:linear-gradient(90deg,rgba(255,212,59,.08),transparent 55%);}
  .cf-badge{font-size:10px;font-weight:700;color:#1a1300;background:#ffd43b;padding:1px 7px;border-radius:999px;margin-left:6px;vertical-align:1px;}
  .skill-loading{padding:24px 16px;color:var(--muted);font-size:13px;}
  .skill-empty{padding:14px 16px;color:var(--muted);font-size:13px;font-style:italic;}

  /* ===== 角色状态（原角色异能一览，重构为内联） ===== */
  .cs-loading{padding:24px 16px;color:var(--muted);font-size:13px;}
  .cs-char{margin:14px 0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--bg2);}
  .cs-char-head{display:flex;align-items:center;gap:10px;padding:13px 16px;background:linear-gradient(90deg,rgba(91,140,255,.10),transparent 60%);}
  .cs-char-name{font-size:17px;font-weight:800;color:#fff;}
  .cs-avatar{width:54px;height:54px;border-radius:12px;object-fit:cover;flex:0 0 auto;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.18);cursor:pointer;transition:transform .15s,box-shadow .15s;}
  .cs-avatar:hover{transform:scale(1.06);box-shadow:0 0 0 2px rgba(91,140,255,.6);}
  .cs-avatar-empty{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:22px;font-weight:800;cursor:default;border-style:dashed;}
  .cs-exp{font-size:11px;font-weight:700;color:#0f1420;background:var(--accent);padding:2px 10px;border-radius:20px;}
  .cs-block{padding:6px 16px 14px;}
  .cs-block-title{font-size:13px;font-weight:700;color:var(--muted);margin:10px 0 8px;display:flex;align-items:center;gap:7px;}
  .cs-block-title .bar{width:3px;height:13px;border-radius:2px;background:var(--accent);display:inline-block;}
  .cs-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:9px;}
  .cs-slot{display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:10px;padding:7px 9px;font-size:13px;min-height:42px;}
  .cs-slot-label{flex:none;width:46px;color:var(--muted);font-size:12px;}
  .cs-thumb{width:30px;height:30px;border-radius:6px;object-fit:cover;background:#0c0f18;border:1px solid var(--line);flex:none;}
  .cs-slot-name{flex:1;line-height:1.3;}
  .cs-empty{color:var(--muted);opacity:.55;}
  .cs-abilities{display:flex;flex-direction:column;gap:9px;}
  .cs-ability{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:10px;padding:10px 12px;}
  .cs-ability-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .cs-ability-name{font-size:14px;font-weight:700;}
  .cs-sp{display:flex;align-items:center;gap:4px;margin-left:2px;}
  .cs-ab-facs{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0 2px;}
  .cs-ab-eff{font-size:12.5px;color:var(--text);opacity:.9;line-height:1.6;margin-top:2px;}
  .cs-ability-plain{font-size:13.5px;color:var(--muted);}
  .cs-wh{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));}
  .cs-wh-item{display:flex;flex-direction:column;align-items:center;gap:6px;background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:10px;padding:9px 6px;font-size:12.5px;text-align:center;}
  .cs-wh-item .cs-thumb{width:42px;height:42px;}
  .cs-gold{font-size:13px;color:var(--muted);margin:4px 0 10px;}
  /* 灯箱放大预览 */
  .cs-slot[data-full],.cs-wh-item[data-full]{cursor:zoom-in;}
  .cs-zoom{transition:transform .12s ease;cursor:zoom-in;}
  .cs-zoom:hover{transform:scale(1.1);}
  /* 装备槽附魔 */
  .cs-slot.has-ench{flex-direction:column;align-items:stretch;}
  .cs-slot-main{display:flex;align-items:center;gap:9px;width:100%;}
  .cs-ench-box{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:7px;padding-left:55px;}
  .cs-ench-cap{font-size:11px;font-weight:700;color:#FFCB5B;flex:none;}
  .cs-ench-item{display:inline-flex;align-items:center;gap:5px;background:rgba(255,194,91,.10);border:1px solid rgba(255,194,91,.38);border-radius:8px;padding:3px 7px;font-size:12px;}
  .cs-ench-item .cs-thumb{width:24px;height:24px;}
  .cs-ench-empty{opacity:.5;background:transparent;border-style:dashed;color:var(--muted);}
  .cs-ench-name{line-height:1.2;}
  .cs-lightbox{position:fixed;inset:0;background:rgba(6,8,14,.84);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px;backdrop-filter:blur(2px);}
  .cs-lightbox.open{display:flex;}
  .cs-lightbox-inner{position:relative;max-width:92vw;max-height:92vh;display:flex;flex-direction:column;align-items:center;gap:12px;}
  .cs-lightbox-inner img{max-width:92vw;max-height:78vh;border-radius:12px;box-shadow:0 24px 70px rgba(0,0,0,.65);background:#0c0f18;cursor:default;}
  .cs-lightbox-close{position:absolute;top:-16px;right:-16px;width:38px;height:38px;border-radius:50%;border:none;background:#fff;color:#111;font-size:24px;line-height:1;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.45);}
  .cs-lightbox-cap{color:#eaeefb;font-size:14px;font-weight:700;}
  .cs-global{margin-top:6px;border-top:1px dashed var(--line);padding-top:10px;}
  @media (max-width:560px){
    .faction-head{padding:12px 13px;gap:9px;}
    .faction-head .fname{font-size:15px;}
    .skill-item{padding:11px 13px;}
  }


/* ===== 装备图鉴 / 抽奖 专属样式 ===== */
#gallerySection.eq-section, #lotterySection.eq-section{margin:16px;}
#gallerySection .eq-head, #lotterySection .eq-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
#gallerySection .eq-head h2, #lotterySection .eq-head h2{margin:0;font-size:18px;display:flex;align-items:center;gap:8px;}
#gallerySection .eq-search{
  background:var(--bg2,#161d2e);border:1px solid var(--line,#2e3a5e);color:var(--text,#e8ecf6);
  border-radius:10px;padding:8px 12px;font-size:14px;min-width:200px;outline:none;
}
#gallerySection .eq-search:focus{border-color:var(--accent,#5b8cff);}
#gallerySection .eq-body, #lotterySection .eq-body{padding:14px 16px 18px;}
#gallerySection .eq-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;}
#gallerySection .eq-tab{
  background:var(--panel2,#222d4d);border:1px solid var(--line,#2e3a5e);color:var(--text,#e8ecf6);
  padding:7px 14px;border-radius:20px;cursor:pointer;font-size:14px;font-weight:600;
  display:flex;align-items:center;gap:6px;transition:.15s;
}
#gallerySection .eq-tab:hover{border-color:var(--accent,#5b8cff);}
#gallerySection .eq-tab.active{background:var(--accent,#5b8cff);border-color:var(--accent,#5b8cff);color:#fff;}
#gallerySection .eq-tab .eq-num{font-size:11px;background:rgba(255,255,255,.18);padding:1px 7px;border-radius:10px;}
#gallerySection .eq-tab.r-normal.active{background:#2fd6a6;border-color:#2fd6a6;}
#gallerySection .eq-tab.r-rare.active{background:#ffcb5b;border-color:#ffcb5b;color:#1a1300;}
#gallerySection .eq-tab.r-epic.active{background:#ff9f43;border-color:#ff9f43;color:#1a0d00;}
#gallerySection .eq-tab.r-monster.active{background:#ff5b5b;border-color:#ff5b5b;}
#gallerySection .eq-tab.r-accessory.active{background:#a878ff;border-color:#a878ff;}
#gallerySection .eq-tab.r-unique.active{background:linear-gradient(90deg,#ffcb5b,#ff9f43);border-color:#ffcb5b;color:#1a1300;}
#gallerySection .eq-tab.r-enchant{border-color:rgba(63,208,201,.55);}
#gallerySection .eq-tab.r-enchant.active{background:#3fd0c9;border-color:#3fd0c9;color:#06231f;}
#gallerySection .eq-tab.r-story.active{background:#FF922B;border-color:#FF922B;color:#1a0d00;}
#gallerySection .eq-tab.r-familiar{border-color:rgba(77,208,225,.55);}
#gallerySection .eq-tab.r-familiar.active{background:#4dd0e1;border-color:#4dd0e1;color:#06231f;}
#gallerySection .eq-tab.r-companion{border-color:rgba(255,138,203,.55);}
#gallerySection .eq-tab.r-companion.active{background:#ff8acb;border-color:#ff8acb;color:#1a0d00;}
#gallerySection .eq-cats{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;}
#gallerySection .eq-catbtn{
  background:transparent;border:1px solid var(--line,#2e3a5e);color:var(--muted,#9aa6c4);
  padding:4px 12px;border-radius:14px;cursor:pointer;font-size:13px;transition:.15s;
}
#gallerySection .eq-catbtn:hover{color:var(--text,#e8ecf6);}
#gallerySection .eq-catbtn.active{background:var(--panel2,#222d4d);color:var(--text,#e8ecf6);border-color:var(--accent,#5b8cff);}
#gallerySection .eq-countrow{font-size:12px;color:var(--muted,#9aa6c4);margin-bottom:10px;}
#gallerySection .eq-grid, #lotterySection .eq-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;}
#gallerySection .eq-card{
  background:var(--panel,#1c2540);border:1px solid var(--line,#2e3a5e);border-radius:14px;
  overflow:hidden;display:flex;flex-direction:column;transition:.15s;
}
#gallerySection .eq-card:hover{border-color:var(--accent,#5b8cff);transform:translateY(-2px);}
#gallerySection .eq-imgwrap{position:relative;aspect-ratio:3/4;background:#0c1020;display:flex;align-items:center;justify-content:center;cursor:pointer;}
#gallerySection .eq-imgwrap img{width:100%;height:100%;object-fit:contain;}
#gallerySection .eq-nopic{color:var(--muted,#9aa6c4);font-size:13px;}
#gallerySection .eq-swap{
  position:absolute;right:8px;bottom:8px;background:rgba(15,20,32,.8);border:1px solid var(--line,#2e3a5e);
  color:var(--text,#e8ecf6);border-radius:10px;padding:3px 9px;font-size:11px;cursor:pointer;
}
#gallerySection .eq-swap:hover{border-color:var(--accent,#5b8cff);}
#gallerySection .eq-name{padding:8px 10px 2px;font-size:14px;font-weight:700;color:var(--text,#e8ecf6);}
#gallerySection .eq-meta{padding:0 10px 4px;display:flex;gap:6px;flex-wrap:wrap;}
#gallerySection .eq-cat{font-size:11px;color:var(--muted,#9aa6c4);background:var(--bg2,#161d2e);padding:1px 8px;border-radius:9px;}
#gallerySection .eq-uni{font-size:11px;color:#1a1300;background:linear-gradient(90deg,#ffcb5b,#ff9f43);padding:1px 8px;border-radius:9px;font-weight:700;}
#gallerySection .eq-note{padding:0 10px 10px;font-size:11px;color:var(--muted,#9aa6c4);line-height:1.4;}
#gallerySection .eq-empty{padding:40px;text-align:center;color:var(--muted,#9aa6c4);grid-column:1/-1;}

/* ---- 灯箱（点击图片放大）---- */
#eqLightbox{
  position:fixed;inset:0;background:rgba(5,8,16,.92);display:none;
  align-items:center;justify-content:center;flex-direction:column;z-index:9999;cursor:zoom-out;
}
#eqLightbox img{
  max-width:92vw;max-height:82vh;width:auto;height:auto;border-radius:10px;
  box-shadow:0 8px 40px rgba(0,0,0,.6);cursor:default;background:#0c1020;
}
#eqLightbox .lb-close{position:absolute;top:16px;right:22px;color:#fff;font-size:28px;cursor:pointer;line-height:1;opacity:.85;}
#eqLightbox .lb-close:hover{opacity:1;}
#eqLightbox .lb-swap{
  position:absolute;bottom:24px;background:rgba(91,140,255,.92);border:none;color:#fff;
  border-radius:10px;padding:8px 20px;font-size:14px;cursor:pointer;font-weight:600;
}
#eqLightbox .lb-swap:hover{filter:brightness(1.1);}
#eqLightbox .lb-hint{position:absolute;bottom:70px;color:rgba(255,255,255,.6);font-size:12px;}

/* ---- 抽奖模块 ---- */
#lotterySection .lot-group{margin-bottom:12px;}
#lotterySection .lot-label{font-size:12px;color:var(--muted,#9aa6c4);margin-bottom:6px;}
#lotterySection .lot-chips{display:flex;flex-wrap:wrap;gap:6px;}
#lotterySection .lot-chip{
  background:transparent;border:1px solid var(--line,#2e3a5e);color:var(--muted,#9aa6c4);
  padding:5px 14px;border-radius:16px;cursor:pointer;font-size:13px;transition:.15s;
}
#lotterySection .lot-chip:hover{color:var(--text,#e8ecf6);}
#lotterySection .lot-chip.active{background:var(--accent,#5b8cff);color:#fff;border-color:var(--accent,#5b8cff);font-weight:700;}
#lotterySection .lot-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
#lotterySection .lot-qtybox{display:flex;align-items:center;gap:8px;}
#lotterySection .lot-step{width:34px;height:34px;border-radius:10px;border:1px solid var(--line,#2e3a5e);background:var(--panel2,#222d4d);color:var(--text,#e8ecf6);font-size:18px;cursor:pointer;line-height:1;}
#lotterySection .lot-step:hover{border-color:var(--accent,#5b8cff);}
#lotterySection .lot-qty{width:62px;height:34px;text-align:center;border-radius:10px;border:1px solid var(--line,#2e3a5e);background:var(--bg2,#161d2e);color:var(--text,#e8ecf6);font-size:15px;}
#lotterySection .lot-draw{background:linear-gradient(90deg,#5b8cff,#7b5bff);border:none;color:#fff;padding:9px 22px;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;}
#lotterySection .lot-draw:hover{filter:brightness(1.1);}
#lotterySection .lot-clear{background:transparent;border:1px solid var(--line,#2e3a5e);color:var(--muted,#9aa6c4);padding:9px 16px;border-radius:12px;font-size:14px;cursor:pointer;}
#lotterySection .lot-clear:hover{color:var(--text,#e8ecf6);}
#lotterySection .lot-card{border-width:2px;}
#lotterySection .lot-rarb{font-size:11px;font-weight:700;padding:1px 8px;border-radius:9px;}
#lotterySection .eq-grid{padding-top:4px;margin-top:6px;}

/* ===== 顶部导航 ===== */
.topnav{
  display:flex;flex-wrap:wrap;gap:8px;
  padding:10px 22px 14px;
  border-bottom:1px solid var(--line);
  background:rgba(22,29,46,.55);
}
.topnav a{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 14px;border-radius:10px;
  color:var(--muted);text-decoration:none;font-weight:700;font-size:14px;
  border:1px solid transparent;transition:.15s;
}
.topnav a:hover{color:var(--text);background:var(--panel);}
.topnav a.active{
  color:#06231f;background:var(--accent);
  border-color:var(--accent);box-shadow:0 6px 16px rgba(91,140,255,.35);
}
.subhead{padding:6px 22px 0;color:var(--muted);font-size:13px;}


/* ===== 每周角色状态 ===== */
#weekStatusCard{margin-top:14px;}
.week-status-list{display:flex;flex-direction:column;gap:14px;}
.ws-week{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:rgba(255,255,255,.02);}
.ws-week-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;cursor:pointer;user-select:none;}
.ws-week-head .ws-caret{display:inline-block;transition:transform .15s;margin-right:2px;}
.ws-week.collapsed .ws-week-head .ws-caret{transform:rotate(-90deg);}
.ws-week-body{margin-top:4px;}
.ws-week.collapsed .ws-week-body{display:none;}
.ws-week-head .wbadge{background:var(--accent);color:#06231f;padding:2px 10px;border-radius:20px;font-weight:800;font-size:13px;}
.ws-date{color:var(--muted);font-size:12px;}
.ws-wh{color:var(--muted);font-size:12px;margin-left:auto;}
.ws-char{padding:8px 0;border-top:1px dashed var(--line);}
.ws-char:first-child{border-top:none;}
.ws-cname{font-weight:800;margin-bottom:4px;}
.ws-exp{color:var(--accent);font-size:12px;margin-left:6px;font-weight:700;}
.ws-row{font-size:13px;line-height:1.7;color:var(--text);}
.ws-row b{display:inline-block;min-width:34px;color:var(--muted);}
.ws-slot{display:inline-block;margin:2px 8px 2px 0;font-size:12.5px;}
.ws-slot i{font-style:normal;color:var(--muted);margin-right:3px;}
.week-empty{color:var(--muted);font-size:13px;padding:6px 2px;}
