:root{--radius:8px}:root,[data-theme=dark]{--bg:#0f1115;--surface:#181a20;--surface-2:#1f222a;--border:#2a2e38;--text:#e6e8ec;--text-dim:#9ba0aa;--accent:#4f8cff;--accent-hover:#6a9fff;--success:#4ade80;--warning:#fbbf24;--danger:#f87171;--shadow:0 2px 8px rgba(0,0,0,.4)}[data-theme=light]{--bg:#f6f7f9;--surface:#fff;--surface-2:#f0f2f5;--border:#e1e4ea;--text:#1a1d23;--text-dim:#6b7280;--accent:#2563eb;--accent-hover:#1d4ed8;--success:#16a34a;--warning:#d97706;--danger:#dc2626;--shadow:0 2px 8px rgba(15,17,21,.06)}html{color-scheme:dark}[data-theme=light]{color-scheme:light}.card,.field input,.field select,.login-card,.main,.shell,.sidebar,.stat,body,button,table{transition:background-color .2s ease,color .2s ease,border-color .2s ease}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:24px 16px;display:flex;flex-direction:column;gap:8px}.sidebar h1{font-size:16px;margin:0 0 16px 8px;color:var(--text);font-weight:600}.brand-logo{display:block;line-height:0;transition:transform .15s ease,filter .15s ease}.brand-logo-sidebar{margin:0 8px 20px;padding:4px}.brand-logo-sidebar:hover{transform:scale(1.02);filter:drop-shadow(0 2px 8px rgba(0,122,255,.3))}.brand-logo-login{margin:0 auto 12px;padding:8px 0;max-width:240px}.sidebar .me{display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-size:13px;color:var(--text-dim);margin:0 8px 12px}.sidebar .me .badge{font-size:10px}.sidebar nav a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-radius:var(--radius);color:var(--text);font-size:13px}.sidebar nav a .nav-icon{display:inline-flex;color:var(--text-dim);flex-shrink:0}.sidebar nav a:hover{background:var(--surface-2)}.sidebar nav a:hover .nav-icon{color:var(--text)}.sidebar nav a.active{background:var(--accent);color:#fff}.sidebar nav a.active .nav-icon{color:#fff}.main{padding:32px 40px;max-width:1400px}.main h2{font-size:22px;margin:0 0 8px;font-weight:600}.main .subtitle{color:var(--text-dim);margin:0 0 24px}table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}td,th{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);font-size:13px}th{background:var(--surface-2);color:var(--text-dim);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.05em}tr:last-child td{border-bottom:none}tr:hover td{background:var(--surface-2)}.badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:500}.badge.green{background:rgba(74,222,128,.15);color:var(--success)}.badge.yellow{background:rgba(251,191,36,.15);color:var(--warning)}.badge.red{background:hsla(0,91%,71%,.15);color:var(--danger)}.badge.blue{background:rgba(79,140,255,.15);color:var(--accent)}.badge.gray{background:hsla(220,8%,64%,.15);color:var(--text-dim)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:16px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:16px;gap:16px;margin-bottom:32px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.stat .num{font-size:28px;font-weight:700;color:var(--text);display:block}.stat .label{font-size:12px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.login-shell{display:grid;place-items:center;min-height:100vh;padding:24px}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:32px;width:100%;max-width:360px}.login-card h1{margin:0 0 8px;font-size:20px}.login-card p{margin:0 0 24px;color:var(--text-dim);font-size:13px}.field{margin-bottom:16px}.field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em}.field input{width:100%;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:14px;font-family:inherit}.field input:focus{outline:none;border-color:var(--accent)}a.primary,button.primary{display:inline-flex;align-items:center;justify-content:center;width:100%;padding:10px 16px;background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:var(--radius);font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .1s ease,box-shadow .15s ease}a.primary:hover,button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 2px 8px rgba(79,140,255,.25)}a.primary:active,button.primary:active:not(:disabled){transform:translateY(1px)}button.primary:disabled{opacity:.5;cursor:not-allowed}a.ghost,button.ghost{display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--text-dim);border:1px solid var(--border);padding:6px 12px;border-radius:var(--radius);font-size:12px;cursor:pointer;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .1s ease}a.ghost:hover,button.ghost:hover:not(:disabled){color:var(--text);border-color:var(--accent);background:var(--surface-2)}a.ghost:active,button.ghost:active:not(:disabled){transform:translateY(1px)}button.ghost:disabled{opacity:.5;cursor:not-allowed}.error{background:hsla(0,91%,71%,.1);border:1px solid hsla(0,91%,71%,.3);color:var(--danger);padding:10px 12px;border-radius:var(--radius);font-size:13px;margin-bottom:16px}.field select{width:100%;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:14px;font-family:inherit;cursor:pointer}.field select:focus{outline:none;border-color:var(--accent)}.theme-btn{display:flex;align-items:center;gap:8px;width:calc(100% - 16px);margin:0 8px;padding:8px 12px;background:transparent;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);font-size:13px;font-family:inherit;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.theme-btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--text-dim)}.theme-btn svg{flex-shrink:0;color:var(--text-dim)}.theme-btn:disabled{opacity:.5;cursor:not-allowed}.sidebar .divider{height:1px;background:var(--border);margin:16px 8px}.sidebar .logout-btn{margin:0 8px;padding:8px 12px;background:transparent;color:var(--text-dim);border:1px solid var(--border);border-radius:var(--radius);font-size:13px;font-family:inherit;cursor:pointer;text-align:center;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.sidebar .logout-btn:hover{background:hsla(0,91%,71%,.08);color:var(--danger);border-color:var(--danger)}.filter-bar{position:-webkit-sticky;position:sticky;top:0;z-index:10;gap:16px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:20px;flex-wrap:wrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.filter-bar,.filter-group{display:flex;align-items:center}.filter-group{gap:8px}.filter-spacer{flex:1 1}.filter-label{font-size:12px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.filter-select{padding:6px 10px;border:1px solid var(--border);color:var(--text);font-size:12px;font-family:inherit;cursor:pointer}.filter-select,.period-pills{background:var(--bg);border-radius:var(--radius)}.period-pills{display:flex;gap:4px;padding:3px;border:1px solid var(--border)}.pill{padding:6px 12px;background:transparent;color:var(--text-dim);border:none;border-radius:6px;font-size:12px;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all .15s ease}.pill:hover:not(:disabled):not(.active){color:var(--text);background:var(--surface-2)}.pill.active{background:var(--accent);color:#fff;box-shadow:0 2px 8px rgba(79,140,255,.3)}.pill:disabled{opacity:.5;cursor:not-allowed}.auto-refresh-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.auto-refresh-toggle input{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}.spinning{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:16px;gap:16px;margin-bottom:20px}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;cursor:default;transition:border-color .2s ease;box-shadow:var(--shadow)}.kpi-card:hover{border-color:var(--text-dim)}.kpi-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.kpi-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);font-weight:500}.kpi-icon{display:inline-flex;padding:6px;border-radius:6px;background:color-mix(in srgb,currentColor 12%,transparent)}.kpi-value{font-size:28px;font-weight:700;line-height:1.1;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kpi-suffix{font-size:15px;font-weight:500;margin-left:4px;opacity:.7}.kpi-footer{display:flex;align-items:center;justify-content:space-between;margin-top:12px;gap:8px}.kpi-trend{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;padding:3px 8px;border-radius:10px}.kpi-trend.up{color:var(--success);background:color-mix(in srgb,var(--success) 12%,transparent)}.kpi-trend.down{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}.kpi-trend.neutral{color:var(--text-dim);background:var(--surface-2)}.kpi-spark{flex:1 1;max-width:80px;min-width:40px}.chart-card{margin-bottom:20px;box-shadow:var(--shadow)}.chart-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;gap:12px;flex-wrap:wrap}.chart-mode-switch{display:flex;gap:2px;background:var(--bg);padding:3px;border-radius:var(--radius);border:1px solid var(--border)}.mode-btn{padding:5px 12px;background:transparent;color:var(--text-dim);border:none;border-radius:5px;font-size:11px;font-family:inherit;cursor:pointer;transition:all .15s ease}.mode-btn.active,.mode-btn:hover:not(.active){color:var(--text)}.mode-btn.active{background:var(--surface-2)}.empty-chart{display:flex;align-items:center;justify-content:center;min-height:200px;text-align:center;padding:32px}.breakdown-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;margin-bottom:20px}@media (max-width:900px){.breakdown-grid{grid-template-columns:1fr}}.donut-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none}.donut-pct{font-size:26px;font-weight:700;color:var(--text);line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.donut-label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;margin-top:4px}.top-keywords-list{display:flex;flex-direction:column;gap:12px}.top-keyword-row{display:grid;grid-template-columns:160px 1fr 40px;grid-gap:12px;gap:12px;align-items:center}.top-keyword-label{display:flex;align-items:center;gap:8px;font-size:12px}.top-keyword-term{color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px}.top-keyword-bar-wrap{height:8px;background:var(--surface-2);border-radius:4px;overflow:hidden}.top-keyword-bar{height:100%;background:linear-gradient(90deg,var(--accent),#a78bfa);border-radius:4px}.top-keyword-count{font-size:12px;font-weight:600;color:var(--text-dim);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.queue-list{display:flex;flex-direction:column;gap:10px}.queue-item{padding:12px 16px;background:var(--surface-2);border-left:3px solid var(--border);border-radius:6px;transition:transform .15s ease;cursor:pointer}.queue-item-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:6px}.queue-item-text{font-size:13px;color:var(--text);line-height:1.5}.dashboard-skeleton{display:flex;flex-direction:column;gap:20px}.skeleton-bar{height:56px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);animation:pulse 1.5s ease-in-out infinite}.skeleton-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:16px;gap:16px}.skeleton-card{height:140px}.skeleton-card,.skeleton-chart{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);animation:pulse 1.5s ease-in-out infinite}.skeleton-chart{height:380px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.recharts-text{fill:var(--text-dim)}.recharts-cartesian-axis-line,.recharts-cartesian-axis-tick-line{stroke:var(--border)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(-16px)}to{opacity:1;transform:translateX(0)}}@keyframes growWidth{0%{width:0}}.chart-card,.filter-bar,.kpi-card{animation:fadeInUp .4s ease-out backwards}.kpi-card{transition:transform .15s ease,border-color .2s ease}.kpi-card:hover{transform:translateY(-2px)}.kpi-grid .kpi-card:first-child{animation-delay:0s}.kpi-grid .kpi-card:nth-child(2){animation-delay:.05s}.kpi-grid .kpi-card:nth-child(3){animation-delay:.1s}.kpi-grid .kpi-card:nth-child(4){animation-delay:.15s}.kpi-grid .kpi-card:nth-child(5){animation-delay:.2s}.kpi-grid .kpi-card:nth-child(6){animation-delay:.25s}.chart-card{animation-delay:.3s}.breakdown-grid .chart-card:first-child{animation-delay:.35s}.breakdown-grid .chart-card:last-child{animation-delay:.4s}.top-keyword-row{animation:fadeInLeft .35s ease-out backwards}.top-keyword-row:first-child{animation-delay:.45s}.top-keyword-row:nth-child(2){animation-delay:.5s}.top-keyword-row:nth-child(3){animation-delay:.55s}.top-keyword-row:nth-child(4){animation-delay:.6s}.top-keyword-row:nth-child(5){animation-delay:.65s}.top-keyword-row:nth-child(6){animation-delay:.7s}.top-keyword-row:nth-child(7){animation-delay:.75s}.top-keyword-row:nth-child(8){animation-delay:.8s}.top-keyword-row:nth-child(9){animation-delay:.85s}.top-keyword-row:nth-child(10){animation-delay:.9s}.top-keyword-bar{animation:growWidth .8s ease-out backwards;animation-delay:.5s}.queue-item{animation:fadeInLeft .3s ease-out backwards}.queue-item:hover{transform:translateX(4px)}.queue-list .queue-item:first-child{animation-delay:.55s}.queue-list .queue-item:nth-child(2){animation-delay:.6s}.queue-list .queue-item:nth-child(3){animation-delay:.65s}.queue-list .queue-item:nth-child(4){animation-delay:.7s}.queue-list .queue-item:nth-child(5){animation-delay:.75s}.queue-list .queue-item:nth-child(6){animation-delay:.8s}.queue-list .queue-item:nth-child(7){animation-delay:.85s}.queue-list .queue-item:nth-child(8){animation-delay:.9s}.queue-list .queue-item:nth-child(9){animation-delay:.95s}.queue-list .queue-item:nth-child(10){animation-delay:1s}.toggle-switch{position:relative;display:inline-block;width:40px;height:22px;padding:0;border:none;border-radius:999px;cursor:pointer;background:var(--text-dim);transition:background-color .2s ease;vertical-align:middle}.toggle-switch.on{background:var(--accent)}.toggle-switch.on:hover:not(:disabled){background:var(--accent-hover)}.toggle-switch:disabled{opacity:.5;cursor:not-allowed}.toggle-switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.toggle-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s ease}.toggle-switch.on .toggle-knob{transform:translateX(18px)}details>summary::-webkit-details-marker{display:none}details[open] .details-chevron{transform:rotate(90deg)}