*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#f8f9fb;--surface:#ffffff;--surface-2:#f0f2f5;--surface-3:#e8ebef;
  --border:rgba(0,0,0,0.06);--border-strong:rgba(0,0,0,0.12);
  --text:#1a1a2e;--text-2:#5a5f6d;--text-3:#9ca3af;
  --green:#10b981;--green-soft:rgba(16,185,129,0.08);--green-soft2:rgba(16,185,129,0.16);--green-glow:rgba(16,185,129,0.25);
  --accent:#7c5cfc;--accent-soft:rgba(124,92,252,0.08);--accent-soft2:rgba(124,92,252,0.14);
  --coral:#f97316;--coral-soft:rgba(249,115,22,0.08);
  --amber:#eab308;--amber-soft:rgba(234,179,8,0.08);
  --red:#ef4444;--red-soft:rgba(239,68,68,0.08);
  --blue:#3b82f6;--blue-soft:rgba(59,130,246,0.08);
  --pink:#ec4899;--pink-soft:rgba(236,72,153,0.08);
  --radius:12px;--radius-lg:16px;--radius-xl:24px;
  --shadow-sm:0 1px 3px rgba(0,0,0,0.03);--shadow:0 4px 20px rgba(0,0,0,0.06);--shadow-lg:0 12px 40px rgba(0,0,0,0.08);
  --ease:cubic-bezier(.2,0,0,1);
  --font:'Inter','Noto Sans SC',system-ui,-apple-system,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --serif:'Noto Serif SC',serif
}
html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;overflow:hidden}
.dg2-layout{display:flex;height:100vh;width:100%;overflow:hidden}

