:root{
  /* ===== 牛牛AI HUB · 专业工程工具（深蓝灰 + 琥珀金点缀）===== */
  --bg:#0e1524;
  --bg-grad:linear-gradient(180deg,#0e1524,#111a2b);
  --panel:#151e30;
  --panel-solid:#111929;
  --sidebar-bg:rgba(255,255,255,.02);
  --sidebar-active:rgba(217,154,61,.12);
  --text:#e9edf5; --text-secondary:#a8b3c7; --text-tertiary:#71809a;
  --border:rgba(255,255,255,.07); --border-strong:rgba(255,255,255,.13);
  /* 主色：琥珀金（工程造价/商务/政企感） */
  --primary:#d99a3d; --primary-dark:#b87e2c; --primary-light:rgba(217,154,61,.16); --primary-soft:rgba(217,154,61,.10);
  /* 三档暖金（用于头像/图标渐变，克制不花哨） */
  --flow1:#d99a3d; --flow2:#e7b764; --flow3:#c8892f;
  --grad:linear-gradient(135deg,#d99a3d,#e7b764);
  --grad-soft:linear-gradient(135deg,rgba(217,154,61,.16),rgba(231,183,100,.10));
  --success:#3eae7d; --warning:#d99a3d; --danger:#e0575c; --info:#4a8fd4;
  --shadow:0 1px 3px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.32);
  --radius:12px; --radius-sm:8px; --radius-lg:16px;
  --bg-tertiary:rgba(255,255,255,.04);
  --hover-bg:rgba(255,255,255,.05);
  --active-bg:var(--grad); --active-fg:#1a1408;
  --glass:rgba(21,30,48,.72); --glass-strong:rgba(17,25,41,.92);
  --shadow-glow:0 8px 24px rgba(217,154,61,.18);
  --input-bg:rgba(255,255,255,.035);
  --on-glass:#e9edf5;
  /* 设计工程 · 强缓动 */
  --ease-out:cubic-bezier(0.23,1,0.32,1);
  --dur-ui:180ms; --dur-press:120ms;
  --accent:#e7b764; /* 点缀强调：暖金 */
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;font-size:14px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{overflow:hidden;background-image:var(--bg-grad);background-attachment:fixed}
button{font-family:inherit}
#appView{display:flex;height:100vh}

/* 登录页 */
#authView{position:fixed;inset:0;display:flex;background:var(--bg);background-image:var(--bg-grad);color:var(--text);z-index:50}
.auth-wrap{display:flex;width:100%;height:100%}
.auth-left{width:58%;display:flex;flex-direction:column;padding:32px 44px;background:linear-gradient(160deg,#0c1019,#080a11);position:relative}
.auth-left::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 20% 30%,rgba(217,154,61,.14),transparent 42%),radial-gradient(circle at 80% 70%,rgba(231,183,100,.08),transparent 42%);pointer-events:none}
.auth-left-top{position:relative;z-index:1}
.auth-platform-brand{display:flex;align-items:center;gap:12px}
.auth-logo-icon{width:38px;height:38px;border-radius:12px;object-fit:cover;box-shadow:0 4px 16px rgba(217,154,61,.35);border:1px solid rgba(217,154,61,.3)}
.auth-logo-title{font-size:15px;font-weight:700;color:var(--text)}
.auth-left-content{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;justify-content:center;max-width:740px;overflow-y:auto;padding:20px 0}
.auth-avatar-wrap{margin-bottom:18px}
.auth-big-avatar{width:78px;height:78px;border-radius:50%;object-fit:cover;border:3px solid rgba(217,154,61,.35);box-shadow:0 10px 38px rgba(217,154,61,.30)}
.auth-name{font-size:42px;font-weight:800;margin-bottom:14px;letter-spacing:-.8px;color:var(--text);background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.auth-bio{font-size:15px;color:var(--text-secondary);line-height:1.8;max-width:640px;margin-bottom:22px}
.auth-tags{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:26px}
.auth-tag{height:30px;padding:0 12px;border-radius:15px;background:var(--panel);border:1px solid var(--border);color:var(--text-secondary);font-size:12px;font-weight:500;display:flex;align-items:center;cursor:default;transition:.15s}
.auth-tag:hover{border-color:var(--primary);color:var(--primary)}
.auth-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:28px}
.auth-stat{background:var(--panel);border:1px solid transparent;background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad-soft) border-box;border-radius:var(--radius);padding:16px 14px;box-shadow:var(--shadow)}
.auth-stat-num{font-size:24px;font-weight:800;color:var(--text);margin-bottom:4px}
.auth-stat-label{font-size:12px;color:var(--text-tertiary);font-weight:500}
.auth-news{background:var(--panel);border:1px solid transparent;background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad-soft) border-box;border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.auth-news-title{font-size:13px;font-weight:700;color:var(--text);margin-bottom:12px}
.auth-news-list{display:flex;flex-direction:column;gap:12px}
.auth-news-item{display:flex;gap:12px;align-items:flex-start}
.auth-news-dot{width:6px;height:6px;border-radius:50%;background:var(--primary);margin-top:7px;flex-shrink:0;box-shadow:0 0 8px var(--primary)}
.auth-news-head{font-size:13px;color:var(--text);line-height:1.5;margin-bottom:3px;font-weight:500}
.auth-news-meta{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--text-tertiary)}
.auth-news-tag{background:var(--bg-tertiary);color:var(--text-secondary);padding:2px 8px;border-radius:6px;font-weight:500}
.auth-left-footer{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;padding-top:18px;border-top:1px solid var(--border);font-size:12px;color:var(--text-tertiary)}
.auth-icp a{color:var(--text-tertiary);text-decoration:none;transition:color .2s}
.auth-icp a:hover{color:var(--text-secondary);text-decoration:underline}
.auth-https{display:flex;align-items:center;gap:6px;color:var(--success)}
.auth-https-dot{width:6px;height:6px;border-radius:50%;background:var(--success);box-shadow:0 0 8px var(--success)}
.auth-right{width:42%;display:flex;align-items:center;justify-content:center;background:transparent;padding:40px}
.auth-form-card{width:360px;background:var(--panel-solid);border:1px solid transparent;background:
    linear-gradient(var(--panel-solid),var(--panel-solid)) padding-box,
    var(--grad-soft) border-box;border-radius:var(--radius);padding:32px;box-shadow:var(--shadow)}
