/* ============================================================================
   Porto Guará Intelligence Dashboard v2.0 — Styles
   ============================================================================
   Professional dark theme: Navy + Emerald + Glassmorphism
   Full bilingual UI · Charts · Visual effects · Overview command center
   ============================================================================ */

:root {
  --bg-primary: #09090f;
  --bg-secondary: #0f1019;
  --bg-card: #12131e;
  --bg-card-hover: #181a28;
  --bg-input: #1a1c2e;
  --bg-modal: rgba(0,0,0,0.88);
  --border: #1e2035;
  --border-light: #2a2d48;
  --text-primary: #e8e9f0;
  --text-secondary: #8b8fa8;
  --text-muted: #5a5e78;
  --accent: #00e5a0;
  --accent-dim: rgba(0,229,160,0.12);
  --accent-glow: rgba(0,229,160,0.35);
  --red: #ef4444;
  --red-dim: rgba(239,68,68,0.15);
  --orange: #f59e0b;
  --orange-dim: rgba(245,158,11,0.15);
  --yellow: #fbbf24;
  --yellow-dim: rgba(251,191,36,0.15);
  --blue: #3b82f6;
  --blue-dim: rgba(59,130,246,0.15);
  --purple: #8b5cf6;
  --purple-dim: rgba(139,92,246,0.15);
  --pink: #ec4899;
  --pink-dim: rgba(236,72,153,0.15);
  --cyan: #06b6d4;
  --cyan-dim: rgba(6,182,212,0.15);
  --teal: #14b8a6;
  --teal-dim: rgba(20,184,166,0.15);
  --warning: #f59e0b;
  --warning-dim: rgba(245,158,11,0.15);
  --danger: #ef4444;
  --danger-dim: rgba(239,68,68,0.15);
  --info: #3b82f6;
  --info-dim: rgba(59,130,246,0.15);
  --font-heading: 'Syne', sans-serif;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono: 'DM Mono', 'Fira Code', monospace;
  --font-cn: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --radius: 12px;
  --radius-sm: 8px;
  --radius-lg: 16px;
  --shadow: 0 4px 24px rgba(0,0,0,0.4);
  --shadow-lg: 0 8px 48px rgba(0,0,0,0.6);
  --glass: rgba(18,19,30,0.7);
  --glass-border: rgba(255,255,255,0.06);
  --transition: all 0.25s cubic-bezier(0.4,0,0.2,1);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:14px}
body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);min-height:100vh;overflow-x:hidden;line-height:1.6}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:var(--bg-secondary)}
::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}

/* ── Background Effects ──────────────────────────────────────────────── */
.bg-orb{position:fixed;border-radius:50%;filter:blur(140px);opacity:0.1;pointer-events:none;z-index:0}
.bg-orb-1{width:600px;height:600px;background:var(--accent);top:-200px;right:-200px;animation:float 20s ease-in-out infinite}
.bg-orb-2{width:400px;height:400px;background:var(--blue);bottom:-100px;left:-100px;animation:float 25s ease-in-out infinite reverse}
.bg-orb-3{width:300px;height:300px;background:var(--purple);top:50%;left:50%;transform:translate(-50%,-50%);animation:float 30s ease-in-out infinite}
.bg-grid{position:fixed;inset:0;background-image:radial-gradient(rgba(255,255,255,0.03) 1px,transparent 1px);background-size:32px 32px;pointer-events:none;z-index:0}
@keyframes float{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-30px) scale(1.05)}}

/* ══════════════════════════════════════════════════════════════════════
   LOGIN
   ══════════════════════════════════════════════════════════════════════ */
#loginScreen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);z-index:9999}
.login-card{background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:48px 40px;width:440px;max-width:95vw;box-shadow:var(--shadow-lg);position:relative;overflow:hidden}
.login-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--blue),var(--purple),var(--pink))}
.login-brand{text-align:center;margin-bottom:32px}
.login-brand h1{font-family:var(--font-heading);font-size:1.5rem;font-weight:700;letter-spacing:-0.5px}
.login-brand .brand-logo{height:48px;width:auto;margin-bottom:14px;display:block;margin-left:auto;margin-right:auto;filter:brightness(0) invert(1)}
.login-cn{color:var(--text-secondary);font-size:0.92rem;margin-top:4px}
.login-tagline{color:var(--text-muted);font-size:0.75rem;margin-top:6px;font-family:var(--font-mono);letter-spacing:0.5px}
.login-footer{display:flex;justify-content:space-between;margin-top:20px;font-size:0.7rem;color:var(--text-muted)}

.form-group{margin-bottom:18px}
.form-label{display:block;font-size:0.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.8px;margin-bottom:6px}
.form-input{width:100%;padding:11px 14px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-body);font-size:0.92rem;transition:var(--transition);outline:none}
.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.form-input::placeholder{color:var(--text-muted)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 22px;border:none;border-radius:var(--radius-sm);font-family:var(--font-body);font-size:0.88rem;font-weight:600;cursor:pointer;transition:var(--transition);outline:none}
.btn-primary{background:var(--accent);color:#09090f;width:100%}
.btn-primary:hover{background:#00cc8e;transform:translateY(-1px);box-shadow:0 4px 16px var(--accent-glow)}
.btn-glow{box-shadow:0 0 20px var(--accent-dim)}
.btn-accent{background:var(--accent-dim);color:var(--accent);border:1px solid rgba(0,229,160,0.25)}
.btn-accent:hover{background:rgba(0,229,160,0.2);border-color:var(--accent)}
.btn-secondary{background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border)}
.btn-secondary:hover{background:var(--bg-card-hover);border-color:var(--border-light)}
.btn-sm{padding:5px 12px;font-size:0.78rem}
.btn-danger{background:var(--red-dim);color:var(--red);border:1px solid transparent}
.btn-danger:hover{background:var(--red);color:white}
.btn-icon{padding:7px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:var(--transition);font-size:0.95rem;line-height:1}
.btn-icon:hover{background:var(--bg-card-hover);color:var(--text-primary);border-color:var(--border-light)}
.login-error{color:var(--red);font-size:0.8rem;text-align:center;margin-top:12px;display:none}

/* ══════════════════════════════════════════════════════════════════════
   HEADER
   ══════════════════════════════════════════════════════════════════════ */
#appHeader{position:sticky;top:0;z-index:100;background:rgba(9,9,15,0.9);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border);padding:0 20px}
.header-inner{max-width:1600px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:56px;gap:12px}
.header-brand{display:flex;align-items:center;gap:10px;flex-shrink:0}
.header-logo{height:26px;width:auto;filter:brightness(0) invert(1);opacity:0.95;flex-shrink:0}
.header-brand h2{font-family:var(--font-heading);font-size:1rem;font-weight:700;letter-spacing:-0.3px;white-space:nowrap}
.header-cn-title{font-size:0.85rem;color:var(--text-secondary);margin-left:6px}
.header-sub{font-size:0.65rem;color:var(--text-muted);font-family:var(--font-mono)}
.header-meta{display:flex;align-items:center;gap:12px;flex-wrap:nowrap}
.header-stat{display:flex;flex-direction:column;align-items:center;gap:1px;font-size:0.72rem}
.stat-label-bi{color:var(--text-muted);font-size:0.62rem;text-transform:uppercase;letter-spacing:0.3px}
.stat-value{color:var(--text-primary);font-weight:600;font-family:var(--font-mono);font-size:0.78rem}
.stat-countdown{color:var(--accent);font-size:1rem;font-weight:700}
.pulse-accent{color:var(--accent);animation:pulse-text 2s ease-in-out infinite}
@keyframes pulse-text{0%,100%{opacity:1}50%{opacity:0.7}}

.risk-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.4px;white-space:nowrap}
.risk-low{background:var(--accent-dim);color:var(--accent)}
.risk-medium{background:var(--orange-dim);color:var(--orange)}
.risk-high{background:var(--red-dim);color:var(--red)}
.risk-critical{background:var(--red);color:white}
.risk-pulse{width:6px;height:6px;border-radius:50%;background:currentColor;animation:risk-blink 1.5s ease-in-out infinite}
@keyframes risk-blink{0%,100%{opacity:1}50%{opacity:0.3}}

.header-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.header-left-group{display:flex;align-items:center;gap:10px;flex-shrink:0;min-width:0}
.mobile-menu-btn{display:none}
.sidebar-overlay{display:none}
.user-badge{display:flex;align-items:center;gap:6px;padding:3px 10px 3px 6px;background:var(--bg-card);border:1px solid var(--border);border-radius:20px;font-size:0.78rem}
.user-avatar{font-size:1rem}
.user-name{font-weight:600}

/* ══════════════════════════════════════════════════════════════════════
   SIDEBAR
   ══════════════════════════════════════════════════════════════════════ */
.app-layout{display:flex;max-width:1600px;margin:0 auto;min-height:calc(100vh - 56px)}
.sidebar{width:200px;min-width:200px;border-right:1px solid var(--border);padding:14px 10px;position:sticky;top:56px;height:calc(100vh - 56px);overflow-y:auto;display:flex;flex-direction:column}
.sidebar-title{font-size:0.62rem;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-muted);padding:6px 10px;margin-bottom:2px}
.sidebar-version{margin-top:auto;padding:12px 10px;font-size:0.62rem;color:var(--text-muted);font-family:var(--font-mono)}
.nav-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);font-size:0.82rem;color:var(--text-secondary);border:1px solid transparent;margin-bottom:1px}
.nav-item:hover{background:var(--bg-card);color:var(--text-primary)}
.nav-item.active{background:var(--accent-dim);color:var(--accent);border-color:rgba(0,229,160,0.2);font-weight:600}
.nav-icon{font-size:1rem;flex-shrink:0;width:22px;text-align:center}
.nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:0.78rem}

/* ══════════════════════════════════════════════════════════════════════
   MAIN CONTENT
   ══════════════════════════════════════════════════════════════════════ */
.main-content{flex:1;padding:20px 28px;min-width:0}
.module-panel{display:none}
.module-panel.active{display:block;animation:fadeIn 0.3s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

.module-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.module-title{display:flex;align-items:center;gap:10px}
.module-title .module-icon{font-size:1.4rem}
.module-title h3{font-family:var(--font-heading);font-size:0.82rem;font-weight:500;color:var(--text-muted);line-height:1.4}
.module-subtitle{font-size:0.78rem;color:var(--text-muted)}
.module-actions{display:flex;gap:6px}
.last-updated{font-size:0.68rem;color:var(--text-muted);font-family:var(--font-mono)}
.section-title{margin:20px 0 14px;font-family:var(--font-heading);font-size:0.95rem;color:var(--text-secondary)}

/* ══════════════════════════════════════════════════════════════════════
   OVERVIEW GRID (Executive Command Center)
   ══════════════════════════════════════════════════════════════════════ */
.overview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}
.ov-card{background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);border-radius:var(--radius);padding:16px;transition:var(--transition);position:relative;overflow:hidden}
.ov-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--accent),transparent);opacity:0.5}
.ov-card:hover{border-color:var(--border-light);transform:translateY(-2px);box-shadow:0 8px 32px rgba(0,0,0,0.3)}
.ov-header{font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-secondary);margin-bottom:12px;display:flex;align-items:center;gap:6px}
.ov-header span{font-size:0.85rem}

.card-vitals{grid-column:span 2}
.card-countdown{grid-column:span 1}
.card-risk-chart{grid-column:span 1}
.card-cat-chart{grid-column:span 1}
.card-kpi-wide{grid-column:span 3}
.card-parties{grid-column:span 2}
.card-regs{grid-column:span 1}
.card-protect{grid-column:span 1}
.card-timeline-wide{grid-column:span 4}

/* Vitals */
.vitals-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.vital{display:flex;flex-direction:column;gap:2px}
.v-label{font-size:0.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px}
.v-val{font-size:0.85rem;font-weight:600;color:var(--text-primary)}
.v-sub{font-size:0.72rem;color:var(--text-muted)}
.accent-text{color:var(--accent) !important}

/* DD Ring */
.ring-wrap{display:flex;align-items:center;justify-content:center;position:relative;margin:8px 0}
.progress-ring{width:110px;height:110px}
.ring-bg{fill:none;stroke:var(--border);stroke-width:6}
.ring-fill{fill:none;stroke:var(--accent);stroke-width:6;stroke-linecap:round;transition:stroke-dashoffset 1s ease;transform:rotate(-90deg);transform-origin:center}
.ring-center{position:absolute;text-align:center}
.ring-num{font-family:var(--font-mono);font-size:1.8rem;font-weight:700;color:var(--accent);line-height:1}
.ring-label{font-size:0.6rem;color:var(--text-muted);margin-top:2px;line-height:1.2}
.cd-meta{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}
.cd-meta div{display:flex;justify-content:space-between;font-size:0.68rem;color:var(--text-muted);padding:3px 0;border-bottom:1px solid var(--border)}
.cd-meta div span:last-child{font-weight:600}

/* Charts */
.chart-wrap-sm{height:130px;position:relative}
.chart-wrap-med{height:160px;position:relative}
.risk-legend{display:flex;gap:10px;justify-content:center;margin-top:8px;font-size:0.7rem;font-weight:600}
.rl{display:flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px}
.rl.high{background:var(--red-dim);color:var(--red)}
.rl.med{background:var(--orange-dim);color:var(--orange)}
.rl.low{background:var(--accent-dim);color:var(--accent)}

/* KPI Strip */
.kpi-strip{display:flex;gap:8px;justify-content:space-between}
.kpi{flex:1;text-align:center;padding:12px 8px;background:var(--bg-secondary);border-radius:var(--radius-sm);border:1px solid var(--border)}
.kpi-icon{font-size:1.2rem;margin-bottom:4px}
.kpi-num{font-family:var(--font-mono);font-size:1.4rem;font-weight:700;color:var(--accent);line-height:1}
.kpi-lab{font-size:0.6rem;color:var(--text-muted);margin-top:4px;line-height:1.3}

/* Parties */
.parties-split{display:flex;align-items:center;gap:12px}
.party-box{flex:1;padding:12px;background:var(--bg-secondary);border-radius:var(--radius-sm);border:1px solid var(--border);text-align:center}
.party-flag{font-size:1.6rem;margin-bottom:4px}
.party-label{font-size:0.62rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:4px}
.party-name{font-size:0.78rem;font-weight:700;color:var(--text-primary);line-height:1.3;margin-bottom:4px}
.party-det{font-size:0.65rem;color:var(--text-muted);font-family:var(--font-mono)}
.party-vs{font-size:1.2rem;color:var(--text-muted);flex-shrink:0}
.party-a{border-left:3px solid var(--accent)}
.party-b{border-left:3px solid var(--blue)}

