/* diaspora.ro source-first module extracted from advanced-panels; behavior preserved during migration. */
/* ── Shared 2100 panel base ── */
.p2100{position:fixed;inset:0;z-index:19000;background:rgba(2,4,16,.92);display:none;flex-direction:column;align-items:center;justify-content:flex-end;backdrop-filter:blur(8px)}
.p2100.open{display:flex}
.p2100-inner{background:linear-gradient(170deg,#0a0c1e,#12142d);border-radius:24px 24px 0 0;width:100%;max-height:90vh;overflow-y:auto;padding:20px 18px calc(28px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px;position:relative}
.p2100-handle{width:36px;height:4px;background:rgba(255,255,255,.15);border-radius:2px;margin:0 auto 4px}
.p2100-title{font:800 18px var(--font);color:#f1f5f9;display:flex;align-items:center;gap:10px}
.p2100-sub{font:400 13px var(--font);color:#64748b;line-height:1.5}
.p2100-close{position:absolute;top:18px;right:16px;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.08);border:none;color:#94a3b8;font-size:17px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.p2100-btn{width:100%;padding:14px;border-radius:14px;border:none;font:700 15px var(--font);cursor:pointer;transition:opacity .15s}
.p2100-btn:active{opacity:.8}
.p2100-btn.primary{background:linear-gradient(135deg,#6741D9,#ec4899);color:#fff}
.p2100-btn.secondary{background:rgba(255,255,255,.06);color:#94a3b8;border:1px solid rgba(255,255,255,.1)}
.p2100-row{display:flex;gap:10px}
.p2100-row .p2100-btn{flex:1}
.p2100-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:14px}
.p2100-label{font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#475569;margin-bottom:8px}
.p2100-badge{display:inline-block;padding:3px 10px;border-radius:20px;font:700 10px var(--font);letter-spacing:.04em}

/* ── 1. SenzorFeed ── */
.sf-orb{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#10b981,#06d6a0);margin:0 auto;display:flex;align-items:center;justify-content:center;font-size:36px;animation:sfPulse 1.2s ease-in-out infinite;box-shadow:0 0 28px rgba(16,185,129,.4)}
@keyframes sfPulse{0%,100%{transform:scale(1);box-shadow:0 0 28px rgba(16,185,129,.4)}50%{transform:scale(1.08);box-shadow:0 0 48px rgba(16,185,129,.7)}}
.sf-bpm{text-align:center;font:900 42px var(--font);color:#10b981;letter-spacing:-2px}
.sf-bpm span{font:600 14px var(--font);color:#64748b;letter-spacing:0}
.sf-bar-wrap{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.sf-bar{background:rgba(255,255,255,.04);border:1px solid rgba(16,185,129,.15);border-radius:12px;padding:10px;text-align:center}
.sf-bar-val{font:800 20px var(--font);color:#10b981}
.sf-bar-lbl{font:400 10px var(--font);color:#64748b;margin-top:2px}
.sf-mood-row{display:flex;gap:8px;flex-wrap:wrap}
.sf-mood{padding:8px 16px;border-radius:20px;font:600 12px var(--font);cursor:pointer;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:#94a3b8;transition:all .15s}
.sf-mood.active{background:linear-gradient(135deg,#10b981,#06d6a0);color:#fff;border-color:transparent}
.sf-feed-tag{display:inline-block;padding:4px 10px;border-radius:20px;font:700 10px var(--font);background:rgba(16,185,129,.15);color:#10b981;border:1px solid rgba(16,185,129,.2)}

/* ── 2. Genomic Heritage ── */
.geo-map{width:100%;border-radius:14px;overflow:hidden;background:#0a0c1e;position:relative}
.geo-region{cursor:pointer;transition:opacity .2s;opacity:.7}
.geo-region:hover,.geo-region.active{opacity:1}
.geo-legend{display:flex;flex-direction:column;gap:6px}
.geo-leg-row{display:flex;align-items:center;gap:8px}
.geo-leg-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}
.geo-leg-name{font:500 12px var(--font);color:#94a3b8;flex:1}
.geo-leg-pct{font:700 12px var(--font);color:#f1f5f9}
.geo-dna-bar{height:8px;border-radius:4px;background:linear-gradient(90deg,#f59e0b,#ef4444,#7c3aed,#10b981,#0ea5e9);margin:6px 0}

/* ── 3. Memory Capsule ── */
.mc-timeline{display:flex;flex-direction:column;gap:10px;max-height:240px;overflow-y:auto}
.mc-item{display:flex;gap:12px;align-items:flex-start}
.mc-dot-col{display:flex;flex-direction:column;align-items:center;gap:0}
.mc-dot{width:12px;height:12px;border-radius:50%;background:linear-gradient(135deg,#6741D9,#ec4899);flex-shrink:0;margin-top:2px}
.mc-line{flex:1;width:2px;background:rgba(124,58,237,.2);min-height:20px}
.mc-body{flex:1;background:rgba(255,255,255,.04);border:1px solid rgba(124,58,237,.15);border-radius:12px;padding:10px}
.mc-date{font:700 10px var(--font);color:#a78bfa;margin-bottom:3px}
.mc-text{font:400 13px var(--font);color:#cbd5e1;line-height:1.4}
.mc-locked{font:600 11px var(--font);color:#f59e0b;display:flex;align-items:center;gap:4px;margin-top:4px}
.mc-rec-btn{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#ec4899,#7c3aed);border:none;font-size:26px;cursor:pointer;display:flex;align-items:center;justify-content:center;margin:0 auto;box-shadow:0 0 20px rgba(236,72,153,.4)}
.mc-rec-btn.recording{animation:sfPulse 1s ease-in-out infinite;background:linear-gradient(135deg,#ef4444,#dc2626)}
.mc-inp{width:100%;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:10px 14px;color:#f1f5f9;font:400 14px var(--font);outline:none;resize:none}
.mc-inp::placeholder{color:#475569}
.mc-year-sel{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
.mc-year-btn{flex-shrink:0;padding:6px 14px;border-radius:20px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:#94a3b8;font:600 12px var(--font);cursor:pointer;transition:all .15s;white-space:nowrap}
.mc-year-btn.sel{background:linear-gradient(135deg,#6741D9,#ec4899);color:#fff;border-color:transparent}

/* ── 4. Collective Mind ── */
.cm-canvas-wrap{width:100%;border-radius:14px;overflow:hidden;background:#060818;position:relative}
.cm-question{font:700 16px var(--font);color:#e2e8f0;line-height:1.4;text-align:center}
.cm-options{display:flex;flex-direction:column;gap:8px}
.cm-opt{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.04);border:1px solid rgba(99,102,241,.15);border-radius:12px;padding:12px;cursor:pointer;transition:all .15s;position:relative;overflow:hidden}
.cm-opt-bar{position:absolute;left:0;top:0;height:100%;background:linear-gradient(90deg,rgba(99,102,241,.15),rgba(99,102,241,.05));transition:width .6s ease}
.cm-opt-emoji{font-size:22px;z-index:1;flex-shrink:0}
.cm-opt-text{font:600 13px var(--font);color:#e2e8f0;z-index:1;flex:1}
.cm-opt-pct{font:800 14px var(--font);color:#818cf8;z-index:1}
.cm-opt.voted{border-color:rgba(99,102,241,.5)}
.cm-nodes{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.cm-node{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;box-shadow:0 0 8px rgba(99,102,241,.3);animation:cmPop .3s ease;cursor:pointer}
@keyframes cmPop{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
.cm-live{font:700 11px var(--font);color:#10b981;display:flex;align-items:center;gap:5px}
.cm-live-dot{width:7px;height:7px;border-radius:50%;background:#10b981;animation:sfPulse 1.5s infinite}

/* ── 5. Holographic Room ── */
.holo-stage{width:100%;border-radius:14px;overflow:hidden;background:linear-gradient(135deg,#020614,#060820);position:relative;min-height:200px;display:flex;align-items:center;justify-content:center}
.holo-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(99,102,241,.1) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,.1) 1px,transparent 1px);background-size:30px 30px;animation:holoScroll 8s linear infinite}
@keyframes holoScroll{from{background-position:0 0}to{background-position:0 30px}}
.holo-avatar{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:8px}
.holo-person{width:80px;height:110px;border-radius:12px;background:linear-gradient(135deg,rgba(99,102,241,.3),rgba(139,92,246,.2));border:1px solid rgba(99,102,241,.5);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;box-shadow:0 0 30px rgba(99,102,241,.4),inset 0 0 20px rgba(99,102,241,.1);animation:holoFlicker 4s ease-in-out infinite}
@keyframes holoFlicker{0%,100%{opacity:.9;box-shadow:0 0 30px rgba(99,102,241,.4)}50%{opacity:1;box-shadow:0 0 50px rgba(139,92,246,.6)}}
.holo-person-icon{font-size:32px}
.holo-person-name{font:700 10px var(--font);color:#a5b4fc;text-align:center}
.holo-scan{position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(99,102,241,.15) 50%,transparent 55%);animation:holoScan 3s ease-in-out infinite}
@keyframes holoScan{0%,100%{transform:translateY(-50%)}50%{transform:translateY(50%)}}
.holo-participants{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.holo-part{display:flex;flex-direction:column;align-items:center;gap:6px}
.holo-part-av{width:52px;height:52px;border-radius:12px;background:linear-gradient(135deg,rgba(99,102,241,.25),rgba(139,92,246,.15));border:1px solid rgba(99,102,241,.3);display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 0 15px rgba(99,102,241,.25)}
.holo-part-name{font:600 10px var(--font);color:#64748b;text-align:center;max-width:60px}
.holo-status{font:700 11px var(--font);color:#818cf8;display:flex;align-items:center;gap:5px}

/* ── 6. Digital Twin ── */
.dt-avatar{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#a855f7,#ec4899);margin:0 auto;display:flex;align-items:center;justify-content:center;font-size:36px;box-shadow:0 0 24px rgba(168,85,247,.4);position:relative}
.dt-avatar::after{content:'AI';position:absolute;bottom:-4px;right:-4px;background:#7c3aed;color:#fff;font:800 8px var(--font);padding:2px 5px;border-radius:6px}
.dt-toggle-row{display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,.04);border:1px solid rgba(168,85,247,.15);border-radius:12px;padding:12px}
.dt-toggle-label{font:600 13px var(--font);color:#e2e8f0}
.dt-toggle-sub{font:400 11px var(--font);color:#64748b;margin-top:2px}
.dt-switch{width:44px;height:24px;border-radius:12px;background:rgba(255,255,255,.1);position:relative;cursor:pointer;transition:background .2s;flex-shrink:0}
.dt-switch.on{background:linear-gradient(135deg,#a855f7,#ec4899)}
.dt-switch::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .2s}
.dt-switch.on::after{transform:translateX(20px)}
.dt-activity{display:flex;flex-direction:column;gap:6px;max-height:180px;overflow-y:auto}
.dt-act-item{display:flex;gap:10px;align-items:center;background:rgba(255,255,255,.03);border-radius:10px;padding:8px 10px}
.dt-act-icon{font-size:18px;flex-shrink:0}
.dt-act-text{font:400 12px var(--font);color:#94a3b8;flex:1}
.dt-act-time{font:600 10px var(--font);color:#475569}

/* ── 7. Nation Simulation ── */
.ns-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ns-stat{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:12px;text-align:center}
.ns-stat-val{font:900 22px var(--font);color:#f1f5f9}
.ns-stat-lbl{font:400 10px var(--font);color:#64748b;margin-top:2px}
.ns-stat-delta{font:700 11px var(--font);margin-top:4px}
.ns-stat-delta.pos{color:#10b981}
.ns-stat-delta.neg{color:#ef4444}
.ns-bar-row{display:flex;flex-direction:column;gap:6px}
.ns-bar-label{display:flex;justify-content:space-between;font:600 12px var(--font)}
.ns-bar-label span:first-child{color:#94a3b8}
.ns-bar-label span:last-child{color:#f1f5f9}
.ns-bar-bg{height:8px;background:rgba(255,255,255,.06);border-radius:4px;overflow:hidden}
.ns-bar-fill{height:100%;border-radius:4px;transition:width 1s ease}
.ns-slider-row{display:flex;flex-direction:column;gap:4px}
.ns-slider-row label{font:600 12px var(--font);color:#94a3b8}
.ns-slider{width:100%;accent-color:#7c3aed}
.ns-result{background:linear-gradient(135deg,rgba(16,185,129,.08),rgba(5,150,105,.04));border:1px solid rgba(16,185,129,.2);border-radius:14px;padding:14px;text-align:center}
.ns-result-val{font:900 28px var(--font);color:#10b981}
.ns-result-lbl{font:400 12px var(--font);color:#64748b;margin-top:4px}

/* ── 8. Quantum Vote ── */
.qv-question{font:700 16px var(--font);color:#e2e8f0;text-align:center;line-height:1.4}
.qv-options{display:flex;flex-direction:column;gap:8px}
.qv-opt{background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.2);border-radius:14px;padding:14px;cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:12px}
.qv-opt:hover,.qv-opt.sel{background:rgba(99,102,241,.15);border-color:rgba(99,102,241,.5);box-shadow:0 0 12px rgba(99,102,241,.2)}
.qv-opt-icon{font-size:24px;flex-shrink:0}
.qv-opt-text{font:600 13px var(--font);color:#e2e8f0;flex:1}
.qv-opt-check{width:22px;height:22px;border-radius:50%;border:2px solid rgba(99,102,241,.4);display:flex;align-items:center;justify-content:center;font-size:12px;color:transparent;transition:all .15s}
.qv-opt.sel .qv-opt-check{background:linear-gradient(135deg,#6366f1,#7c3aed);border-color:transparent;color:#fff}
.qv-zk-badge{background:rgba(99,102,241,.1);border:1px solid rgba(99,102,241,.25);border-radius:10px;padding:10px 14px;display:flex;align-items:center;gap:10px}
.qv-zk-icon{font-size:20px}
.qv-zk-text{font:500 12px var(--font);color:#818cf8;line-height:1.4}
.qv-result-bar{display:flex;flex-direction:column;gap:8px}
.qv-res-row{display:flex;align-items:center;gap:8px}
.qv-res-label{font:600 12px var(--font);color:#94a3b8;width:120px;flex-shrink:0}
.qv-res-bar-wrap{flex:1;height:10px;background:rgba(255,255,255,.06);border-radius:5px;overflow:hidden}
.qv-res-bar-fill{height:100%;border-radius:5px;background:linear-gradient(90deg,#6366f1,#7c3aed);transition:width 1s ease}
.qv-res-pct{font:700 12px var(--font);color:#818cf8;width:36px;text-align:right}
.qv-quantum-fx{text-align:center;font:700 11px var(--font);color:#818cf8;display:flex;align-items:center;justify-content:center;gap:6px}

/* ── 9. Temporal Profile ── */
.tp-timeline{display:flex;flex-direction:column;gap:0}
.tp-year-row{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.tp-year-row:last-child{border-bottom:none}
.tp-year-col{width:44px;flex-shrink:0;text-align:right}
.tp-year{font:800 13px var(--font);color:#818cf8}
.tp-year-sub{font:400 9px var(--font);color:#475569}
.tp-conn{flex:0;width:24px;display:flex;flex-direction:column;align-items:center;gap:0;padding-top:2px}
.tp-conn-dot{width:10px;height:10px;border-radius:50%;background:linear-gradient(135deg,#6366f1,#7c3aed);flex-shrink:0}
.tp-conn-line{flex:1;width:2px;background:rgba(99,102,241,.2);min-height:30px}
.tp-content{flex:1}
.tp-stat-mini{font:600 12px var(--font);color:#94a3b8;margin-bottom:4px}
.tp-tags{display:flex;flex-wrap:wrap;gap:4px}
.tp-tag{padding:3px 8px;border-radius:10px;font:600 10px var(--font);background:rgba(99,102,241,.1);color:#818cf8;border:1px solid rgba(99,102,241,.15)}
.tp-tag.future{background:rgba(236,72,153,.08);color:#f472b6;border-color:rgba(236,72,153,.15)}
.tp-ai-note{background:rgba(236,72,153,.06);border:1px solid rgba(236,72,153,.15);border-radius:10px;padding:8px 10px;font:400 11px var(--font);color:#f9a8d4;font-style:italic}

/* ── 10. Ancestor Chain ── */
.ac-tree{display:flex;flex-direction:column;gap:0;align-items:center}
.ac-gen{display:flex;gap:16px;justify-content:center;padding:8px 0;position:relative}
.ac-gen::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:2px;height:8px;background:rgba(245,158,11,.3)}
.ac-person{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer}
.ac-av{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;border:2px solid rgba(245,158,11,.3);box-shadow:0 0 12px rgba(245,158,11,.2);transition:all .2s}
.ac-av:hover{border-color:rgba(245,158,11,.7);box-shadow:0 0 20px rgba(245,158,11,.4)}
.ac-av.you{border-color:#f59e0b;background:linear-gradient(135deg,rgba(245,158,11,.2),rgba(239,68,68,.1))}
.ac-av.gen1{background:linear-gradient(135deg,rgba(245,158,11,.15),rgba(217,119,6,.1))}
.ac-av.gen2{background:linear-gradient(135deg,rgba(217,119,6,.12),rgba(180,83,9,.08))}
.ac-av.gen3{background:linear-gradient(135deg,rgba(180,83,9,.1),rgba(120,53,15,.06))}
.ac-name{font:600 10px var(--font);color:#94a3b8;text-align:center;max-width:64px;line-height:1.2}
.ac-year{font:400 9px var(--font);color:#475569}
.ac-connector{width:100%;display:flex;justify-content:center}
.ac-connector::before{content:'';display:block;width:2px;height:16px;background:rgba(245,158,11,.25)}
.ac-village{background:linear-gradient(135deg,rgba(245,158,11,.08),rgba(217,119,6,.04));border:1px solid rgba(245,158,11,.2);border-radius:14px;padding:14px;text-align:center}
.ac-village-name{font:800 16px var(--font);color:#f59e0b}
.ac-village-sub{font:400 12px var(--font);color:#64748b;margin-top:4px}
.ac-village-stats{display:flex;justify-content:center;gap:20px;margin-top:10px}
.ac-vstat{text-align:center}
.ac-vstat-val{font:800 18px var(--font);color:#f1f5f9}
.ac-vstat-lbl{font:400 10px var(--font);color:#64748b}