.auth-form-title{font-size:26px;font-weight:700;color:var(--text);margin-bottom:6px}
.auth-form-sub{font-size:14px;color:var(--text-tertiary);margin-bottom:28px}
.auth-error{color:var(--danger);font-size:12px;margin-bottom:14px;min-height:16px;font-weight:500}
.auth-field{margin-bottom:16px}
.auth-field label{display:block;font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:8px}
.auth-input{width:100%;height:46px;border:1px solid var(--border);border-radius:10px;padding:0 14px;font-size:14px;color:var(--text);background:var(--input-bg);outline:none;transition:.15s}
.auth-input:focus{border-color:var(--primary);background:rgba(217,154,61,.06);box-shadow:0 0 0 3px rgba(217,154,61,.12)}
.auth-input::placeholder{color:var(--text-tertiary)}
.auth-btn{width:100%;height:46px;border:none;background:var(--grad);color:#0a0d16;border-radius:10px;font-size:15px;font-weight:700;cursor:pointer;margin-top:8px;transition:.15s;box-shadow:0 6px 20px rgba(217,154,61,.32)}
.auth-btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.auth-secure{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:16px;font-size:12px;color:var(--success)}
.auth-secure-icon{width:16px;height:16px;border-radius:50%;background:rgba(52,211,153,.15);display:flex;align-items:center;justify-content:center;font-size:10px}
.auth-toggle{text-align:center;margin-top:18px;font-size:13px;color:var(--text-tertiary);cursor:pointer}
.auth-toggle span{color:var(--primary);font-weight:600}
.auth-toggle span:hover{text-decoration:underline}
@media(max-width:1024px){.auth-left{display:none}.auth-right{width:100%}}

/* Sidebar */
.sidebar{width:220px;background:var(--sidebar-bg);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);position:relative;z-index:1}
.sidebar::after{content:'';position:absolute;right:-1px;top:0;width:2px;height:100%;background:linear-gradient(180deg,var(--primary),transparent 70%);opacity:.35;z-index:2}
.brand{padding:16px 14px 12px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--border);position:relative;z-index:3}
.brand .avatar{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--flow1),var(--flow2));color:#0a0d16;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;box-shadow:0 4px 14px rgba(217,154,61,.35),0 0 0 1px rgba(255,255,255,.08) inset}
.brand-title{font-weight:700;font-size:15px;letter-spacing:-.2px}
.brand-sub{font-size:10px;color:var(--text-tertiary);letter-spacing:.4px}
.nav{flex:1;overflow-y:auto;padding:12px 12px;position:relative;z-index:3}
.nav-group{margin-bottom:18px}
.nav-group-title{font-size:10px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.8px;padding:0 10px 8px}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;margin:3px 0;border-radius:10px;cursor:pointer;color:var(--text-secondary);transition:background var(--dur-ui) var(--ease-out),color var(--dur-ui) var(--ease-out),box-shadow var(--dur-ui) var(--ease-out);position:relative;background:transparent}
.nav-item:active{transform:scale(.97)}
@media (hover:hover){
.nav-item:hover{background:linear-gradient(90deg,rgba(217,154,61,.10),rgba(231,183,100,.06));color:var(--text)}
.nav-item:hover::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:14px;border-radius:0 4px 4px 0;background:var(--grad-soft);opacity:.9}
}
.nav-item.active{background:linear-gradient(var(--panel),var(--panel)) padding-box,var(--grad) border-box;border:1px solid transparent;color:var(--text);font-weight:600;box-shadow:0 0 20px rgba(217,154,61,.18),var(--shadow)}
.nav-item.active::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:18px;border-radius:0 3px 3px 0;background:var(--primary)}
.nav-item.active .nav-count{background:linear-gradient(90deg,var(--flow1),var(--flow2));color:#1a1408;font-weight:700}
.nav-icon{width:22px;height:22px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0;transition:box-shadow .2s ease}
.nav-icon svg{width:14px;height:14px;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-item.active .nav-icon{box-shadow:0 0 0 1px rgba(217,154,61,.4) inset,0 0 8px rgba(217,154,61,.25)}
.nav-icon.blue{background:rgba(59,130,246,.14);color:#60a5fa}.nav-icon.orange{background:rgba(249,115,22,.14);color:#fb923c}
.nav-icon.green{background:rgba(34,197,94,.14);color:#4ade80}.nav-icon.purple{background:rgba(168,85,247,.14);color:#c084fc}
.nav-icon.red{background:rgba(239,68,68,.14);color:#f87171}.nav-icon.gray{background:rgba(255,255,255,.10);color:var(--text-tertiary)}
.nav-count{margin-left:auto;font-size:11px;font-weight:600;color:var(--text-tertiary);background:var(--bg-tertiary);padding:2px 8px;border-radius:10px;transition:background .2s ease,color .2s ease}
.nav-footer{padding:12px;border-top:1px solid var(--border);position:relative;z-index:3}
.user-card{background:var(--panel);border:1px solid transparent;background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad-soft) border-box;border-radius:var(--radius-sm);padding:9px 11px;display:flex;align-items:center;gap:10px;box-shadow:var(--shadow)}
.user-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--flow1),var(--flow3));display:flex;align-items:center;justify-content:center;font-size:12px;color:#0a0d16;font-weight:700}
.user-name{font-size:13px;font-weight:600;flex:1;color:var(--text)}
.btn-logout{border:none;background:transparent;color:var(--text-tertiary);cursor:pointer;font-size:13px;transition:color .15s}
.btn-logout:hover{color:var(--danger)}

/* Main */
.main{flex:1;display:flex;flex-direction:column;min-width:0;background:transparent}
.topbar{height:56px;background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 20px;gap:16px;z-index:10}
.search-box{flex:1;max-width:440px;position:relative}
.search-box input{width:100%;height:34px;border:1px solid var(--border);border-radius:17px;padding:0 14px 0 34px;font-size:13px;outline:none;background:var(--input-bg);color:var(--text);transition:border-color .2s,background .2s,box-shadow .2s}
.search-box input:focus{border-color:var(--primary);background:rgba(217,154,61,.06);box-shadow:0 0 0 3px rgba(217,154,61,.12)}
.search-box::before{content:"";position:absolute;left:12px;top:50%;transform:translateY(-50%);width:14px;height:14px;background:var(--text-tertiary);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='M21 21l-4.35-4.35'/%3E%3C/svg%3E") no-repeat center / contain;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='M21 21l-4.35-4.35'/%3E%3C/svg%3E") no-repeat center / contain}
.topbar-right{display:flex;align-items:center;gap:12px}
.status-pill{font-size:12px;font-weight:600;color:var(--text-secondary);background:var(--panel);border:1px solid var(--border);padding:5px 12px;border-radius:16px;display:flex;align-items:center;gap:6px}
.status-pill::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--success);box-shadow:0 0 8px var(--success)}
.btn-new-task{background:var(--grad);color:#0a0d16;border:none;height:34px;padding:0 16px;border-radius:17px;font-size:13px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:6px;box-shadow:0 4px 16px rgba(217,154,61,.32);transition:transform var(--dur-press) var(--ease-out),box-shadow var(--dur-ui) var(--ease-out),filter var(--dur-ui) var(--ease-out)}
.btn-new-task:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 6px 22px rgba(217,154,61,.40)}
.btn-new-task:active{transform:scale(.97)}