/* Regulators */
.reg-grid{display:flex;flex-wrap:wrap;gap:6px}
.reg-chip{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:20px;font-size:0.72rem;font-weight:600;color:var(--text-primary);transition:var(--transition)}
.reg-chip:hover{border-color:var(--accent);background:var(--accent-dim)}
.reg-dot{width:6px;height:6px;border-radius:50%;background:var(--orange);flex-shrink:0}
.reg-cn{font-family:var(--font-cn);font-size:0.62rem;color:var(--text-muted);margin-left:4px}

/* Protections */
.prot-list{display:flex;flex-direction:column;gap:8px}
.prot{display:flex;align-items:flex-start;gap:8px;font-size:0.78rem}
.prot .prot-icon{font-size:1rem;flex-shrink:0;margin-top:1px}
.prot b{font-size:0.75rem;color:var(--text-primary)}
.prot-det{font-size:0.68rem;color:var(--text-muted);line-height:1.4}

/* Mini Timeline */
.mini-timeline{display:flex;gap:8px;overflow-x:auto;padding:4px 0}
.mini-ms{flex:1;min-width:100px;padding:10px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);text-align:center;transition:var(--transition)}
.mini-ms.active{border-color:var(--accent);background:var(--accent-dim)}
.mini-ms.done{opacity:0.6;border-color:var(--accent)}
.mini-ms .ms-month{font-family:var(--font-mono);font-size:0.62rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px}
.mini-ms .ms-name{font-size:0.72rem;font-weight:600;margin:4px 0 2px;line-height:1.3}
.mini-ms .ms-cn{font-size:0.65rem;color:var(--text-muted);font-family:var(--font-cn)}
.mini-ms .ms-dates{font-size:0.6rem;color:var(--text-muted);font-family:var(--font-mono)}
.mini-ms .ms-badge{margin-top:6px;font-size:0.6rem}

/* ══════════════════════════════════════════════════════════════════════
   RISK MODULE CHARTS ROW
   ══════════════════════════════════════════════════════════════════════ */
.risk-charts-row{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}
.risk-chart-box{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:14px}
.risk-chart-box .ov-header{margin-bottom:8px}

/* ══════════════════════════════════════════════════════════════════════
   GEO TIERS
   ══════════════════════════════════════════════════════════════════════ */
.geo-tiers{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
.geo-tier{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;text-align:center;transition:var(--transition);position:relative;overflow:hidden}
.geo-tier::before{content:'';position:absolute;top:0;left:0;right:0;height:3px}
.geo-tier.t1::before{background:var(--red)}
.geo-tier.t2::before{background:var(--orange)}
.geo-tier.t3::before{background:var(--blue)}
.geo-tier.t4::before{background:var(--purple)}
.geo-tier:hover{transform:translateY(-2px);box-shadow:0 4px 20px rgba(0,0,0,0.3)}
.tier-badge{font-size:0.62rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-bottom:6px}
.tier-flags{font-size:1.4rem;margin:4px 0}
.tier-label{font-size:0.72rem;color:var(--text-secondary);line-height:1.3}

/* ══════════════════════════════════════════════════════════════════════
   BILINGUAL INTERLEAVED 对照 VIEW
   ══════════════════════════════════════════════════════════════════════ */
.bilingual-unified{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:var(--transition)}
.bilingual-unified:hover{border-color:var(--border-light)}
.bilingual-unified-header{display:flex;align-items:center;gap:12px;padding:12px 20px;background:var(--bg-secondary);border-bottom:1px solid var(--border);font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.8px;color:var(--text-secondary)}
.bilingual-unified-header .lang-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;font-size:0.65rem}
.bilingual-unified-header .lang-tag.en{background:var(--blue-dim);color:var(--blue)}
.bilingual-unified-header .lang-tag.cn{background:var(--red-dim);color:var(--red)}
.bilingual-unified-body{padding:0;max-height:none;overflow-y:auto}

/* Each interleaved block: EN paragraph + CN translation */
.bi-block{border-bottom:1px solid var(--border);transition:background 0.2s}
.bi-block:last-child{border-bottom:none}
.bi-block:hover{background:rgba(255,255,255,0.015)}
.bi-en{padding:16px 20px 6px;font-size:0.88rem;line-height:1.8;color:var(--text-primary)}
.bi-cn{padding:4px 20px 16px;font-size:0.85rem;line-height:1.8;color:var(--text-secondary);font-family:var(--font-cn);border-left:3px solid var(--accent);margin-left:20px;margin-right:20px;margin-bottom:16px;padding-left:14px;padding-top:6px;padding-bottom:6px;background:rgba(0,229,160,0.02);border-radius:0 var(--radius-sm) var(--radius-sm) 0}

/* Typography inside bilingual blocks */
.bi-en h2,.bi-en h3,.bi-en h4,.bi-cn h2,.bi-cn h3,.bi-cn h4{color:var(--accent);margin:12px 0 6px;font-family:var(--font-heading)}
.bi-en h2,.bi-cn h2{font-size:1.05rem}
.bi-en h3,.bi-cn h3{font-size:0.95rem}
.bi-en h4,.bi-cn h4{font-size:0.88rem}
.bi-en ul,.bi-en ol,.bi-cn ul,.bi-cn ol{padding-left:18px;margin:6px 0}
.bi-en li,.bi-cn li{margin-bottom:4px}
.bi-en strong,.bi-cn strong{color:var(--accent)}
.bi-en p,.bi-cn p{margin-bottom:6px}
.bi-en blockquote,.bi-cn blockquote{border-left:3px solid var(--accent);padding-left:12px;margin:8px 0;color:var(--text-secondary)}
.bi-en .md-table,.bi-cn .md-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:0.82rem}
.bi-en .md-table th,.bi-cn .md-table th{text-align:left;padding:6px 10px;border-bottom:2px solid var(--accent);color:var(--accent);font-size:0.72rem;text-transform:uppercase;letter-spacing:0.5px}
.bi-en .md-table td,.bi-cn .md-table td{padding:6px 10px;border-bottom:1px solid var(--border)}
.bi-en .md-table tr:hover td,.bi-cn .md-table tr:hover td{background:var(--bg-card-hover)}
.bi-en .code-block,.bi-cn .code-block{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;overflow-x:auto;font-family:var(--font-mono);font-size:0.8rem;line-height:1.5;margin:8px 0}
.bi-en .inline-code,.bi-cn .inline-code{background:var(--bg-primary);padding:1px 6px;border-radius:4px;font-family:var(--font-mono);font-size:0.82rem;color:var(--accent)}
.bi-en hr,.bi-cn hr{border:none;border-top:1px solid var(--border);margin:12px 0}

/* Legacy bilingual-grid kept for doc analysis modal */
.bilingual-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.lang-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:var(--transition)}
.lang-panel:hover{border-color:var(--border-light)}
.lang-panel-header{padding:10px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border);font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.8px;color:var(--text-secondary)}
.lang-panel-body{padding:16px;font-size:0.88rem;line-height:1.8;max-height:800px;overflow-y:auto}
.lang-panel-body.cn{font-family:var(--font-cn)}
.lang-panel-body h2,.lang-panel-body h3,.lang-panel-body h4{color:var(--accent);margin:14px 0 6px;font-family:var(--font-heading)}
.lang-panel-body h2{font-size:1.05rem}
.lang-panel-body h3{font-size:0.95rem}
.lang-panel-body ul,.lang-panel-body ol{padding-left:18px;margin:6px 0}
.lang-panel-body li{margin-bottom:4px}
.lang-panel-body strong{color:var(--accent)}
.lang-panel-body p{margin-bottom:6px}

/* ══════════════════════════════════════════════════════════════════════
   STAT CARDS
   ══════════════════════════════════════════════════════════════════════ */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:20px}
.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:18px;text-align:center;transition:var(--transition)}
.stat-card:hover{border-color:var(--border-light)}
.glow-card{position:relative}
.glow-card::after{content:'';position:absolute;inset:-1px;border-radius:var(--radius);background:linear-gradient(135deg,var(--accent-dim),transparent);z-index:-1;opacity:0;transition:var(--transition)}
.glow-card:hover::after{opacity:1}
.stat-icon{font-size:1.4rem;margin-bottom:6px}
.stat-number{font-family:var(--font-mono);font-size:1.6rem;font-weight:700;color:var(--accent);line-height:1}
.stat-label{font-size:0.68rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.4px;margin-top:4px;line-height:1.3}

/* ══════════════════════════════════════════════════════════════════════
   RISK TABLE
   ══════════════════════════════════════════════════════════════════════ */
.risk-table{width:100%;border-collapse:collapse}
.risk-table th{text-align:left;padding:10px 14px;font-size:0.68rem;text-transform:uppercase;letter-spacing:0.8px;color:var(--text-muted);border-bottom:1px solid var(--border)}
.risk-table td{padding:12px 14px;border-bottom:1px solid var(--border);font-size:0.85rem}
.risk-table tr:hover td{background:var(--bg-card-hover)}
.risk-score{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;font-weight:700;font-size:0.82rem;font-family:var(--font-mono)}
.score-high{background:var(--red-dim);color:var(--red)}
.score-medium{background:var(--orange-dim);color:var(--orange)}
.score-low{background:var(--accent-dim);color:var(--accent)}
.trend-badge{font-size:0.68rem;padding:2px 8px;border-radius:10px;font-weight:600}
.trend-improving{background:var(--accent-dim);color:var(--accent)}
.trend-stable{background:var(--blue-dim);color:var(--blue)}
.trend-deteriorating{background:var(--red-dim);color:var(--red)}
.trend-volatile{background:var(--orange-dim);color:var(--orange)}

/* ══════════════════════════════════════════════════════════════════════
   DOCUMENTS
   ══════════════════════════════════════════════════════════════════════ */
.vault-filter-bar{margin-bottom:16px;padding:12px 14px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm)}
.vault-filter-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.vault-search-box{flex:1;min-width:160px}
.vault-search-box .form-input{width:100%;padding:8px 12px;font-size:0.78rem;height:34px}
.vault-filter-select{width:auto;min-width:130px;padding:6px 10px;font-size:0.75rem;height:34px;cursor:pointer}
.vault-filter-status{font-size:0.75rem;color:var(--text-muted);padding:8px 0 4px;border-bottom:1px solid var(--border);margin-bottom:8px}
.vault-empty-filtered{text-align:center;padding:32px 20px;color:var(--text-muted);display:flex;flex-direction:column;align-items:center;gap:10px}
.vault-empty-filtered .btn{margin-top:4px}
@media(max-width:640px){
  .vault-filter-row{flex-direction:column}
  .vault-search-box{width:100%}
  .vault-filter-select{width:100%;min-width:0}
}

.upload-zone{border:2px dashed var(--border-light);border-radius:var(--radius);padding:40px 20px;text-align:center;cursor:pointer;transition:var(--transition);margin-bottom:20px}
.upload-zone:hover,.upload-zone.dragover{border-color:var(--accent);background:var(--accent-dim)}
.upload-icon{font-size:2rem;margin-bottom:8px;display:block}
.upload-text{color:var(--text-secondary);font-size:0.85rem}
.upload-hint{color:var(--text-muted);font-size:0.72rem;margin-top:4px}

