:root{--bg:#0b1020;--panel:#12182b;--panel-2:#0e1426;--text:#e6ebff;--muted:#9aa7c3;--accent:#6aa9ff;--pos:#2ecc71;--neg:#e74c3c;--neu:#7f8c8d;--mix:#9b59b6}html,body,#root{height:100%}body{background:radial-gradient(1200px 800px at 20% -10%,#1b2443 10%,transparent 60%),radial-gradient(1000px 800px at 120% 10%,#0f1732 10%,transparent 60%),var(--bg);color:var(--text);margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,Apple Color Emoji,Segoe UI Emoji}.app-shell{grid-template-rows:64px 1fr;min-height:100vh;display:grid}.app-header{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10;background:#0a0f1e99;border-bottom:1px solid #1f2a4d;justify-content:space-between;align-items:center;padding:0 20px;display:flex;position:sticky;top:0}.brand{letter-spacing:.3px;font-weight:800}.nav a{color:var(--text);border-radius:8px;margin-left:16px;padding:8px 10px;text-decoration:none}.nav a:hover{background:#1a2344}.app-main{max-width:1200px;margin:0 auto;padding:24px}.kpis{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin-bottom:24px;display:grid}.kpi{background:linear-gradient(#182246,#101833);border:1px solid #223063;border-radius:12px;padding:16px}.kpi-title{color:var(--muted);text-transform:uppercase;letter-spacing:.6px;font-size:12px}.kpi-value{margin-top:6px;font-size:28px;font-weight:700}.kpi-sub{color:var(--muted);margin-top:6px;font-size:12px}.panel{background:linear-gradient(180deg,var(--panel),var(--panel-2));border:1px solid #223063;border-radius:12px;margin-bottom:20px;padding:16px}.panel h3{margin:0 0 12px}.bars{gap:10px;display:grid}.bar{grid-template-columns:120px 1fr 80px;align-items:center;gap:10px;display:grid}.bar-label{color:var(--muted)}.bar-track{background:#0b1329;border:1px solid #223063;border-radius:999px;height:10px;overflow:hidden}.bar-track.small{height:8px}.bar-fill{background:linear-gradient(90deg,#4b78ff,#7aa6ff);height:100%}.bar-value{text-align:right;color:var(--muted)}.word-cloud{-webkit-user-select:none;user-select:none;line-height:2.2}.wc-word{background:#6aa9ff14;border-radius:8px;margin:4px;padding:2px 6px;display:inline-block}.loading,.error,.empty{padding:20px}.error{color:#ff9f9f}.muted{color:var(--muted)}.toolbar{align-items:center;gap:12px;margin-bottom:12px;display:flex}.input,.select{color:var(--text);background:#101736;border:1px solid #223063;border-radius:8px;padding:10px 12px}.input{flex:1}.table{border:1px solid #223063;border-radius:12px;overflow:hidden}.thead,.trow{grid-template-columns:2fr 1fr 1.3fr 1fr .7fr 2fr;gap:12px;padding:12px;display:grid}.thead{color:var(--muted);text-transform:uppercase;letter-spacing:.6px;background:#0f1732;font-size:12px}.trow{border-top:1px solid #223063;align-items:center}.trow a{color:var(--accent);text-decoration:none}.trow a:hover{text-decoration:underline}.badge{border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700}.badge.positive{color:var(--pos);background:#2ecc7126;border:1px solid #2ecc7166}.badge.negative{color:var(--neg);background:#e74c3c26;border:1px solid #e74c3c66}.badge.neutral{color:var(--neu);background:#7f8c8d26;border:1px solid #7f8c8d66}.badge.mixed{color:var(--mix);background:#9b59b626;border:1px solid #9b59b666}.badge.xl{padding:6px 10px;font-size:16px}.breadcrumbs{margin-bottom:12px}.detail-header{justify-content:space-between;align-items:center;gap:20px;margin-bottom:12px;display:flex}.scores{gap:8px;margin-top:8px;display:grid}.score-item{grid-template-columns:80px 1fr 40px;align-items:center;gap:8px;display:grid}.segments{gap:10px;display:grid}.segment{background:#0f1732;border:1px solid #223063;border-radius:10px;padding:10px}.seg-meta{color:var(--muted);gap:10px;margin-bottom:4px;font-size:12px;display:flex}.seg-speaker{text-transform:uppercase;letter-spacing:.6px;font-weight:700}.seg-text{white-space:pre-wrap}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.list{margin:0;padding-left:18px}.code{background:#0b1329;border:1px solid #223063;border-radius:10px;padding:12px;overflow:auto}@media (max-width:980px){.kpis{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}.thead,.trow{grid-template-columns:2fr 1fr 1.3fr 1fr .7fr}.thead>div:last-child,.trow>div:last-child{display:none}}