.modbar{height:46px;background:transparent;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:4px;padding:0 20px;overflow-x:auto}
.mod{height:30px;padding:0 14px;border-radius:15px;font-size:13px;font-weight:500;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;gap:6px;white-space:nowrap;transition:background var(--dur-ui) var(--ease-out),color var(--dur-ui) var(--ease-out)}
.mod svg{width:15px;height:15px;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.mod:hover{background:var(--hover-bg);color:var(--text)}
.mod.active{background:var(--grad);color:#0a0d16;box-shadow:0 3px 12px rgba(217,154,61,.30);font-weight:700}
.mod:active{transform:scale(.97)}
.mod-count{font-size:11px;opacity:.85;font-weight:600}

.content{flex:1;overflow-y:auto;padding:24px}
.page{max-width:1440px;margin:0 auto}

/* Hero —— 旋转流光描边 */
.hero{background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--radius);padding:22px 24px;margin-bottom:24px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.hero-left{flex:1;position:relative;z-index:1}
.hero-breadcrumb{font-size:12px;font-weight:600;color:var(--text-tertiary);margin-bottom:6px;display:flex;align-items:center;gap:6px}
.hero-title{font-size:24px;font-weight:700;margin-bottom:8px;letter-spacing:-.3px}
.hero-desc{font-size:14px;color:var(--text-secondary);max-width:680px;line-height:1.6}
.hero-actions{display:flex;gap:10px;flex-shrink:0;position:relative;z-index:1}
.btn-ghost{height:34px;padding:0 14px;border:1px solid var(--border);background:var(--panel);border-radius:var(--radius-sm);font-size:13px;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.btn-ghost:hover{border-color:var(--border-strong);color:var(--text);background:var(--hover-bg)}
.btn-primary{height:34px;padding:0 14px;border:none;background:var(--grad);color:#0a0d16;border-radius:var(--radius-sm);font-size:13px;font-weight:700;cursor:pointer;box-shadow:0 4px 16px rgba(217,154,61,.32);transition:transform var(--dur-press) var(--ease-out),box-shadow var(--dur-ui) var(--ease-out),filter var(--dur-ui) var(--ease-out)}
.btn-primary:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 6px 22px rgba(217,154,61,.40)}
.btn-primary:active{transform:scale(.97)}
.btn-danger{height:34px;padding:0 14px;border:1px solid rgba(245,113,113,.35);background:var(--panel);border-radius:var(--radius-sm);font-size:13px;font-weight:600;color:var(--danger);cursor:pointer;transition:background .15s,border-color .15s}
.btn-danger:hover{background:rgba(245,113,113,.10);border-color:rgba(245,113,113,.55)}

/* Stats —— 旋转流光描边 */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
.stat-card{background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.stat-label{font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:10px;position:relative;z-index:1}
.stat-value{font-size:30px;font-weight:800;margin-bottom:8px;letter-spacing:-.5px;position:relative;z-index:1;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.stat-meta{font-size:11px;font-weight:600;color:var(--text-tertiary);display:inline-flex;align-items:center;gap:4px;background:var(--bg-tertiary);padding:4px 10px;border-radius:12px;position:relative;z-index:1}

/* Filter */
.filter-bar{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:24px}
.filter-row{display:flex;align-items:center;gap:18px;margin-bottom:10px}
.filter-row:last-child{margin-bottom:0}
.filter-label{font-size:12px;font-weight:600;color:var(--text-tertiary);min-width:44px}
.filter-pills{display:flex;flex-wrap:wrap;gap:8px}
.pill{height:28px;padding:0 12px;border-radius:14px;font-size:12px;font-weight:600;color:var(--text-secondary);background:var(--bg-tertiary);border:1px solid transparent;cursor:pointer;display:flex;align-items:center;gap:5px;transition:background var(--dur-ui) var(--ease-out),color var(--dur-ui) var(--ease-out)}
.pill:hover{background:var(--hover-bg);color:var(--text)}
.pill.active{background:var(--grad);color:#0a0d16;box-shadow:0 3px 12px rgba(217,154,61,.30);font-weight:700}
.pill:active{transform:scale(.97)}
.pill-count{opacity:.85;font-weight:600}

/* Section */
.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.section-title{font-size:15px;font-weight:700;letter-spacing:-.2px}
.section-meta{font-size:12px;font-weight:600;color:var(--text-tertiary)}
.view-switch{display:flex;gap:4px;background:var(--bg-tertiary);padding:3px;border-radius:10px}
.view-btn{height:28px;padding:0 12px;border:1px solid transparent;background:transparent;border-radius:8px;font-size:12px;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:background .15s,color .15s}
.view-btn.active{background:var(--panel);color:var(--text);border-color:var(--border);box-shadow:0 1px 3px rgba(0,0,0,.18)}

/* Cards —— 渐变描边（border-box 双层背景） */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.task-card{background:var(--panel);border:1px solid transparent;background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad-soft) border-box;border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);cursor:pointer;transition:transform .2s,box-shadow .2s;position:relative;overflow:hidden}
.task-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow);background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad) border-box}
.task-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:transparent;z-index:1}
.task-card.status-风险::before{background:var(--danger)}
.task-card.status-进行中::before{background:var(--info)}
.task-card.status-已完成::before{background:var(--success)}
.task-card-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:12px;position:relative;z-index:1}
.task-title{font-size:14px;font-weight:700;line-height:1.45;flex:1;padding-right:10px;color:var(--text)}
.task-priority{font-size:11px;font-weight:700;padding:3px 8px;border-radius:10px}
.priority-P0{background:rgba(245,113,113,.15);color:#fca5a5}.priority-P1{background:rgba(249,146,34,.15);color:#fdba74}
.priority-P2{background:rgba(86,182,255,.15);color:#93c5fd}.priority-P3{background:rgba(255,255,255,.10);color:var(--text-secondary)}
.task-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;position:relative;z-index:1}
.tag{font-size:11px;font-weight:600;color:var(--text-secondary);background:var(--bg-tertiary);padding:3px 8px;border-radius:8px;border:1px solid var(--border)}
.task-desc{font-size:13px;color:var(--text-secondary);line-height:1.55;margin-bottom:14px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;position:relative;z-index:1}
.task-footer{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1}
.task-owner{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--text-secondary)}
.owner-avatar{width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,var(--flow1),var(--flow3));display:flex;align-items:center;justify-content:center;font-size:10px;color:#0a0d16;font-weight:700}
.task-due{font-size:11px;font-weight:600;color:var(--text-tertiary)}
.task-progress-wrap{margin-top:14px;position:relative;z-index:1}
.task-progress-bar{height:5px;background:var(--bg-tertiary);border-radius:3px;overflow:hidden}
.task-progress-fill{height:100%;background:var(--grad);border-radius:3px;box-shadow:0 0 10px rgba(217,154,61,.5)}
.task-progress-text{font-size:11px;font-weight:600;color:var(--text-tertiary);margin-top:6px;text-align:right}
.task-status-badge{position:absolute;top:18px;right:18px;width:8px;height:8px;border-radius:50%;box-shadow:0 0 8px currentColor;z-index:2}
.status-待办{background:#6b7280}.status-进行中{background:#56b6ff}.status-已完成{background:#34d399}.status-风险{background:#f56565}

/* Table */
.data-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.data-table th,.data-table td{padding:12px 16px;text-align:left;font-size:13px;border-bottom:1px solid var(--border)}
.data-table th{background:var(--bg-tertiary);color:var(--text-secondary);font-weight:700;font-size:12px}
.data-table tr:last-child td{border-bottom:none}
.data-table tr:hover td{background:var(--hover-bg)}
.data-table td{font-weight:600}

/* Board */
.board{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.board-col{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px;min-height:300px}
.board-col-title{font-size:13px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between}
.board-count{font-size:11px;font-weight:700;color:var(--text-tertiary);background:var(--bg-tertiary);padding:3px 8px;border-radius:10px}
.board-cards{display:flex;flex-direction:column;gap:10px}
.board-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.10);transition:transform .15s,box-shadow .15s,border-color .15s}
.board-card:hover{transform:translateY(-1px);box-shadow:var(--shadow);border-color:var(--border-strong)}