.doc-list{display:flex;flex-direction:column;gap:6px}
.doc-item-wrapper{margin-bottom:8px}
.doc-item-wrapper .doc-item{border-radius:var(--radius-sm) var(--radius-sm) 0 0}
.doc-item{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);transition:var(--transition)}
.doc-item:hover{border-color:var(--border-light)}
.doc-icon{font-size:1.2rem}
.doc-info{flex:1;min-width:0}
.doc-name{font-weight:600;font-size:0.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-meta{font-size:0.68rem;color:var(--text-muted);display:flex;gap:10px;margin-top:2px}
.doc-status{padding:2px 8px;border-radius:10px;font-size:0.65rem;font-weight:700;text-transform:uppercase}
.doc-status.pending{background:var(--orange-dim);color:var(--orange)}
.doc-status.approved{background:var(--accent-dim);color:var(--accent)}
.doc-status.rejected{background:var(--red-dim);color:var(--red)}
.doc-expand-btn{display:flex;align-items:center;gap:6px;width:100%;padding:8px 16px;background:var(--bg-card);border:1px solid var(--border);border-top:0;border-radius:0 0 var(--radius-sm) var(--radius-sm);font-size:0.72rem;color:var(--text-muted);cursor:pointer;transition:var(--transition);font-family:inherit}
.doc-expand-btn:hover{background:var(--bg-card-hover);color:var(--accent)}
.doc-expand-arrow{font-size:0.6rem;transition:transform 0.2s ease;display:inline-block}
.doc-details{padding:16px;background:var(--bg-card);border:1px solid var(--border);border-top:0;border-radius:0 0 var(--radius-sm) var(--radius-sm);animation:slideDown 0.2s ease}
@keyframes slideDown{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.doc-details-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}
.doc-details-section{padding:10px 12px;background:var(--bg-secondary);border-radius:var(--radius-sm);border:1px solid var(--border)}
.doc-details-label{font-size:0.7rem;font-weight:700;color:var(--text-muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:0.03em}
.doc-details-value{font-size:0.78rem;color:var(--text-primary);line-height:1.4}
.doc-details-chapters{margin-bottom:16px}
.doc-chapter-row{display:flex;gap:10px;padding:8px 10px;border-bottom:1px solid var(--border);align-items:flex-start}
.doc-chapter-row:last-child{border-bottom:0}
.doc-chapter-num{font-size:0.7rem;font-weight:700;color:var(--accent);background:var(--accent-dim);padding:2px 8px;border-radius:10px;white-space:nowrap;margin-top:1px}
.doc-chapter-info{flex:1;min-width:0}
.doc-chapter-title{font-size:0.78rem;font-weight:600;color:var(--text-primary);margin-bottom:2px}
.doc-chapter-topics{font-size:0.68rem;color:var(--text-muted);line-height:1.4}
.doc-details-tax{margin-bottom:16px}
.doc-tax-table{width:100%;border-collapse:collapse;font-size:0.72rem}
.doc-tax-table th{text-align:left;padding:6px 8px;background:var(--bg-secondary);border:1px solid var(--border);font-weight:700;color:var(--text-muted);font-size:0.68rem;text-transform:uppercase}
.doc-tax-table td{padding:5px 8px;border:1px solid var(--border);color:var(--text-secondary)}
.doc-tax-table tr:hover td{background:var(--bg-card-hover)}
.doc-tax-level{padding:1px 6px;border-radius:8px;font-size:0.62rem;font-weight:600}
.doc-tax-federal{background:var(--accent-dim);color:var(--accent)}
.doc-tax-state{background:var(--orange-dim);color:var(--orange)}
.doc-tax-municipal{background:#2d1f4e;color:#a78bfa}
.doc-tax-treaty{background:var(--red-dim);color:var(--red)}
.doc-details-port{margin-bottom:14px}
.doc-bullet-list{list-style:none;padding:0;margin:6px 0 0 0}
.doc-bullet-list li{font-size:0.72rem;color:var(--text-secondary);padding:3px 0 3px 16px;position:relative;line-height:1.5}
.doc-bullet-list li::before{content:'›';position:absolute;left:4px;color:var(--accent);font-weight:700}

/* ══════════════════════════════════════════════════════════════════════
   COMMENTS
   ══════════════════════════════════════════════════════════════════════ */
.comments-section{margin-top:28px;border-top:1px solid var(--border);padding-top:20px}
.comments-title{font-size:0.78rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.4px;margin-bottom:12px}
.comment-input-row{display:flex;gap:6px;margin-bottom:12px}
.comment-input-row input{flex:1}
.comment-list{display:flex;flex-direction:column;gap:6px}
.comment-item{display:flex;gap:10px;padding:10px 14px;background:var(--bg-secondary);border-radius:var(--radius-sm);border:1px solid var(--border)}
.comment-avatar{font-size:1.1rem;flex-shrink:0}
.comment-body{flex:1;min-width:0}
.comment-header{display:flex;align-items:center;gap:6px;margin-bottom:3px}
.comment-author{font-weight:600;font-size:0.78rem;color:var(--accent)}
.comment-time{font-size:0.62rem;color:var(--text-muted);font-family:var(--font-mono)}
.comment-text{font-size:0.85rem;line-height:1.5;color:var(--text-secondary)}
.comment-delete{opacity:0;transition:var(--transition)}
.comment-item:hover .comment-delete{opacity:1}

/* ══════════════════════════════════════════════════════════════════════
   CHAT
   ══════════════════════════════════════════════════════════════════════ */
.chat-container{display:flex;flex-direction:column;height:calc(100vh - 180px);max-height:700px}
.chat-messages{flex:1;overflow-y:auto;padding:14px 0;display:flex;flex-direction:column;gap:14px}
.chat-msg{display:flex;gap:10px;max-width:85%}
.chat-msg.user{align-self:flex-end;flex-direction:row-reverse}
.msg-avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:0.9rem;flex-shrink:0}
.ai-avatar{background:linear-gradient(135deg,var(--accent-dim),rgba(59,130,246,0.12));border:1px solid rgba(0,229,160,0.2);font-size:1rem}
.ai-module-icon{background:linear-gradient(135deg,var(--accent),var(--blue));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:1.6rem!important}
.chat-msg.ai .msg-avatar{background:linear-gradient(135deg,var(--accent-dim),rgba(59,130,246,0.12));border:1px solid rgba(0,229,160,0.2)}
.chat-msg.user .msg-avatar{background:var(--blue-dim)}
.msg-bubble{padding:12px 16px;border-radius:var(--radius);font-size:0.88rem;line-height:1.7}
.chat-msg.ai .msg-bubble{background:var(--bg-card);border:1px solid var(--border)}
.chat-msg.user .msg-bubble{background:var(--accent-dim);border:1px solid rgba(0,229,160,0.2)}
.chat-input-row{display:flex;gap:6px;padding-top:14px;border-top:1px solid var(--border)}
.chat-input-row input{flex:1}
.chat-context-badge{display:inline-block;font-size:0.68rem;padding:2px 8px;background:var(--blue-dim);color:var(--blue);border-radius:10px;margin-bottom:6px;font-weight:600}

/* AI typing animation */
.ai-typing{display:flex;align-items:center;gap:4px;padding:6px 0}
.ai-typing span{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:typing-bounce 1.4s ease-in-out infinite}
.ai-typing span:nth-child(2){animation-delay:0.2s}
.ai-typing span:nth-child(3){animation-delay:0.4s}
@keyframes typing-bounce{0%,60%,100%{transform:translateY(0);opacity:0.4}30%{transform:translateY(-6px);opacity:1}}

/* Markdown rendered content improvements */
.msg-bubble h2,.msg-bubble h3,.msg-bubble h4,.msg-bubble h5{color:var(--accent);margin:12px 0 6px;font-family:var(--font-heading)}
.msg-bubble h2{font-size:1rem}
.msg-bubble h3{font-size:0.92rem}
.msg-bubble h4{font-size:0.88rem}
.msg-bubble ul,.msg-bubble ol{padding-left:18px;margin:6px 0}
.msg-bubble li{margin-bottom:3px}
.msg-bubble strong{color:var(--accent)}
.msg-bubble em{color:var(--text-secondary);font-style:italic}
.msg-bubble blockquote{border-left:3px solid var(--accent);padding-left:12px;margin:8px 0;color:var(--text-secondary)}
.msg-bubble hr{border:none;border-top:1px solid var(--border);margin:12px 0}
.msg-bubble .code-block{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;overflow-x:auto;font-family:var(--font-mono);font-size:0.8rem;line-height:1.5;margin:8px 0}
.msg-bubble .inline-code{background:var(--bg-primary);padding:1px 6px;border-radius:4px;font-family:var(--font-mono);font-size:0.82rem;color:var(--accent)}
.msg-bubble .md-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:0.82rem}
.msg-bubble .md-table th{text-align:left;padding:6px 10px;border-bottom:2px solid var(--accent);color:var(--accent);font-size:0.72rem;text-transform:uppercase;letter-spacing:0.5px}
.msg-bubble .md-table td{padding:6px 10px;border-bottom:1px solid var(--border)}
.msg-bubble .md-table tr:hover td{background:var(--bg-card-hover)}

/* Also apply markdown table styling to lang-panel-body */
.lang-panel-body .md-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:0.82rem}
.lang-panel-body .md-table th{text-align:left;padding:6px 10px;border-bottom:2px solid var(--accent);color:var(--accent);font-size:0.72rem;text-transform:uppercase;letter-spacing:0.5px}
.lang-panel-body .md-table td{padding:6px 10px;border-bottom:1px solid var(--border)}
.lang-panel-body .md-table tr:hover td{background:var(--bg-card-hover)}
.lang-panel-body .code-block{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;overflow-x:auto;font-family:var(--font-mono);font-size:0.8rem;line-height:1.5;margin:8px 0}
.lang-panel-body .inline-code{background:var(--bg-primary);padding:1px 6px;border-radius:4px;font-family:var(--font-mono);font-size:0.82rem;color:var(--accent)}
.lang-panel-body blockquote{border-left:3px solid var(--accent);padding-left:12px;margin:8px 0;color:var(--text-secondary)}

/* ══════════════════════════════════════════════════════════════════════
   FLOATING AI BUBBLE
   ══════════════════════════════════════════════════════════════════════ */
.floating-ai-bubble{position:fixed;bottom:28px;right:28px;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,var(--accent),#009e6e);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:500;box-shadow:0 4px 24px rgba(0,229,160,0.35);transition:all 0.3s cubic-bezier(0.4,0,0.2,1)}
.floating-ai-bubble:hover{transform:scale(1.1);box-shadow:0 6px 32px rgba(0,229,160,0.5)}
.floating-ai-bubble:active{transform:scale(0.95)}
.fab-icon{font-size:1.5rem;filter:none;z-index:1}
.fab-pulse{position:absolute;inset:0;border-radius:50%;background:var(--accent);opacity:0;animation:fab-pulse-anim 3s ease-in-out infinite}
@keyframes fab-pulse-anim{0%,100%{opacity:0;transform:scale(1)}50%{opacity:0.15;transform:scale(1.5)}}

.floating-chat-popup{position:fixed;bottom:96px;right:28px;width:380px;max-height:420px;background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);overflow:hidden;z-index:501;box-shadow:var(--shadow-lg);display:none;flex-direction:column}
.floating-chat-popup.show{display:flex;animation:popup-in 0.25s ease}
@keyframes popup-in{from{opacity:0;transform:translateY(12px) scale(0.95)}to{opacity:1;transform:translateY(0) scale(1)}}
.fcp-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--bg-secondary)}
.fcp-title{display:flex;align-items:center;gap:8px;font-size:0.85rem}
.ai-avatar-sm{font-size:1.3rem}
.fcp-body{padding:14px 16px;flex:1;overflow-y:auto}
.fcp-hint{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;background:var(--accent-dim);border-radius:var(--radius-sm);font-size:0.75rem;color:var(--text-secondary);line-height:1.5;margin-bottom:12px}
.fcp-hint span:first-child{font-size:1rem;flex-shrink:0}
.fcp-suggestions{display:flex;flex-direction:column;gap:6px}
.fcp-suggest-btn{text-align:left;padding:9px 12px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:0.78rem;cursor:pointer;transition:var(--transition);font-family:var(--font-body)}
.fcp-suggest-btn:hover{background:var(--bg-card-hover);border-color:var(--accent);color:var(--accent)}
.fcp-input-row{display:flex;gap:6px;padding:12px 16px;border-top:1px solid var(--border);background:var(--bg-secondary)}
.fcp-input-row input{flex:1;font-size:0.82rem;padding:8px 12px}

/* ══════════════════════════════════════════════════════════════════════
   MILESTONES
   ══════════════════════════════════════════════════════════════════════ */
.milestone-track{display:flex;gap:12px;overflow-x:auto;padding:6px 0}
.milestone-card{min-width:160px;padding:16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;flex-shrink:0;transition:var(--transition)}
.milestone-card.active{border-color:var(--accent);background:var(--accent-dim)}
.milestone-card.completed{border-color:var(--accent);opacity:0.65}
.milestone-month{font-family:var(--font-mono);font-size:0.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px}
.milestone-name{font-weight:600;font-size:0.82rem;margin:6px 0 3px}
.milestone-dates{font-size:0.65rem;color:var(--text-muted);font-family:var(--font-mono)}

/* ══════════════════════════════════════════════════════════════════════
   AUDIT LOG
   ══════════════════════════════════════════════════════════════════════ */
.audit-list{max-height:500px;overflow-y:auto}
.audit-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);font-size:0.78rem}
.audit-time{font-family:var(--font-mono);color:var(--text-muted);font-size:0.68rem;min-width:110px}
.audit-user{font-weight:600;color:var(--accent);min-width:55px}
.audit-action{color:var(--text-secondary)}

/* ══════════════════════════════════════════════════════════════════════
   MODALS
   ══════════════════════════════════════════════════════════════════════ */
.modal-overlay{position:fixed;inset:0;background:var(--bg-modal);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:1000;display:none;align-items:center;justify-content:center}
.modal-overlay.show{display:flex}
.modal-content{background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:28px;width:800px;max-width:95vw;max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-lg)}
.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.modal-title{font-family:var(--font-heading);font-size:1.1rem;font-weight:700}
.modal-close{background:none;border:none;color:var(--text-muted);font-size:1.4rem;cursor:pointer;padding:4px;transition:var(--transition)}
.modal-close:hover{color:var(--text-primary)}

.settings-group{margin-bottom:20px}
.settings-group h4{font-size:0.78rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.4px;margin-bottom:10px}
.settings-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.settings-row label{min-width:100px;font-size:0.82rem;color:var(--text-secondary)}
.settings-row input{flex:1}

/* ══════════════════════════════════════════════════════════════════════
   LOADING / WELCOME
   ══════════════════════════════════════════════════════════════════════ */
.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 20px;text-align:center}
.spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 0.8s linear infinite;margin-bottom:12px}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-text{color:var(--text-muted);font-size:0.85rem}

/* Agent Status Steps (Dual-Agent Loading) */
.agent-status{display:flex;flex-direction:column;gap:8px;text-align:left;max-width:420px;margin:0 auto}
.agent-step{font-size:0.82rem;color:var(--text-muted);padding:8px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-secondary);transition:all 0.4s ease;opacity:0.5}
.agent-step.active{opacity:1;color:var(--accent);border-color:rgba(0,229,160,0.3);background:var(--accent-dim);animation:agent-pulse 2s ease-in-out infinite}
.agent-step.done{opacity:0.7;color:var(--accent);border-color:rgba(0,229,160,0.2)}
@keyframes agent-pulse{0%,100%{box-shadow:0 0 0 0 rgba(0,229,160,0)}50%{box-shadow:0 0 12px 2px rgba(0,229,160,0.15)}}
.welcome-state{text-align:center;padding:48px 20px}
.welcome-icon{font-size:2.6rem;margin-bottom:12px;display:block}
.welcome-state h4{font-family:var(--font-heading);font-size:1.1rem;margin-bottom:8px}
.welcome-state p{color:var(--text-muted);max-width:480px;margin:4px auto;font-size:0.88rem}

/* ══════════════════════════════════════════════════════════════════════
   RESPONSIVE
   ══════════════════════════════════════════════════════════════════════ */
