/* ===== PAGE-SPECIFIC (global shared vars/theme removed → see styles.css) ===== */
    #bgCanvas { position:fixed; inset:0; z-index:0; pointer-events:none; }
    .wrap { position:relative; z-index:1; max-width:1200px; margin:0 auto; padding:0 24px 80px; }
    nav {
      display:flex; align-items:center; justify-content:space-between;
      padding:16px 0; margin-bottom:32px;
      background:transparent; border:none; box-shadow:none;
      animation:fadeDown .5s ease;
    }
    .idx-logo { display:flex; align-items:center; gap:10px; text-decoration:none; }
    .idx-logo-icon {
      width:36px; height:36px; border-radius:10px;
      background:var(--gradient);
      display:flex; align-items:center; justify-content:center;
      box-shadow:0 4px 12px rgba(37,99,235,0.25);
      flex-shrink:0;
    }
    .idx-logo-text { font-family:'Noto Serif SC',serif; font-size:17px; color:var(--text); }
    .idx-logo-text span { color:var(--blue); }
    .idx-nav-center { display:flex; gap:4px; }
    .idx-nav-pill {
      padding:7px 14px; border-radius:8px;
      font-size:13px; font-weight:500; text-decoration:none;
      transition:all .2s; color:var(--text-2);
    }
    .idx-nav-pill:hover { background:var(--bg-hover); color:var(--text); }
    .idx-nav-pill.active { background:var(--blue-pale); color:var(--blue); }
    .idx-nav-right { display:flex; align-items:center; gap:8px; }
    .idx-icon-btn {
      width:36px; height:36px; border-radius:10px;
      border:1px solid var(--border); background:var(--bg-card);
      display:flex; align-items:center; justify-content:center;
      cursor:pointer; transition:all .2s; position:relative;
    }
    .idx-icon-btn svg { color:var(--text-2); }
    .idx-icon-btn:hover { border-color:var(--border-h); }
    .idx-icon-btn:hover svg { color:var(--blue); }
    /* ===== 通知弹窗 ===== */
    .notif-popup {
      position:absolute; top:58px; right:70px; width:320px;
      background:var(--bg-card); border:1px solid var(--border);
      border-radius:12px; box-shadow:0 8px 32px rgba(0,0,0,0.12);
      z-index:1001; overflow:hidden;
    }
    .notif-overlay {
      position:fixed; inset:0; z-index:1000;
      background:rgba(0,0,0,0.3);
    }
    .notif-header {
      display:flex; justify-content:space-between; align-items:center;
      padding:12px 16px; border-bottom:1px solid var(--border);
      font-weight:600; font-size:14px;
    }
    .notif-more { font-size:12px; color:var(--blue); cursor:pointer; font-weight:400; }
    .notif-more:hover { text-decoration:underline; }
    .notif-list { max-height:320px; overflow-y:auto; }
    .notif-item {
      padding:12px 16px; border-bottom:1px solid var(--border);
      cursor:pointer; transition:background .15s;
    }
    .notif-item:hover { background:var(--bg-hover); }
    .notif-item:last-child { border-bottom:none; }
    .notif-item.notif-loading { text-align:center; color:var(--text-2); font-size:13px; padding:20px; }
    .notif-item.notif-empty { text-align:center; color:var(--text-2); font-size:13px; padding:20px; }
    .notif-title { font-size:13px; font-weight:500; margin-bottom:4px; }
    .notif-desc { font-size:12px; color:var(--text-2); margin-bottom:4px; }
    .notif-time { font-size:11px; color:var(--text-3); }
    .notif-unread { width:6px; height:6px; background:var(--red); border-radius:50%; display:inline-block; margin-right:6px; }
    /* ===== theme toggle icons → styles.css ===== */
    .idx-badge-dot {
      position:absolute; top:6px; right:6px;
      width:8px; height:8px; border-radius:50%;
      background:var(--error);
    }
    .idx-user-chip {
      display:flex; align-items:center; gap:8px;
      padding:5px 12px 5px 5px;
      border-radius:100px; border:1px solid var(--border);
      background:var(--bg-card); cursor:pointer;
      transition:all .2s; text-decoration:none;
    }
    .idx-user-chip:hover { border-color:var(--border-h); box-shadow:var(--shadow); }
    .idx-user-avatar {
      width:26px; height:26px; border-radius:50%;
      background:var(--gradient);
      display:flex; align-items:center; justify-content:center;
      font-size:12px; color:#fff; font-weight:700;
    }
    .idx-user-name { font-size:13px; color:var(--text-2); }
    .login-btn {
      padding:7px 18px; border-radius:10px;
      background:var(--blue-pale); color:var(--blue);
      border:1px solid var(--blue-border);
      font-size:13px; font-weight:600; text-decoration:none;
      transition:all .2s;
    }
    .login-btn:hover { background:var(--blue); color:#fff; border-color:var(--blue); }



    /* ===== GREETING ===== */
    .greeting {
      display:flex; align-items:center; justify-content:space-between;
      margin-bottom:24px; animation:fadeUp .5s ease .05s both;
    }
    .greet-left { display:flex; align-items:center; gap:16px; }
    .greet-avatar {
      width:56px; height:56px; border-radius:16px;
      background:var(--gradient);
      display:flex; align-items:center; justify-content:center;
      font-family:'Noto Serif SC',serif; font-size:22px; color:#fff;
      font-weight:700; box-shadow:0 6px 20px rgba(37,99,235,0.25);
    }
    .greet-text {}
    .greet-time { font-size:12px; color:var(--text-3); font-family:'Space Mono',monospace; margin-bottom:4px; }
    .greet-name { font-family:'Noto Serif SC',serif; font-size:22px; font-weight:700; color:var(--text); }
    .greet-name span { color:var(--blue); }
    .greet-sub { font-size:13px; color:var(--text-2); margin-top:2px; }
    .greet-right { display:flex; gap:8px; }
    .greet-action {
      width:40px; height:40px; border-radius:12px;
      border:1px solid var(--border); background:var(--bg-card);
      display:flex; align-items:center; justify-content:center;
      cursor:pointer; transition:all .2s;
    }
    .greet-action svg { color:var(--text-2); }
    .greet-action:hover { border-color:var(--border-h); }
    .greet-action:hover svg { color:var(--blue); }

    /* ===== STATS ROW ===== */
    .stats-row {
      display:grid; grid-template-columns:repeat(4,1fr); gap:12px;
      margin-bottom:20px; animation:fadeUp .5s ease .1s both;
    }
    .stat-card {
      background:var(--bg-card); border:1px solid var(--border);
      border-radius:14px; padding:18px 16px;
      box-shadow:var(--shadow); transition:all .25s;
      text-decoration:none; display:block;
    }
    .stat-card:hover { box-shadow:var(--shadow-h); border-color:var(--border-h); transform:translateY(-2px); }
    .stat-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
    .stat-icon {
      width:32px; height:32px; border-radius:9px;
      display:flex; align-items:center; justify-content:center;
    }
    .stat-icon.blue { background:var(--blue-pale); border:1px solid var(--blue-border); }
    .stat-icon.green { background:var(--success-bg); border:1px solid var(--success); }
    .stat-icon.orange { background:var(--warning-bg); border:1px solid var(--warning); }
    .stat-icon svg { color:var(--blue); }
    .stat-icon.green svg { color:var(--success); }
    .stat-icon.orange svg { color:var(--warning); }
    .stat-trend { font-size:11px; color:var(--success); font-weight:600; display:flex; align-items:center; gap:3px; }
    .stat-n { font-family:'Space Mono',monospace; font-size:28px; font-weight:700; color:var(--text); line-height:1; margin-bottom:4px; }
    .stat-n span { background:var(--gradient); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; }
    .stat-l { font-size:12px; color:var(--text-2); }

    /* ===== QUICK ACTIONS ===== */
    .section-label {
      font-size:12px; font-weight:600; color:var(--text-2);
      text-transform:uppercase; letter-spacing:.08em;
      margin-bottom:12px;
    }
    .quick-grid {
      display:grid; grid-template-columns:repeat(6,1fr); gap:10px;
      margin-bottom:24px; animation:fadeUp .5s ease .15s both;
    }
    .quick-card {
      background:var(--bg-card); border:1px solid var(--border);
      border-radius:14px; padding:16px 10px;
      display:flex; flex-direction:column; align-items:center; gap:8px;
      box-shadow:var(--shadow); cursor:pointer;
      transition:all .25s; text-decoration:none;
    }
    .quick-card:hover { box-shadow:var(--shadow-h); border-color:var(--border-h); transform:translateY(-3px); }
    .quick-icon {
      width:40px; height:40px; border-radius:12px;
      background:var(--blue-pale); border:1px solid var(--blue-border);
      display:flex; align-items:center; justify-content:center;
      transition:all .2s;
    }
    .quick-card:hover .quick-icon { background:var(--blue); border-color:var(--blue); }
    .quick-card:hover .quick-icon svg { color:#fff; }
    .quick-icon svg { color:var(--blue); transition:color .2s; }
    .quick-label { font-size:12px; color:var(--text-2); font-weight:500; text-align:center; }

    /* ===== MAIN GRID ===== */
    .main-grid {
      display:grid; grid-template-columns:1fr 320px; gap:20px;
      margin-bottom:24px; animation:fadeUp .5s ease .2s both;
    }

    /* ===== CIRCLE CARDS ===== */
    .circle-grid {
      display:grid; grid-template-columns:repeat(4,1fr); gap:10px;
    }
    .circle-card {
      background:var(--bg-card); border:1px solid var(--border);
      border-radius:14px; padding:16px 12px;
      text-align:center; box-shadow:var(--shadow);
      transition:all .25s; text-decoration:none;
      display:block;
    }
    .circle-card:hover { box-shadow:var(--shadow-h); border-color:var(--border-h); transform:translateY(-2px); }
    .circle-icon { font-size:24px; margin-bottom:8px; }
    .circle-name { font-size:13px; font-weight:600; color:var(--text); margin-bottom:4px; }
    .circle-count { font-family:'Space Mono',monospace; font-size:20px; font-weight:700; background:var(--gradient); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; }
    .circle-label { font-size:10px; color:var(--text-3); margin-top:2px; }

    /* ===== RESOURCE HIGHLIGHT ===== */
    .res-highlight {
      background:var(--bg-card); border:1px solid var(--border);
      border-radius:16px; padding:20px;
      box-shadow:var(--shadow); margin-bottom:20px;
      animation:fadeUp .5s ease .25s both;
    }
    .res-highlight-title {
      font-size:13px; font-weight:600; color:var(--text-2);
      text-transform:uppercase; letter-spacing:.08em;
      margin-bottom:14px; display:flex; align-items:center; gap:8px;
    }
    .res-highlight-title svg { color:var(--blue); }
    .res-list { display:flex; flex-direction:column; gap:8px; }
    .res-item {
      display:flex; align-items:center; gap:10px;
      padding:12px 14px; border-radius:10px;
      background:var(--bg); border:1px solid transparent;
      transition:all .2s; text-decoration:none;
      margin-bottom:4px;
    }
    .res-item:hover { background:var(--blue-pale); border-color:var(--blue-border); }
    .res-dot { width:6px; height:6px; border-radius:50%; background:var(--blue); flex-shrink:0; }
    .res-text { font-size:13px; color:var(--text-2); flex:1; }
    .res-who { font-size:11px; padding:2px 8px; border-radius:100px; background:var(--blue-pale); color:var(--blue); border:1px solid var(--blue-border); flex-shrink:0; }

    /* ===== RECENT CONTACTS (RIGHT SIDEBAR) ===== */
    .sidebar {
      display:flex; flex-direction:column; gap:12px;
    }
    .section-header {
      display:flex; align-items:center; justify-content:space-between;
      padding-bottom:4px;
    }
    .side-card {
      background:var(--bg-card); border:1px solid var(--border);
      border-radius:16px; padding:18px;
      box-shadow:var(--shadow);
    }
    .side-title {
      font-size:12px; font-weight:600; color:var(--text-2);
      text-transform:uppercase; letter-spacing:.08em;
      margin-bottom:14px; display:flex; align-items:center; justify-content:space-between;
    }
    .side-title a { font-size:11px; color:var(--blue); text-decoration:none; font-weight:500; }
    .side-title a:hover { text-decoration:underline; }

    .contact-row {
      display:flex; align-items:center; gap:12px;
      padding:10px 0;
      border-bottom:1px solid var(--border);
      text-decoration:none; transition:all .2s;
    }
    .contact-row:last-child { border-bottom:none; padding-bottom:0; }
    .contact-row:hover .row-name { color:var(--blue); }
    .row-avatar {
      width:38px; height:38px; border-radius:12px;
      background:var(--blue-pale); border:1px solid var(--blue-border);
      display:flex; align-items:center; justify-content:center;
      font-family:'Noto Serif SC',serif; font-size:15px; color:var(--blue);
      font-weight:700; flex-shrink:0;
    }
    .row-info { flex:1; min-width:0; }
    .row-name { font-size:13px; font-weight:600; color:var(--text); transition:color .2s; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .row-desc { font-size:11px; color:var(--text-3); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .row-tags { display:flex; gap:4px; flex-shrink:0; }
    .row-tag { font-size:10px; padding:1px 6px; border-radius:100px; background:var(--blue-pale); color:var(--blue); border:1px solid var(--blue-border); }

    /* ===== ACTIVITY DASHBOARD ===== */
    .activity-board {
      background:var(--bg-card); border:1px solid var(--border);
      border-radius:16px; padding:20px;
      box-shadow:var(--shadow); margin-bottom:24px;
      animation:fadeUp .5s ease .18s both;
    }
    .act-board-header {
      display:flex; align-items:center; justify-content:space-between;
      margin-bottom:18px;
    }
    .act-board-title {
      font-size:13px; font-weight:600; color:var(--text);
      display:flex; align-items:center; gap:8px;
    }
    .act-board-title svg { color:var(--blue); }
    .act-board-meta { font-size:12px; color:var(--text-3); }
    .act-chart-row {
      display:grid; grid-template-columns:1fr auto; gap:20px; align-items:center;
    }
    .act-bars { display:flex; align-items:flex-end; gap:6px; height:64px; }
    .act-bar-wrap { display:flex; flex-direction:column; align-items:center; gap:4px; flex:1; }
    .act-bar-bg { width:100%; height:52px; background:var(--bg); border-radius:6px; position:relative; overflow:hidden; }
    .act-bar-fill {
      position:absolute; bottom:0; left:0; right:0;
      border-radius:6px 6px 0 0;
      background:var(--gradient);
      transition:height .6s ease;
    }
    .act-bar-label { font-size:10px; color:var(--text-3); font-family:'Space Mono',monospace; }
    .act-bar-count { font-size:10px; color:var(--text-2); font-weight:600; font-family:'Space Mono',monospace; margin-bottom:2px; }
    .act-today-card {
      background:var(--gradient-soft);
      border:1px solid var(--blue-border);
      border-radius:12px; padding:14px 18px;
      min-width:160px; text-align:center;
    }
    .act-today-label { font-size:11px; color:var(--text-3); margin-bottom:4px; }
    .act-today-count { font-family:'Space Mono',monospace; font-size:28px; font-weight:700; background:var(--gradient); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; }
    .act-today-sub { font-size:11px; color:var(--text-2); margin-top:2px; }
    .act-type-row {
      display:flex; gap:8px; margin-top:14px; padding-top:14px;
      border-top:1px solid var(--border);
    }
    .act-type-chip {
      display:flex; align-items:center; gap:6px;
      padding:4px 12px; border-radius:100px;
      background:var(--bg); border:1px solid var(--border);
      font-size:12px; color:var(--text-2);
      transition:all .2s;
    }
    .act-type-chip:hover { border-color:var(--blue-border); color:var(--blue); background:var(--blue-pale); }
    .act-type-chip svg { color:var(--blue); }
    .act-type-chip .count { font-weight:700; font-family:'Space Mono',monospace; color:var(--text); font-size:13px; }
    .act-type-chip:hover .count { color:var(--blue); }
    .act-see-all { font-size:12px; color:var(--blue); text-decoration:none; font-weight:500; margin-left:auto; flex-shrink:0; align-self:center; }
    .act-see-all:hover { text-decoration:underline; }

    /* ===== MATCH GRID ===== */
    .match-section { margin-top:20px; }
    .match-title-row {
      display:flex; align-items:center; justify-content:space-between;
      margin-bottom:14px;
    }
    .section-title {
      font-size:15px; font-weight:700; color:var(--text);
      display:flex; align-items:center; gap:8px;
    }
    .section-title svg { color:var(--blue); }
    .section-more { font-size:12px; color:var(--blue); text-decoration:none; }
    .section-more:hover { text-decoration:underline; }
    .match-grid {
      display:grid;
      grid-template-columns:repeat(3, 1fr);
      grid-template-rows:repeat(2,auto);
      gap:12px;
    }
    .match-card {
      background:var(--bg-card); border:1px solid var(--border);
      border-radius:14px; padding:16px;
      display:flex; flex-direction:column; gap:10px;
      text-decoration:none; transition:all .2s; position:relative; overflow:hidden;
    }
    .match-card:hover { border-color:var(--blue-border); box-shadow:var(--shadow); transform:translateY(-2px); }
    .mc-top { display:flex; align-items:center; gap:10px; }
    .mc-avatar {
      width:42px; height:42px; border-radius:50%;
      background:var(--gradient);
      display:flex; align-items:center; justify-content:center;
      font-family:'Noto Serif SC',serif; font-size:16px; color:#fff; font-weight:700; flex-shrink:0;
    }
    .mc-body { flex:1; min-width:0; }
    .mc-name-row { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
    .mc-name { font-size:13px; font-weight:700; color:var(--text); }
    .mc-type { font-size:10px; padding:1px 7px; border-radius:100px; background:#faf5ff; color:#9333ea; border:1px solid #e9d5ff; font-weight:600; }
    .mc-desc { font-size:12px; color:var(--text-3); margin-top:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .mc-score {
      position:absolute; top:14px; right:14px;
      font-size:20px; font-weight:900; color:var(--blue);
      font-family:'Space Mono',monospace; line-height:1;
    }
    .mc-resource { font-size:11px; color:var(--text-2); padding:6px 10px; background:var(--bg); border-radius:8px; border:1px solid var(--border); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .mc-resource-dot { width:5px; height:5px; border-radius:50%; background:var(--blue); flex-shrink:0; display:inline-block; margin-right:5px; }
    .mc-tags { display:flex; gap:4px; flex-wrap:wrap; }
    .mc-tag { font-size:10px; padding:1px 7px; border-radius:100px; background:var(--blue-pale); color:var(--blue); border:1px solid var(--blue-border); }

    /* ===== FULL WIDTH SECTION ===== */
    .full-section {
      animation:fadeUp .5s ease .28s both;
    }
    .contact-full-row {
      display:flex; align-items:center; gap:16px;
      padding:14px 18px; background:var(--bg-card);
      border:1px solid var(--border); border-radius:14px;
      margin-bottom:10px; box-shadow:var(--shadow);
      transition:all .25s; text-decoration:none;
    }
    .contact-full-row:hover { box-shadow:var(--shadow-h); border-color:var(--border-h); transform:translateX(4px); }
    .cf-avatar { width:46px; height:46px; border-radius:14px; background:var(--blue-pale); border:2px solid var(--blue-border); display:flex; align-items:center; justify-content:center; font-family:'Noto Serif SC',serif; font-size:18px; color:var(--blue); font-weight:700; flex-shrink:0; }
    .cf-info { flex:1; }
    .cf-name { font-size:15px; font-weight:600; color:var(--text); margin-bottom:3px; }
    .cf-desc { font-size:12px; color:var(--text-2); }
    .cf-tags { display:flex; gap:6px; flex-shrink:0; }
    .cf-tag { font-size:11px; padding:3px 10px; border-radius:100px; background:var(--blue-pale); color:var(--blue); border:1px solid var(--blue-border); }
    .cf-arrow { color:var(--text-3); font-size:18px; transition:all .25s; flex-shrink:0; }
    .contact-full-row:hover .cf-arrow { color:var(--blue); transform:translateX(4px); }

    /* ===== RESPONSIVE ===== */
    @media(max-width:900px) {
      .main-grid { grid-template-columns:1fr; }
      .stats-row { grid-template-columns:repeat(2,1fr); }
      .quick-grid { grid-template-columns:repeat(3,1fr); }
      .circle-grid { grid-template-columns:repeat(4,1fr); }
      .act-chart-row { grid-template-columns:1fr; }
      .match-grid { grid-template-columns:repeat(2,1fr); }
    }
    @media(max-width:600px) {
      .nav-center, .idx-nav-center { display:none; }
      .greeting { flex-direction:column; align-items:flex-start; gap:12px; }
      .stats-row { grid-template-columns:1fr 1fr; }
      .quick-grid { grid-template-columns:repeat(3,1fr); }
      .circle-grid { grid-template-columns:repeat(2,1fr); }
    }
    /* ===== FOOTER & ANIMATIONS (in styles.css) ===== */

    /* ── Modal ────────────────────────────────────────────── */
    .modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:900;display:none;}
    .modal-box{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg-card);border-radius:16px;padding:24px;width:450px;max-width:90vw;z-index:901;display:none;flex-direction:column;gap:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);}
    .modal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
    .modal-title{font-size:16px;font-weight:700;color:var(--text-1);}
    .modal-close{background:none;border:none;cursor:pointer;color:var(--text-3);padding:4px;border-radius:6px;}
    .modal-close:hover{color:var(--text-1);background:var(--bg-hover);}
    .modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px;}
    .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
    .form-group{display:flex;flex-direction:column;gap:4px;}
    .form-group.full{grid-column:1/-1;}
    .form-label{font-size:12px;font-weight:500;color:var(--text-2);}
    .form-input{padding:8px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;background:var(--bg-primary);color:var(--text-1);transition:border-color .2s;}
    .form-input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.1);}
    .btn-primary{padding:8px 20px;background:var(--blue);color:#fff;border:none;border-radius:8px;font-size:14px;cursor:pointer;transition:background .2s;}
    .btn-primary:hover{background:#1d4ed8;}
    .btn-secondary{padding:8px 20px;background:var(--bg-hover);color:var(--text-2);border:none;border-radius:8px;font-size:14px;cursor:pointer;}
    .btn-secondary:hover{background:var(--border);}