:root{--bg-primary:#0a0a0f;--bg-secondary:#12121a;--bg-card:#1a1a2e;--bg-card-hover:#1f1f35;--text-primary:#e8e8f0;--text-secondary:#a0a0b8;--text-muted:#6b6b80;--accent:#6c63ff;--accent-hover:#7b73ff;--accent-glow:#6c63ff4d;--positive:#22c55e;--negative:#ef4444;--neutral:#f59e0b;--per-color:#ff6b6b;--org-color:#4ecdc4;--loc-color:#ffd93d;--misc-color:#a78bfa;--border:#2a2a3e;--border-focus:#6c63ff;--radius:12px;--radius-sm:8px;--shadow:0 4px 24px #0000004d;--shadow-lg:0 8px 40px #00000080;--transition:all .2s ease}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-primary);color:var(--text-primary);font-family:Inter,-apple-system,sans-serif;line-height:1.6}.app-container{min-height:100vh}.navbar{background:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:100;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex;position:sticky;top:0}.navbar-brand{align-items:center;gap:.75rem;text-decoration:none;display:flex}.navbar-brand h1{background:linear-gradient(135deg,var(--accent),#a78bfa);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:1.25rem;font-weight:700}.navbar-brand span{color:var(--text-muted);background:var(--bg-card);border-radius:4px;padding:2px 8px;font-size:.75rem}.navbar-links{gap:.5rem;display:flex}.nav-link{border-radius:var(--radius-sm);color:var(--text-secondary);transition:var(--transition);border:1px solid #0000;padding:.5rem 1.25rem;font-size:.875rem;font-weight:500;text-decoration:none}.nav-link:hover{color:var(--text-primary);background:var(--bg-card)}.nav-link.active{color:var(--accent);border-color:var(--accent);background:#6c63ff1a}.main-content{max-width:1400px;margin:0 auto;padding:2rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:var(--transition);padding:1.5rem}.card:hover{border-color:var(--border-focus);box-shadow:var(--shadow)}.card-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.card-title{color:var(--text-primary);font-size:1rem;font-weight:600}.card-subtitle{color:var(--text-muted);font-size:.75rem}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem;display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;transition:var(--transition);padding:1.25rem}.stat-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.stat-value{margin-bottom:.25rem;font-size:2rem;font-weight:700}.stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem}.upload-area{border:2px dashed var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;transition:var(--transition);background:var(--bg-secondary);padding:3rem 2rem}.upload-area:hover{border-color:var(--accent);background:#6c63ff0d}.upload-area.dragging{border-color:var(--accent);background:#6c63ff1a}.upload-icon{margin-bottom:1rem;font-size:3rem}.upload-text{color:var(--text-secondary);font-size:.95rem}.upload-text strong{color:var(--accent)}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);border:1px solid #0000;align-items:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;display:inline-flex}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover);box-shadow:0 0 20px var(--accent-glow)}.btn-secondary{color:var(--text-secondary);border-color:var(--border);background:0 0}.btn-secondary:hover{background:var(--bg-card);color:var(--text-primary)}.btn-danger{color:var(--negative);border-color:var(--negative);background:0 0}.btn-danger:hover{background:#ef44441a}.btn-sm{padding:.375rem .75rem;font-size:.8rem}.chart-grid{grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:2rem;display:grid}.chart-full{grid-column:1/-1}.network-container{background:var(--bg-secondary);border-radius:var(--radius);border:1px solid var(--border);min-height:500px;position:relative;overflow:hidden}.network-container canvas{border-radius:var(--radius)}.sentiment-bars{flex-direction:column;gap:.75rem;display:flex}.sentiment-row{align-items:center;gap:.75rem;display:flex}.sentiment-label{width:80px;color:var(--text-secondary);text-transform:capitalize;font-size:.8rem}.sentiment-bar-bg{background:var(--bg-secondary);border-radius:12px;flex:1;height:24px;overflow:hidden}.sentiment-bar{border-radius:12px;height:100%;transition:width .5s}.sentiment-bar.positive{background:var(--positive)}.sentiment-bar.negative{background:var(--negative)}.sentiment-bar.neutral{background:var(--neutral)}.sentiment-count{text-align:right;font-variant-numeric:tabular-nums;width:50px;font-size:.85rem;font-weight:600}.entity-list{flex-wrap:wrap;gap:.5rem;display:flex}.entity-tag{border:1px solid;border-radius:20px;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.8rem;font-weight:500;display:inline-flex}.entity-tag.PER{color:var(--per-color);border-color:var(--per-color);background:#ff6b6b1a}.entity-tag.ORG{color:var(--org-color);border-color:var(--org-color);background:#4ecdc41a}.entity-tag.LOC{color:var(--loc-color);border-color:var(--loc-color);background:#ffd93d1a}.entity-tag.MISC{color:var(--misc-color);border-color:var(--misc-color);background:#a78bfa1a}.entity-count{background:#ffffff26;border-radius:10px;padding:0 6px;font-size:.7rem}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1px solid var(--border);padding:.75rem 1rem;font-size:.75rem}.data-table td{border-bottom:1px solid var(--border);color:var(--text-secondary);padding:.75rem 1rem;font-size:.85rem}.data-table tr:hover td{background:var(--bg-card-hover)}.insights-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;display:grid}.insight-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);border-left:3px solid;padding:1.25rem}.insight-card.complaint{border-left-color:var(--negative)}.insight-card.compliment{border-left-color:var(--positive)}.insight-card.hot_issue{border-left-color:var(--neutral)}.insight-card.important{border-left-color:var(--accent)}.insight-title{margin-bottom:.35rem;font-size:.95rem;font-weight:600}.insight-description{color:var(--text-secondary);font-size:.85rem}.admin-grid{grid-template-columns:1fr 1fr;gap:1.5rem;display:grid}.form-group{margin-bottom:1rem}.form-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem;font-size:.8rem;display:block}.form-input{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);transition:var(--transition);padding:.625rem .875rem;font-size:.875rem}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);outline:none}.loading{color:var(--text-muted);justify-content:center;align-items:center;gap:.75rem;padding:2rem;display:flex}.spinner{border:2px solid var(--border);border-top:2px solid var(--accent);border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:768px){.chart-grid,.admin-grid{grid-template-columns:1fr}.main-content{padding:1rem}.navbar{padding:.75rem 1rem}}.text-input-area{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;min-height:120px;color:var(--text-primary);resize:vertical;transition:var(--transition);padding:1rem;font-family:inherit;font-size:.875rem}.text-input-area:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);outline:none}.badge{text-transform:uppercase;border-radius:12px;align-items:center;padding:.2rem .6rem;font-size:.7rem;font-weight:600;display:inline-flex}.badge-positive{color:var(--positive);background:#22c55e26}.badge-negative{color:var(--negative);background:#ef444426}.badge-neutral{color:var(--neutral);background:#f59e0b26}.tabs{border-bottom:1px solid var(--border);gap:0;margin-bottom:1.5rem;display:flex}.tab{color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-bottom:2px solid #0000;padding:.75rem 1.5rem;font-size:.875rem;font-weight:500}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}