@media(max-width:1200px){
  .overview-grid{grid-template-columns:repeat(2,1fr)}
  .card-vitals,.card-kpi-wide,.card-timeline-wide,.card-parties{grid-column:span 2}
  .card-countdown,.card-risk-chart,.card-cat-chart,.card-regs,.card-protect{grid-column:span 1}
  .geo-tiers{grid-template-columns:repeat(2,1fr)}
  .risk-charts-row{grid-template-columns:1fr}
}
@media(max-width:1024px){
  .bilingual-grid{grid-template-columns:1fr}
  .bi-cn{margin-left:12px;margin-right:12px}
  .sidebar{width:54px;min-width:54px}
  .nav-label{display:none}
  .sidebar-title{display:none}
  .sidebar-version{display:none}
  .main-content{padding:14px}
  .header-left-group{gap:8px}
}
@media(max-width:640px){
  /* ── Sidebar: slide-in overlay instead of hidden ── */
  .sidebar{display:flex;position:fixed;top:0;left:0;bottom:0;width:260px;min-width:260px;z-index:1000;background:var(--bg-primary);border-right:1px solid var(--border);transform:translateX(-100%);transition:transform 0.3s cubic-bezier(0.4,0,0.2,1);height:100vh;height:100dvh;padding-top:20px;box-shadow:none}
  .sidebar.mobile-open{transform:translateX(0);box-shadow:4px 0 24px rgba(0,0,0,0.5)}
  .sidebar.mobile-open .nav-label{display:inline}
  .sidebar.mobile-open .sidebar-title{display:block}
  .sidebar.mobile-open .sidebar-version{display:block}
  .sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:999;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
  .sidebar-overlay.active{display:block}

  /* ── Header: compact mobile ── */
  #appHeader{padding:0 12px}
  .header-inner{height:48px;gap:6px}
  .header-left-group{display:flex;align-items:center;gap:8px;flex-shrink:0;min-width:0}
  .header-brand h2{font-size:0.85rem}
  .header-cn-title{display:none}
  .header-sub{display:none}
  .header-logo{height:22px}
  .header-meta{display:none}
  .header-actions .btn-icon{padding:6px;font-size:0.85rem}
  .user-name{display:none}
  .user-badge{padding:3px 6px}

  /* ── Hamburger button ── */
  .mobile-menu-btn{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:36px;height:36px;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;padding:8px 6px;flex-shrink:0;transition:background 0.2s}
  .mobile-menu-btn:active{background:var(--bg-card)}
  .hamburger-line{display:block;width:18px;height:2px;background:var(--text-secondary);border-radius:1px;transition:all 0.25s ease}

  /* ── Main content: full width, remove excess padding ── */
  .main-content{padding:12px 10px}
  .app-layout{min-height:calc(100vh - 48px);min-height:calc(100dvh - 48px)}

  /* ── Module headers: stack vertically ── */
  .module-header{flex-direction:column;align-items:flex-start;gap:10px;padding-bottom:10px}
  .module-actions{width:100%;display:flex;flex-wrap:wrap;gap:6px}
  .module-actions .btn{flex:1;min-width:0;font-size:0.72rem;padding:6px 8px;white-space:nowrap}
  .module-title .module-icon{font-size:1.1rem}
  .module-title h3{font-size:0.92rem}
  .module-title h3 .text-cn{font-size:0.95rem}
  .module-subtitle{font-size:0.68rem}

  /* ── Overview grid: single column ── */
  .overview-grid{grid-template-columns:1fr;gap:10px}
  .overview-grid .ov-card{grid-column:span 1 !important}
  .ov-header{font-size:0.78rem;padding:8px 10px}
  .stats-grid{grid-template-columns:1fr 1fr;gap:8px}
  .stat-card{padding:10px}
  .stat-main{font-size:1.3rem}
  .geo-tiers{grid-template-columns:1fr 1fr;gap:8px}

  /* ── Cards & panels: compact ── */
  .ov-card{border-radius:var(--radius-sm)}
  .vitals-grid{grid-template-columns:1fr 1fr;gap:6px 10px}
  .vital{padding:6px 8px}
  .kpi-grid{grid-template-columns:repeat(2,1fr);gap:6px}

  /* ── Floating AI bubble ── */
  .floating-chat-popup{width:calc(100vw - 24px);right:12px;bottom:80px;max-height:60vh}
  .floating-ai-bubble{bottom:12px;right:12px;width:48px;height:48px;font-size:1.2rem}
  .advisor-bubbles{display:none !important}
  .advisor-chat-popup{width:calc(100vw - 24px);right:12px;bottom:72px;max-height:60vh}

  /* ── Think Tank ── */
  .tt-advisor-responses{grid-template-columns:1fr}
  .tt-seats{flex-direction:column;gap:8px}
  .tt-debate-ring{flex-direction:column;gap:10px;padding:14px}
  .tt-debate-results{grid-template-columns:1fr}

  /* ── Bilingual grid: stack ── */
  .bilingual-grid{grid-template-columns:1fr}
  .bi-cn{margin:0 8px}

  /* ── Charts: constrain height ── */
  canvas.chart-canvas{max-height:240px}

  /* ── Toast: full width ── */
  .toast-container{left:12px;right:12px;max-width:none}
  .toast{min-width:0}

  /* ── Search modal: full screen ── */
  .search-overlay .search-box{width:calc(100vw - 24px);max-width:none;margin:12px}
  .search-overlay .search-input{font-size:0.9rem;padding:10px 14px}

  /* ── Settings modal ── */
  .modal-content{width:calc(100vw - 24px);max-width:none;max-height:85vh}

  /* ── Live ticker: smaller ── */
  .live-ticker{font-size:0.65rem}
  .ticker-label{font-size:0.6rem;padding:2px 6px}

  /* ── Risk heatmap: scroll ── */
  .risk-heatmap{max-width:100%;overflow-x:auto}

  /* ── Touch targets: minimum 44px ── */
  .nav-item{padding:10px 12px;min-height:44px}
  .btn-icon{min-width:36px;min-height:36px}
  .btn-sm{padding:7px 12px;min-height:36px}
  .form-input{padding:12px 14px;font-size:0.95rem}
}

/* ── Utility ─────────────────────────────────────────────────────────── */
.hidden{display:none !important}
.text-cn{font-family:var(--font-cn);font-weight:500}
h3 .text-cn{display:block;font-size:1.15rem;color:var(--text-primary);font-weight:700;line-height:1.3;margin-bottom:1px}
.module-subtitle .text-cn{font-size:0.85em}
.mt-24{margin-top:24px}

/* ══════════════════════════════════════════════════════════════════════
   TOAST NOTIFICATIONS
   ══════════════════════════════════════════════════════════════════════ */
.toast-container{position:fixed;top:68px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none;max-width:420px}
.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:10px;padding:14px 18px;background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:toast-in 0.35s cubic-bezier(0.4,0,0.2,1);transition:all 0.3s ease;min-width:280px}
.toast.toast-out{animation:toast-out 0.3s ease forwards}
.toast-icon{font-size:1.2rem;flex-shrink:0;margin-top:1px}
.toast-body{flex:1;min-width:0}
.toast-title{font-size:0.82rem;font-weight:700;color:var(--text-primary);margin-bottom:2px}
.toast-msg{font-size:0.75rem;color:var(--text-secondary);line-height:1.4}
.toast-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1rem;padding:0;line-height:1;flex-shrink:0}
.toast-close:hover{color:var(--text-primary)}
.toast-progress{position:absolute;bottom:0;left:0;height:2px;border-radius:0 0 var(--radius) var(--radius);animation:toast-progress-bar 4s linear forwards}
.toast.success{border-left:3px solid var(--accent)}
.toast.success .toast-progress{background:var(--accent)}
.toast.error{border-left:3px solid var(--red)}
.toast.error .toast-progress{background:var(--red)}
.toast.warning{border-left:3px solid var(--orange)}
.toast.warning .toast-progress{background:var(--orange)}
.toast.info{border-left:3px solid var(--blue)}
.toast.info .toast-progress{background:var(--blue)}
@keyframes toast-in{from{opacity:0;transform:translateX(40px) scale(0.95)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes toast-out{to{opacity:0;transform:translateX(40px) scale(0.95)}}
@keyframes toast-progress-bar{from{width:100%}to{width:0}}

/* ══════════════════════════════════════════════════════════════════════
   GLOBAL SEARCH MODAL (Ctrl+K)
   ══════════════════════════════════════════════════════════════════════ */
.search-modal-overlay{background:rgba(0,0,0,0.6);backdrop-filter:blur(4px);align-items:flex-start;justify-content:center;padding-top:15vh}
.search-modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);width:560px;max-width:95vw;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,0.6)}
.search-input-wrap{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border)}
.search-icon{font-size:1.1rem;opacity:0.6}
.search-input{flex:1;background:none;border:none;color:var(--text-primary);font-family:var(--font-body);font-size:1rem;outline:none}
.search-input::placeholder{color:var(--text-muted)}
.search-kbd{padding:2px 8px;border:1px solid var(--border-light);border-radius:4px;font-family:var(--font-mono);font-size:0.65rem;color:var(--text-muted);background:var(--bg-secondary)}
.search-results{max-height:360px;overflow-y:auto;padding:8px}
.search-group-title{font-size:0.65rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:8px 12px;font-weight:600}
.search-result-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);font-size:0.88rem}
.search-result-item:hover,.search-result-item.selected{background:var(--accent-dim);color:var(--accent)}
.search-result-item .sri-icon{font-size:1.1rem;width:28px;text-align:center;flex-shrink:0}
.search-result-item .sri-label{flex:1}
.search-result-item .sri-hint{font-size:0.68rem;color:var(--text-muted);font-family:var(--font-mono)}

/* ══════════════════════════════════════════════════════════════════════
   LIVE CLOCK & CONNECTION STATUS
   ══════════════════════════════════════════════════════════════════════ */
.live-clock{font-family:var(--font-mono)!important;font-variant-numeric:tabular-nums;letter-spacing:0.5px;color:var(--accent)!important;font-size:0.82rem!important}
.connection-status{display:flex;flex-direction:row!important;align-items:center;gap:5px!important}
.conn-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;transition:background 0.3s}
.conn-online{background:var(--accent);box-shadow:0 0 6px var(--accent)}
.conn-offline{background:var(--red);box-shadow:0 0 6px var(--red)}
.conn-checking{background:var(--orange);animation:risk-blink 1s ease-in-out infinite}
.conn-label{font-size:0.68rem!important;font-family:var(--font-mono)!important}

/* ══════════════════════════════════════════════════════════════════════
   COPY BUTTON ON ANALYSIS BLOCKS
   ══════════════════════════════════════════════════════════════════════ */
.bilingual-unified-header{position:relative}
.copy-analysis-btn{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-size:0.72rem;padding:4px 10px;cursor:pointer;transition:var(--transition);display:flex;align-items:center;gap:4px;font-family:var(--font-body)}
.copy-analysis-btn:hover{background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}
.copy-analysis-btn.copied{background:var(--accent-dim);color:var(--accent);border-color:var(--accent)}

/* ══════════════════════════════════════════════════════════════════════
   ANALYSIS FRESHNESS INDICATOR
   ══════════════════════════════════════════════════════════════════════ */
.freshness-badge{display:inline-flex;align-items:center;gap:4px;font-size:0.65rem;padding:2px 8px;border-radius:10px;font-weight:600;font-family:var(--font-mono);margin-left:8px}
.freshness-badge.fresh,.freshness-fresh{background:rgba(0,229,160,0.1);color:var(--accent)}
.freshness-badge.aging,.freshness-recent{background:rgba(59,130,246,0.1);color:var(--blue)}
.freshness-badge.stale,.freshness-stale{background:rgba(245,158,11,0.1);color:var(--orange)}
.freshness-old{background:var(--red-dim);color:var(--red)}
.freshness-dot{width:5px;height:5px;border-radius:50%}
.freshness-badge.fresh .freshness-dot{background:var(--accent)}
.freshness-badge.aging .freshness-dot{background:#f59e0b}
.freshness-badge.stale .freshness-dot{background:#ef4444}

/* ── Enhanced Visual Effects ────────────────────────────────────────── */
/* Animated gradient border on active nav items */
.nav-item.active{position:relative;overflow:hidden}
.nav-item.active::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--accent),var(--blue));border-radius:2px}

/* Subtle shimmer on overview cards */
.ov-card::after{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.02),transparent);transition:left 0.6s}
.ov-card:hover::after{left:100%}

/* Enhanced risk table row hover */
.risk-table tr{transition:var(--transition)}
.risk-table tr:hover{transform:translateX(4px)}

/* Pulse animation for active milestones */
.milestone-card.active,.mini-ms.active{animation:gentle-pulse 3s ease-in-out infinite}
@keyframes gentle-pulse{0%,100%{box-shadow:0 0 0 0 rgba(0,229,160,0)}50%{box-shadow:0 0 16px 2px rgba(0,229,160,0.15)}}

/* Better document item hover */
.doc-item{transition:all 0.2s ease}
.doc-item:hover{transform:translateX(4px);border-color:var(--accent);background:var(--bg-card-hover)}

/* Module panel enter animation */
.module-panel.active{animation:slideIn 0.35s cubic-bezier(0.4,0,0.2,1)}
@keyframes slideIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* Improved stat card with animated number feel */
.stat-number{transition:color 0.3s ease}
.stat-card:hover .stat-number{text-shadow:0 0 12px var(--accent-glow)}

/* Header risk pill glow */
.risk-pill.risk-high{box-shadow:0 0 8px rgba(239,68,68,0.2)}
.risk-pill.risk-critical{box-shadow:0 0 12px rgba(239,68,68,0.4)}

/* Better bilingual block styling */
.bi-block:nth-child(even){background:rgba(255,255,255,0.008)}

/* Comment section improvements */
.comment-item{transition:all 0.2s ease}
.comment-item:hover{border-color:var(--accent);background:rgba(0,229,160,0.03)}

/* Upload zone enhanced */
.upload-zone{background:var(--bg-card);position:relative;overflow:hidden}
.upload-zone::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,229,160,0.03),transparent,rgba(59,130,246,0.03));pointer-events:none}

/* Geo tier hover effects */
.geo-tier{transition:all 0.3s ease}
.geo-tier:hover{border-color:var(--border-light)}
.geo-tier.t1:hover{border-color:var(--red);box-shadow:0 4px 20px rgba(239,68,68,0.1)}
.geo-tier.t2:hover{border-color:var(--orange);box-shadow:0 4px 20px rgba(245,158,11,0.1)}
.geo-tier.t3:hover{border-color:var(--blue);box-shadow:0 4px 20px rgba(59,130,246,0.1)}
.geo-tier.t4:hover{border-color:var(--purple);box-shadow:0 4px 20px rgba(139,92,246,0.1)}

/* Regulator chip enhanced states */
.reg-chip{transition:all 0.2s ease}
.reg-chip:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,0.2)}

/* Login card glass enhancement */
.login-card{animation:loginAppear 0.5s ease}
@keyframes loginAppear{from{opacity:0;transform:translateY(20px) scale(0.97)}to{opacity:1;transform:translateY(0) scale(1)}}

/* Button micro-interaction */
.btn{position:relative;overflow:hidden}
.btn::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.08),transparent);transform:translateX(-100%);transition:transform 0.4s}
.btn:hover::after{transform:translateX(100%)}
.btn-danger::after{background:none}

/* ══════════════════════════════════════════════════════════════════════
   ADVISOR FLOATING BUBBLES
   ══════════════════════════════════════════════════════════════════════ */