/* Asset / Skill / MCP cards */
.asset-card{background:var(--panel);border:1px solid transparent;background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad-soft) border-box;border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px;transition:transform .2s,box-shadow .2s}
.asset-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow);background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad) border-box}
.asset-header{display:flex;align-items:center;justify-content:space-between}
.asset-name{font-size:14px;font-weight:700}
.asset-type{font-size:11px;font-weight:700;padding:3px 9px;border-radius:10px;background:var(--bg-tertiary);color:var(--text-secondary)}
.asset-desc{font-size:13px;color:var(--text-secondary);line-height:1.55}
.asset-footer{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:600;color:var(--text-tertiary);border-top:1px solid var(--border);padding-top:12px;margin-top:auto}
.asset-actions{display:flex;gap:8px}

/* Console (chat) */
.console-wrap{display:grid;grid-template-columns:280px 1fr;gap:20px;height:calc(100vh - 200px)}
.skill-list{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px;overflow-y:auto}
.skill-item{padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;margin-bottom:8px;border:1px solid var(--border);transition:background .15s,border-color .15s}
.skill-item:hover{background:var(--hover-bg)}
.skill-item.active{background:var(--primary-soft);border-color:var(--primary)}
.skill-item-name{font-size:13px;font-weight:700}
.skill-item-desc{font-size:11px;font-weight:600;color:var(--text-tertiary);margin-top:2px}
.chat-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;box-shadow:var(--shadow)}
.chat-header{padding:14px 18px;border-bottom:1px solid var(--border);font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:space-between}
.chat-body{flex:1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:14px}
.msg{max-width:80%;padding:11px 15px;border-radius:14px;font-size:13px;font-weight:600;line-height:1.6;white-space:pre-wrap;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.msg-user{align-self:flex-end;background:var(--grad);color:#0a0d16}
.msg-ai{align-self:flex-start;background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text)}
.chat-input-area{padding:14px 18px;border-top:1px solid var(--border);display:flex;gap:10px}
.chat-input{flex:1;height:40px;border:1px solid var(--border);border-radius:20px;padding:0 16px;font-size:13px;outline:none;background:var(--input-bg);color:var(--text);transition:border-color .2s,background .2s,box-shadow .2s}
.chat-input:focus{border-color:var(--primary);background:rgba(217,154,61,.06);box-shadow:0 0 0 3px rgba(217,154,61,.12)}

/* Form */
.form-row{margin-bottom:18px}
.form-row label{display:block;font-size:12px;font-weight:700;color:var(--text-secondary);margin-bottom:8px}
.form-row input,.form-row textarea,.form-row select{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 13px;font-size:13px;font-weight:600;color:var(--text);outline:none;background:var(--input-bg);font-family:inherit;transition:border-color .2s,background .2s,box-shadow .2s}
.form-row input:focus,.form-row textarea:focus,.form-row select:focus{border-color:var(--primary);background:rgba(217,154,61,.06);box-shadow:0 0 0 3px rgba(217,154,61,.12)}
.form-row textarea{resize:vertical;min-height:80px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-hint{font-size:11px;font-weight:600;color:var(--text-tertiary);margin-top:6px}

/* Modal */
.modal{display:none;position:fixed;inset:0;z-index:100;align-items:center;justify-content:center}
.modal.open{display:flex}
.modal-backdrop{position:absolute;inset:0;background:rgba(3,6,16,.62);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.modal-content{position:relative;background:var(--panel-solid);border:1px solid transparent;background:
    linear-gradient(var(--panel-solid),var(--panel-solid)) padding-box,
    var(--grad-soft) border-box;border-radius:var(--radius);width:640px;max-width:92vw;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px rgba(0,0,0,.6);z-index:1}
.modal-header{padding:18px 22px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.modal-title{font-size:16px;font-weight:700}
.modal-close{width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:var(--panel);cursor:pointer;font-size:18px;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}
.modal-close:hover{background:var(--hover-bg);color:var(--text)}
.modal-body{padding:22px}
.modal-footer{padding:14px 22px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}
.info-box{border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:16px}
.info-box.blue{background:rgba(86,182,255,.10);border:1px solid rgba(86,182,255,.25)}
.info-box.orange{background:rgba(217,154,61,.10);border:1px solid rgba(217,154,61,.25)}
.info-box-title{font-size:12px;font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.info-box.blue .info-box-title{color:#93c5fd}
.info-box.orange .info-box-title{color:#e0b46a}
.info-box-text{font-size:13px;font-weight:600;color:var(--text-secondary);line-height:1.55;width:100%;border:none;background:transparent;padding:0;resize:vertical;min-height:48px;outline:none}

.empty{text-align:center;padding:60px 20px;color:var(--text-tertiary)}
.empty-icon{font-size:40px;margin-bottom:10px;opacity:.5}

::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}::-webkit-scrollbar-track{background:transparent}

@media(max-width:1200px){.stat-grid{grid-template-columns:repeat(2,1fr)}.console-wrap{grid-template-columns:1fr;height:auto}.board{grid-template-columns:repeat(2,1fr)}.auth-wrap{flex-direction:column}}
@media(max-width:768px){.sidebar{display:none}.stat-grid{grid-template-columns:1fr}.board{grid-template-columns:1fr}.card-grid{grid-template-columns:1fr}.auth-left{display:none}.auth-right{width:100%}}

/* MCP tool messages & cards */
.msg-tool{align-self:flex-start;background:var(--primary-soft);border:1px solid var(--primary-light);border-left:3px solid var(--primary);color:var(--text);max-width:92%;white-space:pre-wrap;padding:12px 14px;border-radius:var(--radius-sm)}
.msg-tool-head{font-size:12px;font-weight:700;color:var(--primary);margin-bottom:6px}
.mcp-tools{border-top:1px dashed var(--border);padding-top:10px;margin-top:4px}
.btn-ghost.active{background:var(--primary-soft);border-color:var(--primary-light);color:var(--primary);font-weight:700}

/* Projects (P1-P5 项目情况) */
.proj-card{background:var(--panel);border:1px solid transparent;background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad-soft) border-box;border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px;transition:transform .2s,box-shadow .2s;cursor:pointer}
.proj-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow);background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad) border-box}
.proj-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.proj-name{font-size:14px;font-weight:700;line-height:1.45}
.proj-status{font-size:11px;font-weight:700;padding:3px 9px;border-radius:10px;background:var(--bg-tertiary);color:var(--text-secondary);white-space:nowrap;flex-shrink:0}
.proj-no{font-size:11px;font-weight:600;color:var(--text-tertiary)}
.proj-progress-wrap{margin-top:2px}
.proj-progress-bar{height:5px;background:var(--bg-tertiary);border-radius:3px;overflow:hidden}
.proj-progress-fill{height:100%;background:var(--grad);border-radius:3px;box-shadow:0 0 10px rgba(217,154,61,.5)}
.proj-progress-text{font-size:11px;font-weight:600;color:var(--text-tertiary);margin-top:6px;text-align:right}
.proj-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding-top:10px;border-top:1px solid var(--border)}
.proj-meta > div{display:flex;flex-direction:column;gap:3px}
.proj-meta-l{font-size:11px;font-weight:600;color:var(--text-tertiary)}
.proj-meta-v{font-size:13px;font-weight:700;color:var(--text)}
.proj-foot{margin-top:2px;display:flex;justify-content:flex-end}

/* ===== 通用对话框（招投标/汇报录入弹窗） ===== */
.dialog-overlay{position:fixed;inset:0;background:rgba(3,6,16,.62);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}
.dialog-card{background:var(--panel-solid);border:1px solid transparent;background:
    linear-gradient(var(--panel-solid),var(--panel-solid)) padding-box,
    var(--grad-soft) border-box;border-radius:var(--radius);width:720px;max-width:94vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 24px 80px rgba(0,0,0,.6)}
.dialog-head{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;font-size:15px;font-weight:700}
.dialog-close{width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:var(--panel);cursor:pointer;font-size:18px;color:var(--text-secondary);line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}
.dialog-close:hover{background:var(--hover-bg);color:var(--text)}
.dialog-body{padding:20px;overflow-y:auto}
.dialog-body .form-row input,.dialog-body .form-row textarea,.dialog-body .form-row select{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 13px;font-size:13px;font-weight:600;color:var(--text);outline:none;background:var(--input-bg);font-family:inherit;transition:border-color .2s,background .2s,box-shadow .2s}
.dialog-body .form-row input:focus,.dialog-body .form-row textarea:focus,.dialog-body .form-row select:focus{border-color:var(--primary);background:rgba(217,154,61,.06);box-shadow:0 0 0 3px rgba(217,154,61,.12)}
.dialog-body textarea{resize:vertical;min-height:64px}

/* ===== 招投标资讯模块 ===== */
.bid-card{background:var(--panel);border:1px solid transparent;background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad-soft) border-box;border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px;transition:transform .2s,box-shadow .2s}
.bid-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-glow);background:
    linear-gradient(var(--panel),var(--panel)) padding-box,
    var(--grad) border-box}
