.navbar{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);z-index:100;background:#080c14e6;flex-shrink:0;align-items:center;gap:16px;height:58px;padding:0 24px;display:flex;box-shadow:0 1px #ffffff0a}.navbar-brand{flex-shrink:0;align-items:center;gap:10px;display:flex}.brand-icon{color:var(--accent-blue);filter:drop-shadow(0 0 6px #38bdf880)}.brand-name{letter-spacing:-.02em;font-size:17px;font-weight:800}.brand-tag{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);border-radius:var(--radius-full);background:#ffffff0f;padding:2px 7px;font-size:10px;font-weight:700}.repo-selector{border-radius:var(--radius-md);border:1px solid var(--border);cursor:pointer;min-width:180px;max-width:260px;transition:border-color var(--transition), background var(--transition);-webkit-user-select:none;user-select:none;background:#ffffff0d;align-items:center;gap:8px;padding:6px 12px;display:flex;position:relative}.repo-selector:hover{border-color:var(--border-accent);background:#38bdf80f}.repo-selector-label{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.repo-selector-label span:last-child{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.repo-dot{background:var(--accent-green);width:7px;height:7px;box-shadow:0 0 6px var(--accent-green);border-radius:50%;flex-shrink:0;animation:2s infinite pulse-ring}.repo-chevron{color:var(--text-muted);transition:transform var(--transition);flex-shrink:0}.repo-chevron.open{transform:rotate(180deg)}.repo-dropdown{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:200;max-height:240px;animation:.18s fadeUp;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow:hidden auto}.repo-option{cursor:pointer;transition:background var(--transition);justify-content:space-between;align-items:center;padding:9px 14px;font-size:13px;display:flex}.repo-option:hover,.repo-option.active{background:#38bdf814}.repo-option.active .repo-option-name{color:var(--accent-blue);font-weight:600}.repo-option-meta{color:var(--text-muted);font-size:11px}.navbar-actions{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}.nav-btn{border-radius:var(--radius-md);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all var(--transition);white-space:nowrap;background:#ffffff0d;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:500;display:inline-flex}.nav-btn:hover{color:var(--text-primary);background:#ffffff17;border-color:#ffffff26}.nav-btn.active{color:var(--accent-blue);background:#38bdf81f;border-color:#38bdf84d}.nav-btn.logout{color:var(--accent-red);border-color:#f8717133}.nav-btn.logout:hover{background:#f8717114}.admin-info{color:var(--accent-green);border-radius:var(--radius-full);background:#34d39914;border:1px solid #34d39933;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:500;display:flex}.shield-icon{flex-shrink:0}.signin-btn{background:var(--grad-btn);color:#fff;border-radius:var(--radius-full);cursor:pointer;transition:transform var(--transition), box-shadow var(--transition);white-space:nowrap;border:none;align-items:center;gap:8px;padding:8px 18px;font-size:13px;font-weight:700;display:inline-flex;box-shadow:0 4px 14px #3b82f666}.signin-btn:hover{transform:translateY(-2px);box-shadow:0 7px 20px #3b82f699}.signin-btn:active{opacity:.9;transform:translateY(0)}.ingest-panel{border-bottom:1px solid var(--border);background:#ffffff04;flex-shrink:0}.ingest-toggle{width:100%;color:var(--text-secondary);cursor:pointer;text-align:left;transition:color var(--transition), background var(--transition);background:0 0;border:none;align-items:center;gap:8px;padding:10px 24px;font-size:13px;font-weight:500;display:flex}.ingest-toggle:hover{color:var(--text-primary);background:var(--bg-hover)}.ingest-toggle svg:last-child{color:var(--text-muted);margin-left:auto}.ingest-body{flex-direction:column;gap:10px;padding:12px 24px 16px;animation:.2s fadeUp;display:flex}.ingest-form{flex-direction:column;gap:8px;display:flex}.ingest-input-row{gap:8px;display:flex}.ingest-input{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);transition:border-color var(--transition);background:#ffffff0a;outline:none;flex:1;padding:9px 14px;font-size:13px}.ingest-input:focus{border-color:var(--border-accent)}.ingest-input::placeholder{color:var(--text-muted)}.ingest-input:disabled{opacity:.5;cursor:not-allowed}.ingest-btn{white-space:nowrap;background:var(--grad-btn);border-radius:var(--radius-md);color:#fff;cursor:pointer;transition:opacity var(--transition), transform var(--transition);border:none;align-items:center;gap:7px;padding:9px 18px;font-size:13px;font-weight:600;display:inline-flex;box-shadow:0 2px 10px #3b82f659}.ingest-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.ingest-btn:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 4px 14px #3b82f680}.ingest-status{border-radius:var(--radius-md);align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:flex}.ingest-status.ingesting{color:var(--accent-blue);background:#38bdf814;border:1px solid #38bdf833}.ingest-status.done{color:var(--accent-green);background:#34d39914;border:1px solid #34d39933}.ingest-status.error{color:var(--accent-red);background:#f8717114;border:1px solid #f8717133}.ingest-note{color:var(--text-muted);font-size:11px}.chat-root{flex-direction:column;height:100%;display:flex;overflow:hidden}.repo-info-bar{color:var(--text-muted);border-bottom:1px solid var(--border);background:#ffffff05;flex-shrink:0;align-items:center;gap:8px;padding:6px 24px;font-size:12px;display:flex}.repo-info-bar svg{opacity:.6;margin-right:2px}.repo-info-name{color:var(--text-secondary);align-items:center;gap:4px;font-weight:500;display:flex}.repo-info-exp{align-items:center;gap:4px;display:flex}.repo-info-sep{color:var(--text-muted);opacity:.4}.chat-messages{flex-direction:column;flex:1;gap:20px;padding:24px;display:flex;overflow-y:auto}.chat-welcome{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;max-width:600px;margin:0 auto;padding:60px 24px;display:flex}.welcome-icon{filter:drop-shadow(0 0 20px #38bdf866);font-size:56px}.chat-welcome h2{letter-spacing:-.03em;font-size:28px;font-weight:800}.chat-welcome p{color:var(--text-secondary);font-size:15px;line-height:1.7}.example-queries{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px;display:flex}.example-chip{border-radius:var(--radius-full);color:var(--accent-blue);cursor:pointer;transition:all var(--transition);background:#38bdf814;border:1px solid #38bdf833;padding:7px 14px;font-size:13px}.example-chip:hover{background:#38bdf826;transform:translateY(-1px)}.chat-bubble{gap:12px;max-width:820px;display:flex}.chat-bubble.user{flex-direction:row-reverse;margin-left:auto}.chat-bubble.assistant{margin-right:auto}.bubble-avatar{border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;margin-top:2px;font-size:16px;display:flex}.user-avatar{background:var(--grad-btn)}.assistant-avatar{border:1px solid var(--border-accent);background:linear-gradient(135deg,#38bdf833,#818cf833)}.bubble-body{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.bubble-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow-sm);padding:14px 18px;line-height:1.75}.chat-bubble.user .bubble-content{background:linear-gradient(135deg,#4f46e533,#3b82f633);border-color:#4f46e54d}.bubble-content.bubble-error{color:var(--accent-red);background:#f8717114;border-color:#f8717133}.bubble-content p{margin-bottom:8px}.bubble-content p:last-child{margin-bottom:0}.bubble-content code{font-family:var(--font-mono);background:#ffffff12;border-radius:4px;padding:2px 6px;font-size:13px}.bubble-content pre code{background:0 0;padding:0}.bubble-content pre{border:1px solid var(--border);border-radius:var(--radius-md);background:#0000004d;margin:8px 0;padding:14px;font-size:13px;overflow-x:auto}.bubble-meta{flex-wrap:wrap;align-items:center;gap:6px;padding-left:4px;display:flex}.meta-item{color:var(--text-muted);font-size:12px}.meta-sep{color:var(--text-muted);opacity:.4}.loading-body{align-items:center;gap:12px;padding:16px 18px;display:flex}.loading-text{color:var(--text-muted);font-size:13px}.sources-section{flex-direction:column;gap:8px;display:flex}.sources-toggle{color:var(--text-muted);cursor:pointer;transition:color var(--transition);background:0 0;border:none;align-items:center;gap:6px;padding:4px 0;font-size:12px;display:inline-flex}.sources-toggle:hover{color:var(--accent-blue)}.sources-list{flex-direction:column;gap:8px;display:flex}.source-item{border:1px solid var(--border);border-radius:var(--radius-md);background:#00000040;overflow:hidden}.source-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.source-path{font-size:12px;font-family:var(--font-mono);color:var(--accent-blue)}.source-score{color:var(--text-muted);font-size:11px}.source-preview{font-size:12px;font-family:var(--font-mono);white-space:pre;color:var(--text-secondary);padding:10px 12px;line-height:1.6;overflow-x:auto}.chat-input-form{border-top:1px solid var(--border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#080c14cc;flex-shrink:0;padding:16px 24px}.chat-input-wrapper{border:1px solid var(--border);border-radius:var(--radius-xl);transition:border-color var(--transition);background:#ffffff0a;align-items:center;gap:10px;padding:6px 8px 6px 18px;display:flex}.chat-input-wrapper:focus-within{border-color:var(--border-accent);box-shadow:0 0 0 3px #38bdf814}.chat-input{font-family:var(--font-sans);color:var(--text-primary);background:0 0;border:none;outline:none;flex:1;font-size:14px;line-height:1.6}.chat-input::placeholder{color:var(--text-muted)}.send-btn{border-radius:var(--radius-md);background:var(--grad-btn);cursor:pointer;color:#fff;width:38px;height:38px;transition:opacity var(--transition), transform var(--transition);border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex;box-shadow:0 2px 8px #3b82f666}.send-btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none;transform:none}.send-btn:not(:disabled):hover{transform:scale(1.05)}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:.8s linear infinite spin}.qlc-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);transition:border-color var(--transition);overflow:hidden}.qlc-card:hover{border-color:#ffffff24}.qlc-header{cursor:pointer;text-align:left;width:100%;transition:background var(--transition);background:0 0;border:none;align-items:center;gap:10px;padding:13px 16px;display:flex}.qlc-header:hover{background:var(--bg-hover)}.qlc-time{font-size:11px;font-family:var(--font-mono);color:var(--text-muted);flex-shrink:0}.qlc-query{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;font-weight:500;overflow:hidden}.qlc-badges{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;display:flex}.qlc-reduction{color:var(--accent-green);font-size:11px;font-weight:600}.qlc-chevron{color:var(--text-muted);flex-shrink:0}.qlc-body{border-top:1px solid var(--border);flex-direction:column;gap:16px;padding:16px;display:flex}.qlc-stats{border:1px solid var(--border);border-radius:var(--radius-md);background:#ffffff05;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;padding:14px;display:grid}.qlc-stat{flex-direction:column;gap:3px;display:flex}.qlc-stat-lbl{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:10px;font-weight:600}.qlc-stat code{font-family:var(--font-mono);color:var(--accent-blue);font-size:12px}.qlc-eval{border-radius:var(--radius-md);background:#38bdf80a;border:1px solid #38bdf826;padding:14px 16px}.qlc-eval-title{text-transform:uppercase;letter-spacing:.05em;color:var(--accent-blue);align-items:center;gap:7px;margin-bottom:12px;font-size:12px;font-weight:600;display:flex}.qlc-eval-rows{flex-direction:column;gap:8px;display:flex}.qlc-eval-row{align-items:center;gap:10px;display:flex}.qlc-eval-lbl{color:var(--text-secondary);flex-shrink:0;align-items:center;gap:4px;min-width:80px;font-size:12px;font-weight:500;display:flex}.qlc-accuracy-retained{color:var(--text-secondary);margin-top:4px;font-size:12px}.score-bar-row{flex:1;align-items:center;gap:10px;display:flex}.score-val{font-size:12px;font-weight:700;font-family:var(--font-mono);text-align:right;flex-shrink:0;width:38px}.eval-status-badge{letter-spacing:.02em;font-size:11px;font-weight:600}.qlc-answers{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=700px){.qlc-answers{grid-template-columns:1fr}}.qlc-answer{border-radius:var(--radius-md);overflow:hidden}.qlc-answer.adaptive{background:#38bdf80a;border:1px solid #38bdf833}.qlc-answer.baseline{background:#fbbf240a;border:1px solid #fbbf2433}.qlc-answer-label{text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid #ffffff0f;align-items:center;gap:6px;padding:8px 12px;font-size:11px;font-weight:700;display:flex}.qlc-answer.adaptive .qlc-answer-label{color:var(--accent-blue)}.qlc-answer.baseline .qlc-answer-label{color:var(--accent-amber)}.qlc-answer-text{color:var(--text-secondary);white-space:pre-wrap;max-height:220px;padding:12px 14px;font-size:13px;line-height:1.7;overflow-y:auto}.admin-root{flex-direction:column;height:100%;display:flex;overflow:hidden}.admin-header{border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#080c1499;flex-shrink:0;padding:20px 28px 0}.admin-title{align-items:center;gap:8px;margin-bottom:16px;font-size:18px;font-weight:700;display:flex}.admin-title-icon{color:var(--accent-blue)}.admin-tabs{gap:2px;display:flex}.admin-tab{border-radius:var(--radius-md) var(--radius-md) 0 0;color:var(--text-muted);cursor:pointer;transition:all var(--transition);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:7px;padding:9px 18px;font-size:13px;font-weight:500;display:inline-flex}.admin-tab:hover{color:var(--text-primary);background:var(--bg-hover)}.admin-tab.active{color:var(--accent-blue);border-bottom-color:var(--accent-blue);background:#38bdf80f}.admin-content{flex:1;padding:28px;overflow-y:auto}.section-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:8px;margin-bottom:16px;font-size:14px;font-weight:600;display:flex}.metric-grid{grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:28px;display:grid}.metric-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow-sm);padding:20px 24px}.metric-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;font-size:11px;font-weight:600}.metric-value{font-size:22px;font-weight:700}.health-table-wrap{border-radius:var(--radius-md);border:1px solid var(--border);margin-bottom:20px;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:13px}.data-table thead{background:#ffffff08}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 16px}.data-table th{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:11px;font-weight:600}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--bg-hover)}.data-table code{font-family:var(--font-mono);color:var(--accent-blue);font-size:12px}.ingest-tab{max-width:800px}.admin-ingest-form{gap:10px;margin-bottom:12px;display:flex}.admin-input{border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:14px;font-family:var(--font-sans);transition:border-color var(--transition);background:#ffffff0a;outline:none;flex:1;padding:10px 16px}.admin-input:focus{border-color:var(--border-accent)}.admin-input::placeholder{color:var(--text-muted)}.admin-msg{border-radius:var(--radius-md);padding:9px 14px;font-size:13px}.admin-msg.ok{color:var(--accent-green);background:#34d39914;border:1px solid #34d39933}.admin-msg.err{color:var(--accent-red);background:#f8717114;border:1px solid #f8717133}.in-progress-banner{color:var(--accent-amber);border-radius:var(--radius-md);background:#fbbf2414;border:1px solid #fbbf2433;margin:12px 0;padding:10px 14px;font-size:13px}.repo-cards{flex-direction:column;gap:10px;display:flex}.repo-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.repo-card-name{margin-bottom:6px;font-size:14px;font-weight:600}.repo-card-meta{color:var(--text-muted);flex-wrap:wrap;gap:16px;font-size:12px;display:flex}.repo-card-meta code{font-family:var(--font-mono);color:var(--accent-blue)}.admin-btn{border-radius:var(--radius-md);cursor:pointer;border:1px solid var(--border);transition:all var(--transition);white-space:nowrap;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:500;display:inline-flex}.admin-btn.primary{background:var(--grad-btn);color:#fff;border-color:#0000;box-shadow:0 2px 10px #3b82f64d}.admin-btn.primary:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 4px 16px #3b82f680}.admin-btn.secondary{color:var(--text-secondary);background:#ffffff0d}.admin-btn.secondary:hover{color:var(--text-primary);background:#ffffff17}.admin-btn.danger{color:var(--accent-red);background:#f8717114;border-color:#f8717133}.admin-btn.danger:hover{background:#f8717126}.admin-btn:disabled{opacity:.4;cursor:not-allowed;transform:none!important}.logs-tab{flex-direction:column;gap:16px;display:flex}.logs-toolbar{justify-content:space-between;align-items:center;display:flex}.logs-toolbar .section-title{margin-bottom:0}.logs-actions{gap:8px;display:flex}.query-log-list{flex-direction:column;gap:10px;display:flex}.sys-log-list{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);flex-direction:column;gap:0;display:flex;overflow:hidden}.sys-log-row{font-size:12px;font-family:var(--font-mono);border-bottom:1px solid #ffffff0a;align-items:flex-start;gap:12px;padding:8px 14px;display:flex}.sys-log-row:last-child{border-bottom:none}.sys-log-row:hover{background:var(--bg-hover)}.sys-log-time{color:var(--text-muted);flex-shrink:0}.sys-log-level{flex-shrink:0;min-width:50px;font-weight:700}.sys-log-logger{color:var(--text-muted);flex-shrink:0}.sys-log-msg{color:var(--text-secondary);word-break:break-word}.empty-state{color:var(--text-muted);text-align:center;padding:32px 0;font-size:14px}.refresh-btn{border:1px solid var(--border);color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition);background:0 0;align-items:center;gap:6px;margin-top:16px;padding:7px 14px;font-size:13px;display:inline-flex}.refresh-btn:hover{border-color:var(--border-accent);color:var(--accent-blue)}.admin-spinner{padding:24px}@media (width<=640px){.metric-grid{grid-template-columns:1fr}}.app-root{flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-main{flex-direction:column;flex:1;display:flex;overflow:hidden}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-base:#080c14;--bg-surface:#0f1623;--bg-card:#0f1623d9;--bg-hover:#ffffff0a;--border:#ffffff14;--border-accent:#38bdf840;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#475569;--accent-blue:#38bdf8;--accent-violet:#818cf8;--accent-green:#34d399;--accent-amber:#fbbf24;--accent-red:#f87171;--grad-brand:linear-gradient(135deg, #38bdf8 0%, #818cf8 100%);--grad-btn:linear-gradient(135deg, #4f46e5 0%, #3b82f6 100%);--grad-surface:linear-gradient(180deg, #0f1623 0%, #080c14 100%);--radius-sm:6px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 16px #00000080;--shadow-lg:0 10px 40px #0009;--shadow-glow:0 0 24px #38bdf826;--font-sans:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--transition:.18s cubic-bezier(.4,0,.2,1)}html,body{height:100%;font-family:var(--font-sans);background:var(--bg-base);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.6}#root{flex-direction:column;height:100%;display:flex}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#ffffff38}::selection{background:#38bdf840}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.text-gradient{background:var(--grad-brand);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.badge{border-radius:var(--radius-full);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:4px;padding:2px 10px;font-size:11px;font-weight:700;display:inline-flex}.badge-free{color:var(--accent-green);background:#34d39926;border:1px solid #34d3994d}.badge-paid{color:var(--accent-amber);background:#fbbf2426;border:1px solid #fbbf244d}.badge-low{color:var(--accent-green);background:#34d3991f;border:1px solid #34d39940}.badge-medium{color:var(--accent-amber);background:#fbbf241f;border:1px solid #fbbf2440}.badge-high{color:var(--accent-red);background:#f871711f;border:1px solid #f8717140}.score-bar{border-radius:var(--radius-full);background:#ffffff14;flex:1;height:6px;overflow:hidden}.score-bar-fill{border-radius:var(--radius-full);height:100%;transition:width .6s cubic-bezier(.4,0,.2,1)}@keyframes dot-bounce{0%,80%,to{opacity:.4;transform:translateY(0)}40%{opacity:1;transform:translateY(-6px)}}.loading-dots span{background:var(--accent-blue);border-radius:50%;width:7px;height:7px;margin:0 3px;animation:1.2s infinite dot-bounce;display:inline-block}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes pulse-ring{0%{box-shadow:0 0 #38bdf866}70%{box-shadow:0 0 0 8px #38bdf800}to{box-shadow:0 0 #38bdf800}}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:.35s forwards fadeUp}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,#ffffff0d 0%,#ffffff1a 50%,#ffffff0d 100%) 0 0/200% 100%;animation:1.5s infinite shimmer}@keyframes progress-indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}