.advisor-bubbles{position:fixed;right:20px;top:50%;transform:translateY(-50%);z-index:500;display:flex;flex-direction:column;gap:10px;align-items:center}
.advisor-bubble{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.3s cubic-bezier(0.4,0,0.2,1);position:relative;font-size:1.3rem;border:2px solid transparent;box-shadow:0 3px 12px rgba(0,0,0,0.3)}
.advisor-bubble:hover{transform:scale(1.15);z-index:2}
.advisor-bubble:active{transform:scale(0.95)}
.advisor-bubble .adv-tooltip{position:absolute;right:58px;white-space:nowrap;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:5px 10px;font-size:0.72rem;font-weight:600;color:var(--text-primary);opacity:0;pointer-events:none;transition:all 0.2s ease;transform:translateX(8px);box-shadow:var(--shadow)}
.advisor-bubble:hover .adv-tooltip{opacity:1;transform:translateX(0)}
.advisor-bubble .adv-badge{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;border-radius:8px;background:var(--red);color:white;font-size:0.55rem;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;animation:badge-pulse 2s ease-in-out infinite;opacity:0;pointer-events:none;transition:opacity 0.3s}
.advisor-bubble .adv-badge.show{opacity:1}
@keyframes badge-pulse{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,0.4)}50%{box-shadow:0 0 8px 3px rgba(239,68,68,0.2)}}

.advisor-bubble.active{border-color:white;box-shadow:0 0 16px rgba(255,255,255,0.2)}
.advisor-bubble-pulse{position:absolute;inset:-3px;border-radius:50%;border:2px solid;opacity:0;animation:adv-pulse-ring 3s ease-in-out infinite}
@keyframes adv-pulse-ring{0%,100%{opacity:0;transform:scale(1)}50%{opacity:0.3;transform:scale(1.2)}}

/* Advisor Chat Popup */
.advisor-chat-popup{position:fixed;bottom:96px;right:80px;width:400px;max-height:480px;background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--glass-border);border-radius:var(--radius-lg);overflow:hidden;z-index:501;box-shadow:var(--shadow-lg);display:none;flex-direction:column}
.advisor-chat-popup.show{display:flex;animation:popup-in 0.25s ease}
.acp-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--bg-secondary)}
.acp-title{display:flex;align-items:center;gap:8px;font-size:0.85rem}
.acp-avatar{font-size:1.4rem}
.acp-messages{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:10px;max-height:320px;min-height:200px}
.acp-msg{display:flex;gap:8px;max-width:90%;font-size:0.82rem;line-height:1.6}
.acp-msg.user{align-self:flex-end;flex-direction:row-reverse}
.acp-msg .acp-msg-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:0.9rem;flex-shrink:0;background:var(--bg-secondary);border:1px solid var(--border)}
.acp-msg .acp-msg-bubble{padding:8px 12px;border-radius:var(--radius-sm)}
.acp-msg.ai .acp-msg-bubble{background:var(--bg-card);border:1px solid var(--border)}
.acp-msg.user .acp-msg-bubble{background:var(--accent-dim);border:1px solid rgba(0,229,160,0.2)}
.acp-msg .acp-msg-bubble h2,.acp-msg .acp-msg-bubble h3,.acp-msg .acp-msg-bubble h4{color:var(--accent);margin:6px 0 4px;font-family:var(--font-heading);font-size:0.88rem}
.acp-msg .acp-msg-bubble strong{color:var(--accent)}
.acp-msg .acp-msg-bubble ul,.acp-msg .acp-msg-bubble ol{padding-left:16px;margin:4px 0}
.acp-msg .acp-msg-bubble li{margin-bottom:2px}
.acp-input-row{display:flex;gap:6px;padding:10px 12px;border-top:1px solid var(--border);background:var(--bg-secondary)}
.acp-input-row input{flex:1;font-size:0.82rem;padding:8px 12px}
.acp-welcome{text-align:center;padding:20px 16px;color:var(--text-muted);font-size:0.78rem;line-height:1.6}
.acp-welcome-icon{font-size:2rem;margin-bottom:8px;display:block}

/* Advisor alert messages in chat */
.acp-msg.alert .acp-msg-bubble{background:rgba(245,158,11,0.08);border:1px solid rgba(245,158,11,0.25);color:var(--text-primary)}
.acp-msg.alert .acp-msg-avatar{background:rgba(245,158,11,0.15);border-color:rgba(245,158,11,0.3)}
.acp-alert-header{font-size:0.68rem;font-weight:700;color:rgb(245,158,11);margin-bottom:4px;text-transform:uppercase;letter-spacing:0.03em}

/* Advisor urgent notification popup */
.advisor-notification{position:fixed;right:80px;background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius);padding:14px 18px;width:300px;z-index:502;box-shadow:var(--shadow-lg);animation:notif-in 0.4s cubic-bezier(0.4,0,0.2,1);cursor:pointer;transition:all 0.2s ease}
.advisor-notification:hover{border-color:var(--accent);transform:scale(1.02)}
.advisor-notification .notif-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.advisor-notification .notif-avatar{font-size:1.2rem}
.advisor-notification .notif-name{font-size:0.78rem;font-weight:700}
.advisor-notification .notif-role{font-size:0.65rem;color:var(--text-muted);margin-left:auto}
.advisor-notification .notif-body{font-size:0.75rem;color:var(--text-secondary);line-height:1.5}
.advisor-notification .notif-close{position:absolute;top:8px;right:8px;background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:0.9rem}
@keyframes notif-in{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}

/* ══════════════════════════════════════════════════════════════════════
   THINK TANK / BOARD MEETING
   ══════════════════════════════════════════════════════════════════════ */
.tt-board-intro{margin-bottom:24px}
.tt-table-visual{display:flex;align-items:center;justify-content:center;padding:24px 20px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);position:relative;overflow:hidden}
.tt-table-visual::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--blue),var(--purple),var(--pink),var(--orange),var(--cyan))}
.tt-table-center{display:flex;flex-direction:column;align-items:center;gap:4px;position:relative;z-index:1;min-width:120px}
.tt-table-icon{font-size:2.4rem}
.tt-table-label{font-size:0.72rem;color:var(--text-muted);text-align:center;line-height:1.3}
.tt-seats{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;margin-left:24px}
.tt-seat{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);cursor:default;transition:all 0.3s ease;min-width:80px}
.tt-seat:hover{transform:translateY(-3px);box-shadow:0 4px 16px rgba(0,0,0,0.3)}
.tt-seat .seat-avatar{font-size:1.8rem}
.tt-seat .seat-name{font-size:0.72rem;font-weight:700;color:var(--text-primary)}
.tt-seat .seat-role{font-size:0.62rem;color:var(--text-muted);text-align:center}
.tt-seat.thinking{animation:seat-think 1.5s ease-in-out infinite;border-color:var(--accent)}
@keyframes seat-think{0%,100%{box-shadow:0 0 0 0 rgba(0,229,160,0)}50%{box-shadow:0 0 12px 3px rgba(0,229,160,0.2)}}
.tt-seat.done{border-color:var(--accent);background:var(--accent-dim)}

/* Topic Input */
.tt-input-section{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:24px}
.tt-input-header{display:flex;align-items:flex-start;gap:10px;margin-bottom:14px;font-size:0.88rem}
.tt-input-header span{font-size:1.2rem;margin-top:1px}
.tt-input-row{display:flex;gap:8px;margin-bottom:12px}
.tt-input-row input{flex:1}
.tt-quick-topics{display:flex;gap:8px;flex-wrap:wrap}

/* Meeting Results */
.tt-results{margin-top:0}
.tt-results-header{margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.tt-results-header h4{font-family:var(--font-heading);font-size:1.05rem;margin-bottom:6px}
.tt-topic-display{font-size:0.85rem;color:var(--text-secondary);padding:10px 14px;background:var(--bg-secondary);border-radius:var(--radius-sm);border-left:3px solid var(--accent)}

/* Advisor Response Cards */
.tt-advisor-responses{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-bottom:24px}
.tt-advisor-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:all 0.3s ease}
.tt-advisor-card:hover{border-color:var(--border-light);transform:translateY(-2px);box-shadow:0 4px 20px rgba(0,0,0,0.3)}
.tt-advisor-card-header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);position:relative}
.tt-advisor-card-header::before{content:'';position:absolute;top:0;left:0;right:0;height:2px}
.tt-advisor-card-header .ttac-avatar{font-size:1.4rem}
.tt-advisor-card-header .ttac-info{flex:1}
.tt-advisor-card-header .ttac-name{font-size:0.85rem;font-weight:700}
.tt-advisor-card-header .ttac-role{font-size:0.68rem;color:var(--text-muted)}
.tt-advisor-card-header .ttac-status{font-size:0.72rem;font-weight:600;padding:2px 8px;border-radius:10px}
.tt-advisor-card-body{padding:14px 16px;font-size:0.82rem;line-height:1.7;color:var(--text-secondary);max-height:300px;overflow-y:auto}
.tt-advisor-card-body h2,.tt-advisor-card-body h3,.tt-advisor-card-body h4{color:var(--accent);margin:8px 0 4px;font-family:var(--font-heading);font-size:0.88rem}
.tt-advisor-card-body strong{color:var(--accent)}
.tt-advisor-card-body ul,.tt-advisor-card-body ol{padding-left:16px;margin:4px 0}
.tt-advisor-card-body li{margin-bottom:3px}
.tt-advisor-card.loading .tt-advisor-card-body{display:flex;align-items:center;justify-content:center;min-height:100px}

/* Consensus Section */
.tt-consensus{background:var(--bg-card);border:2px solid var(--accent);border-radius:var(--radius-lg);overflow:hidden;position:relative}
.tt-consensus::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--blue),var(--purple))}
.tt-consensus-header{display:flex;align-items:center;gap:10px;padding:14px 20px;background:var(--accent-dim);border-bottom:1px solid rgba(0,229,160,0.2);font-size:0.92rem}
.tt-consensus-header span{font-size:1.3rem}
.tt-consensus-body{padding:16px 20px;font-size:0.88rem;line-height:1.8;color:var(--text-primary)}
.tt-consensus-body h2,.tt-consensus-body h3,.tt-consensus-body h4{color:var(--accent);margin:10px 0 6px;font-family:var(--font-heading)}
.tt-consensus-body strong{color:var(--accent)}
.tt-consensus-body ul,.tt-consensus-body ol{padding-left:18px;margin:6px 0}
.tt-consensus-body li{margin-bottom:4px}
.tt-consensus-body .bi-cn{border-left:3px solid var(--accent);padding-left:14px;margin:12px 0;background:rgba(0,229,160,0.02);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:10px 14px;color:var(--text-secondary);font-family:var(--font-cn)}

/* History */
.tt-history{margin-top:24px}
.tt-history-item{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 16px;margin-bottom:8px;cursor:pointer;transition:var(--transition)}
.tt-history-item:hover{border-color:var(--accent)}
.tt-history-item .tth-topic{font-size:0.82rem;font-weight:600;margin-bottom:3px}
.tt-history-item .tth-time{font-size:0.68rem;color:var(--text-muted);font-family:var(--font-mono)}

/* ══════════════════════════════════════════════════════════════════════════════
   DD ENGINEERING FEASIBILITY CHECKLIST
   ══════════════════════════════════════════════════════════════════════════════ */

/* DD Checklist Container */
.dd-checklist{margin-top:8px}