.bid-top{display:flex;align-items:center;gap:8px}
.bid-stage{font-size:11px;font-weight:700;padding:3px 9px;border-radius:10px;color:#fff}
.stage-plan{background:#0ea5e9}.stage-pre{background:#6366f1}.stage-notice{background:#d97706}.stage-award{background:#10b981}
.bid-src{font-size:11px;font-weight:700;color:var(--text-secondary);background:var(--bg-tertiary);padding:3px 9px;border-radius:10px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.bid-src:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(0,0,0,.22)}
.bid-src.src-hubei_ggzy{background:rgba(86,182,255,.14);color:#93c5fd}.bid-src.src-hubei_gp{background:rgba(168,85,247,.14);color:#c4b5fd}
.bid-src.src-yichang_ggzy{background:rgba(52,211,153,.14);color:#86efac}.bid-src.src-qichen{background:rgba(56,189,248,.14);color:#7dd3fc}
.bid-src.src-hbjttz{background:rgba(214,124,255,.14);color:#e0a8ff}.bid-src.src-gov_purchase{background:rgba(99,102,241,.14);color:#a5b4fc}
.bid-star{margin-left:auto;font-size:16px;color:var(--text-tertiary);cursor:pointer;transition:color .15s,transform .15s}
.bid-star:hover{transform:scale(1.15)}
.bid-star.on{color:var(--primary)}
.bid-title{font-size:14px;font-weight:700;line-height:1.45}
.bid-meta{font-size:13px;font-weight:600;color:var(--text-secondary);line-height:1.55}
.bid-tags{display:flex;flex-wrap:wrap;gap:6px}
.bid-link a{font-size:12px;font-weight:700;color:var(--primary);text-decoration:none}
.bid-link a:hover{text-decoration:underline}
.bid-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.bid-actions .btn-ghost{height:28px;padding:0 10px;font-size:12px}
.bid-actions .btn-danger{height:28px;padding:0 10px;font-size:12px}
.bid-dist{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-top:14px}
.bid-dist-title{font-size:12px;font-weight:700;color:var(--text-tertiary);margin-bottom:10px}
.bid-dist-items{display:flex;flex-wrap:wrap;gap:10px}
.bid-dist-item{display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--bg-tertiary);border:1px solid transparent;border-radius:var(--radius-sm);padding:8px 14px;min-width:64px}
.bid-dist-item span{font-size:11px;font-weight:600;color:var(--text-tertiary)}
.bid-dist-item b{font-size:18px;font-weight:700;color:var(--text)}
.bid-dist-item.clickable{cursor:pointer;transition:transform .15s,border-color .15s,background .15s}
.bid-dist-item.clickable:hover{transform:translateY(-2px);border-color:var(--primary)}
.bid-dist-item.active{background:var(--primary-soft);border:1px solid var(--primary);box-shadow:0 4px 16px rgba(217,154,61,.22)}
.bid-dist-item.active span{color:var(--primary)}
.bid-dist-item.active b{color:var(--primary)}
.filter-active{margin:10px 2px 0;font-size:12px;font-weight:600;color:var(--text-secondary);display:flex;align-items:center;gap:6px}
.filter-active b{color:var(--primary)}
.filter-clear{margin-left:4px;cursor:pointer;color:var(--danger);font-weight:700;padding:2px 8px;border-radius:10px;background:rgba(245,113,113,.10);transition:background .15s}
.filter-clear:hover{background:rgba(245,113,113,.20)}
.form-grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* ===== 工作汇报模块 ===== */
.report-task-list{margin:0;padding-left:18px;font-size:12px;font-weight:600;color:var(--text-secondary);line-height:1.9}
.report-task-list li{margin-bottom:2px}
.report-4col{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.report-col{display:flex;flex-direction:column;gap:8px}
.report-col-title{font-size:13px;font-weight:700;color:var(--text-secondary);padding:6px 10px;background:var(--bg-tertiary);border-radius:var(--radius-sm);text-align:center}
.report-col textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px;font-size:13px;font-weight:600;line-height:1.6;color:var(--text);outline:none;resize:vertical;background:var(--input-bg);font-family:inherit;transition:border-color .2s,background .2s,box-shadow .2s}
.report-col textarea:focus{border-color:var(--primary);background:rgba(217,154,61,.06);box-shadow:0 0 0 3px rgba(217,154,61,.12)}

@media(max-width:1200px){.report-4col{grid-template-columns:repeat(2,1fr)}.form-grid2{grid-template-columns:1fr}}
@media(max-width:768px){.report-4col{grid-template-columns:1fr}}

/* ===================== 主题覆盖 ===================== */
/* 极简晨光（浅色） */
html[data-theme="light"]{
  --bg:#f4f5f7;
  --bg-grad:linear-gradient(135deg,#f4f5f7,#eef0f4);
  --panel:#fff; --panel-solid:#f9fafb;
  --sidebar-bg:#eceef2; --sidebar-active:rgba(217,119,6,.12);
  --text:#1f2329; --text-secondary:#4a4f58; --text-tertiary:#8a909c;
  --border:#e4e6eb; --border-strong:#d1d5db;
  --primary:#d97706; --primary-dark:#b45309; --primary-light:rgba(217,119,6,.12); --primary-soft:rgba(217,119,6,.08);
  --flow1:#f59e0b; --flow2:#d97706; --flow3:#0ea5e9;
  --grad:linear-gradient(120deg,#f59e0b,#d97706,#0ea5e9);
  --grad-soft:linear-gradient(120deg,rgba(245,158,11,.18),rgba(217,119,6,.10),rgba(14,165,233,.12));
  --hover-bg:#eef0f3;
  --active-bg:var(--grad); --active-fg:#fff;
  --glass:rgba(255,255,255,.7); --glass-strong:#fff;
  --shadow:0 1px 3px rgba(0,0,0,.06),0 4px 16px rgba(0,0,0,.08);
  --shadow-glow:0 8px 24px rgba(217,119,6,.16);
  --bg-tertiary:#f3f4f6; --input-bg:#fff; --on-glass:#1f2329;
}
html[data-theme="light"] .auth-left{background:linear-gradient(160deg,#f9fafb,#f4f5f7)}
html[data-theme="light"] .priority-P0{color:#b91c1c}html[data-theme="light"] .priority-P1{color:#c2410c}
html[data-theme="light"] .priority-P2{color:#1d4ed8}html[data-theme="light"] .priority-P3{color:#4b5563}
html[data-theme="light"] .info-box.blue .info-box-title{color:#2563eb}html[data-theme="light"] .info-box.orange .info-box-title{color:#b45309}
html[data-theme="light"] .task-card.status-风险::before,html[data-theme="light"] .task-card.status-进行中::before,html[data-theme="light"] .task-card.status-已完成::before{opacity:.6}
html[data-theme="light"] .search-box::before{background:var(--text-tertiary)}
html[data-theme="light"] .stat-value{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
/* 科技深蓝 */
html[data-theme="tech-blue"]{
  --bg:#061226;
  --bg-grad:radial-gradient(circle at 20% 15%,rgba(56,189,248,.12),transparent 42%),radial-gradient(circle at 80% 85%,rgba(99,102,241,.08),transparent 42%),linear-gradient(135deg,#061226,#0a1c3a);
  --panel:rgba(13,28,54,.72); --panel-solid:#0a1730;
  --sidebar-bg:rgba(255,255,255,.04); --sidebar-active:rgba(56,189,248,.16);
  --text:#e6f0ff; --text-secondary:#9bb4d4; --text-tertiary:#5f7aa0;
  --border:rgba(120,170,255,.14); --border-strong:rgba(120,170,255,.26);
  --primary:#38bdf8; --primary-dark:#0ea5e9; --primary-light:rgba(56,189,248,.16); --primary-soft:rgba(56,189,248,.10);
  --flow1:#38bdf8; --flow2:#6366f1; --flow3:#22d3ee;
  --grad:linear-gradient(120deg,#38bdf8,#6366f1,#22d3ee);
  --grad-soft:linear-gradient(120deg,rgba(56,189,248,.18),rgba(99,102,241,.12),rgba(34,211,238,.14));
  --hover-bg:rgba(255,255,255,.06);
  --active-bg:var(--grad); --active-fg:#061226;
  --glass:rgba(255,255,255,.05); --glass-strong:rgba(255,255,255,.09);
  --shadow:0 4px 16px rgba(0,0,0,.45);
  --shadow-glow:0 8px 30px rgba(56,189,248,.22);
  --bg-tertiary:rgba(255,255,255,.06); --input-bg:rgba(255,255,255,.05); --on-glass:#e6f0ff;
}
/* 中国红 */
html[data-theme="china-red"]{
  --bg:#1a0a0a;
  --bg-grad:radial-gradient(circle at 20% 20%,rgba(239,68,68,.10),transparent 42%),radial-gradient(circle at 85% 80%,rgba(249,115,22,.08),transparent 42%),linear-gradient(135deg,#1a0a0a,#240d0d);
  --panel:rgba(40,16,16,.72); --panel-solid:#1c0d0d;
  --sidebar-bg:rgba(255,255,255,.04); --sidebar-active:rgba(239,68,68,.16);
  --text:#fdecec; --text-secondary:#e0a9a9; --text-tertiary:#a86b6b;
  --border:rgba(255,160,160,.14); --border-strong:rgba(255,160,160,.26);
  --primary:#ef4444; --primary-dark:#dc2626; --primary-light:rgba(239,68,68,.16); --primary-soft:rgba(239,68,68,.10);
  --flow1:#ef4444; --flow2:#f97316; --flow3:#ec4899;
  --grad:linear-gradient(120deg,#ef4444,#f97316,#ec4899);
  --grad-soft:linear-gradient(120deg,rgba(239,68,68,.18),rgba(249,115,22,.12),rgba(236,72,153,.14));
  --hover-bg:rgba(255,255,255,.06);
  --active-bg:var(--grad); --active-fg:#fff;
  --glass:rgba(255,255,255,.05); --glass-strong:rgba(255,255,255,.09);
  --shadow:0 4px 16px rgba(0,0,0,.45);
  --shadow-glow:0 8px 30px rgba(239,68,68,.20);
  --bg-tertiary:rgba(255,255,255,.06); --input-bg:rgba(255,255,255,.05); --on-glass:#fdecec;
}
/* 青翠 */
html[data-theme="emerald"]{
  --bg:#06140f;
  --bg-grad:radial-gradient(circle at 20% 20%,rgba(16,185,129,.10),transparent 42%),radial-gradient(circle at 85% 80%,rgba(34,211,238,.06),transparent 42%),linear-gradient(135deg,#06140f,#0a1f17);
  --panel:rgba(13,33,26,.72); --panel-solid:#0a1c15;
  --sidebar-bg:rgba(255,255,255,.04); --sidebar-active:rgba(16,185,129,.16);
  --text:#e6f7f0; --text-secondary:#9fd3bf; --text-tertiary:#5f9b86;
  --border:rgba(120,230,190,.14); --border-strong:rgba(120,230,190,.26);
  --primary:#10b981; --primary-dark:#059669; --primary-light:rgba(16,185,129,.16); --primary-soft:rgba(16,185,129,.10);
  --flow1:#10b981; --flow2:#34d399; --flow3:#22d3ee;
  --grad:linear-gradient(120deg,#10b981,#34d399,#22d3ee);
  --grad-soft:linear-gradient(120deg,rgba(16,185,129,.18),rgba(52,211,153,.12),rgba(34,211,238,.14));
  --hover-bg:rgba(255,255,255,.06);
  --active-bg:var(--grad); --active-fg:#06140f;
  --glass:rgba(255,255,255,.05); --glass-strong:rgba(255,255,255,.09);
  --shadow:0 4px 16px rgba(0,0,0,.45);
  --shadow-glow:0 8px 30px rgba(16,185,129,.20);
  --bg-tertiary:rgba(255,255,255,.06); --input-bg:rgba(255,255,255,.05); --on-glass:#e6f7f0;
}

/* 主题切换器 */
.theme-switch{display:flex;align-items:center;gap:7px;padding:3px 10px;border-radius:18px;background:var(--hover-bg);border:1px solid var(--border)}
.theme-dot{width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:transform .15s,border-color .15s;position:relative}
.theme-dot:hover{transform:scale(1.18)}
.theme-dot.active{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,.35)}
.theme-dot[data-theme="dark"]{background:linear-gradient(135deg,#d99a3d,#e7b764)}
.theme-dot[data-theme="light"]{background:linear-gradient(135deg,#f4f5f7,#d1d5db)}
.theme-dot[data-theme="tech-blue"]{background:linear-gradient(135deg,#38bdf8,#6366f1,#22d3ee)}
.theme-dot[data-theme="china-red"]{background:linear-gradient(135deg,#ef4444,#f97316,#ec4899)}
.theme-dot[data-theme="emerald"]{background:linear-gradient(135deg,#10b981,#34d399,#22d3ee)}
.theme-switch-inline{margin-top:4px}
.theme-list{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.theme-opt{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;border:1px solid var(--border);background:var(--panel);cursor:pointer;transition:border-color .15s,background .15s}
.theme-opt:hover{border-color:var(--border-strong);background:var(--hover-bg)}
.theme-opt.active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}
.theme-opt .theme-dot{margin:0;flex:0 0 auto}
.theme-meta{display:flex;flex-direction:column;line-height:1.35}
.theme-name{font-size:13px;font-weight:700;color:var(--text)}
.theme-desc{font-size:11px;color:var(--text-tertiary)}

/* 交换机配置工具：内嵌进工作台 */
.switchtool-frame-wrap{height:calc(100vh - 210px);min-height:480px;margin-top:4px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border-strong);background:var(--bg);}
.switchtool-frame{width:100%;height:100%;border:none;display:block;}

/* 工作台驾驶舱专用 —— 旋转流光描边 */
.dash-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}
.dash-card{background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.dash-card .task-title{font-size:15px;font-weight:700;margin-bottom:14px;position:relative;z-index:1}
.dash-list{display:flex;flex-direction:column;gap:12px;position:relative;z-index:1}

/* 通用辅助 */
.text-primary{color:var(--primary)}
.text-secondary{color:var(--text-secondary)}
.text-tertiary{color:var(--text-tertiary)}
.text-success{color:var(--success)}
.text-danger{color:var(--danger)}

/* ===================== 无障碍：减少动态效果 ===================== */
/* 眩晕/偏好减少动效的用户：关闭流光旋转与脉冲，保留静态渐变描边（不报错） */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* ===== 投标资源库 · IMA ===== */
.ima-layout{display:flex;gap:16px;align-items:flex-start}
.ima-side{width:240px;flex-shrink:0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px}
.ima-side-title{font-size:12px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.6px;margin-bottom:10px}
.ima-kb-list{display:flex;flex-direction:column;gap:6px}
.ima-kb{padding:10px 12px;border-radius:10px;cursor:pointer;color:var(--text-secondary);font-size:13px;font-weight:500;border:1px solid transparent;transition:background var(--dur-ui) var(--ease-out),color var(--dur-ui) var(--ease-out),border-color var(--dur-ui) var(--ease-out)}
.ima-kb:hover{background:var(--hover-bg);color:var(--text)}
.ima-kb.active{background:linear-gradient(var(--panel),var(--panel)) padding-box,var(--grad) border-box;border:1px solid transparent;color:var(--text);font-weight:600;box-shadow:0 0 16px rgba(217,154,61,.18)}
.ima-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px}
.ima-content{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px;min-height:200px;display:flex;flex-direction:column;gap:6px}
.ima-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;cursor:pointer;color:var(--text);font-size:13px;border:1px solid transparent;transition:background var(--dur-ui) var(--ease-out),border-color var(--dur-ui) var(--ease-out)}
.ima-item:hover{background:var(--hover-bg);border-color:var(--border)}
.ima-ic{font-size:14px;flex-shrink:0}
.ima-preview{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px;min-height:60px}
.ima-prev-title{font-size:14px;font-weight:600;margin-bottom:8px;color:var(--text)}
.ima-prev-meta{font-size:12px;color:var(--text-tertiary)}
.ima-note-box{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px;display:flex;flex-direction:column;gap:8px}
.ima-empty{color:var(--text-tertiary);font-size:13px;padding:18px 8px;text-align:center}

/* ===== 售前主管台 sale_board ===== */
.sale-handbox{margin-bottom:18px}
.sale-handbook-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px}
.sale-handbook-head{display:flex;align-items:center;gap:10px;cursor:pointer}
.sale-hb-ic{font-size:18px}
.sale-hb-title{font-size:15px;font-weight:700;color:var(--text)}
.sale-hb-sub{font-size:12px;color:var(--text-tertiary);margin-left:8px;flex:1}
.sale-hb-toggle{font-size:12px;color:var(--primary);white-space:nowrap}
.sale-alloc-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}
.sale-alloc{background:var(--hover-bg);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:2px}
.sale-alloc-k{font-size:18px;font-weight:700;color:var(--primary)}
.sale-alloc-v{font-size:12px;font-weight:600;color:var(--text)}
.sale-alloc-d{font-size:11px;color:var(--text-tertiary);line-height:1.4}
.sale-mantra-row{margin-top:10px;font-size:12px;color:var(--text-secondary);display:flex;flex-wrap:wrap;gap:6px}
.sale-mantra{background:var(--hover-bg);padding:3px 8px;border-radius:6px;color:var(--text)}
.sale-hb-full{margin-top:14px;border-top:1px dashed var(--border);padding-top:12px}
.sale-hb-sec{margin-bottom:14px}
.sale-hb-sec-t{font-size:13px;font-weight:700;color:var(--primary);margin-bottom:6px}
.sale-hb-ol{margin:0;padding-left:18px;font-size:12px;color:var(--text-secondary);line-height:1.8}
.sale-hb-ol b{color:var(--text)}
.sale-hb-tbl{width:100%;border-collapse:collapse;font-size:12px}
.sale-hb-tbl th{background:var(--hover-bg);color:var(--text);font-weight:600;padding:6px 8px;text-align:left;border:1px solid var(--border)}
.sale-hb-tbl td{padding:6px 8px;border:1px solid var(--border);color:var(--text-secondary)}
.sale-hb-tbl .sale-gate-k{font-weight:600;color:var(--text);white-space:nowrap}
.sale-hb-tbl .sale-gate-r{color:var(--danger,#e02424);font-weight:600}
.sale-hb-principle{margin-top:8px;padding:10px 12px;background:var(--hover-bg);border-left:3px solid var(--primary);border-radius:6px;font-size:12px;color:var(--text);font-weight:600}
.sale-sop-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}
.sale-sop-phase{background:var(--hover-bg);border:1px solid var(--border);border-radius:8px;padding:10px}
.sale-sop-phase-t{font-size:13px;font-weight:700;color:var(--primary);margin-bottom:6px}
.sale-sop-ul{margin:0;padding-left:16px;font-size:12px;color:var(--text-secondary);line-height:1.7}
.sale-sop-ul li{margin-bottom:4px}

.sale-stage-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
@media(max-width:1100px){.sale-stage-grid{grid-template-columns:repeat(3,1fr)}}
.sale-stage-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}
.sale-stage-card.sale-stage-blue{border-top:3px solid #1a56db}
.sale-stage-card.sale-stage-yellow{border-top:3px solid #ca8a04}
.sale-stage-card.sale-stage-red{border-top:3px solid #dc2626}
.sale-stage-card.sale-stage-green{border-top:3px solid #16a34a}
.sale-stage-head{display:flex;align-items:center;gap:6px;padding:10px 12px;background:var(--hover-bg)}
.sale-stage-ic{width:20px;height:20px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;font-weight:700}
.sale-stage-blue .sale-stage-ic{background:#1a56db}
.sale-stage-yellow .sale-stage-ic{background:#ca8a04}
.sale-stage-red .sale-stage-ic{background:#dc2626}
.sale-stage-green .sale-stage-ic{background:#16a34a}
.sale-stage-name{font-weight:600;color:var(--text);flex:1}
.sale-stage-cnt{font-size:13px;font-weight:700;color:var(--primary);background:var(--hover-bg);padding:1px 8px;border-radius:10px}
.sale-stage-body{padding:8px;display:flex;flex-direction:column;gap:6px;max-height:260px;overflow:auto}
.sale-more{font-size:11px;color:var(--text-tertiary);text-align:center;padding:4px}

.sale-lag{font-size:11px;padding:2px 6px;border-radius:4px;font-weight:600}
.sale-lag.red{background:#fee2e2;color:#dc2626}
.sale-lag.yellow{background:#fef9c3;color:#ca8a04}
.sale-alert-red{border-left:3px solid #dc2626}
.sale-alert-yellow{border-left:3px solid #ca8a04}
.sale-blocker{border-left:3px solid #dc2626}

.sale-workload-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.sale-wl-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px;text-align:center}
.sale-wl-name{font-size:13px;font-weight:600;color:var(--text);margin-bottom:4px}
.sale-wl-cnt{font-size:26px;font-weight:700;color:var(--primary);line-height:1}
.sale-wl-label{font-size:11px;color:var(--text-tertiary);margin-top:2px}

/* ===== 微信扫码登录 ===== */
.auth-btn-wx{background:linear-gradient(135deg,#09bb07,#07a305);color:#fff;border:none}
.auth-btn-wx:hover{filter:brightness(1.06)}
.btn-wechat-bind{width:100%;margin-top:8px;padding:7px 0;border-radius:10px;border:1px solid var(--border);background:var(--panel);color:var(--text);font-size:13px;cursor:pointer;transition:all .18s var(--ease-out, ease)}
.btn-wechat-bind:hover{border-color:#09bb07;color:#09bb07}
#wxBindPanel .auth-form-sub{font-size:13px;color:var(--text-tertiary);margin-bottom:8px}