/* ============ 侧边栏 ============ */
.dg2-sidebar{width:260px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}
.dg2-sidebar-header{padding:20px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}
.dg2-logo{width:36px;height:36px;border-radius:10px;background:var(--green);display:flex;align-items:center;justify-content:center;position:relative;box-shadow:0 2px 12px var(--green-glow);flex-shrink:0}
.dg2-logo .pixel-eyes{display:flex;gap:4px}
.dg2-logo .eye{width:4px;height:4px;background:#fff;border-radius:1px;transform:rotate(45deg)}
.dg2-brand-wrap{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.dg2-brand{font-size:16px;font-weight:700;color:var(--text)}
.dg2-brand-sub{font-size:11px;color:var(--text-3);font-weight:500;margin-top:2px}

.dg2-nav-scroll{flex:1;overflow-y:auto}
.dg2-nav-group{padding:8px 0}
.dg2-nav-group-title{font-size:11px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:0.5px;padding:6px 16px}
.dg2-nav-item{display:flex;align-items:center;gap:10px;padding:8px 16px;cursor:pointer;color:var(--text-2);transition:all .15s var(--ease);border-left:3px solid transparent}
.dg2-nav-item:hover{background:var(--surface-2);color:var(--text)}
.dg2-nav-item.active{background:var(--green-soft);color:var(--green);border-left-color:var(--green)}
.dg2-nav-item svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.dg2-nav-item span{font-size:13px;font-weight:500}
.dg2-nav-item span:not(.dg2-nav-tag){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.dg2-nav-tag{margin-left:auto;font-size:10px;font-weight:700;padding:2px 7px;border-radius:6px;letter-spacing:0.3px;flex-shrink:0}
.dg2-tag-s{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff;box-shadow:0 2px 6px rgba(245,158,11,0.3)}
.dg2-tag-a{background:rgba(249,115,22,0.12);color:var(--coral)}
.dg2-tag-b{background:var(--surface-3);color:var(--text-3)}

.dg2-sidebar-footer{margin-top:auto;padding:12px 16px;border-top:1px solid var(--border)}
.dg2-countdown{padding:14px;background:linear-gradient(135deg,rgba(239,68,68,0.06),rgba(249,115,22,0.06));border-radius:var(--radius);border:1px solid rgba(249,115,22,0.15)}
.dg2-cd-label{font-size:11px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:6px}
.dg2-cd-num{font-size:24px;font-weight:800;color:var(--coral);line-height:1;margin-bottom:10px}
.dg2-cd-num span{font-size:32px}
.dg2-cd-progress{height:6px;background:var(--surface-3);border-radius:3px;overflow:hidden;margin-bottom:6px}
.dg2-cd-bar{height:100%;background:linear-gradient(90deg,var(--green),#34d399);border-radius:3px;transition:width .4s var(--ease)}
.dg2-cd-meta{font-size:11px;color:var(--text-3);font-family:var(--mono)}

/* ============ 主区 ============ */
.dg2-main{flex:1;display:flex;flex-direction:column;min-width:0}
.dg2-topbar{height:52px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:12px;flex-shrink:0}
.dg2-topbar-title{font-size:15px;font-weight:700;color:var(--text);flex:1}
.dg2-topbar-meta{font-size:12px;color:var(--text-3);font-weight:500}
.dg2-action-btn{display:flex;align-items:center;gap:6px;padding:7px 16px;border-radius:8px;background:var(--green);color:#fff;border:none;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font);transition:all .15s var(--ease)}
.dg2-action-btn:hover{background:#0ea572}

.dg2-content{flex:1;overflow-y:auto;padding:24px 32px;background:var(--bg)}
.dg2-view{display:none;position:relative}
.dg2-view.active{display:block}

/* ============ 统一展示界面 ============ */
.dg2-ui{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:8px}

/* ============ 浮层容器 ============ */
.dg2-tip-container{position:fixed;top:0;left:0;width:0;height:0;z-index:100;pointer-events:none}

/* ============ 亮点浮层（可关闭，悬浮右上角） ============ */
.dg2-highlight-tip{
  position:fixed;top:80px;right:32px;z-index:100;
  max-width:340px;padding:14px 16px;pointer-events:auto;
  background:var(--surface);border:1px solid var(--green);
  border-radius:var(--radius);box-shadow:0 8px 32px rgba(16,185,129,0.15);
  border-left:4px solid var(--green);
  animation:dg2-tip-in .3s var(--ease);
}
.dg2-highlight-tip.closed{display:none}
.dg2-tip-close{
  position:absolute;top:8px;right:8px;width:24px;height:24px;
  border:none;background:transparent;color:var(--text-3);
  font-size:20px;cursor:pointer;line-height:1;padding:0;
  border-radius:6px;transition:all .15s var(--ease);
}
.dg2-tip-close:hover{background:var(--surface-2);color:var(--text)}
.dg2-tip-text{font-size:14px;color:var(--text-2);line-height:1.7;padding-right:12px;font-weight:500}
@keyframes dg2-tip-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}

/* 灯泡按钮（浮层关闭后显示） */
.dg2-tip-bulb{
  position:fixed;top:80px;right:32px;z-index:100;
  width:40px;height:40px;
  display:none;align-items:center;justify-content:center;
  background:var(--surface);border:1px solid var(--amber);
  border-radius:50%;font-size:20px;cursor:pointer;pointer-events:auto;
  box-shadow:0 4px 16px rgba(234,179,8,0.2);
  transition:all .2s var(--ease);
  animation:dg2-tip-in .3s var(--ease);
}
.dg2-tip-bulb:hover{transform:scale(1.1);box-shadow:0 6px 24px rgba(234,179,8,0.35)}
.dg2-tip-bulb.show{display:flex}

/* ============ section-label 标题 ============ */
.dg2-section-label{font-size:13px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:1px;margin:20px 0 12px;display:flex;align-items:center;gap:10px}
.dg2-section-label::after{content:'';flex:1;height:1px;background:var(--border)}
.dg2-section-label:first-child{margin-top:0}

/* ============ 北极星卡片（绿色渐变） ============ */
.dg2-northstar{margin-bottom:8px;padding:28px 32px;border-radius:var(--radius-xl);color:#fff;position:relative;overflow:hidden;background:linear-gradient(135deg,#10b981 0%,#34d399 50%,#6ee7b7 100%);box-shadow:0 4px 24px var(--green-glow)}
.dg2-northstar::before{content:'';position:absolute;top:-60px;right:-60px;width:180px;height:180px;border-radius:50%;background:rgba(255,255,255,0.07)}
.dg2-northstar::after{content:'';position:absolute;bottom:-70px;left:40px;width:120px;height:120px;border-radius:50%;background:rgba(255,255,255,0.04)}
.dg2-ns-label{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;opacity:0.8;margin-bottom:10px}
.dg2-ns-text{font-size:22px;font-weight:800;line-height:1.4;position:relative;margin-bottom:18px}
.dg2-ns-goals{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;position:relative;max-width:480px}
.dg2-ns-goal{text-align:left}
.dg2-ns-goal-value{font-size:20px;font-weight:800;line-height:1.2}
.dg2-ns-goal-label{font-size:12px;opacity:0.85;margin-top:4px}

/* ============ 统计卡片行（mainlines） ============ */
.dg2-mainlines{display:flex;gap:12px;flex-wrap:wrap}
.dg2-ml-card{flex:1;min-width:180px;padding:18px 20px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);transition:all .2s var(--ease);cursor:default}
.dg2-ml-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow);transform:translateY(-1px)}
.dg2-ml-icon{font-size:22px;margin-bottom:8px}
.dg2-ml-label{font-size:12px;color:var(--text-3);font-weight:600;text-transform:uppercase;letter-spacing:0.5px}
.dg2-ml-value{font-size:22px;font-weight:800;color:var(--text);margin-top:4px;line-height:1.2}
.dg2-ml-sub{font-size:12px;color:var(--text-2);margin-top:4px}
.dg2-ml-green{background:var(--green-soft);border-color:rgba(16,185,129,0.12)}
.dg2-ml-blue{background:var(--blue-soft);border-color:rgba(59,130,246,0.12)}
.dg2-ml-purple{background:var(--accent-soft);border-color:rgba(124,92,252,0.12)}
.dg2-ml-amber{background:var(--amber-soft);border-color:rgba(234,179,8,0.12)}
.dg2-ml-coral{background:var(--coral-soft);border-color:rgba(249,115,22,0.12)}

/* ============ 痛点 vs 解法卡片 ============ */
.dg2-pain-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.dg2-pain-card{padding:16px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.dg2-pc-coral{border-color:rgba(249,115,22,0.15);background:rgba(249,115,22,0.03)}
.dg2-pc-purple{border-color:rgba(124,92,252,0.15);background:rgba(124,92,252,0.03)}
.dg2-pc-amber{border-color:rgba(234,179,8,0.15);background:rgba(234,179,8,0.03)}
.dg2-pain-icon{font-size:28px}
.dg2-pain-from{font-size:13px;color:var(--text);font-weight:600;line-height:1.5}
.dg2-pain-from span{font-weight:400;color:var(--text-2);font-size:12px}
.dg2-pain-arrow{font-size:18px;color:var(--text-3)}
.dg2-pain-to{font-size:14px;font-weight:700;color:var(--green)}
.dg2-pain-desc{font-size:12px;color:var(--text-2);line-height:1.5}

/* ============ 数据流图 ============ */
.dg2-flow{padding:18px;background:var(--surface-2);border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;gap:8px}
.dg2-flow-step{font-size:13px;font-weight:600;color:var(--text);padding:8px 16px;background:var(--surface);border-radius:8px;border:1px solid var(--border)}
.dg2-flow-arrow{font-size:12px;color:var(--text-3);font-family:var(--mono)}
.dg2-flow-fs{padding:10px 16px;background:var(--green-soft);border:1px dashed rgba(16,185,129,0.3);border-radius:8px;font-size:13px;color:var(--green);font-weight:600;text-align:center}
.dg2-flow-stack{display:flex;flex-direction:column;gap:6px;width:100%;max-width:580px}
.dg2-flow-layer{padding:10px 14px;border-radius:8px;font-size:12px;color:var(--text);font-weight:500;line-height:1.5}
.dg2-layer-raw{background:var(--surface-3);border-left:3px solid var(--text-3)}
.dg2-layer-dreams{background:var(--blue-soft);border-left:3px solid var(--blue);color:var(--blue)}
.dg2-layer-memory{background:var(--green-soft);border-left:3px solid var(--green);color:var(--green)}
.dg2-flow-apps{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.dg2-flow-apps span{padding:4px 12px;background:var(--surface);border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--text-2);font-weight:600}

/* ============ 报纸排版 ============ */
.dg2-newspaper{background:#fbf9f4;padding:32px;border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow)}
.dg2-np-masthead{text-align:center;padding-bottom:12px;border-bottom:3px double #2a2a2a}
.dg2-np-brand{font-family:var(--serif);font-size:32px;font-weight:700;color:#1a1a2e;letter-spacing:1px}
.dg2-np-issue{font-size:12px;color:var(--text-2);margin-top:4px;font-family:var(--mono)}
.dg2-np-divider{height:1px;background:#2a2a2a;margin:14px 0;opacity:0.2}
.dg2-np-headline{text-align:center;padding:12px 0}
.dg2-np-h-kicker{font-size:12px;color:var(--coral);font-weight:700;letter-spacing:1px;text-transform:uppercase}
.dg2-np-h-title{font-family:var(--serif);font-size:28px;font-weight:700;color:#1a1a2e;margin:6px 0;line-height:1.2}
.dg2-np-h-sub{font-size:13px;color:var(--text-2);line-height:1.6;max-width:680px;margin:0 auto}
.dg2-np-hbar{margin-top:10px;height:10px;background:var(--surface-3);border-radius:5px;overflow:hidden;position:relative;max-width:400px;margin-left:auto;margin-right:auto}
.dg2-np-hbar-fill{height:100%;background:linear-gradient(90deg,var(--green),#34d399);border-radius:5px}
.dg2-np-hbar-text{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:11px;font-weight:700;color:var(--text)}
.dg2-np-cols{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.dg2-np-col-wide{grid-column:span 1}
.dg2-np-cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.dg2-np-col3{padding-right:12px;border-right:1px solid rgba(0,0,0,0.1)}
.dg2-np-col3:last-child{border-right:none;padding-right:0}
.dg2-np-st{font-family:var(--serif);font-size:15px;font-weight:700;color:#1a1a2e;margin-bottom:8px;padding-bottom:4px;border-bottom:2px solid #1a1a2e;display:inline-block}
.dg2-np-col p,.dg2-np-col3 p{font-size:13px;color:var(--text-2);line-height:1.7;margin-bottom:4px;font-family:var(--serif)}
.dg2-np-footer{text-align:center;padding-top:14px;border-top:1px solid rgba(0,0,0,0.1);font-size:11px;color:var(--text-3);font-style:italic;margin-top:14px}

/* ============ 看板（kanban） ============ */
.dg2-kanban{display:flex;gap:12px;overflow-x:auto;padding-bottom:8px}
.dg2-kanban-col{min-width:280px;max-width:340px;flex:1;background:var(--surface-2);border-radius:var(--radius);display:flex;flex-direction:column;border:1px solid var(--border)}
.dg2-kanban-col-header{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border)}
.dg2-kanban-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.dg2-kanban-col-title{font-size:13px;font-weight:700;color:var(--text);flex:1}
.dg2-kanban-col-count{font-size:12px;color:var(--text-3);font-family:var(--mono)}
.dg2-kanban-cards{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:8px;max-height:600px}
.dg2-kanban-card{padding:12px;border-radius:8px;background:var(--surface);border:1px solid var(--border);font-size:13px;transition:all .15s var(--ease)}
.dg2-kanban-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}
.dg2-kbc-p1{border-left:3px solid var(--red)}
.dg2-kbc-p2{border-left:3px solid var(--amber)}
.dg2-kbc-pulse{animation:dg2-pulse 2s infinite}
@keyframes dg2-pulse{0%{box-shadow:0 0 0 0 rgba(16,185,129,0.4)}70%{box-shadow:0 0 0 8px rgba(16,185,129,0)}100%{box-shadow:0 0 0 0 rgba(16,185,129,0)}}
.dg2-kc-row{display:flex;align-items:center;gap:6px;margin-bottom:6px;flex-wrap:wrap}
.dg2-kc-num{font-size:11px;font-family:var(--mono);color:var(--text-3);background:var(--surface-2);padding:2px 6px;border-radius:4px;font-weight:600}
.dg2-kc-pri{font-size:10px;padding:2px 7px;border-radius:4px;font-weight:700}
.dg2-kanban-card.dg2-kbc-p1 .dg2-kc-pri{background:var(--red-soft);color:var(--red)}
.dg2-kanban-card.dg2-kbc-p2 .dg2-kc-pri{background:var(--amber-soft);color:var(--amber)}
.dg2-kc-dispatch{margin-left:auto;padding:3px 10px;border-radius:6px;background:var(--green-soft);color:var(--green);border:1px solid rgba(16,185,129,0.2);font-size:11px;font-weight:600;cursor:pointer;font-family:var(--font);transition:all .15s var(--ease)}
.dg2-kc-dispatch:hover{background:rgba(16,185,129,0.15)}
.dg2-kc-name{font-size:13px;font-weight:600;color:var(--text);margin-bottom:4px}
.dg2-kc-meta{font-size:11px;color:var(--text-3);font-family:var(--mono);margin-bottom:8px}
.dg2-kc-subtasks{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}
.dg2-kc-task{font-size:12px;color:var(--text-2)}
.dg2-kc-task.done{color:var(--green)}
.dg2-kc-prog{height:5px;background:var(--surface-3);border-radius:3px;overflow:hidden;margin-bottom:6px}
.dg2-kc-prog-bar{height:100%;background:var(--green);border-radius:3px;transition:width .3s var(--ease)}
.dg2-kc-footer{font-size:11px;color:var(--text-3)}

/* ============ 任务卡详情 ============ */
.dg2-card-detail{padding:18px;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border)}
.dg2-cd-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.dg2-cd-num{font-size:12px;font-family:var(--mono);color:var(--text-3);background:var(--surface-3);padding:3px 8px;border-radius:5px}
.dg2-cd-name{font-size:15px;font-weight:700;color:var(--text);flex:1}
.dg2-dispatch-btn{padding:7px 14px;border-radius:8px;background:var(--coral);color:#fff;border:none;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--font);box-shadow:0 2px 8px rgba(249,115,22,0.3)}
.dg2-dispatch-btn:hover{background:#ea6a0c}
.dg2-cd-meta{font-size:12px;color:var(--text-3);margin-bottom:12px;font-family:var(--mono)}
.dg2-cd-subtasks{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.dg2-cd-task{font-size:13px;color:var(--text-2);padding:4px 0}
.dg2-cd-task.done{color:var(--green)}
.dg2-cd-prog{height:8px;background:var(--surface-3);border-radius:4px;overflow:hidden;margin-bottom:6px;position:relative}
.dg2-cd-prog-bar{height:100%;background:linear-gradient(90deg,var(--green),#34d399);border-radius:4px}
.dg2-cd-prog-text{position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:10px;font-weight:600;color:var(--text);padding-right:4px}
.dg2-cd-footer{font-size:12px;color:var(--text-3)}

/* ============ Tabs 切换栏 ============ */
.dg2-tabs{display:flex;gap:4px;padding:4px;background:var(--surface-2);border-radius:10px;width:fit-content;border:1px solid var(--border)}
.dg2-tab{padding:7px 14px;border-radius:7px;font-size:13px;font-weight:600;color:var(--text-3);cursor:pointer;transition:all .15s var(--ease);white-space:nowrap}
.dg2-tab:hover{color:var(--text-2)}
.dg2-tab.active{background:var(--surface);color:var(--green);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.dg2-tabs-stat{margin-left:auto;padding:7px 14px;font-size:12px;color:var(--text-3);font-family:var(--mono);align-self:center}
.dg2-tab-panel{display:none}
.dg2-tab-panel.active{display:block;animation:dg2-fade-in .2s var(--ease)}
@keyframes dg2-fade-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}

/* ============ 时间线列表 ============ */
.dg2-timeline-list{display:flex;flex-direction:column;gap:6px}
.dg2-tl-item{display:flex;gap:12px;padding:10px 14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);align-items:center}
.dg2-tl-item:hover{border-color:var(--border-strong)}
.dg2-tl-time{font-size:12px;color:var(--green);font-family:var(--mono);font-weight:600;min-width:60px;flex-shrink:0}
.dg2-tl-content{font-size:13px;color:var(--text-2);line-height:1.5}

/* ============ 记忆系统 ============ */
.dg2-memory-arch{margin-bottom:12px}
.dg2-mem-layer{display:flex;align-items:center;gap:14px;padding:14px 18px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface)}
.dg2-mem-raw{border-left:4px solid var(--text-3)}
.dg2-mem-dreams{border-left:4px solid var(--blue);background:var(--blue-soft)}
.dg2-mem-memory{border-left:4px solid var(--green);background:var(--green-soft)}
.dg2-mem-badge{font-size:11px;font-weight:700;color:#fff;padding:4px 10px;border-radius:6px;flex-shrink:0}
.dg2-mem-raw .dg2-mem-badge{background:var(--text-3)}
.dg2-mem-dreams .dg2-mem-badge{background:var(--blue)}
.dg2-mem-memory .dg2-mem-badge{background:var(--green)}
.dg2-mem-body{flex:1}
.dg2-mem-name{font-size:14px;font-weight:700;color:var(--text);margin-bottom:2px}
.dg2-mem-desc{font-size:12px;color:var(--text-2);line-height:1.5}
.dg2-mem-arrow{font-size:11px;color:var(--text-3);font-family:var(--mono);text-align:right;flex-shrink:0}

/* ============ 蒸馏记忆（Dreams）分节 ============ */
.dg2-dreams-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.dg2-dreams-sec{padding:14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface)}
.dg2-dreams-cog{border-left:3px solid var(--accent);background:var(--accent-soft)}
.dg2-dreams-act{border-left:3px solid var(--green);background:var(--green-soft)}
.dg2-dreams-dec{border-left:3px solid var(--amber);background:var(--amber-soft)}
.dg2-dreams-label{font-size:13px;font-weight:700;margin-bottom:8px}
.dg2-dreams-cog .dg2-dreams-label{color:var(--accent)}
.dg2-dreams-act .dg2-dreams-label{color:var(--green)}
.dg2-dreams-dec .dg2-dreams-label{color:var(--amber)}
.dg2-dreams-body{display:flex;flex-direction:column;gap:5px}
.dg2-dreams-body div{font-size:12px;color:var(--text-2);line-height:1.6}
.dg2-dreams-mood{margin-top:10px;padding:8px 14px;background:var(--surface-2);border-radius:8px;font-size:12px;color:var(--text-2)}

/* ============ 知识图谱节点网格 ============ */
.dg2-graph{display:flex;flex-wrap:wrap;gap:8px;padding:14px;background:var(--surface-2);border-radius:var(--radius)}
.dg2-graph-node{padding:6px 14px;background:var(--surface);border:1px solid var(--border);border-radius:16px;font-size:12px;color:var(--text-2);font-weight:500;transition:all .15s var(--ease)}
.dg2-graph-node:hover{border-color:var(--green);color:var(--green)}
.dg2-graph-center{background:var(--green);color:#fff;border-color:var(--green);font-weight:700;box-shadow:0 2px 8px var(--green-glow)}

/* ============ 日报周报头部 ============ */
.dg2-daily-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);margin-bottom:8px}
.dg2-dh-title{font-size:16px;font-weight:700;color:var(--text)}
.dg2-dh-streak{font-size:13px;font-weight:600;color:var(--coral);background:var(--coral-soft);padding:5px 12px;border-radius:14px}

/* ============ 待办列表 ============ */
.dg2-todo-list{display:flex;flex-direction:column;gap:6px}
.dg2-todo-item{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);font-size:13px}
.dg2-todo-p1{border-left:3px solid var(--red)}
.dg2-todo-p2{border-left:3px solid var(--amber)}
.dg2-todo-pri{font-size:11px;font-weight:700;padding:2px 8px;border-radius:4px;flex-shrink:0}
.dg2-todo-p1 .dg2-todo-pri{background:var(--red-soft);color:var(--red)}
.dg2-todo-p2 .dg2-todo-pri{background:var(--amber-soft);color:var(--amber)}
.dg2-todo-due{margin-left:auto;font-size:11px;color:var(--text-3);font-family:var(--mono)}

/* ============ 智能建议 ============ */
.dg2-suggest-list{display:flex;flex-direction:column;gap:6px}
.dg2-suggest-item{padding:10px 14px;border-radius:var(--radius);background:var(--amber-soft);border-left:3px solid var(--amber);font-size:13px;color:var(--text-2);line-height:1.6}
.dg2-suggest-item b{color:var(--text);font-weight:600}

/* ============ 财务迷你卡 ============ */
.dg2-fin-row{display:flex;gap:12px}
.dg2-fin-mini{flex:1;padding:14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);text-align:center}
.dg2-fin-mini-label{font-size:12px;color:var(--text-3);margin-bottom:4px}
.dg2-fin-mini-value{font-size:18px;font-weight:800;color:var(--text)}
.dg2-up{color:var(--coral)}

/* ============ 蒸馏元信息 ============ */
.dg2-distill-meta{display:flex;align-items:center;gap:14px;padding:16px 20px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}
.dg2-dm-icon{font-size:32px}
.dg2-dm-info{flex:1}
.dg2-dm-name{font-size:15px;font-weight:700;color:var(--text)}
.dg2-dm-sub{font-size:12px;color:var(--text-3);font-family:var(--mono);margin-top:2px}
.dg2-dm-eff{padding:10px 16px;background:var(--green-soft);border-radius:8px;text-align:center;border:1px solid rgba(16,185,129,0.2)}
.dg2-dm-eff-label{font-size:11px;color:var(--green);font-weight:600}
.dg2-dm-eff-value{font-size:20px;font-weight:800;color:var(--green);margin:2px 0}
.dg2-dm-eff-sub{font-size:10px;color:var(--text-3)}

/* ============ 蒸馏结果列表 ============ */
.dg2-distill-list{display:flex;flex-direction:column;gap:10px}
.dg2-distill-item{display:flex;gap:14px;padding:14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}
.dg2-distill-cog{border-left:3px solid var(--accent);background:var(--accent-soft)}
.dg2-distill-conc{border-left:3px solid var(--blue);background:var(--blue-soft)}
.dg2-distill-act{border-left:3px solid var(--green);background:var(--green-soft)}
.dg2-di-num{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;flex-shrink:0}
.dg2-distill-cog .dg2-di-num{background:var(--accent)}
.dg2-distill-conc .dg2-di-num{background:var(--blue)}
.dg2-distill-act .dg2-di-num{background:var(--green)}
.dg2-di-body{flex:1}
.dg2-di-title{font-size:14px;font-weight:700;color:var(--text);margin-bottom:4px}
.dg2-di-desc{font-size:12px;color:var(--text-2);line-height:1.6}
.dg2-distill-footer{display:flex;gap:16px;flex-wrap:wrap;padding:12px 16px;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);font-size:12px;color:var(--green);font-weight:600}

/* ============ Wiki 知识库 ============ */
.dg2-wiki-searchbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.dg2-wiki-searchbar input{flex:1;padding:8px 12px;border:1px solid var(--border);border-radius:8px;font-size:13px;font-family:var(--font);outline:none}
.dg2-wiki-searchbar input:focus{border-color:var(--green)}
.dg2-wiki-search-meta{font-size:12px;color:var(--text-3);font-family:var(--mono)}
.dg2-wiki-tabs{margin-top:0}
.dg2-wiki-list{display:flex;flex-direction:column;gap:8px}
.dg2-wiki-item{display:flex;gap:14px;padding:14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);transition:all .15s var(--ease)}
.dg2-wiki-item:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}
.dg2-wiki-icon{font-size:24px;flex-shrink:0}
.dg2-wiki-body{flex:1;min-width:0}
.dg2-wiki-name{font-size:14px;font-weight:600;color:var(--text);margin-bottom:3px}
.dg2-wiki-meta{font-size:11px;color:var(--text-3);font-family:var(--mono);margin-bottom:4px}
.dg2-wiki-desc{font-size:12px;color:var(--text-2);line-height:1.5}
.dg2-energy-bar{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.dg2-energy-label{font-size:12px;color:var(--text-2);font-weight:600;white-space:nowrap}
.dg2-energy-track{flex:1;height:10px;background:var(--surface-3);border-radius:5px;overflow:hidden}
.dg2-energy-fill{height:100%;background:linear-gradient(90deg,var(--amber),#fbbf24);border-radius:5px}
.dg2-energy-num{font-size:14px;font-weight:800;color:var(--amber)}

/* ============ 模板卡片 ============ */
.dg2-tpl-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.dg2-tpl-card{padding:16px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);transition:all .15s var(--ease);cursor:pointer}
.dg2-tpl-card:hover{border-color:var(--green);box-shadow:0 2px 12px var(--green-soft2);transform:translateY(-2px)}
.dg2-tpl-star{border-color:rgba(245,158,11,0.3);background:linear-gradient(135deg,rgba(245,158,11,0.04),rgba(251,191,36,0.04))}
.dg2-tpl-icon{font-size:26px;margin-bottom:8px}
.dg2-tpl-name{font-size:14px;font-weight:700;color:var(--text);margin-bottom:4px}
.dg2-tpl-desc{font-size:12px;color:var(--text-2);line-height:1.5;margin-bottom:10px}
.dg2-tpl-meta{display:flex;gap:8px;align-items:center}
.dg2-tpl-cat{font-size:10px;padding:2px 8px;border-radius:4px;background:var(--surface-2);color:var(--text-2);font-weight:600}
.dg2-tpl-use{font-size:11px;color:var(--text-3);font-family:var(--mono)}
.dg2-tpl-preview{padding:16px;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border)}
.dg2-tplp-code{font-family:var(--mono);font-size:12px;color:var(--text);line-height:1.7;background:var(--surface);padding:14px;border-radius:8px;border-left:3px solid var(--green);white-space:pre-wrap;overflow-x:auto}
.dg2-tplp-code b{color:var(--accent);font-weight:600}
.dg2-tplp-note{margin-top:10px;font-size:12px;color:var(--green);font-weight:500}

/* ============ 产出列表 ============ */
.dg2-output-list{display:flex;flex-direction:column;gap:12px}
.dg2-output-day{display:flex;flex-direction:column;gap:6px}
.dg2-output-day-head{font-size:12px;font-weight:700;color:var(--text-3);padding:6px 0;border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:0.5px}
.dg2-output-item{display:flex;gap:12px;align-items:center;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.dg2-output-item:hover{border-color:var(--border-strong)}
.dg2-output-icon{font-size:20px;flex-shrink:0}
.dg2-output-body{flex:1;min-width:0}
.dg2-output-name{font-size:13px;font-weight:600;color:var(--text)}
.dg2-output-meta{font-size:11px;color:var(--text-3);margin-top:2px}
.dg2-output-stats{display:flex;flex-direction:column;gap:8px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.dg2-output-stat{display:grid;grid-template-columns:110px 1fr 110px;align-items:center;gap:12px}
.dg2-output-stat-label{font-size:12px;color:var(--text-2);font-weight:600}
.dg2-output-stat-track{height:12px;background:var(--surface-3);border-radius:6px;overflow:hidden}
.dg2-output-stat-fill{height:100%;background:var(--green);border-radius:6px}
.dg2-fill-blue{background:var(--blue)}
.dg2-fill-purple{background:var(--accent)}
.dg2-fill-amber{background:var(--amber)}
.dg2-fill-gray{background:var(--text-3)}
.dg2-output-stat-num{font-size:11px;color:var(--text-3);font-family:var(--mono)}

/* ============ Agent 舰队 ============ */
.dg2-fleet-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.dg2-fleet-card{padding:18px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);text-align:center;transition:all .15s var(--ease)}
.dg2-fleet-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}
.dg2-fleet-green{border-top:3px solid var(--green)}
.dg2-fleet-blue{border-top:3px solid var(--blue)}
.dg2-fleet-purple{border-top:3px solid var(--accent)}
.dg2-fleet-amber{border-top:3px solid var(--amber)}
.dg2-fleet-icon{font-size:32px;margin-bottom:8px}
.dg2-fleet-name{font-size:14px;font-weight:700;color:var(--text);margin-bottom:6px}
.dg2-fleet-status{font-size:11px;padding:3px 10px;border-radius:10px;display:inline-block;font-weight:600}
.dg2-on{background:var(--green-soft);color:var(--green)}
.dg2-off{background:var(--surface-3);color:var(--text-3)}
.dg2-fleet-tasks{font-size:12px;color:var(--text-2);margin-top:6px;font-weight:600}
.dg2-fleet-skill{font-size:11px;color:var(--text-3);margin-top:6px;line-height:1.5}

/* ============ Agent 任务队列 ============ */
.dg2-queue-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.dg2-queue-col{padding:14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}
.dg2-queue-title{font-size:13px;font-weight:700;margin-bottom:10px}
.dg2-queue-running .dg2-queue-title{color:var(--green)}
.dg2-queue-waiting .dg2-queue-title{color:var(--amber)}
.dg2-queue-done .dg2-queue-title{color:var(--text-3)}
.dg2-queue-item{padding:10px;background:var(--surface-2);border-radius:8px;margin-bottom:6px}
.dg2-queue-item:last-child{margin-bottom:0}
.dg2-queue-name{font-size:12px;font-weight:600;color:var(--text);margin-bottom:4px}
.dg2-queue-agent{font-size:11px;color:var(--text-2);font-family:var(--mono);margin-bottom:4px}
.dg2-queue-prog{display:flex;align-items:center;gap:8px}
.dg2-queue-bar{flex:1;height:6px;background:var(--surface-3);border-radius:3px;overflow:hidden}
.dg2-queue-bar{height:6px;background:var(--surface-3);border-radius:3px;overflow:hidden;flex:1}
.dg2-queue-bar[style]{background:var(--surface-3)}
.dg2-queue-bar[style*="width"]{background:linear-gradient(90deg,var(--green),#34d399)}
.dg2-queue-prog span{font-size:11px;color:var(--text-3);font-family:var(--mono)}
.dg2-queue-pri{font-size:11px;font-weight:600}
.dg2-pri-high{color:var(--red)}
.dg2-pri-mid{color:var(--amber)}
.dg2-pri-low{color:var(--text-3)}
.dg2-queue-time{font-size:11px;color:var(--text-3);font-family:var(--mono)}

/* ============ 战略地图 ============ */
.dg2-stage-list{display:flex;flex-direction:column;gap:8px}
.dg2-stage-item{display:grid;grid-template-columns:100px 1fr 100px;align-items:center;gap:12px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.dg2-stage-active{border-left:3px solid var(--green);background:var(--green-soft)}
.dg2-stage-name{font-size:13px;font-weight:600;color:var(--text)}
.dg2-stage-bar{height:10px;background:var(--surface-3);border-radius:5px;overflow:hidden}
.dg2-stage-fill{height:100%;background:var(--green);border-radius:5px}
.dg2-stage-pct{font-size:12px;color:var(--text-3);font-family:var(--mono)}

.dg2-okr-list{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.dg2-okr-card{padding:14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}
.dg2-okr-head{font-size:13px;font-weight:700;color:var(--text);margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.dg2-kr-item{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:12px;color:var(--text-2)}
.dg2-kr-check{flex-shrink:0;width:16px;text-align:center}
.dg2-kr-check.done{color:var(--green)}
.dg2-kr-name{flex:1}
.dg2-kr-pct{font-size:11px;color:var(--text-3);font-family:var(--mono);font-weight:600}

.dg2-principle-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.dg2-principle-item{padding:12px 14px;border-radius:var(--radius);font-size:12px;color:var(--text-2);line-height:1.6}
.dg2-p-green{background:var(--green-soft);border-left:3px solid var(--green)}
.dg2-p-blue{background:var(--blue-soft);border-left:3px solid var(--blue)}
.dg2-p-amber{background:var(--amber-soft);border-left:3px solid var(--amber)}

.dg2-verify-list{display:flex;flex-direction:column;gap:6px}
.dg2-verify-item{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:12px}
.dg2-verify-hyp{color:var(--text-2)}
.dg2-verify-status{font-size:11px;font-weight:600;padding:3px 10px;border-radius:5px}
.dg2-v-done{background:var(--green-soft);color:var(--green)}
.dg2-v-pending{background:var(--amber-soft);color:var(--amber)}

/* ============ 财务看板 ============ */
.dg2-trend-chart{display:flex;flex-direction:column;gap:8px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.dg2-trend-bar{display:grid;grid-template-columns:60px 1fr 80px;align-items:center;gap:12px}
.dg2-trend-month{font-size:12px;color:var(--text-2);font-weight:600}
.dg2-trend-track{height:14px;background:var(--surface-3);border-radius:7px;overflow:hidden}
.dg2-trend-fill{height:100%;background:linear-gradient(90deg,var(--green),#34d399);border-radius:7px}
.dg2-trend-num{font-size:12px;color:var(--text-2);font-family:var(--mono)}
.dg2-trend-current .dg2-trend-fill{background:linear-gradient(90deg,var(--coral),#fb923c)}
.dg2-trend-current .dg2-trend-num{color:var(--coral);font-weight:700}

.dg2-scene-list{display:flex;flex-direction:column;gap:8px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}
.dg2-scene-bar{display:grid;grid-template-columns:120px 1fr 180px;align-items:center;gap:12px}
.dg2-scene-label{font-size:12px;color:var(--text-2);font-weight:600}
.dg2-scene-track{height:14px;background:var(--surface-3);border-radius:7px;overflow:hidden}
.dg2-scene-fill{height:100%;border-radius:7px}
.dg2-sf-coral{background:linear-gradient(90deg,var(--coral),#fb923c)}
.dg2-sf-blue{background:linear-gradient(90deg,var(--blue),#60a5fa)}
.dg2-sf-purple{background:linear-gradient(90deg,var(--accent),#a78bfa)}
.dg2-sf-green{background:linear-gradient(90deg,var(--green),#34d399)}
.dg2-sf-gray{background:var(--text-3)}
.dg2-scene-num{font-size:11px;color:var(--text-3);font-family:var(--mono)}

/* ============ 健康三维度 ============ */
.dg2-health-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.dg2-health-card{padding:18px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);text-align:center;transition:all .15s var(--ease)}
.dg2-health-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}
.dg2-h-sleep{border-top:3px solid var(--text-3)}
.dg2-h-fitness{border-top:3px solid var(--green)}
.dg2-h-focus{border-top:3px solid var(--accent)}
.dg2-h-icon{font-size:32px;margin-bottom:8px}
.dg2-h-name{font-size:13px;font-weight:600;color:var(--text-2);margin-bottom:8px}
.dg2-h-score{font-size:32px;font-weight:800;color:var(--text);margin-bottom:4px}
.dg2-h-unit{font-size:14px;color:var(--text-3);font-weight:500}
.dg2-h-detail{font-size:11px;color:var(--text-3);margin-bottom:4px}
.dg2-h-trend{font-size:12px;font-weight:600;margin-bottom:6px}
.dg2-trend-up{color:var(--green)}
.dg2-trend-down{color:var(--coral)}
.dg2-trend-flat{color:var(--text-3)}
.dg2-h-status{font-size:11px;padding:3px 10px;border-radius:10px;display:inline-block;font-weight:600}
.dg2-status-good{background:var(--green-soft);color:var(--green)}
.dg2-status-warn{background:var(--coral-soft);color:var(--coral)}

.dg2-insight-list{display:flex;flex-direction:column;gap:8px}
.dg2-insight-item{padding:12px 14px;border-radius:var(--radius);font-size:13px;color:var(--text-2);line-height:1.6}
.dg2-insight-warn{background:var(--coral-soft);border-left:3px solid var(--coral)}
.dg2-insight-good{background:var(--green-soft);border-left:3px solid var(--green)}
.dg2-insight-item b{color:var(--text);font-weight:600}

/* ============ 偏好设置 ============ */
.dg2-pref-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.dg2-pref-section{padding:16px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}
.dg2-pref-title{font-size:14px;font-weight:700;color:var(--text);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.dg2-pref-field{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.dg2-pref-field:last-child{margin-bottom:0}
.dg2-pref-field label{font-size:12px;color:var(--text-3);min-width:90px;flex-shrink:0}
.dg2-pref-field input{flex:1;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:12px;font-family:var(--font);background:var(--surface-2);color:var(--text)}
.dg2-pref-type{font-size:10px;color:var(--text-3);background:var(--surface-2);padding:2px 7px;border-radius:4px;font-family:var(--mono);font-weight:600;flex-shrink:0}
.dg2-pref-learn{background:var(--green-soft);padding:7px 10px;border-radius:6px;border-left:2px solid var(--green)}
.dg2-pref-learn-tag{font-size:10px;color:var(--green);font-weight:600;background:var(--surface);padding:2px 6px;border-radius:4px;flex-shrink:0}

/* ============ Toast 提示 ============ */
.dg2-toast{position:fixed;bottom:24px;right:24px;padding:12px 20px;background:var(--green);color:#fff;border-radius:var(--radius);font-size:13px;font-weight:600;opacity:0;transform:translateY(20px);transition:all .25s var(--ease);z-index:100;box-shadow:var(--shadow)}
.dg2-toast.show{opacity:1;transform:translateY(0)}

/* ============ 响应式 ============ */
@media (max-width:1100px){
  .dg2-pain-grid,.dg2-dreams-grid,.dg2-tpl-grid,.dg2-fleet-grid,.dg2-queue-grid,.dg2-okr-list,.dg2-principle-grid{grid-template-columns:1fr 1fr}
  .dg2-np-cols3{grid-template-columns:1fr 1fr}
  .dg2-np-cols,.dg2-fin-row{grid-template-columns:1fr}
}
@media (max-width:768px){
  .dg2-sidebar{width:220px}
  .dg2-pain-grid,.dg2-dreams-grid,.dg2-tpl-grid,.dg2-fleet-grid,.dg2-queue-grid,.dg2-okr-list,.dg2-principle-grid,.dg2-health-grid,.dg2-pref-grid,.dg2-np-cols3{grid-template-columns:1fr}
  .dg2-np-cols{grid-template-columns:1fr}
  .dg2-mainlines{flex-wrap:wrap}
  .dg2-ml-card{min-width:140px}
  .dg2-output-stat{grid-template-columns:80px 1fr 80px}
  .dg2-scene-bar{grid-template-columns:80px 1fr}
  .dg2-scene-num{grid-column:span 2}
}