/* Checklist Stats Bar */
.dd-checklist-stats{display:flex;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.dd-stat-pill{display:flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;font-size:0.78rem;font-weight:600;background:var(--bg-card);border:1px solid var(--border)}
.dd-stat-pill .dd-stat-num{font-family:var(--font-mono);font-size:0.9rem}
.dd-stat-pill.stat-done{border-color:rgba(0,229,160,0.3);color:var(--accent)}
.dd-stat-pill.stat-pending{border-color:rgba(245,158,11,0.3);color:var(--warning)}
.dd-stat-pill.stat-total{border-color:rgba(59,130,246,0.3);color:var(--info)}

/* Section Group */
.dd-section-group{margin-bottom:24px}
.dd-section-header{display:flex;align-items:center;gap:10px;padding:12px 16px;background:linear-gradient(135deg,var(--bg-card),var(--bg-secondary));border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;cursor:pointer;transition:var(--transition);position:sticky;top:0;z-index:2}
.dd-section-header:hover{border-color:var(--accent)}
.dd-section-header .dd-sec-icon{font-size:1.3rem}
.dd-section-header .dd-sec-title{flex:1}
.dd-section-header .dd-sec-title h5{margin:0;font-size:0.88rem;font-weight:700;color:var(--text-primary)}
.dd-section-header .dd-sec-title .dd-sec-cn{font-size:0.75rem;color:var(--text-muted);margin-top:2px}
.dd-section-header .dd-sec-badge{padding:3px 10px;border-radius:12px;font-size:0.7rem;font-weight:700;font-family:var(--font-mono)}
.dd-sec-badge.all-done{background:rgba(0,229,160,0.15);color:var(--accent)}
.dd-sec-badge.partial{background:rgba(245,158,11,0.15);color:var(--warning)}
.dd-section-header .dd-sec-arrow{font-size:0.8rem;color:var(--text-muted);transition:transform 0.2s}
.dd-section-group.collapsed .dd-sec-arrow{transform:rotate(-90deg)}
.dd-section-group.collapsed .dd-section-items{display:none}

/* Checklist Items */
.dd-section-items{border:1px solid var(--border);border-top:none;border-radius:0 0 var(--radius) var(--radius);overflow:hidden}
.dd-item{padding:14px 16px;border-bottom:1px solid var(--border);transition:var(--transition);position:relative}
.dd-item:last-child{border-bottom:none}
.dd-item:hover{background:rgba(0,229,160,0.03)}
.dd-item.item-done{background:rgba(0,229,160,0.04)}

/* Item Header Row */
.dd-item-header{display:flex;align-items:flex-start;gap:12px}
.dd-item-num{font-family:var(--font-mono);font-size:0.78rem;font-weight:700;color:var(--accent);min-width:38px;padding-top:2px}
.dd-item-info{flex:1;min-width:0}
.dd-item-title{font-size:0.82rem;font-weight:600;color:var(--text-primary);line-height:1.4}
.dd-item-cn{font-size:0.75rem;color:var(--text-muted);margin-top:2px;line-height:1.4}
.dd-item-meta{display:flex;align-items:center;gap:10px;margin-top:6px;flex-wrap:wrap}
.dd-item-days{font-size:0.7rem;color:var(--text-muted);font-family:var(--font-mono);padding:2px 8px;background:var(--bg-secondary);border-radius:10px}
.dd-item-status{font-size:0.7rem;padding:2px 10px;border-radius:10px;font-weight:700;cursor:pointer;transition:var(--transition)}
.dd-item-status.status-pending{background:rgba(245,158,11,0.15);color:var(--warning)}
.dd-item-status.status-delivered{background:rgba(0,229,160,0.15);color:var(--accent)}
.dd-item-status.status-overdue{background:rgba(239,68,68,0.15);color:var(--danger)}
.dd-item-delivered-date{font-size:0.7rem;color:var(--text-muted);font-family:var(--font-mono)}

/* Upload Button */
.dd-item-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.dd-upload-btn{display:flex;align-items:center;gap:4px;padding:5px 12px;border-radius:var(--radius-sm);border:1px dashed rgba(0,229,160,0.3);background:transparent;color:var(--accent);font-size:0.72rem;font-weight:600;cursor:pointer;transition:var(--transition);white-space:nowrap}
.dd-upload-btn:hover{background:rgba(0,229,160,0.08);border-style:solid}
.dd-upload-btn input[type="file"]{display:none}

/* Files List under item */
.dd-item-files{margin-top:10px;padding-left:50px}
.dd-file-entry{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:6px;font-size:0.78rem;transition:var(--transition)}
.dd-file-entry:hover{border-color:var(--accent)}
.dd-file-icon{font-size:1rem}
.dd-file-name{flex:1;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dd-file-status{font-size:0.68rem;padding:2px 8px;border-radius:10px;font-weight:600}
.dd-file-status.analyzing{background:rgba(168,85,247,0.15);color:#a855f7;animation:pulse 1.5s infinite}
.dd-file-status.analyzed{background:rgba(0,229,160,0.15);color:var(--accent)}
.dd-file-analyze-btn{padding:3px 10px;border-radius:var(--radius-sm);border:1px solid rgba(168,85,247,0.3);background:transparent;color:#a855f7;font-size:0.68rem;font-weight:600;cursor:pointer;transition:var(--transition)}
.dd-file-analyze-btn:hover{background:rgba(168,85,247,0.1)}

/* AI Analysis Block under item */
.dd-item-analysis{margin-top:10px;padding:12px 14px;padding-left:50px}
.dd-analysis-card{background:linear-gradient(135deg,rgba(168,85,247,0.06),rgba(0,229,160,0.04));border:1px solid rgba(168,85,247,0.2);border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:8px}
.dd-analysis-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:0.75rem;font-weight:700;color:#a855f7}
.dd-analysis-body{font-size:0.78rem;line-height:1.6;color:var(--text-secondary)}
.dd-analysis-body p{margin:4px 0}
.dd-analysis-body strong{color:var(--text-primary)}
.dd-analysis-time{font-size:0.65rem;color:var(--text-muted);font-family:var(--font-mono);margin-top:6px}

/* ══════════════════════════════════════════════════════════════════════════
   LIVE MARKET TICKER
   ══════════════════════════════════════════════════════════════════════════ */
.live-ticker{display:flex;align-items:center;background:rgba(0,229,160,0.04);border-bottom:1px solid var(--glass-border);height:28px;overflow:hidden;font-family:var(--font-mono);font-size:0.72rem}
.ticker-label{padding:0 12px;font-weight:700;color:var(--accent);background:rgba(0,229,160,0.1);height:100%;display:flex;align-items:center;gap:4px;white-space:nowrap;flex-shrink:0;border-right:1px solid var(--glass-border);letter-spacing:0.5px;font-size:0.65rem}
.ticker-label::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);animation:pulse 2s infinite}
.ticker-track{display:flex;align-items:center;gap:20px;overflow-x:auto;padding:0 12px;white-space:nowrap;flex:1;scrollbar-width:none;-ms-overflow-style:none}
.ticker-track::-webkit-scrollbar{display:none}
.ticker-loading{color:var(--text-muted);font-style:italic}
.ticker-item{display:inline-flex;align-items:center;gap:6px;color:var(--text-secondary)}
.ticker-sym{font-weight:600;color:var(--text-primary);font-size:0.7rem}
.ticker-price{color:var(--text-primary)}
.ticker-change{font-weight:600;font-size:0.68rem;padding:1px 5px;border-radius:3px}
.ticker-change.up{color:#22c55e;background:rgba(34,197,94,0.1)}
.ticker-change.down{color:#ef4444;background:rgba(239,68,68,0.1)}
.ticker-change.flat{color:var(--text-muted)}
.ticker-sep{color:var(--glass-border);font-size:0.5rem}
.ticker-news{display:inline-flex;align-items:center;gap:6px;color:var(--text-muted);max-width:350px;overflow:hidden;text-overflow:ellipsis}
.ticker-news-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ticker-stale{color:var(--yellow);font-style:italic;font-size:0.68rem}

/* ── Data freshness badge ──────────────────────────────────────────── */

/* ── Live news cards ───────────────────────────────────────────────── */
.live-news-section{margin-top:16px;padding:16px;background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--radius)}
.live-news-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.live-news-header h3{font-size:0.85rem;color:var(--accent);font-weight:700;display:flex;align-items:center;gap:6px}
.live-news-grid{display:grid;gap:8px}
.live-news-card{padding:10px 12px;background:rgba(255,255,255,0.02);border:1px solid var(--glass-border);border-radius:var(--radius-sm);transition:var(--transition)}
.live-news-card:hover{background:rgba(0,229,160,0.04);border-color:rgba(0,229,160,0.2)}
.live-news-card a{color:var(--text-primary);text-decoration:none;font-size:0.78rem;font-weight:500;line-height:1.4}
.live-news-card a:hover{color:var(--accent)}
.live-news-meta{display:flex;align-items:center;gap:8px;margin-top:4px;font-size:0.65rem;color:var(--text-muted);font-family:var(--font-mono)}
.live-news-source{color:var(--blue);font-weight:600}

/* ═══════════════════════════════════════════════════════════════════════
   TECHNICAL LIBRARY
   ═══════════════════════════════════════════════════════════════════════ */

/* Stats bar */
.library-stats{margin-bottom:16px}
.library-stat-pills{display:flex;flex-wrap:wrap;gap:8px}
.lib-stat-pill{padding:6px 14px;background:var(--glass);border:1px solid var(--glass-border);border-radius:20px;font-size:0.73rem;color:var(--text-secondary)}
.lib-stat-pill strong{color:var(--text-primary);font-weight:700}
.lib-stat-en strong{color:#3b82f6}
.lib-stat-pt strong{color:#22c55e}

/* Container layout */
.library-container{display:grid;grid-template-columns:280px 1fr;gap:16px;min-height:500px}
@media(max-width:768px){.library-container{grid-template-columns:1fr;min-height:auto}}
@media(max-width:640px){.library-container{gap:8px}.library-sidebar{max-height:40vh;padding:6px}}

/* Sidebar navigation */
.library-sidebar{background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--radius);padding:8px;max-height:70vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--glass-border) transparent}
.lib-nav-group{margin-bottom:2px}
.lib-nav-header{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;border-radius:var(--radius-sm);transition:var(--transition);font-size:0.78rem;font-weight:600;color:var(--text-primary)}
.lib-nav-header:hover{background:rgba(255,255,255,0.04)}
.lib-nav-icon{font-size:1rem}
.lib-nav-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lib-nav-title-cn{display:block;font-size:0.65rem;font-weight:400;color:var(--text-muted);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lib-nav-badge{background:var(--accent);color:#0a0a1a;padding:1px 7px;border-radius:10px;font-size:0.65rem;font-weight:700;min-width:20px;text-align:center}
.lib-nav-arrow{font-size:0.6rem;color:var(--text-muted);transition:transform 0.2s}
.lib-nav-children{padding-left:8px}
.lib-nav-item{display:flex;align-items:center;gap:6px;padding:7px 12px;cursor:pointer;border-radius:var(--radius-sm);font-size:0.73rem;color:var(--text-secondary);transition:var(--transition)}
.lib-nav-item:hover{background:rgba(0,229,160,0.06);color:var(--text-primary)}
.lib-nav-item.active{background:rgba(0,229,160,0.1);color:var(--accent);font-weight:600;border-left:2px solid var(--accent)}
.lib-nav-item-label{flex:1;overflow:hidden;text-overflow:ellipsis;min-width:0}
.lib-nav-item-cn{display:block;font-size:0.6rem;font-weight:400;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lib-nav-sub-icon{font-size:0.85rem}
.lib-nav-count{margin-left:auto;font-size:0.65rem;color:var(--text-muted);font-family:var(--font-mono)}

/* Content area */
.library-content{background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--radius);padding:20px;overflow-y:auto;max-height:70vh;scrollbar-width:thin;scrollbar-color:var(--glass-border) transparent}
.library-welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;height:300px;color:var(--text-muted);text-align:center}
.library-welcome-icon{font-size:3rem;margin-bottom:16px;opacity:0.5}
.library-welcome h4{font-size:0.9rem;color:var(--text-secondary)}
.library-welcome p{font-size:0.78rem;margin-top:4px}
.library-loading{padding:24px;text-align:center;color:var(--text-muted);display:flex;align-items:center;gap:8px;justify-content:center}

/* Section header */
.lib-section-header{margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--glass-border)}
.lib-section-header h4{font-size:0.95rem;font-weight:700;color:var(--text-primary);margin:6px 0 4px}
.lib-section-header .text-cn{font-size:0.8rem;color:var(--text-muted);font-weight:500}
.lib-section-meta{font-size:0.7rem;color:var(--text-muted);font-family:var(--font-mono)}

/* Breadcrumbs */
.lib-breadcrumbs{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.lib-crumb{font-size:0.7rem;color:var(--text-muted);cursor:pointer;padding:2px 6px;border-radius:4px;transition:var(--transition)}
.lib-crumb:hover{background:rgba(0,229,160,0.08);color:var(--accent)}
.lib-crumb-active{color:var(--accent);font-weight:600}
.lib-crumb-sep{font-size:0.65rem;color:var(--text-muted);opacity:0.5}

/* Subcategory headers */
.lib-subcat-header{font-size:0.78rem;font-weight:600;color:var(--text-secondary);margin:18px 0 10px;padding:6px 10px;background:rgba(255,255,255,0.02);border-radius:var(--radius-sm);border-left:3px solid var(--accent)}
.lib-subcat-count{font-weight:400;color:var(--text-muted);font-size:0.7rem}

/* File grid */
.lib-file-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));gap:10px;margin-bottom:12px}
.lib-file-card{display:flex;align-items:center;gap:10px;padding:10px 14px;background:rgba(255,255,255,0.02);border:1px solid var(--glass-border);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition)}
.lib-file-card:hover{background:rgba(0,229,160,0.06);border-color:rgba(0,229,160,0.3);transform:translateY(-1px)}
.lib-file-icon{font-size:1.4rem;opacity:0.7;flex-shrink:0}
.lib-file-info{flex:1;overflow:hidden}
.lib-file-name{font-size:0.73rem;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lib-file-meta{display:flex;align-items:center;gap:6px;margin-top:3px;font-size:0.63rem;color:var(--text-muted)}
.lib-lang-badge{padding:1px 5px;border-radius:3px;font-size:0.6rem;font-weight:700;text-transform:uppercase}
.lib-lang-en{background:rgba(59,130,246,0.15);color:#60a5fa}
.lib-lang-pt{background:rgba(34,197,94,0.15);color:#4ade80}
.lib-file-type{color:var(--text-muted)}
.lib-file-size{color:var(--text-muted);font-family:var(--font-mono)}

/* Search box in header */
.library-search-box{position:relative}
.library-search-box .form-input{width:220px;padding-left:12px;font-size:0.75rem;height:34px}
@media(max-width:768px){.library-search-box .form-input{width:140px}}

/* ── Vault Library Section (engineering files in Document Vault) ── */
.library-docs-vault{margin-top:20px;border-top:1px solid var(--border);padding-top:16px}
.vault-lib-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.vault-lib-header h4{margin:0;font-size:0.92rem;color:var(--text-primary)}
.vault-lib-stats{display:flex;align-items:center;gap:10px}
.vlb-stat{font-size:0.72rem;color:var(--text-secondary);background:var(--bg-input);padding:3px 10px;border-radius:12px}
.vault-lib-group{border:1px solid var(--border);border-radius:8px;margin-bottom:8px;overflow:hidden}
.vault-lib-group-header{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--bg-card);cursor:pointer;font-size:0.8rem;color:var(--text-primary);transition:background 0.15s}
.vault-lib-group-header:hover{background:var(--bg-card-hover)}
.vlg-badge{margin-left:auto;font-size:0.67rem;background:var(--accent-dim);color:var(--accent);padding:2px 8px;border-radius:10px}
.vlg-arrow{font-size:0.6rem;color:var(--text-muted);margin-left:6px}
.vault-lib-files{padding:6px 8px;background:var(--bg-secondary)}
.vault-lib-file{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:5px;font-size:0.72rem;color:var(--text-secondary);cursor:pointer;transition:background 0.15s}
.vault-lib-file:hover{background:var(--bg-card-hover)}
.vault-lib-ficon{font-size:0.8rem}
.vault-lib-fname{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-primary)}
.vault-lib-ftype{font-size:0.63rem;color:var(--text-muted)}
.vault-lib-fsize{font-size:0.63rem;color:var(--text-muted);font-family:var(--font-mono)}
.vault-lib-more{padding:6px 10px;font-size:0.7rem;color:var(--accent);cursor:pointer;text-align:center}
.vault-lib-more:hover{text-decoration:underline}

/* Library Analysis Panel */
#libraryAnalysisPanel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:20px}
#libraryAnalysisScores{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.lib-score-card{text-align:center;padding:14px 8px;background:var(--bg-secondary);border-radius:var(--radius-sm);border:1px solid var(--border)}
.lib-score-num{font-size:1.8rem;font-weight:800;font-family:var(--font-heading);line-height:1}
.lib-score-num span{font-size:0.7rem;opacity:0.5;font-weight:400}
.lib-score-label{font-size:0.65rem;color:var(--text-muted);margin-top:4px;text-transform:uppercase;letter-spacing:0.5px}
#libraryAnalysisMeta{display:flex;align-items:center;justify-content:space-between;padding:8px 0;margin-bottom:12px;border-bottom:1px solid var(--border);font-size:0.72rem;color:var(--text-secondary)}
#libraryAnalysisBody .bilingual-grid{margin-top:8px}
#libraryAnalysisBody .lang-panel-body{max-height:600px;overflow-y:auto}
#libraryAnalysisLoading{flex-direction:column;gap:14px;padding:30px 20px;align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:20px}
.lib-loading-step{display:flex;align-items:center;gap:10px;font-size:0.82rem;color:var(--text-muted);transition:all 0.3s}
.lib-loading-step.active{color:var(--accent);font-weight:600}
.lib-loading-step.done{color:var(--accent)}
.lib-loading-step .spinner{width:14px;height:14px;border-width:2px;display:none}
.lib-loading-step.active .spinner{display:inline-block}
.vault-lib-analysis-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:99px;font-size:0.65rem;font-weight:600;color:var(--accent)}
@media(max-width:768px){#libraryAnalysisScores{grid-template-columns:repeat(2,1fr)}}

/* ═══════════════════════════════════════════════════════════════════
   ENHANCED FILE CARDS
   ═══════════════════════════════════════════════════════════════════ */
.lib-section-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.lib-section-actions{display:flex;align-items:center;gap:10px}
.lib-section-relevancy{font-size:0.78rem;font-weight:700}
.lib-file-card-enhanced{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color 0.2s}
.lib-file-card-enhanced:hover{border-color:var(--accent)}
.lib-file-card-main{display:flex;gap:12px;padding:12px;cursor:pointer;transition:background 0.15s}
.lib-file-card-main:hover{background:var(--bg-secondary)}
.lib-file-icon-enhanced{font-size:1.8rem;flex-shrink:0;width:36px;text-align:center}
.lib-file-info-enhanced{flex:1;min-width:0}
.lib-file-desc{font-size:0.72rem;color:var(--text-secondary);margin:3px 0 6px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lib-file-desc-cn{font-size:0.65rem;color:var(--text-muted);margin:-4px 0 6px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* README Guide Panel */
.lib-readme-panel{margin-bottom:16px;border:1px solid var(--glass-border);border-radius:var(--radius);overflow:hidden}
.lib-readme-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:rgba(0,229,160,0.04);cursor:pointer;font-size:0.78rem;font-weight:600;color:var(--text-primary);transition:var(--transition)}
.lib-readme-header:hover{background:rgba(0,229,160,0.08)}
.lib-readme-header .lrm-arrow{font-size:0.6rem;color:var(--text-muted)}
.lib-readme-body{padding:16px 20px;font-size:0.75rem;line-height:1.6;color:var(--text-secondary);max-height:400px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--glass-border) transparent}
.lib-readme-body h1,.lib-readme-body h2{font-size:0.85rem;color:var(--text-primary);margin:14px 0 8px;font-weight:700}
.lib-readme-body h1{font-size:0.95rem;border-bottom:1px solid var(--glass-border);padding-bottom:6px}
.lib-readme-body table{width:100%;border-collapse:collapse;margin:8px 0;font-size:0.7rem}
.lib-readme-body th,.lib-readme-body td{padding:4px 8px;border:1px solid var(--glass-border);text-align:left}
.lib-readme-body th{background:rgba(255,255,255,0.03);font-weight:600}
.lib-readme-body code{background:rgba(255,255,255,0.05);padding:1px 4px;border-radius:3px;font-size:0.68rem}
.lib-readme-body blockquote{border-left:3px solid var(--accent);padding:4px 12px;margin:8px 0;color:var(--text-muted);font-style:italic}
.lib-readme-body a{color:var(--accent);text-decoration:none}
.lib-readme-body a:hover{text-decoration:underline}
.lib-readme-body ul,.lib-readme-body ol{padding-left:20px;margin:6px 0}
.lib-readme-body li{margin:2px 0;font-size:0.72rem}
.lib-readme-body hr{border:none;border-top:1px solid var(--glass-border);margin:12px 0}
.lib-file-meta-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lib-file-type-badge{font-size:0.65rem;padding:2px 6px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;color:var(--text-secondary);white-space:nowrap}
.lib-file-discipline{font-size:0.65rem;color:var(--blue);white-space:nowrap}
.lib-file-relevancy{font-size:0.7rem;font-weight:700;margin-left:auto}
.lib-file-expand-btn{display:block;width:100%;padding:6px 12px;background:var(--bg-secondary);border:none;border-top:1px solid var(--border);color:var(--text-muted);font-size:0.7rem;cursor:pointer;text-align:left;transition:background 0.15s}
.lib-file-expand-btn:hover{background:var(--bg-tertiary,#2a2a40);color:var(--text-primary)}
.lib-file-details{padding:12px 16px;background:var(--bg-secondary);border-top:1px solid var(--border)}
.doc-details-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.doc-details-section .doc-details-label{font-size:0.65rem;color:var(--text-muted);margin-bottom:2px;font-weight:600}
.doc-details-section .doc-details-value{font-size:0.78rem;color:var(--text-primary)}

/* Section analysis panel */
.lib-section-analysis-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;overflow:hidden}
.lib-section-analysis-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;cursor:pointer;background:var(--bg-secondary);font-size:0.8rem;font-weight:600;color:var(--text-primary);transition:background 0.15s}
.lib-section-analysis-header:hover{background:var(--bg-tertiary,#2a2a40)}
.lsa-time{font-size:0.65rem;color:var(--text-muted);font-weight:400}
.lsa-arrow{font-size:0.7rem;color:var(--text-muted)}
.lib-section-analysis-body{padding:14px}
.lib-section-analysis-body .bilingual-grid{margin:0}
.lib-section-analysis-loading{display:flex;align-items:center;gap:10px;padding:14px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;color:var(--accent);font-size:0.82rem}

/* Per-file analysis styles */
.lib-file-analyzed{border-color:var(--accent) !important;box-shadow:0 0 8px rgba(0,229,160,0.08)}
.lib-file-btn-row{display:flex;border-top:1px solid var(--border)}
.lib-file-btn-row .lib-file-expand-btn{flex:1;border-top:none;border-right:1px solid var(--border)}
.lib-file-analyze-btn{flex:1;padding:6px 12px;background:var(--bg-secondary);border:none;color:var(--accent);font-size:0.7rem;cursor:pointer;text-align:center;transition:all 0.15s}
.lib-file-analyze-btn:hover{background:var(--accent-dim);color:var(--accent)}
.lib-file-analyze-btn.analyzed{color:var(--text-muted)}
.lib-file-analyze-btn:disabled{opacity:0.5;cursor:not-allowed}
.lib-file-priority{font-size:0.65rem;font-weight:700;padding:1px 5px;border-radius:3px;background:var(--bg-secondary)}
.lib-file-analysis-loading{display:flex;align-items:center;gap:10px;padding:10px 14px;color:var(--accent);font-size:0.75rem;border-top:1px solid var(--border)}
.lib-file-analysis-result{border-top:1px solid var(--border)}
.lib-file-analysis-header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;cursor:pointer;background:var(--bg-secondary);font-size:0.75rem;font-weight:600;color:var(--text-primary);transition:background 0.15s}
.lib-file-analysis-header:hover{background:var(--bg-tertiary,#2a2a40)}
.lfa-time{font-size:0.6rem;color:var(--text-muted);font-weight:400}
.lfa-arrow{font-size:0.65rem;color:var(--text-muted)}
.lib-file-analysis-body{padding:12px}
.lib-file-analysis-body .bilingual-grid{margin:0}

/* ═══════════════════════════════════════════════════════════════════
   TOTAL LIBRARY SUMMARY
   ═══════════════════════════════════════════════════════════════════ */
.lib-total-panel{background:var(--bg-card);border:1px solid var(--accent);border-radius:var(--radius);padding:20px;margin-top:24px}
.lib-total-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.lib-total-header h3{font-size:1.1rem;color:var(--text-primary);margin:0}
.lib-total-actions{display:flex;align-items:center;gap:8px}
.lib-total-time{font-size:0.65rem;color:var(--text-muted)}
.lib-total-scores{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-bottom:16px}
.lib-total-loading{display:flex;align-items:center;gap:12px;padding:24px;justify-content:center;color:var(--accent);font-size:0.9rem}
.lib-total-error{padding:16px;color:var(--red);text-align:center;font-size:0.85rem}

/* ═══════════════════════════════════════════════════════════════════
   KNOWLEDGE GRAPH
   ═══════════════════════════════════════════════════════════════════ */

/* Toolbar */
.kg-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:10px}
.kg-toolbar-left{display:flex;align-items:center;gap:12px}
.kg-toolbar-right{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.kg-title{font-size:1.05rem;color:var(--text-primary);margin:0;white-space:nowrap}
.kg-node-count{font-size:0.7rem;color:var(--text-muted);padding:2px 8px;background:var(--bg-secondary);border-radius:10px}
.kg-search{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:5px 10px;font-size:0.72rem;color:var(--text-primary);width:160px;transition:border-color 0.2s}
.kg-search:focus{outline:none;border-color:var(--accent)}
.kg-select{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:5px 8px;font-size:0.7rem;color:var(--text-primary);cursor:pointer;min-width:90px}
.kg-select:focus{outline:none;border-color:var(--accent)}
.kg-btn{width:30px;height:30px;border-radius:8px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);font-size:0.8rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all 0.15s}
.kg-btn:hover{background:var(--accent);border-color:var(--accent);color:#fff}
.kg-btn-accent{background:var(--accent);border-color:var(--accent);color:#fff}
.kg-btn-accent:hover{opacity:0.85}

/* Legend */
.kg-legend{display:flex;flex-wrap:wrap;gap:10px;padding:6px 12px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px}
.kg-legend-item{display:flex;align-items:center;gap:5px;font-size:0.65rem;color:var(--text-muted)}
.kg-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}

/* Body grid */
.kg-body{display:grid;grid-template-columns:1fr 320px;gap:12px;height:620px}
.kg-canvas{background:#060612;border:1px solid var(--border);border-radius:var(--radius);height:100%;position:relative;overflow:hidden}
.kg-canvas canvas{border-radius:var(--radius);outline:none}

/* Placeholder */
.kg-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:20px}
.kg-placeholder-icon{font-size:2.5rem;opacity:0.3}
.kg-placeholder-text{font-size:0.88rem;color:var(--text-secondary);font-weight:600}
.kg-placeholder-sub{font-size:0.72rem;color:var(--text-muted)}

/* Zoom controls */
.kg-zoom{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:4px;z-index:10}
.kg-zoom button{width:30px;height:30px;border-radius:6px;border:1px solid rgba(255,255,255,0.1);background:rgba(6,6,18,0.7);color:rgba(255,255,255,0.7);font-size:0.85rem;cursor:pointer;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:all 0.15s}
.kg-zoom button:hover{background:var(--accent);border-color:var(--accent);color:#fff}

/* Detail panel */
.kg-detail{background:var(--glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:var(--radius);overflow-y:auto;display:flex;flex-direction:column;transition:border-color 0.3s,box-shadow 0.3s}
.kg-detail.kg-detail-active{border-color:var(--accent);box-shadow:0 0 20px rgba(0,229,160,0.06)}
.kg-detail-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);font-size:0.8rem;font-weight:700;color:var(--text-primary);flex-shrink:0}
.kg-detail-close{background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:0 4px;line-height:1}
.kg-detail-close:hover{color:var(--text-primary)}
.kg-detail-body{padding:16px;overflow-y:auto;flex:1}
.kg-detail-empty{text-align:center;padding:40px 16px;color:var(--text-muted);font-size:0.78rem}
.kg-detail-empty p{margin:4px 0}
.kg-detail-body h4{font-size:0.95rem;margin:0 0 6px;color:var(--text-primary);line-height:1.4}
.kg-detail-body p{font-size:0.78rem;color:var(--text-secondary);margin:4px 0;line-height:1.5}
.kg-detail-body .text-cn{display:block;font-size:0.8rem;color:var(--text-secondary);margin:2px 0 8px;font-weight:500;line-height:1.5}
.kg-detail-enter{animation:kgSlideIn 0.3s ease}
@keyframes kgSlideIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* Badges */
.kg-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:10px;font-size:0.65rem;font-weight:600;letter-spacing:0.4px;text-transform:uppercase;margin-bottom:10px}

/* Connections */
.kg-conn-pills{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0 10px}
.kg-conn-pill{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:8px;font-size:0.6rem;font-weight:600;background:var(--bg-secondary);color:var(--text-muted);border:1px solid var(--border)}
.kg-pill-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}
.kg-conn-nodes{margin:6px 0 8px;max-height:140px;overflow-y:auto}
.kg-conn-node{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;font-size:0.68rem;color:var(--text-secondary);cursor:pointer;transition:background 0.15s}
.kg-conn-node:hover{background:var(--bg-secondary);color:var(--text-primary)}
.kg-cn-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.kg-conn-more{font-size:0.62rem;color:var(--text-muted);padding:4px 6px;cursor:pointer}
.kg-conn-more:hover{color:var(--accent)}

/* Separator & Meta */
.kg-sep{height:1px;background:var(--border);margin:10px 0}
.kg-meta{display:grid;grid-template-columns:1fr 1fr;gap:3px 10px;font-size:0.7rem;color:var(--text-secondary);margin:8px 0}
.kg-meta strong{color:var(--text-muted)}
.kg-filename{font-size:0.76rem;color:var(--accent);font-weight:600;margin:6px 0 10px;word-break:break-all}
.kg-actions{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.kg-actions .btn{font-size:0.7rem;padding:5px 10px}

/* Radial gauge */
.kg-gauge{display:flex;align-items:center;gap:12px;margin:8px 0}
.kg-gauge svg{flex-shrink:0}
.kg-gauge-label{font-size:0.7rem;color:var(--text-muted);line-height:1.4}

/* Preview frame */
.kg-preview-frame{width:100%;height:200px;border:1px solid var(--border);border-radius:6px;background:#0a0a1a;margin-top:8px}

/* Stats bar */
.kg-stats{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;padding:8px 0;border-top:1px solid var(--border)}
.kg-stat{font-size:0.7rem;color:var(--text-muted)}

/* Fullscreen mode */
.kg-fullscreen{position:fixed!important;inset:0;z-index:9999;background:var(--bg-primary);padding:16px;overflow-y:auto;display:block!important}
.kg-fullscreen .kg-body{height:calc(100vh - 110px)}
.kg-fullscreen .kg-canvas{min-height:0}
.kg-fullscreen .kg-canvas canvas{width:100%!important;height:100%!important}
#pdfViewerModal{z-index:10001!important}

/* Force-graph tooltip override */
.graph-tooltip{pointer-events:none!important;font-family:var(--font-body)!important;z-index:100}
.graph-info-msg{display:none!important}

/* Responsive */
@media(max-width:900px){.kg-body{grid-template-columns:1fr;height:auto}.kg-detail{max-height:220px}.kg-canvas{min-height:300px}.kg-toolbar{flex-direction:column;align-items:stretch}.kg-toolbar-right{justify-content:flex-start;flex-wrap:wrap}}
@media(max-width:640px){.kg-body{height:auto;gap:8px}.kg-canvas{min-height:260px}.kg-detail{max-height:180px;border-radius:var(--radius-sm)}.kg-toolbar-right{gap:4px}.kg-search{width:100%}.kg-select{min-width:70px;font-size:0.65rem}.kg-btn{width:28px;height:28px;font-size:0.72rem}.kg-legend{gap:6px;padding:4px 8px;font-size:0.6rem}.kg-stats{font-size:0.6rem}}

/* ═══════════════════════════════════════════════════════════════════
   Library File Card Enhancements
   ═══════════════════════════════════════════════════════════════════ */
.lib-file-download-link{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border);font-size:0.8rem;text-decoration:none;cursor:pointer;transition:background 0.2s}
.lib-file-download-link:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.lib-file-revision{background:var(--bg-secondary);padding:1px 6px;border-radius:4px;font-size:0.62rem}
.lib-related-tag{display:inline-block;padding:2px 8px;margin:2px 4px 2px 0;background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;font-size:0.68rem;color:var(--text-secondary)}
.doc-details-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px 16px}
.doc-details-section{padding:4px 0}
.doc-details-label{font-size:0.65rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:2px}
.doc-details-value{font-size:0.78rem;color:var(--text-primary)}

/* ═══════════════════════════════════════════════════════════════════
   Library Inventory Summary (bottom panel)
   ═══════════════════════════════════════════════════════════════════ */
.lib-inventory-panel{margin-top:24px;padding:24px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);position:relative;overflow:hidden}
.lib-inventory-panel::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),#3b82f6,var(--accent))}
.inv-header h3{font-size:1.1rem;color:var(--text-primary);margin:0 0 6px}
.inv-subtitle{font-size:0.78rem;color:var(--text-muted);margin:0}

.inv-kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;margin:20px 0}
.inv-kpi{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:14px 12px;text-align:center;transition:border-color 0.2s}
.inv-kpi:hover{border-color:var(--accent)}
.inv-kpi-num{font-size:1.3rem;font-weight:700;color:var(--text-primary);line-height:1.2}
.inv-kpi-label{font-size:0.65rem;color:var(--text-muted);margin-top:4px;line-height:1.3}

.inv-section-table-wrap{margin-top:20px;overflow-x:auto}
.inv-section-table-wrap h4{font-size:0.85rem;color:var(--text-primary);margin:0 0 10px}
.inv-section-table{width:100%;border-collapse:collapse;font-size:0.72rem}
.inv-section-table thead th{text-align:left;padding:8px 10px;background:var(--bg-secondary);color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:0.5px;font-size:0.62rem;border-bottom:2px solid var(--border);white-space:nowrap}
.inv-section-table tbody tr{border-bottom:1px solid var(--border);transition:background 0.15s}
.inv-section-table tbody tr:hover{background:rgba(16,185,129,0.06)}
.inv-section-table tbody td{padding:8px 10px;color:var(--text-secondary)}

.inv-bar-cell{display:flex;align-items:center;gap:6px}
.inv-bar{height:6px;border-radius:3px;background:linear-gradient(90deg,var(--accent),#3b82f6);min-width:2px}
.inv-bar-cell span{font-size:0.65rem;color:var(--text-muted);white-space:nowrap}

.inv-distributions{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}
.inv-dist-block h4{font-size:0.82rem;color:var(--text-primary);margin:0 0 10px}
.inv-chip-grid{display:flex;flex-wrap:wrap;gap:6px}
.inv-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:16px;font-size:0.68rem;color:var(--text-secondary);transition:border-color 0.2s}
.inv-chip:hover{border-color:var(--accent)}
.inv-chip strong{color:var(--accent);font-weight:700}
.inv-chip-disc{border-color:rgba(59,130,246,0.3)}
.inv-chip-disc strong{color:#3b82f6}

@media(max-width:900px){.inv-distributions{grid-template-columns:1fr}.inv-kpi-grid{grid-template-columns:repeat(2,1fr)}}

/* ============================================================================
   COMPETITIVE INTELLIGENCE MODULE
   ============================================================================ */
.comp-ports-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin:20px 0}
.comp-port-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:16px 12px;text-align:center;transition:all 0.2s}
.comp-port-card:hover{border-color:var(--accent);transform:translateY(-2px)}
.comp-port-card.highlight{border-color:var(--accent);background:var(--accent-dim);box-shadow:0 0 20px rgba(0,229,160,0.15)}
.comp-port-flag{font-size:1.8rem;margin-bottom:6px}
.comp-port-name{font-size:0.78rem;color:var(--text-secondary);line-height:1.4;margin-bottom:6px}
.comp-port-name .text-cn{color:var(--text-muted);font-size:0.68rem}
.comp-port-vol{font-size:0.85rem;font-weight:700;color:var(--accent)}
.comp-port-card.highlight .comp-port-vol{color:#fff}

/* ============================================================================
   STAKEHOLDER MAP MODULE
   ============================================================================ */
.stk-rings{position:relative;width:560px;height:560px;margin:24px auto;display:flex;align-items:center;justify-content:center;overflow:visible}
.stk-ring{position:absolute;border:1.5px dashed var(--border-light);border-radius:50%;display:flex;align-items:center;justify-content:center;overflow:visible}
.stk-ring.r-core{width:170px;height:170px;border-color:var(--accent);background:rgba(0,255,136,0.04)}
.stk-ring.r-govt{width:340px;height:340px;border-color:var(--orange)}
.stk-ring.r-commercial{width:510px;height:510px;border-color:var(--blue)}
.stk-ring-label{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--bg-card);padding:2px 12px;font-size:0.65rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;white-space:nowrap;border-radius:8px;border:1px solid var(--border);z-index:5}
.stk-node{position:absolute;display:flex;align-items:center;gap:5px;height:34px;padding:0 11px 0 7px;background:var(--bg-card);border:1.5px solid var(--border);border-radius:17px;cursor:pointer;font-size:0.68rem;font-weight:500;color:var(--text-primary);white-space:nowrap;transition:all 0.3s;z-index:2}
.stk-emoji{font-size:1.05rem;flex-shrink:0}
.r-core .stk-node{border-color:var(--accent);transform:rotate(var(--angle)) translateX(85px) rotate(calc(-1 * var(--angle)))}
.r-govt .stk-node{border-color:var(--orange);transform:rotate(var(--angle)) translateX(170px) rotate(calc(-1 * var(--angle)))}
.r-commercial .stk-node{border-color:var(--blue);transform:rotate(var(--angle)) translateX(255px) rotate(calc(-1 * var(--angle)))}
.stk-node:hover{z-index:10;box-shadow:0 0 16px var(--accent-glow);border-color:var(--accent) !important}
.r-core .stk-node:hover{transform:rotate(var(--angle)) translateX(85px) rotate(calc(-1 * var(--angle))) scale(1.12)}
.r-govt .stk-node:hover{transform:rotate(var(--angle)) translateX(170px) rotate(calc(-1 * var(--angle))) scale(1.12)}
.r-commercial .stk-node:hover{transform:rotate(var(--angle)) translateX(255px) rotate(calc(-1 * var(--angle))) scale(1.12)}

/* ============================================================================
   FINANCIAL MODEL MODULE
   ============================================================================ */
.fin-kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin:16px 0}
.fin-kpi{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:14px 12px;text-align:center}
.fin-kpi-label{font-size:0.62rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:4px}
.fin-kpi-val{font-size:1.2rem;font-weight:700;color:var(--accent)}
.fin-scenarios{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:16px 0}
.fin-scenario{display:flex;align-items:center;gap:12px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;cursor:pointer;transition:all 0.2s}
.fin-scenario:hover{border-color:var(--accent)}
.fin-scenario.active{border-color:var(--accent);background:var(--accent-dim)}
.fin-scenario.bull{border-left:3px solid var(--accent)}
.fin-scenario.base{border-left:3px solid var(--blue)}
.fin-scenario.bear{border-left:3px solid var(--orange)}
.fin-scenario.stress{border-left:3px solid var(--red)}
.fin-scn-icon{font-size:1.5rem}
.fin-scn-desc{font-size:0.68rem;color:var(--text-muted);margin-top:2px}

/* ============================================================================
   COMPLIANCE TRACKER MODULE
   ============================================================================ */
.env-pipeline{display:flex;align-items:center;justify-content:center;gap:0;margin:24px 0;flex-wrap:wrap}
.env-stage{background:var(--bg-secondary);border:1.5px solid var(--border);border-radius:var(--radius);padding:16px 20px;text-align:center;min-width:110px;transition:all 0.2s}
.env-stage.active{border-color:var(--accent);background:var(--accent-dim)}
.env-stage.completed{border-color:var(--accent);background:var(--accent-dim);opacity:0.8}
.env-stage.pending{opacity:0.65}
.env-stage:hover{transform:translateY(-2px);opacity:1}
.env-stage-icon{font-size:1.5rem;margin-bottom:6px}
.env-stage-name{font-size:0.78rem;font-weight:600;color:var(--text-primary);line-height:1.3}
.env-stage-name .text-cn{font-size:0.62rem;color:var(--text-muted);font-weight:400}
.env-stage-status{font-size:0.65rem;color:var(--text-muted);margin-top:6px}
.env-arrow{font-size:1.2rem;color:var(--border-light);margin:0 6px}
.env-permits-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin:20px 0}
.env-permit{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;font-size:0.78rem;color:var(--text-secondary);display:flex;align-items:center;gap:8px;transition:border-color 0.2s}
.env-permit:hover{border-color:var(--accent)}
.env-permit-status{margin-left:auto;font-size:0.7rem}
.env-permit-status.pending{color:var(--text-muted)}
.env-permit-status.active{color:var(--orange)}
.env-permit-status.done{color:var(--accent)}

/* ============================================================================
   ACTIVITY FEED MODULE
   ============================================================================ */
.activity-filters{display:flex;gap:8px;margin:12px 0 16px;flex-wrap:wrap}
.act-filter{background:var(--bg-secondary);border:1px solid var(--border);border-radius:16px;padding:5px 14px;font-size:0.72rem;color:var(--text-muted);cursor:pointer;transition:all 0.2s;font-family:inherit}
.act-filter:hover{border-color:var(--accent);color:var(--text-secondary)}
.act-filter.active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.activity-timeline{max-height:600px;overflow-y:auto;padding-right:8px}
.act-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);transition:background 0.15s;padding-left:8px;border-radius:4px}
.act-item:hover{background:rgba(16,185,129,0.04)}
.act-item.hidden{display:none}
.act-icon{font-size:1.3rem;flex-shrink:0;width:32px;text-align:center;margin-top:2px}
.act-body{flex:1;min-width:0}
.act-title{font-size:0.8rem;color:var(--text-primary);font-weight:500;margin-bottom:3px}
.act-meta{font-size:0.68rem;color:var(--text-muted);display:flex;gap:12px;flex-wrap:wrap}
.act-user{color:var(--accent)}
.activity-empty{text-align:center;padding:40px 20px;color:var(--text-muted);font-size:0.82rem}

/* ============================================================================
   RISK HEATMAP
   ============================================================================ */
.risk-heatmap-wrap{margin:20px 0}
.risk-heatmap-title{font-size:0.82rem;color:var(--text-primary);margin-bottom:12px;font-weight:600}
.risk-heatmap{display:grid;grid-template-columns:auto repeat(5,1fr);gap:3px;max-width:500px}
.risk-hm-label{font-size:0.58rem;color:var(--text-muted);display:flex;align-items:center;justify-content:center;padding:4px 8px;white-space:nowrap}
.risk-hm-label.y-axis{writing-mode:vertical-lr;transform:rotate(180deg);letter-spacing:1px;text-transform:uppercase}
.risk-hm-cell{aspect-ratio:1;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:0.62rem;font-weight:700;color:rgba(255,255,255,0.85);cursor:pointer;transition:all 0.2s;min-height:36px;position:relative}
.risk-hm-cell:hover{transform:scale(1.08);z-index:2;box-shadow:0 0 12px rgba(0,0,0,0.4)}
.risk-hm-cell.sev-low{background:rgba(16,185,129,0.25);color:var(--accent)}
.risk-hm-cell.sev-med{background:rgba(251,191,36,0.3);color:var(--yellow)}
.risk-hm-cell.sev-high{background:rgba(245,158,11,0.4);color:var(--orange)}
.risk-hm-cell.sev-crit{background:rgba(239,68,68,0.45);color:var(--red)}
.risk-hm-cell.sev-none{background:var(--bg-secondary);color:var(--text-muted)}
.risk-hm-corner{background:none}

@media(max-width:768px){
  .stk-rings{max-width:320px}
  .env-pipeline{flex-direction:column}
  .env-arrow{transform:rotate(90deg)}
  .fin-scenarios{grid-template-columns:1fr}
  .comp-ports-grid{grid-template-columns:repeat(2,1fr)}
  .tt-debate-results{grid-template-columns:1fr}
}

/* ============================================================================
   THINK TANK DEBATE MODE
   ============================================================================ */
.tt-debate-section{margin-top:16px}
.tt-debate-intro{margin-bottom:20px}
.tt-debate-ring{display:flex;align-items:center;justify-content:center;gap:20px;padding:24px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius)}
.tt-debate-side{font-size:1rem;font-weight:600;padding:12px 24px;border-radius:var(--radius);display:flex;align-items:center;gap:8px}
.tt-debate-side.pro{background:rgba(16,185,129,0.12);color:var(--accent);border:1px solid rgba(16,185,129,0.3)}
.tt-debate-side.con{background:rgba(239,68,68,0.12);color:var(--red);border:1px solid rgba(239,68,68,0.3)}
.tt-debate-vs{font-size:1.3rem;font-weight:800;color:var(--text-muted);letter-spacing:2px}
.tt-debate-results{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px}
.tt-debate-col{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:16px;max-height:500px;overflow-y:auto}
.tt-debate-col.pro{border-top:3px solid var(--accent)}
.tt-debate-col.con{border-top:3px solid var(--red)}
.tt-debate-col h4{margin:0 0 12px;font-size:0.88rem}
.tt-debate-verdict{grid-column:1/-1;background:var(--bg-card);border:1.5px solid var(--accent);border-radius:var(--radius);padding:20px;margin-top:4px}
.tt-debate-verdict h4{color:var(--accent);margin:0 0 10px;font-size:0.92rem}
.tt-debate-entry{padding:12px;margin-bottom:10px;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border)}
.tt-debate-entry .engine-name{font-size:0.72rem;color:var(--accent);font-weight:600;margin-bottom:6px}
.tt-debate-entry .debate-text{font-size:0.78rem;color:var(--text-secondary);line-height:1.6}
