.error-boundary{display:flex;align-items:center;justify-content:center;min-height:200px;padding:2rem}.error-boundary-content{text-align:center;max-width:500px}.error-boundary-content h2{margin:0 0 .5rem;color:var(--error)}.error-message{color:var(--text-secondary);margin-bottom:1rem}.error-details{text-align:left;margin-bottom:1rem;padding:1rem;background:color-mix(in srgb,var(--bg) 40%,transparent);border:1px solid var(--border-color);border-radius:var(--radius)}.error-details summary{cursor:pointer;font-family:JetBrains Mono,monospace;font-weight:500;font-size:.875rem;margin-bottom:.5rem;color:var(--text-secondary)}.error-details pre{font-size:.75rem;overflow-x:auto;white-space:pre-wrap;word-break:break-word;margin:0;color:var(--error)}.error-actions{display:flex;gap:.5rem;justify-content:center}.error-actions button{padding:.5rem 1rem;border-radius:6px;font-weight:500;font-size:.8125rem;cursor:pointer;transition:all .2s}.btn-retry{background:var(--accent);color:var(--accent-contrast);border:none}.btn-reload{background:transparent;color:var(--text-secondary);border:1px solid var(--border-color)}.btn-reload:hover{border-color:#ffffff1f;color:var(--text-primary)}.navbar{display:flex;align-items:center;height:48px;padding:0 16px;background:var(--bg);border-bottom:1px solid var(--border-color);flex-shrink:0}.nav-brand{display:flex;align-items:center;gap:8px;margin-right:32px;text-decoration:none;color:var(--text-primary)}.nav-brand-icon{width:24px;height:24px;border-radius:6px;background:var(--accent);display:flex;align-items:center;justify-content:center;font-size:.6875rem;font-weight:700;color:var(--bg)}.nav-brand-logo{width:28px;height:28px;display:block;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.nav-brand-text{font-size:.875rem;font-weight:600}.nav-tabs{display:flex;gap:2px;background:var(--surface);padding:3px;border-radius:6px}.nav-tab{display:flex;align-items:center;gap:6px;padding:5px 14px;font-size:.75rem;font-weight:500;color:var(--text-secondary);border-radius:4px;text-decoration:none;transition:all .15s ease}.nav-tab:hover{color:var(--text-primary)}.nav-tab.active{background:var(--elevated);color:var(--text-primary)}.nav-tab svg{width:14px;height:14px}.nav-right{margin-left:auto;display:flex;align-items:center;gap:12px}.nav-status{display:flex;align-items:center;gap:6px;font-size:.6875rem;color:var(--text-tertiary)}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--text-tertiary)}.status-dot.connected{background:var(--success)}.nav-workspace{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-lang{font-size:.6875rem;padding:3px 8px;border-radius:4px;background:var(--surface);color:var(--text-secondary);border:1px solid var(--border-color);cursor:pointer;transition:all .15s ease}.nav-lang:hover{color:var(--text-primary);border-color:var(--border-hover)}.nav-user{position:relative}.nav-user-btn{display:flex;align-items:center;gap:4px;padding:4px 6px;border-radius:var(--radius-sm, 4px);background:var(--surface);border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.nav-user-btn:hover{color:var(--text-primary);border-color:var(--border-hover)}.nav-avatar{width:20px;height:20px;border-radius:50%;background:var(--accent-dim);color:var(--accent);font-size:.6875rem;font-weight:700;display:flex;align-items:center;justify-content:center}.nav-user-menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--border-hover);border-radius:var(--radius);box-shadow:var(--shadow-md);min-width:160px;padding:8px;z-index:100}.nav-user-name{font-size:.8125rem;font-weight:600;color:var(--text-primary);padding:2px 4px}.nav-user-role{font-size:.6875rem;color:var(--text-tertiary);padding:2px 4px;text-transform:capitalize;margin-bottom:4px}.nav-menu-divider{border:none;border-top:1px solid var(--border-color);margin:4px 0}.nav-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border-radius:var(--radius-sm, 4px);background:none;border:none;color:var(--text-secondary);font-size:.8125rem;cursor:pointer;transition:all .15s ease;text-align:left}.nav-menu-item:hover{background:var(--elevated);color:var(--text-primary)}@media(max-width:640px){.nav-brand-text,.nav-workspace{display:none}}.layout{display:flex;flex-direction:column;height:100vh;background:var(--bg)}.main-content{flex:1;overflow:auto}.app-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;font-family:JetBrains Mono,monospace;font-size:.5625rem;color:var(--text-tertiary);background:var(--bg);border-top:1px solid var(--border-color);letter-spacing:.04em;flex-shrink:0}.footer-brand{display:inline-flex;align-items:center;text-decoration:none;opacity:.8;transition:opacity var(--transition-fast)}.footer-brand:hover{opacity:1}.footer-logo{height:28px;width:auto;display:block}.footer-center{display:flex;align-items:center;gap:.5rem;flex:1;justify-content:center}.app-footer a{color:var(--text-tertiary);text-decoration:none;transition:color .2s}.app-footer a:hover{color:var(--accent)}.footer-sep{opacity:.3}.setup-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem;background:var(--bg)}.setup-card{width:100%;max-width:480px;background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius-xl);padding:40px 32px;box-shadow:var(--shadow-lg)}.setup-header{text-align:center;margin-bottom:28px}.setup-title{font-size:1.375rem;font-weight:700;margin:0 0 4px}.setup-subtitle{font-size:.8125rem;color:var(--text-tertiary);margin:0}.source-tabs{display:flex;background:var(--bg);border-radius:var(--radius);padding:3px;margin-bottom:24px;gap:2px}.source-tab{flex:1;padding:8px 12px;text-align:center;border-radius:6px;font-size:.8125rem;font-weight:500;color:var(--text-secondary);background:none;border:none;cursor:pointer;transition:all .15s ease}.source-tab:hover{color:var(--text-primary)}.source-tab.active{background:var(--elevated);color:var(--text-primary);box-shadow:var(--shadow-sm)}.source-tab:disabled{opacity:.4;cursor:not-allowed}.source-tab-badge{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--success);margin-left:6px;vertical-align:middle}.tab-content{animation:fade-in .2s ease}.tab-content-center{text-align:center;padding:20px 0}.tab-info{font-size:.8125rem;color:var(--text-secondary);margin:0 0 16px}.setup-form{display:flex;flex-direction:column;gap:12px}.input-row{display:flex;gap:8px}.setup-input{flex:1;background:var(--bg);border:1px solid var(--border-color);border-radius:var(--radius);padding:10px 14px;color:var(--text-primary);font-size:.875rem}.setup-input.monospace{font-family:JetBrains Mono,monospace}.setup-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.setup-input::placeholder{color:var(--text-tertiary)}.btn-primary{width:100%;background:var(--accent);border:none;border-radius:var(--radius);padding:11px 20px;color:var(--bg);font-size:.875rem;font-weight:600;cursor:pointer;transition:background .15s ease}.btn-secondary{background:var(--bg);border:1px solid var(--border-color);border-radius:var(--radius);padding:10px 16px;color:var(--text-secondary);font-size:.8125rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:border-color .15s ease}.btn-secondary:hover{border-color:var(--border-hover);color:var(--text-primary)}.recent-list{margin-top:20px}.recent-label{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-bottom:8px}.recent-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:6px;font-size:.8125rem;color:var(--text-secondary);cursor:pointer;transition:background .15s ease}.recent-item:hover{background:var(--bg);color:var(--text-primary)}.recent-dot{width:6px;height:6px;border-radius:50%;background:var(--success);flex-shrink:0}.recent-path{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:JetBrains Mono,monospace;font-size:.8125rem}.recent-remove{opacity:0;color:var(--text-tertiary);font-size:1rem;padding:2px 6px;border-radius:4px;background:none;border:none;cursor:pointer;transition:opacity .15s ease}.recent-item:hover .recent-remove{opacity:1}.recent-remove:hover{color:var(--error);background:color-mix(in srgb,var(--error) 10%,transparent)}.setup-error{color:var(--error);font-size:.8125rem;text-align:center;margin-top:16px}.setup-footer{margin-top:28px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.setup-settings-link{font-size:.8125rem;color:var(--text-secondary);background:none;border:none;cursor:pointer;transition:color .15s ease}.setup-settings-link:hover{color:var(--text-primary)}.setup-powered{font-size:.6875rem;color:var(--text-tertiary);margin:0}.setup-settings-topbar{display:flex;align-items:center;padding:.75rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border-color)}.setup-back-button{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:var(--text-secondary);background:transparent;border:1px solid var(--border-color);border-radius:var(--radius);cursor:pointer;transition:all .2s}.setup-back-button:hover{color:var(--accent);border-color:var(--border-hover)}.code-block{margin:1em 0;border-radius:var(--radius);overflow:hidden;background:var(--bg);border:1px solid var(--border-color)}.code-block-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:color-mix(in srgb,var(--bg) 80%,transparent);border-bottom:1px solid var(--border-color)}.code-language{font-family:JetBrains Mono,monospace;font-size:.6875rem;color:var(--text-tertiary);text-transform:lowercase;letter-spacing:.04em}.copy-button{font-family:JetBrains Mono,monospace;font-size:.6875rem;padding:.2rem .5rem;border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-tertiary);cursor:pointer;transition:all .2s}.copy-button:hover{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 20%,transparent);background:color-mix(in srgb,var(--accent) 4%,transparent)}.markdown-content{line-height:1.65;color:var(--text-primary)}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4{margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.3;color:var(--text-primary)}.markdown-content h1{font-size:1.5rem}.markdown-content h2{font-size:1.25rem}.markdown-content h3{font-size:1.125rem}.markdown-content h4{font-size:1rem}.markdown-content p{margin:.75em 0}.markdown-content ul,.markdown-content ol{margin:.75em 0;padding-left:1.5em}.markdown-content li{margin:.25em 0}.markdown-content li::marker{color:var(--text-tertiary)}.markdown-content blockquote{margin:1em 0;padding:.625em 1em;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 4%,transparent);color:var(--text-secondary);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.markdown-content .inline-code{font-family:JetBrains Mono,monospace;font-size:.875em;padding:.125em .4em;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--accent) 6%,transparent);color:var(--accent-hover);border:1px solid color-mix(in srgb,var(--accent) 8%,transparent)}.markdown-content a{color:var(--accent);text-decoration:none;transition:color .2s}.markdown-content a:hover{color:var(--accent-hover);text-decoration:underline}.markdown-content hr{margin:1.5em 0;border:none;border-top:1px solid var(--border-color)}.markdown-content table{width:100%;margin:1em 0;border-collapse:collapse}.markdown-content th,.markdown-content td{padding:.5em .75em;border:1px solid var(--border-color);text-align:left;font-size:.9375rem}.markdown-content th{background:color-mix(in srgb,var(--bg) 50%,transparent);font-family:JetBrains Mono,monospace;font-weight:600;font-size:.8125rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em}.message-bubble{display:flex;gap:1rem;padding:1.25rem 1.5rem;animation:fade-in .3s ease-out}.message-bubble.user{background:var(--accent-dim);border-left:1px solid color-mix(in srgb,var(--accent) 15%,transparent)}.message-bubble.assistant{background:var(--surface);border-left:1px solid var(--border-color)}.message-avatar{flex-shrink:0;width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius);font-size:.875rem}.message-bubble.user .message-avatar{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent)}.message-bubble.assistant .message-avatar{background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 12%,transparent)}.message-content-wrapper{flex:1;min-width:0}.message-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.message-role{font-weight:600;font-size:.8125rem;color:var(--text-tertiary)}.message-time{font-size:.6875rem;color:var(--text-tertiary)}.message-content{color:var(--text-primary)}.message-content p{margin:0;line-height:1.65}.message-queries{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border-color)}.queries-label{font-size:.625rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em}.query-badge{font-size:.5625rem;padding:.125rem .5rem;background:var(--surface);color:var(--text-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm)}.message-sources-block{margin-top:.625rem;display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.message-sources-toggle{display:inline-flex;align-items:center;gap:.375rem;padding:.3rem .7rem;font-size:.6875rem;font-weight:500;color:var(--accent);background:var(--accent-soft, var(--accent-dim));border:1px solid color-mix(in srgb,var(--accent) 22%,transparent);border-radius:999px;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.message-sources-toggle:hover,.message-sources-toggle.is-open{background:color-mix(in srgb,var(--accent) 18%,transparent);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.message-sources-panel{width:100%;background:var(--surface);border:1px solid var(--hairline, var(--border-color));border-radius:var(--r, var(--radius));padding:.625rem .75rem;display:flex;flex-direction:column;gap:.5rem}.message-sources-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem;max-height:240px;overflow-y:auto}.message-sources-list li{display:flex;align-items:center;gap:.4rem;padding:.25rem .4rem;border-radius:var(--radius-sm);font-size:.75rem;color:var(--ink-2, var(--text-secondary));background:var(--elevated);border:1px solid var(--hairline, var(--border-color))}.message-sources-list li .source-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-sources-open{align-self:flex-start;display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .625rem;font-size:.6875rem;font-weight:500;color:var(--accent);background:transparent;border:1px solid color-mix(in srgb,var(--accent) 22%,transparent);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.message-sources-open:hover{background:var(--accent-soft, var(--accent-dim))}.message-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem;padding-top:.625rem}.flashcard-btn{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.6875rem;font-weight:500;color:var(--accent);background:var(--accent-dim);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:6px;cursor:pointer;transition:all .2s}.flashcard-btn:hover:not(:disabled){background:var(--accent-hover);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.flashcard-btn:disabled{opacity:.4;cursor:not-allowed}.message-suggestions{display:flex;flex-wrap:wrap;gap:.375rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border-color)}.suggestion-chip{padding:.375rem .75rem;font-size:.8125rem;color:var(--accent);background:var(--accent-dim);border:1px solid color-mix(in srgb,var(--accent) 15%,transparent);border-radius:20px;cursor:pointer;transition:all .2s;text-align:left;line-height:1.4}.suggestion-chip:hover{color:var(--accent);background:var(--accent-hover);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.streaming .streaming-indicator{display:flex;gap:4px;margin-left:.5rem}.streaming-indicator .dot{width:4px;height:4px;background:var(--accent);border-radius:50%;animation:bounce 1.4s infinite ease-in-out both;box-shadow:0 0 6px color-mix(in srgb,var(--accent) 30%,transparent)}.streaming-indicator .dot:nth-child(1){animation-delay:-.32s}.streaming-indicator .dot:nth-child(2){animation-delay:-.16s}.streaming-indicator .dot:nth-child(3){animation-delay:0}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.thinking-text{color:var(--text-tertiary);font-style:italic}.cursor{display:inline-block;width:2px;height:1.2em;background:var(--accent);margin-left:2px;vertical-align:text-bottom;animation:blink 1s step-end infinite;box-shadow:0 0 4px color-mix(in srgb,var(--accent) 40%,transparent)}@keyframes blink{50%{opacity:0}}.message-list{flex:1;overflow-y:auto;scroll-behavior:smooth}.message-list.empty{display:flex;align-items:center;justify-content:center}.empty-state{text-align:center;padding:2rem;max-width:440px;animation:fade-in .5s ease-out}.empty-icon{font-size:2.5rem;margin-bottom:1rem;display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin-left:auto;margin-right:auto;background:color-mix(in srgb,var(--accent) 6%,transparent);border:1px solid color-mix(in srgb,var(--accent) 10%,transparent);border-radius:var(--radius-lg);color:var(--accent);filter:drop-shadow(0 0 8px color-mix(in srgb,var(--accent) 20%,transparent))}.empty-state h3{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:var(--text-primary)}.empty-state p{margin:0 0 1.5rem;color:var(--text-secondary);font-size:.9375rem;line-height:1.5}.suggestion-list{display:flex;flex-direction:column;gap:.5rem}.suggestion{padding:.75rem 1rem;font-size:.875rem;color:var(--text-secondary);background:color-mix(in srgb,var(--bg) 40%,transparent);border:1px solid var(--border-color);border-radius:var(--radius);cursor:pointer;transition:all .25s;text-align:left}.suggestion:hover{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 20%,transparent);background:color-mix(in srgb,var(--accent) 4%,transparent);box-shadow:0 0 16px color-mix(in srgb,var(--accent) 5%,transparent);transform:translate(4px)}.persona-selector{position:relative;display:inline-flex}.persona-trigger{display:inline-flex;align-items:stretch;gap:0;font-size:.8125rem;color:var(--text-secondary);background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);overflow:hidden;transition:all var(--transition-fast)}.persona-trigger:hover{border-color:var(--accent)}.persona-trigger.active{color:var(--accent);background:var(--accent-dim);border-color:var(--accent)}.persona-trigger-main{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .6rem;font-size:inherit;color:inherit;background:transparent;border:none;cursor:pointer}.persona-trigger-main:hover,.persona-trigger.active .persona-trigger-main{color:var(--accent)}.persona-label{max-width:14ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.persona-clear{display:inline-flex;align-items:center;justify-content:center;padding:0 .45rem;background:transparent;border:none;border-left:1px solid color-mix(in srgb,var(--accent) 25%,transparent);color:var(--accent);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.persona-clear:hover{background:color-mix(in srgb,var(--rose, var(--error)) 15%,transparent);color:var(--rose, var(--error))}.persona-dropdown{position:absolute;bottom:calc(100% + 6px);left:0;min-width:360px;max-width:460px;max-height:460px;overflow-y:auto;background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:50;padding:.25rem}.persona-dropdown-header{display:flex;align-items:center;justify-content:space-between;padding:.4rem .6rem;border-bottom:1px solid var(--border-color);margin-bottom:.25rem}.persona-dropdown-title{font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-tertiary)}.persona-refresh-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--radius-sm);background:transparent;color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast)}.persona-refresh-btn:hover:not(:disabled){color:var(--accent);background:var(--accent-dim)}.persona-refresh-btn .spinning{animation:persona-spin .8s linear infinite}@keyframes persona-spin{to{transform:rotate(360deg)}}.persona-state{padding:.75rem .875rem;font-size:.8125rem;color:var(--text-secondary)}.persona-error{color:var(--error)}.persona-circle-block{border-radius:var(--radius-sm);margin:.15rem 0}.persona-circle-header{display:flex;align-items:center;gap:.5rem;width:100%;text-align:left;padding:.6rem .75rem;background:var(--elevated);border:1px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.persona-circle-header:hover{background:var(--accent-dim);border-color:var(--accent)}.persona-chevron{color:var(--text-tertiary);transition:transform var(--transition-fast);flex-shrink:0}.persona-chevron.open{transform:rotate(90deg);color:var(--accent)}.persona-circle-meta{flex:1;min-width:0}.persona-circle-name{font-weight:600;font-size:.875rem;color:var(--text-primary)}.persona-circle-tagline{font-size:.75rem;color:var(--text-secondary);margin-top:.1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.persona-circle-count{font-size:.7rem;font-weight:600;padding:.1rem .4rem;border-radius:999px;background:var(--surface);color:var(--text-secondary);border:1px solid var(--border-color)}.persona-circle-personas{display:flex;flex-direction:column;gap:.15rem;padding:.25rem .25rem .25rem 1.5rem}.persona-option{display:flex;flex-direction:column;width:100%;text-align:left;padding:.5rem .75rem;border-radius:var(--radius-sm);background:transparent;cursor:pointer;transition:background var(--transition-fast)}.persona-option:hover{background:var(--accent-dim)}.persona-option.selected{background:var(--accent-dim);color:var(--accent)}.persona-lead-option{border:1px dashed var(--border-color);background:transparent}.persona-option-row{display:flex;align-items:center;gap:.6rem}.persona-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;background:var(--elevated);flex-shrink:0}.persona-option-text{flex:1;min-width:0}.persona-option-name{font-weight:600;font-size:.875rem;color:var(--text-primary);display:inline-flex;align-items:center;gap:.4rem}.persona-option.selected .persona-option-name{color:var(--accent)}.persona-lead-badge{font-size:.625rem;font-weight:600;padding:.05rem .35rem;border-radius:999px;background:var(--accent-dim);color:var(--accent);text-transform:uppercase;letter-spacing:.04em}.persona-option-desc{font-size:.7rem;color:var(--text-secondary);margin-top:.15rem;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.chat-input-form{padding:1rem 1.5rem;background:var(--bg);border-top:1px solid var(--border-color)}.chat-input-container{display:flex;gap:.75rem;align-items:flex-end;padding:.75rem;background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);transition:all .2s}.chat-input-container:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.chat-input{flex:1;padding:.5rem;font-family:inherit;font-size:.9375rem;line-height:1.5;color:var(--text-primary);background:transparent;border:none;outline:none;resize:none;min-height:24px;max-height:200px}.chat-input::placeholder{color:var(--text-tertiary)}.chat-input:disabled{opacity:.5}.chat-input-actions{display:flex;gap:.5rem}.send-button,.cancel-button{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.5rem 1rem;font-size:.8125rem;font-weight:600;border:none;border-radius:var(--radius);cursor:pointer;transition:all .2s}.send-button{color:var(--bg);background:var(--accent)}.send-button:hover:not(:disabled){background:var(--accent-hover)}.send-button:disabled{opacity:.3;cursor:not-allowed}.cancel-button{color:var(--error);background:transparent;border:1px solid color-mix(in srgb,var(--error) 20%,transparent)}.cancel-button:hover{background:color-mix(in srgb,var(--error) 8%,transparent);border-color:color-mix(in srgb,var(--error) 35%,transparent)}.chat-input-hint{margin-top:.5rem;font-size:.6875rem;color:var(--text-tertiary);text-align:center;letter-spacing:.02em}.chat-history-sidebar{width:260px;flex:0 0 260px;display:flex;flex-direction:column;background:var(--elevated);border-right:1px solid var(--border-color);height:100%;overflow:hidden}.history-header{padding:.75rem;border-bottom:1px solid var(--border-color)}.new-conv-btn{display:inline-flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .75rem;font-size:.875rem;font-weight:500;color:var(--accent);background:var(--accent-dim);border:1px solid var(--accent);border-radius:var(--radius);cursor:pointer;transition:all var(--transition-fast);justify-content:center}.new-conv-btn:hover{background:var(--accent);color:var(--surface)}.history-search{position:relative;padding:.5rem .75rem;display:flex;align-items:center;gap:.4rem;border-bottom:1px solid var(--border-color);color:var(--text-tertiary)}.history-search-input{flex:1;background:transparent;border:none;padding:.25rem 0;font-size:.8125rem;color:var(--text-primary)}.history-search-input:focus{outline:none;box-shadow:none}.history-scroll{flex:1;overflow-y:auto;padding:.25rem 0}.history-empty{padding:1rem;color:var(--text-tertiary);font-size:.8125rem;text-align:center}.history-group{margin-top:.5rem}.history-group-label{margin:0;padding:.4rem .75rem .25rem;font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-tertiary)}.history-list{list-style:none;margin:0;padding:0}.history-item{display:flex;align-items:center;gap:.4rem;padding:.5rem .75rem;cursor:pointer;font-size:.8125rem;color:var(--text-secondary);border-radius:0;transition:background var(--transition-fast);position:relative}.history-item:hover{background:var(--surface);color:var(--text-primary)}.history-item.active{background:var(--accent-dim);color:var(--accent);font-weight:500;border-left:2px solid var(--accent)}.history-item-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-item-actions{display:none;align-items:center;gap:.15rem}.history-item:hover .history-item-actions,.history-item.active .history-item-actions{display:flex}.history-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-sm);color:var(--text-tertiary);background:transparent;cursor:pointer;transition:all var(--transition-fast)}.history-icon-btn:hover{background:var(--elevated);color:var(--text-primary)}.history-icon-btn.danger{background:var(--error);color:var(--surface)}.history-edit{display:flex;align-items:center;gap:.25rem;flex:1}.history-edit-input{flex:1;padding:.25rem .4rem;font-size:.8125rem;color:var(--text-primary);background:var(--surface);border:1px solid var(--accent);border-radius:var(--radius-sm)}.chat-layout{display:flex;flex:1;min-height:0;height:100%;background:var(--bg)}.chat-view{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0;height:100%}.chat-view-inner{display:flex;flex-direction:column;flex:1;min-height:0;width:100%;max-width:900px;margin:0 auto}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.5rem;border-bottom:1px solid var(--border-color)}.chat-header h2{margin:0;font-size:.9375rem;font-weight:600;color:var(--text-primary)}.clear-button{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.6875rem;font-weight:500;color:var(--text-tertiary);background:transparent;border:1px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .2s}.clear-button:hover{color:var(--error);border-color:color-mix(in srgb,var(--error) 20%,transparent);background:color-mix(in srgb,var(--error) 4%,transparent)}.loading-spinner-container{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem}.loading-spinner{position:relative}.spinner-ring{border:3px solid rgba(255,255,255,.06);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--accent) 30%,transparent))}.spinner-small .spinner-ring{width:16px;height:16px;border-width:2px}.spinner-medium .spinner-ring{width:24px;height:24px}.spinner-large .spinner-ring{width:40px;height:40px;border-width:4px}.spinner-text{color:var(--text-secondary);font-size:.8125rem}.code-explorer{display:flex;flex-direction:column;height:100%;background:var(--bg)}.explorer-search{display:flex;gap:.5rem;padding:.5rem;border-bottom:1px solid var(--border-color)}.explorer-search input{flex:1;padding:.5rem;font-family:JetBrains Mono,monospace;font-size:.8125rem;border:1px solid var(--border-color);border-radius:6px;background:color-mix(in srgb,var(--bg) 60%,transparent);color:var(--text-primary);transition:border-color .2s}.explorer-search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 8%,transparent)}.explorer-search button{padding:.5rem .75rem;font-size:.75rem;font-weight:600;border:none;border-radius:6px;background:var(--accent);color:var(--accent-contrast);cursor:pointer;transition:all .2s}.explorer-search button:disabled{opacity:.4}.explorer-tabs{display:flex;border-bottom:1px solid var(--border-color)}.explorer-tab{flex:1;padding:.5rem;font-size:.6875rem;font-weight:500;color:var(--text-tertiary);background:transparent;border:none;cursor:pointer;transition:all .15s;text-transform:uppercase;letter-spacing:.04em}.explorer-tab:hover{color:var(--text-primary);background:#ffffff08}.explorer-tab.active{color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}.explorer-content{flex:1;overflow-y:auto}.explorer-empty{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:2rem 1rem;text-align:center;color:var(--text-tertiary);font-size:.8125rem}.explorer-empty-title{margin:0;color:var(--text-secondary)}.explorer-empty-hint{margin:0;font-size:.75rem;color:var(--text-tertiary);line-height:1.5}.file-tree{padding:.25rem 0}.tree-item{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;font-size:.8125rem;cursor:pointer;transition:background .1s;color:var(--text-secondary)}.tree-item:hover{background:#ffffff08;color:var(--text-primary)}.tree-icon{flex-shrink:0;width:16px;font-size:.625rem;text-align:center;color:var(--text-tertiary)}.tree-item.directory .tree-icon{color:var(--info)}.tree-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:JetBrains Mono,monospace;font-size:.8125rem}.explorer-error{margin:.75rem;padding:.75rem;font-size:.75rem;color:var(--error);background:var(--error-bg);border:1px solid color-mix(in srgb,var(--error) 15%,transparent);border-radius:6px}.explorer-loading{display:flex;justify-content:center;padding:1rem}.explorer-results{flex:1;overflow-y:auto;padding:.75rem}.results-header{margin-bottom:.5rem;font-size:.625rem;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em}.results-text{margin:0;padding:.75rem;font-family:JetBrains Mono,monospace;font-size:.75rem;line-height:1.5;color:var(--text-primary);background:color-mix(in srgb,var(--bg) 60%,transparent);border:1px solid var(--border-color);border-radius:6px;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.symbol-list{list-style:none;margin:0;padding:0}.symbol-list li{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;font-size:.8125rem;border-radius:6px;cursor:pointer;transition:background .2s}.symbol-list li:hover{background:#ffffff08}.symbol-name{font-family:JetBrains Mono,monospace;color:var(--text-primary)}.symbol-kind{font-family:JetBrains Mono,monospace;font-size:.5625rem;padding:.1rem .375rem;color:var(--text-tertiary);background:color-mix(in srgb,var(--bg) 50%,transparent);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.04em}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}.graph-panel{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--bg-primary, #ffffff)}.graph-controls{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;border-bottom:1px solid var(--border-color, #e5e7eb);background:var(--bg-secondary, #f9fafb);flex-shrink:0;flex-wrap:wrap}.viz-selector{display:flex;gap:.25rem;padding:.25rem;background:var(--bg-tertiary, #e5e7eb);border-radius:8px}.viz-option{display:flex;align-items:center;gap:.375rem;padding:.5rem .875rem;font-size:.8125rem;font-weight:500;color:var(--text-secondary, #6b7280);background:transparent;border:none;border-radius:6px;cursor:pointer;transition:all .15s ease}.viz-option:hover{color:var(--text-primary, #1f2937)}.viz-option.active{color:var(--text-primary, #1f2937);background:var(--bg-primary, #ffffff);box-shadow:0 1px 3px #0000001a}.viz-option svg{flex-shrink:0}.arch-mode-selector{display:flex;gap:.125rem;padding:.125rem;background:var(--bg-primary, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:6px}.arch-mode-option{padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:var(--text-secondary, #6b7280);background:transparent;border:none;border-radius:4px;cursor:pointer;transition:all .15s ease}.arch-mode-option:hover{color:var(--text-primary, #1f2937);background:var(--bg-tertiary, #f3f4f6)}.arch-mode-option.active{color:var(--primary-color, #3b82f6);background:#3b82f61a}.dep-filters{display:flex;align-items:center;gap:.75rem;padding:0 .5rem}.filter-checkbox{display:flex;align-items:center;gap:.375rem;padding:.375rem .5rem;font-size:.75rem;font-weight:500;color:var(--text-secondary, #6b7280);background:transparent;border:1px solid transparent;border-radius:4px;cursor:pointer;transition:all .15s ease;-webkit-user-select:none;user-select:none}.filter-checkbox:hover{background:var(--bg-tertiary, #f3f4f6)}.filter-checkbox.active{color:var(--primary-color, #3b82f6);background:#3b82f614;border-color:#3b82f633}.filter-checkbox input[type=checkbox]{width:14px;height:14px;margin:0;accent-color:var(--primary-color, #3b82f6);cursor:pointer}.filter-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 .25rem;font-size:.625rem;font-weight:600;background:var(--bg-tertiary, #e5e7eb);border-radius:9px;margin-left:.25rem}.filter-checkbox.active .filter-count{background:var(--primary-color, #3b82f6);color:#fff}.reset-view-button{padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:var(--text-secondary, #6b7280);background:var(--bg-primary, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:6px;cursor:pointer;transition:all .15s ease}.reset-view-button:hover{border-color:var(--primary-color, #3b82f6);color:var(--primary-color, #3b82f6)}.target-indicator{display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;background:var(--bg-tertiary, #e5e7eb);border-radius:6px;font-size:.75rem}.target-label{color:var(--text-secondary, #6b7280)}.target-symbol{font-family:JetBrains Mono,SF Mono,monospace;font-weight:500;color:var(--primary-color, #3b82f6);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clear-target{display:flex;align-items:center;justify-content:center;padding:.25rem;background:transparent;border:none;border-radius:4px;color:var(--text-secondary, #6b7280);cursor:pointer;transition:all .15s}.clear-target:hover{background:var(--bg-hover, #d1d5db);color:var(--text-primary, #1f2937)}.graph-breadcrumb{display:flex;align-items:center;gap:.125rem;padding:.375rem .5rem;background:var(--bg-tertiary, #e5e7eb);border-radius:6px;font-size:.75rem;overflow-x:auto;max-width:400px}.graph-breadcrumb::-webkit-scrollbar{height:4px}.graph-breadcrumb::-webkit-scrollbar-thumb{background:var(--border-color, #d1d5db);border-radius:2px}.breadcrumb-segment{display:flex;align-items:center}.breadcrumb-separator{flex-shrink:0;color:var(--text-tertiary, #9ca3af);margin:0 .125rem}.breadcrumb-item{display:flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;color:var(--text-secondary, #6b7280);background:transparent;border:none;border-radius:4px;cursor:pointer;transition:all .15s;white-space:nowrap}.breadcrumb-item:hover:not(:disabled){background:var(--bg-primary, #ffffff);color:var(--primary-color, #3b82f6)}.breadcrumb-item:disabled{cursor:default}.breadcrumb-root{color:var(--text-primary, #1f2937)}.breadcrumb-root svg{flex-shrink:0}.breadcrumb-current{color:var(--primary-color, #3b82f6);font-weight:600}.refresh-button{display:flex;align-items:center;justify-content:center;padding:.5rem;margin-left:auto;background:transparent;border:1px solid var(--border-color, #e5e7eb);border-radius:6px;color:var(--text-secondary, #6b7280);cursor:pointer;transition:all .15s}.refresh-button:hover:not(:disabled){background:var(--bg-tertiary, #e5e7eb);color:var(--text-primary, #1f2937)}.refresh-button:disabled{opacity:.5;cursor:not-allowed}.graph-canvas-wrapper{flex:1;position:relative;min-height:0;display:flex}.graph-canvas-wrapper .graph-canvas-area{flex:1;position:relative;min-width:0}.edge-details-sidebar{width:280px;background:var(--bg-primary, #ffffff);border-left:1px solid var(--border-color, #e5e7eb);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.edge-details-sidebar .sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border-color, #e5e7eb);background:var(--bg-secondary, #f9fafb)}.edge-details-sidebar .sidebar-header h3{font-size:.875rem;font-weight:600;margin:0;color:var(--text-primary, #1f2937)}.edge-details-sidebar .close-button{display:flex;align-items:center;justify-content:center;padding:.25rem;background:transparent;border:none;border-radius:4px;color:var(--text-secondary, #6b7280);cursor:pointer;transition:all .15s}.edge-details-sidebar .close-button:hover{background:var(--bg-tertiary, #e5e7eb);color:var(--text-primary, #1f2937)}.edge-details-sidebar .sidebar-content{flex:1;overflow-y:auto;padding:1rem}.edge-details-sidebar .detail-section{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color, #e5e7eb)}.edge-details-sidebar .detail-section:last-child{border-bottom:none;margin-bottom:0}.edge-details-sidebar .relationship-flow{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem;background:var(--bg-secondary, #f9fafb);border-radius:8px}.edge-details-sidebar .module-name{font-family:JetBrains Mono,SF Mono,monospace;font-size:.8125rem;font-weight:500;color:var(--text-primary, #1f2937);padding:.25rem .5rem;background:var(--bg-primary, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:4px;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edge-details-sidebar .arrow{color:var(--text-tertiary, #9ca3af);flex-shrink:0}.edge-details-sidebar .detail-row{display:flex;justify-content:space-between;align-items:center;padding:.375rem 0}.edge-details-sidebar .detail-label{font-size:.75rem;color:var(--text-secondary, #6b7280)}.edge-details-sidebar .detail-value{font-size:.8125rem;font-weight:500;color:var(--text-primary, #1f2937)}.edge-details-sidebar .cross-boundary-value{display:flex;align-items:center;gap:.375rem}.edge-details-sidebar .layer-badge{padding:2px 6px;font-size:.6875rem;font-weight:600;text-transform:uppercase;color:#fff;border-radius:3px}.edge-details-sidebar .cross-arrow{color:var(--text-secondary, #6b7280);font-size:.75rem}.edge-details-sidebar .cycle-warning{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:.75rem;margin-bottom:1rem}.edge-details-sidebar .warning-badge{display:flex;align-items:center;gap:.375rem;font-size:.8125rem;font-weight:600;color:#dc2626;margin-bottom:.375rem}.edge-details-sidebar .warning-text{font-size:.75rem;color:#991b1b;margin:0}.edge-details-sidebar .section-header{margin-bottom:.5rem}.edge-details-sidebar .section-title{font-size:.6875rem;font-weight:600;text-transform:uppercase;color:var(--text-tertiary, #9ca3af);letter-spacing:.025em}.edge-details-sidebar .evidence-intro{font-size:.75rem;color:var(--text-secondary, #6b7280);margin:0 0 .5rem}.edge-details-sidebar .evidence-list{list-style:none;padding:0;margin:0 0 .75rem}.edge-details-sidebar .evidence-item{display:flex;align-items:center;padding:.25rem 0}.edge-details-sidebar .evidence-item:before{content:"•";color:var(--text-tertiary, #9ca3af);margin-right:.5rem}.edge-details-sidebar .evidence-item code{font-family:JetBrains Mono,SF Mono,monospace;font-size:.75rem;color:var(--primary-color, #3b82f6);background:#3b82f614;padding:.125rem .375rem;border-radius:3px}.edge-details-sidebar .evidence-more{font-size:.75rem;color:var(--text-tertiary, #9ca3af);font-style:italic;padding:.25rem 0}.edge-details-sidebar .evidence-note{display:flex;align-items:flex-start;gap:.375rem;font-size:.6875rem;color:var(--text-tertiary, #9ca3af);margin:0 0 .5rem;line-height:1.4}.edge-details-sidebar .evidence-note svg{flex-shrink:0;margin-top:.125rem}.edge-details-sidebar .confidence-badge{display:inline-block;font-size:.6875rem;font-weight:500;color:#b45309;background:#eab30826;padding:.25rem .5rem;border-radius:4px}.edge-details-sidebar .no-evidence{padding:.75rem;background:var(--bg-secondary, #f9fafb);border-radius:8px}.edge-details-sidebar .no-evidence-text{font-size:.75rem;color:var(--text-secondary, #6b7280);margin:0;text-align:center}.edge-details-sidebar .sidebar-actions{display:flex;flex-direction:column;gap:.5rem;padding-top:.5rem}.edge-details-sidebar .action-button{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1rem;font-size:.8125rem;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s}.edge-details-sidebar .action-button.primary{background:var(--primary-color, #3b82f6);color:#fff;border:none}.edge-details-sidebar .action-button.primary:hover{background:#2563eb}.edge-details-sidebar .action-button.secondary{background:transparent;color:var(--text-primary, #1f2937);border:1px solid var(--border-color, #e5e7eb)}.edge-details-sidebar .action-button.secondary:hover{border-color:var(--primary-color, #3b82f6);color:var(--primary-color, #3b82f6)}.edge-details-sidebar .node-detail-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.edge-details-sidebar .node-detail-name{font-size:1rem;font-weight:600;color:var(--text-primary, #1f2937)}.edge-details-sidebar .node-detail-path{font-size:.75rem;font-family:JetBrains Mono,SF Mono,monospace;color:var(--text-secondary, #6b7280);word-break:break-all}.edge-details-sidebar .connection-group{margin-bottom:.75rem}.edge-details-sidebar .connection-label{display:block;font-size:.75rem;font-weight:500;color:var(--text-secondary, #6b7280);margin-bottom:.25rem}.edge-details-sidebar .connection-list{list-style:none;padding:0;margin:0}.edge-details-sidebar .connection-list li{font-size:.8125rem;font-family:JetBrains Mono,SF Mono,monospace;color:var(--text-primary, #1f2937);padding:.125rem 0}.edge-details-sidebar .connection-list li.more{color:var(--text-tertiary, #9ca3af);font-family:inherit}.edge-details-sidebar .coupling-low{color:#22c55e}.edge-details-sidebar .coupling-medium{color:#eab308}.edge-details-sidebar .coupling-high{color:#f97316}.edge-details-sidebar .coupling-critical{color:#ef4444}.graph-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#ffffffe6;z-index:10}.graph-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:2rem;text-align:center}.graph-error .error-icon{color:#ef4444;margin-bottom:1rem}.graph-error .error-message{color:var(--text-secondary, #6b7280);margin-bottom:1rem}.graph-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:2rem;text-align:center}.graph-empty-state .empty-icon{color:var(--text-tertiary, #9ca3af);margin-bottom:1rem}.graph-empty-state .empty-title{font-size:1rem;font-weight:500;color:var(--text-primary, #1f2937);margin:0 0 .5rem}.graph-empty-state .empty-hint{font-size:.875rem;color:var(--text-secondary, #6b7280);max-width:300px;margin:0 0 1rem}.retry-button{padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:var(--primary-color, #3b82f6);background:transparent;border:1px solid var(--primary-color, #3b82f6);border-radius:6px;cursor:pointer;transition:all .15s}.retry-button:hover{background:var(--primary-color, #3b82f6);color:#fff}.graph-node{position:relative;display:flex;align-items:center;gap:.5rem;padding:.625rem .875rem;background:var(--bg-primary, #ffffff);border:2px solid var(--border-color, #e5e7eb);border-radius:8px;font-size:.875rem;transition:all .15s ease;cursor:pointer;min-width:160px}.graph-node:hover{border-color:var(--primary-color, #3b82f6);box-shadow:0 4px 12px #3b82f626}.graph-node.selected{border-color:var(--primary-color, #3b82f6);background:#eff6ff}.graph-node .node-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text-secondary, #6b7280)}.graph-node .node-content{display:flex;flex-direction:column;gap:.125rem;overflow:hidden;flex:1}.graph-node .node-header{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;min-width:0}.graph-node .node-label{font-weight:600;font-size:.9375rem;color:var(--text-primary, #1f2937);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.graph-node .role-badge{flex-shrink:0;padding:1px 6px;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em;color:#fff;border-radius:3px;white-space:nowrap}.graph-node .node-meta,.graph-node .node-signature,.graph-node .node-file,.graph-node .node-path{font-size:.6875rem;color:var(--text-secondary, #6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.graph-node .node-badge{display:inline-block;padding:.125rem .375rem;margin-left:.375rem;font-size:.625rem;font-weight:500;text-transform:uppercase;background:var(--bg-tertiary, #e5e7eb);border-radius:4px}.module-node{border-left:4px solid #8b5cf6}.module-node .node-icon{color:#8b5cf6}.node-coupling{display:flex;align-items:center;gap:.5rem;margin-top:.25rem}.coupling-metric{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .375rem;font-size:.625rem;font-weight:500;background:var(--bg-tertiary, #e5e7eb);border-radius:3px;color:var(--text-secondary, #6b7280)}.coupling-metric svg{flex-shrink:0}.cycle-badge{display:inline-flex;align-items:center;padding:.125rem .375rem;font-size:.5625rem;font-weight:600;text-transform:uppercase;background:#fef2f2;color:#dc2626;border-radius:3px;border:1px solid #fecaca}.module-node.coupling-low{border-left-color:#22c55e}.module-node.coupling-low .node-icon{color:#22c55e}.module-node.coupling-medium{border-left-color:#eab308}.module-node.coupling-medium .node-icon{color:#eab308}.module-node.coupling-high{border-left-color:#f97316}.module-node.coupling-high .node-icon{color:#f97316}.module-node.coupling-critical{border-left-color:#ef4444}.module-node.coupling-critical .node-icon{color:#ef4444}.module-node.in-cycle{background:#fef2f2;border-color:#fecaca;border-left-color:#ef4444}.module-node.in-cycle .node-icon{color:#ef4444}.module-node.in-cycle .node-label{color:#dc2626}.graph-node.cycle-highlight{box-shadow:0 0 0 3px #ef44444d,0 4px 12px #ef444433}.graph-node.fan-in-highlight{box-shadow:0 0 0 3px #f973164d,0 4px 12px #f9731633}.graph-node.cycle-highlight.fan-in-highlight{box-shadow:0 0 0 3px #ef44444d,0 4px 12px #ef444433}.function-node{border-left:4px solid #3b82f6}.function-node .node-icon{color:#3b82f6}.function-node.kind-class{border-left-color:var(--warning)}.function-node.kind-class .node-icon{color:var(--warning)}.function-node.kind-method{border-left-color:#22c55e}.function-node.kind-method .node-icon{color:#22c55e}.function-node.is-root{background:#fefce8;border-color:#facc15;border-left-color:#facc15}.function-node.direction-caller{background:#f0fdf4}.function-node.direction-callee{background:#fffbeb}.file-node{border-left:4px solid #64748b}.file-node .node-icon{color:#64748b}.file-node.is-directory{border-left-color:#8b5cf6}.file-node.is-directory .node-icon{color:#8b5cf6}.file-node.coupling-low{border-left-color:#22c55e}.file-node.coupling-low .node-icon{color:#22c55e}.file-node.coupling-medium{border-left-color:#eab308}.file-node.coupling-medium .node-icon{color:#eab308}.file-node.coupling-high{border-left-color:#f97316}.file-node.coupling-high .node-icon{color:#f97316}.file-node.coupling-critical{border-left-color:#ef4444}.file-node.coupling-critical .node-icon{color:#ef4444}.file-node.in-cycle{background:#fef2f2;border-color:#fecaca;border-left-color:#ef4444}.file-node.in-cycle .node-icon{color:#ef4444}.file-node.in-cycle .node-label{color:#dc2626}.node-metrics{display:flex;gap:.375rem;margin-top:.25rem}.node-metrics .metric{display:inline-flex;align-items:center;padding:.125rem .375rem;font-size:.625rem;font-weight:500;background:var(--bg-tertiary, #e5e7eb);border-radius:3px;color:var(--text-secondary, #6b7280)}.node-metrics .metric-complexity{background:#eab30826;color:#b45309}.file-node.complexity-low{border-left-color:#22c55e}.file-node.complexity-medium{border-left-color:#eab308}.file-node.complexity-high{border-left-color:#f97316}.file-node.complexity-critical{border-left-color:#ef4444}.file-node.churn-low{border-left-color:#22c55e}.file-node.churn-medium{border-left-color:#3b82f6}.file-node.churn-high{border-left-color:#f97316}.file-node.churn-critical{border-left-color:#ef4444}.file-node.loc-low{border-left-color:#22c55e}.file-node.loc-medium{border-left-color:#3b82f6}.file-node.loc-high{border-left-color:#f97316}.file-node.loc-critical{border-left-color:#ef4444}.color-mode-selector{display:flex;align-items:center;gap:.5rem;margin-left:auto}.color-mode-label{font-size:.75rem;color:var(--text-secondary, #6b7280)}.color-mode-select{padding:.375rem .625rem;font-size:.75rem;font-weight:500;color:var(--text-primary, #1f2937);background:var(--bg-primary, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:6px;cursor:pointer;transition:border-color .15s}.color-mode-select:hover{border-color:var(--primary-color, #3b82f6)}.color-mode-select:focus{outline:none;border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.graph-search{display:flex;align-items:center;gap:.5rem;padding:.375rem .625rem;background:var(--bg-primary, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:6px;transition:border-color .15s,box-shadow .15s}.graph-search:focus-within{border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.graph-search .search-icon{flex-shrink:0;color:var(--text-tertiary, #9ca3af)}.graph-search .search-input{flex:1;min-width:120px;max-width:180px;padding:0;font-size:.75rem;color:var(--text-primary, #1f2937);background:transparent;border:none;outline:none}.graph-search .search-input::placeholder{color:var(--text-tertiary, #9ca3af)}.graph-search .search-clear{display:flex;align-items:center;justify-content:center;padding:.125rem;background:transparent;border:none;border-radius:3px;color:var(--text-tertiary, #9ca3af);cursor:pointer;transition:all .15s}.graph-search .search-clear:hover{background:var(--bg-tertiary, #e5e7eb);color:var(--text-secondary, #6b7280)}.graph-node.search-dimmed{opacity:.35;filter:grayscale(.5)}.graph-node.search-match{border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f640}.graph-node.search-match .node-label{color:var(--primary-color, #3b82f6)}.node-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px;padding:0;background:var(--bg-primary, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:8px;box-shadow:0 4px 12px #00000026;font-size:.75rem;white-space:nowrap;z-index:1000;opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s;pointer-events:none}.graph-node:hover .node-tooltip{opacity:1;visibility:visible}.node-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--border-color, #e5e7eb)}.tooltip-header{padding:.5rem .75rem;font-weight:600;color:var(--text-primary, #1f2937);background:var(--bg-secondary, #f9fafb);border-bottom:1px solid var(--border-color, #e5e7eb);border-radius:8px 8px 0 0;font-family:JetBrains Mono,SF Mono,monospace;font-size:.6875rem;max-width:250px;overflow:hidden;text-overflow:ellipsis}.tooltip-content{padding:.5rem .75rem}.tooltip-row{display:flex;justify-content:space-between;gap:1rem;padding:.25rem 0}.tooltip-row:not(:last-child){border-bottom:1px solid var(--border-color, #e5e7eb)}.tooltip-label{color:var(--text-secondary, #6b7280)}.tooltip-value{font-weight:500;color:var(--text-primary, #1f2937);font-family:JetBrains Mono,SF Mono,monospace}.react-flow__node{font-family:inherit}.react-flow__handle{width:8px;height:8px;background:var(--border-color, #e5e7eb);border:2px solid var(--bg-primary, #ffffff)}.react-flow__handle:hover{background:var(--primary-color, #3b82f6)}.react-flow__edge-path{stroke-width:2}.react-flow__controls{box-shadow:0 2px 8px #0000001a;border-radius:8px;border:1px solid var(--border-color, #e5e7eb)}.react-flow__controls-button{border:none;background:var(--bg-primary, #ffffff)}.react-flow__controls-button:hover{background:var(--bg-secondary, #f9fafb)}.react-flow__edge{cursor:pointer}.react-flow__edge:hover .react-flow__edge-path{stroke-width:3px}.react-flow__edge.selected-edge .react-flow__edge-path{stroke:#3b82f6;stroke-width:4px;filter:drop-shadow(0 0 6px rgba(59,130,246,.6))}.react-flow__edge.cross-boundary .react-flow__edge-path{stroke:#f97316;stroke-dasharray:8,4;stroke-width:2px}.react-flow__edge.cross-boundary.selected-edge .react-flow__edge-path{stroke:#f97316;stroke-dasharray:8,4;stroke-width:4px;filter:drop-shadow(0 0 6px rgba(249,115,22,.6))}[data-theme=dark] .graph-panel{background:var(--bg-primary, #1f2937)}[data-theme=dark] .graph-controls{background:var(--bg-secondary, #111827);border-color:var(--border-color, #374151)}[data-theme=dark] .viz-selector{background:var(--bg-tertiary, #374151)}[data-theme=dark] .viz-option.active{background:var(--bg-primary, #1f2937)}[data-theme=dark] .graph-node{background:var(--bg-secondary, #111827);border-color:var(--border-color, #374151)}[data-theme=dark] .graph-node.selected{background:#1e3a5f}[data-theme=dark] .graph-loading{background:#111827e6}[data-theme=dark] .graph-search{background:var(--bg-secondary, #111827);border-color:var(--border-color, #374151)}[data-theme=dark] .graph-search .search-input{color:var(--text-primary, #f3f4f6)}[data-theme=dark] .node-tooltip{background:var(--bg-secondary, #111827);border-color:var(--border-color, #374151)}[data-theme=dark] .tooltip-header{background:var(--bg-tertiary, #1f2937);border-color:var(--border-color, #374151)}[data-theme=dark] .graph-breadcrumb{background:var(--bg-tertiary, #374151)}[data-theme=dark] .breadcrumb-item:hover:not(:disabled){background:var(--bg-secondary, #111827)}[data-theme=dark] .arch-mode-selector{background:var(--bg-secondary, #111827);border-color:var(--border-color, #374151)}[data-theme=dark] .arch-mode-option:hover{background:var(--bg-tertiary, #374151)}[data-theme=dark] .arch-mode-option.active{background:#3b82f633}[data-theme=dark] .coupling-metric{background:var(--bg-tertiary, #374151);color:var(--text-secondary, #9ca3af)}[data-theme=dark] .cycle-badge{background:#ef444433;border-color:#ef44444d}[data-theme=dark] .module-node.in-cycle{background:#ef444426;border-color:#ef44444d}[data-theme=dark] .dep-filters .filter-checkbox{color:var(--text-secondary, #9ca3af)}[data-theme=dark] .dep-filters .filter-checkbox:hover{background:var(--bg-tertiary, #374151)}[data-theme=dark] .dep-filters .filter-checkbox.active{color:var(--primary-color, #3b82f6);background:#3b82f626}[data-theme=dark] .filter-count{background:var(--bg-tertiary, #374151);color:var(--text-secondary, #9ca3af)}[data-theme=dark] .reset-view-button{background:var(--bg-secondary, #111827);border-color:var(--border-color, #374151);color:var(--text-secondary, #9ca3af)}[data-theme=dark] .edge-details-sidebar{background:var(--bg-primary, #1f2937);border-left-color:var(--border-color, #374151)}[data-theme=dark] .edge-details-sidebar .sidebar-header{background:var(--bg-secondary, #111827);border-bottom-color:var(--border-color, #374151)}[data-theme=dark] .edge-details-sidebar .sidebar-header h3{color:var(--text-primary, #f3f4f6)}[data-theme=dark] .edge-details-sidebar .close-button{color:var(--text-secondary, #9ca3af)}[data-theme=dark] .edge-details-sidebar .close-button:hover{background:var(--bg-tertiary, #374151);color:var(--text-primary, #f3f4f6)}[data-theme=dark] .edge-details-sidebar .detail-section{border-bottom-color:var(--border-color, #374151)}[data-theme=dark] .edge-details-sidebar .relationship-flow{background:var(--bg-secondary, #111827)}[data-theme=dark] .edge-details-sidebar .module-name{color:var(--text-primary, #f3f4f6);background:var(--bg-tertiary, #374151);border-color:var(--border-color, #4b5563)}[data-theme=dark] .edge-details-sidebar .detail-value{color:var(--text-primary, #f3f4f6)}[data-theme=dark] .edge-details-sidebar .cycle-warning{background:#ef444426;border-color:#ef44444d}[data-theme=dark] .edge-details-sidebar .evidence-item code{background:#3b82f626}[data-theme=dark] .edge-details-sidebar .no-evidence{background:var(--bg-secondary, #111827)}[data-theme=dark] .edge-details-sidebar .action-button.secondary{color:var(--text-primary, #f3f4f6);border-color:var(--border-color, #374151)}[data-theme=dark] .edge-details-sidebar .action-button.secondary:hover{border-color:var(--primary-color, #3b82f6)}.details-sidebar{width:300px;background:var(--bg-primary, #ffffff);border-left:1px solid var(--border-color, #e5e7eb);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.details-sidebar .sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid var(--border-color, #e5e7eb)}.details-sidebar .sidebar-header h3{font-size:.9375rem;font-weight:600;margin:0;color:var(--text-primary, #1f2937)}.details-sidebar .close-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;border:none;border-radius:6px;color:var(--text-tertiary, #9ca3af);cursor:pointer;transition:all .15s}.details-sidebar .close-btn:hover{background:var(--bg-tertiary, #f3f4f6);color:var(--text-primary, #1f2937)}.details-sidebar .sidebar-body{flex:1;overflow-y:auto;padding:1rem}.details-sidebar .relationship-title{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1rem;margin-bottom:1rem;background:var(--bg-secondary, #f9fafb);border-radius:8px;font-family:JetBrains Mono,SF Mono,monospace;font-size:.875rem;font-weight:600;color:var(--text-primary, #1f2937)}.details-sidebar .relationship-title .arrow{color:var(--text-tertiary, #9ca3af);font-size:1rem}.details-sidebar .info-section{margin-bottom:1.25rem}.details-sidebar .section-label{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary, #9ca3af);margin:0 0 .625rem}.details-sidebar .info-row{display:flex;align-items:center;gap:.5rem;padding:.5rem 0}.details-sidebar .info-row:not(:last-child){border-bottom:1px solid var(--border-color, #e5e7eb)}.details-sidebar .info-key{font-size:.8125rem;color:var(--text-secondary, #6b7280);white-space:nowrap}.details-sidebar .info-key.warning{color:#dc2626;font-weight:500}.details-sidebar .info-val{font-size:.8125rem;color:var(--text-primary, #1f2937)}.details-sidebar .info-val.highlight{font-weight:600;color:var(--primary-color, #3b82f6)}.details-sidebar .info-row.cycle{background:#fef2f2;margin:.5rem -.5rem;padding:.5rem;border-radius:6px;border:none}.details-sidebar .info-row.cycle .info-val{color:#dc2626}.details-sidebar .layer-tag{display:inline-block;padding:.125rem .5rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;color:#fff;border-radius:4px}.details-sidebar .arrow-small{color:var(--text-tertiary, #9ca3af);font-size:.75rem}.details-sidebar .symbol-list{display:flex;flex-direction:column;gap:.375rem}.details-sidebar .symbol-item{padding:.375rem .5rem;background:var(--bg-secondary, #f9fafb);border-radius:4px}.details-sidebar .symbol-item code{font-family:JetBrains Mono,SF Mono,monospace;font-size:.75rem;color:var(--primary-color, #3b82f6)}.details-sidebar .symbol-more{font-size:.75rem;color:var(--text-tertiary, #9ca3af);padding:.25rem 0}.details-sidebar .sidebar-actions{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color, #e5e7eb)}.details-sidebar .action-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1rem;font-size:.8125rem;font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s}.details-sidebar .action-btn.primary{background:var(--primary-color, #3b82f6);color:#fff;border:none}.details-sidebar .action-btn.primary:hover{background:#2563eb}.details-sidebar .action-btn.secondary{background:transparent;color:var(--text-primary, #1f2937);border:1px solid var(--border-color, #e5e7eb)}.details-sidebar .action-btn.secondary:hover{border-color:var(--primary-color, #3b82f6);color:var(--primary-color, #3b82f6)}[data-theme=dark] .details-sidebar{background:var(--bg-primary, #1f2937);border-left-color:var(--border-color, #374151)}[data-theme=dark] .details-sidebar .sidebar-header{border-bottom-color:var(--border-color, #374151)}[data-theme=dark] .details-sidebar .sidebar-header h3{color:var(--text-primary, #f3f4f6)}[data-theme=dark] .details-sidebar .close-btn:hover{background:var(--bg-tertiary, #374151);color:var(--text-primary, #f3f4f6)}[data-theme=dark] .details-sidebar .relationship-title{background:var(--bg-secondary, #111827);color:var(--text-primary, #f3f4f6)}[data-theme=dark] .details-sidebar .info-row:not(:last-child){border-bottom-color:var(--border-color, #374151)}[data-theme=dark] .details-sidebar .info-val{color:var(--text-primary, #f3f4f6)}[data-theme=dark] .details-sidebar .info-row.cycle{background:#ef444426}[data-theme=dark] .details-sidebar .symbol-item{background:var(--bg-secondary, #111827)}[data-theme=dark] .details-sidebar .sidebar-actions{border-top-color:var(--border-color, #374151)}[data-theme=dark] .details-sidebar .action-btn.secondary{color:var(--text-primary, #f3f4f6);border-color:var(--border-color, #374151)}.details-sidebar .module-title{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.details-sidebar .module-name{font-size:1rem;font-weight:600;color:var(--text-primary, #1f2937)}.details-sidebar .module-path{font-size:.75rem;font-family:JetBrains Mono,SF Mono,monospace;color:var(--text-tertiary, #9ca3af);margin-bottom:1rem;word-break:break-all}.details-sidebar .coupling-level-low{color:#22c55e;font-weight:600}.details-sidebar .coupling-level-medium{color:#eab308;font-weight:600}.details-sidebar .coupling-level-high{color:#f97316;font-weight:600}.details-sidebar .coupling-level-critical{color:#ef4444;font-weight:600}.details-sidebar .connection-group{margin-bottom:.75rem}.details-sidebar .connection-group:last-child{margin-bottom:0}.details-sidebar .connection-title{display:block;font-size:.75rem;font-weight:500;color:var(--text-secondary, #6b7280);margin-bottom:.375rem}.details-sidebar .connection-list{display:flex;flex-direction:column;gap:.25rem}.details-sidebar .connection-item{font-size:.8125rem;font-family:JetBrains Mono,SF Mono,monospace;color:var(--text-primary, #1f2937);padding:.25rem .5rem;background:var(--bg-secondary, #f9fafb);border-radius:4px}.details-sidebar .connection-more{font-size:.75rem;color:var(--text-tertiary, #9ca3af);padding:.25rem 0}[data-theme=dark] .details-sidebar .module-name{color:var(--text-primary, #f3f4f6)}[data-theme=dark] .details-sidebar .connection-item{background:var(--bg-secondary, #111827);color:var(--text-primary, #f3f4f6)}.external-node{min-width:160px;padding:.75rem 1rem;background:var(--bg-secondary, #f9fafb);border:2px dashed var(--border-color, #d1d5db);border-radius:8px;cursor:pointer;transition:all .2s}.external-node:hover{border-color:var(--primary-color, #3b82f6);background:var(--bg-primary, #ffffff)}.external-node.selected{border-color:var(--primary-color, #3b82f6);border-style:solid;box-shadow:0 0 0 3px #3b82f626}.external-node.outgoing{border-color:#f97316}.external-node.outgoing:hover{border-color:#ea580c}.external-node.incoming{border-color:#22c55e}.external-node.incoming:hover{border-color:#16a34a}.external-node .node-icon{color:var(--text-tertiary, #9ca3af)}.external-node .node-label{font-size:.8125rem;font-weight:500;color:var(--text-secondary, #6b7280)}.external-node .external-preview{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.375rem}.external-node .external-item{font-size:.6875rem;font-family:JetBrains Mono,SF Mono,monospace;padding:.125rem .375rem;background:var(--bg-tertiary, #e5e7eb);border-radius:3px;color:var(--text-secondary, #6b7280)}.external-node .external-more{font-size:.6875rem;color:var(--text-tertiary, #9ca3af);padding:.125rem .25rem}[data-theme=dark] .external-node{background:var(--bg-secondary, #1f2937);border-color:var(--border-color, #4b5563)}[data-theme=dark] .external-node:hover{background:var(--bg-primary, #111827)}[data-theme=dark] .external-node .external-item{background:var(--bg-tertiary, #374151);color:var(--text-secondary, #9ca3af)}.drill-breadcrumb{background:var(--bg-secondary, #f3f4f6);padding:.375rem .75rem;border-radius:6px;margin-left:.5rem}.drill-breadcrumb .breadcrumb-root{display:flex;align-items:center;gap:.375rem}.drill-breadcrumb .breadcrumb-root svg{opacity:.7}.graph-node.has-children:after{content:"";position:absolute;bottom:3px;right:3px;width:8px;height:8px;background:var(--primary-color, #3b82f6);border-radius:2px;opacity:.5}.graph-node.has-children:hover:after{opacity:1}.entry-points-button{display:flex;align-items:center;gap:.375rem;padding:.375rem .75rem;background:var(--bg-secondary, #f3f4f6);border:1px solid var(--border-color, #e5e7eb);border-radius:6px;font-size:.8125rem;color:var(--text-secondary, #6b7280);cursor:pointer;transition:all .15s}.entry-points-button:hover{background:var(--bg-tertiary, #e5e7eb);color:var(--text-primary, #1f2937)}.entry-points-button.active{background:#ec4899;border-color:#ec4899;color:#fff}.entry-points-button .entry-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 .375rem;background:#fff3;border-radius:9px;font-size:.6875rem;font-weight:600}.entry-points-button:not(.active) .entry-count{background:var(--bg-tertiary, #e5e7eb);color:var(--text-secondary, #6b7280)}.graph-node.entry-point-highlight{border-color:#ec4899!important;box-shadow:0 0 0 3px #ec48994d,0 0 12px #ec489933}.graph-node.entry-point-highlight:before{content:"▶";position:absolute;top:-8px;left:50%;transform:translate(-50%);font-size:10px;color:#ec4899}[data-theme=dark] .entry-points-button{background:var(--bg-secondary, #1f2937);border-color:var(--border-color, #374151);color:var(--text-secondary, #9ca3af)}[data-theme=dark] .entry-points-button:hover{background:var(--bg-tertiary, #374151);color:var(--text-primary, #f3f4f6)}[data-theme=dark] .entry-points-button:not(.active) .entry-count{background:var(--bg-tertiary, #374151)}.callgraph-search{width:100%;max-width:400px;margin-top:1rem}.callgraph-search-form{display:flex;gap:.5rem}.callgraph-search-input{flex:1;padding:.625rem .875rem;font-size:.875rem;color:var(--text-primary, #1f2937);background:var(--bg-primary, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:6px;outline:none;transition:border-color .15s,box-shadow .15s}.callgraph-search-input:focus{border-color:var(--primary-color, #3b82f6);box-shadow:0 0 0 2px #3b82f61a}.callgraph-search-input::placeholder{color:var(--text-tertiary, #9ca3af)}.callgraph-search-btn{padding:.625rem 1rem;font-size:.875rem;font-weight:500;color:#fff;background:var(--primary-color, #3b82f6);border:none;border-radius:6px;cursor:pointer;transition:background .15s;white-space:nowrap}.callgraph-search-btn:hover:not(:disabled){background:#2563eb}.callgraph-search-btn:disabled{opacity:.5;cursor:not-allowed}.callgraph-results{display:flex;flex-direction:column;gap:.25rem;margin-top:.75rem;max-height:300px;overflow-y:auto;border:1px solid var(--border-color, #e5e7eb);border-radius:6px;background:var(--bg-primary, #ffffff)}.callgraph-result-item{display:flex;align-items:center;gap:.5rem;padding:.625rem .875rem;font-size:.8125rem;text-align:left;background:transparent;border:none;border-bottom:1px solid var(--border-color, #e5e7eb);cursor:pointer;transition:background .1s;width:100%}.callgraph-result-item:last-child{border-bottom:none}.callgraph-result-item:hover{background:var(--bg-secondary, #f9fafb)}.callgraph-result-item .result-name{font-weight:600;color:var(--text-primary, #1f2937);font-family:JetBrains Mono,SF Mono,monospace}.callgraph-result-item .result-kind{font-size:.6875rem;font-weight:500;text-transform:uppercase;padding:.125rem .375rem;background:var(--bg-tertiary, #e5e7eb);color:var(--text-secondary, #6b7280);border-radius:3px}.callgraph-result-item .result-file{margin-left:auto;font-size:.6875rem;color:var(--text-tertiary, #9ca3af);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}.callgraph-searching{display:flex;justify-content:center;padding:1rem}[data-theme=dark] .callgraph-search-input{background:var(--bg-secondary, #111827);border-color:var(--border-color, #374151);color:var(--text-primary, #f3f4f6)}[data-theme=dark] .callgraph-results{background:var(--bg-secondary, #111827);border-color:var(--border-color, #374151)}[data-theme=dark] .callgraph-result-item{border-color:var(--border-color, #374151)}[data-theme=dark] .callgraph-result-item:hover{background:var(--bg-tertiary, #374151)}[data-theme=dark] .callgraph-result-item .result-name{color:var(--text-primary, #f3f4f6)}[data-theme=dark] .callgraph-result-item .result-kind{background:var(--bg-tertiary, #374151)}.color-mode-select:disabled{opacity:.6;cursor:not-allowed;background:var(--bg-tertiary, #e5e7eb)}[data-theme=dark] .color-mode-select:disabled{background:var(--bg-tertiary, #374151)}.color-legend{position:absolute;bottom:12px;left:12px;z-index:5;background:var(--bg-primary, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:8px;box-shadow:0 2px 8px #00000014;font-size:.75rem;min-width:120px;max-width:180px;pointer-events:auto}.color-legend-toggle{display:flex;align-items:center;gap:.375rem;width:100%;padding:.5rem .625rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary, #6b7280);background:transparent;border:none;border-radius:8px;cursor:pointer;transition:color .15s}.color-legend-toggle:hover{color:var(--text-primary, #1f2937)}.color-legend-chevron{margin-left:auto;flex-shrink:0}.color-legend-items{display:flex;flex-direction:column;gap:.25rem;padding:0 .625rem .5rem}.color-legend-item{display:flex;align-items:center;gap:.375rem}.color-legend-swatch{display:inline-block;width:10px;height:10px;border-radius:2px;flex-shrink:0}.color-legend-label{font-size:.6875rem;color:var(--text-secondary, #6b7280);white-space:nowrap}.color-legend.collapsed{min-width:auto}.color-legend.collapsed .color-legend-toggle{border-radius:8px}[data-theme=dark] .color-legend{background:var(--bg-secondary, #111827);border-color:var(--border-color, #374151);box-shadow:0 2px 8px #0000004d}[data-theme=dark] .color-legend-toggle{color:var(--text-secondary, #9ca3af)}[data-theme=dark] .color-legend-toggle:hover{color:var(--text-primary, #f3f4f6)}[data-theme=dark] .color-legend-label{color:var(--text-secondary, #9ca3af)}.main-panel{display:flex;flex-direction:column;height:100%;background:var(--bg)}.main-panel-header{padding:.75rem;border-bottom:1px solid var(--border-color);background:var(--surface)}.main-panel-tabs{display:flex;gap:2px;padding:3px;background:color-mix(in srgb,var(--bg) 50%,transparent);border:1px solid var(--border-color);border-radius:8px}.main-tab{display:flex;align-items:center;gap:.5rem;flex:1;padding:.5rem 1rem;font-size:.75rem;font-weight:500;color:var(--text-tertiary);background:transparent;border:none;border-radius:6px;cursor:pointer;transition:all .2s;justify-content:center}.main-tab:hover{color:var(--text-primary);background:#ffffff08}.main-tab.active{color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent);box-shadow:0 0 12px color-mix(in srgb,var(--accent) 6%,transparent)}.main-tab svg{flex-shrink:0}.main-panel-content{flex:1;overflow:hidden;display:flex;flex-direction:column}.main-panel-loading{display:flex;justify-content:center;align-items:center;height:100%;padding:2rem}.main-panel-error{margin:1rem;padding:.75rem;font-size:.8125rem;color:var(--error);background:var(--error-bg);border:1px solid color-mix(in srgb,var(--error) 15%,transparent);border-radius:6px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:2rem;text-align:center;color:var(--text-secondary)}.empty-state-icon{margin-bottom:1rem;opacity:.3;color:var(--accent)}.empty-state-title{margin:0 0 .5rem;font-size:1rem;font-weight:500;color:var(--text-primary)}.empty-state-hint{margin:0 0 1rem;font-size:.875rem}.empty-state-actions{display:flex;gap:.5rem}.empty-action-btn{padding:.625rem 1.25rem;font-size:.8125rem;font-weight:600;color:var(--accent-contrast);background:var(--accent);border:none;border-radius:var(--radius);cursor:pointer;transition:all .2s}.empty-action-btn.secondary{color:var(--text-secondary);background:transparent;border:1px solid var(--border-color)}.empty-action-btn.secondary:hover{border-color:color-mix(in srgb,var(--accent) 20%,transparent);color:var(--accent)}.file-view{display:flex;flex-direction:column;height:100%}.file-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;background:var(--surface);border-bottom:1px solid var(--border-color)}.file-path{flex:1;font-family:JetBrains Mono,monospace;font-size:.75rem;color:var(--text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dir-listing{flex:1;overflow-y:auto;padding:.5rem}.dir-item{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:4px;font-size:.875rem;color:var(--text-primary)}.dir-item.file:hover{background:#ffffff08}.dir-item-icon{font-size:1rem}.dir-item-name{font-family:JetBrains Mono,monospace;font-size:.8125rem}.ask-button{flex-shrink:0;padding:.5rem 1rem;font-size:.75rem;font-weight:600;color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:6px;cursor:pointer;transition:all .2s}.ask-button:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.file-content{flex:1;overflow:auto;padding:0}.file-content .code-block{height:100%;border-radius:0;border:none}.symbol-view{display:flex;flex-direction:column;height:100%}.symbol-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;background:var(--surface);border-bottom:1px solid var(--border-color)}.symbol-header h3{margin:0;font-size:.875rem;font-weight:600}.symbol-content{flex:1;margin:0;padding:1rem;font-family:JetBrains Mono,monospace;font-size:.8125rem;line-height:1.6;overflow:auto;white-space:pre-wrap;word-break:break-word;color:var(--text-primary)}.action-result{display:flex;flex-direction:column;height:100%;padding:1rem}.action-result h3{margin:0 0 1rem;font-size:1rem}.result-content{flex:1;margin:0;padding:1rem;font-family:JetBrains Mono,monospace;font-size:.8125rem;line-height:1.6;background:color-mix(in srgb,var(--bg) 60%,transparent);border:1px solid var(--border-color);border-radius:var(--radius);overflow:auto;white-space:pre-wrap;word-break:break-word;color:var(--text-primary)}.chat-container{display:flex;flex-direction:column;height:100%}.chat-context-banner{padding:.5rem 1rem;font-family:JetBrains Mono,monospace;font-size:.6875rem;color:var(--text-secondary);background:color-mix(in srgb,var(--accent) 4%,transparent);border-bottom:1px solid color-mix(in srgb,var(--accent) 10%,transparent)}.chat-context-banner strong{color:var(--accent)}.chat-messages{flex:1;overflow:hidden;display:flex;flex-direction:column}.chat-messages .message-list{flex:1}.chat-input-wrapper{border-top:1px solid var(--border-color)}.chat-input-wrapper .chat-input-form{padding:.75rem 1rem}.chat-input-wrapper .chat-input-hint{display:none}.actions-container{padding:1.5rem;height:100%;overflow:auto}.actions-list{display:flex;flex-direction:column;gap:.75rem;max-width:400px}.action-button{display:flex;align-items:flex-start;gap:1rem;padding:1rem;text-align:left;background:color-mix(in srgb,var(--bg) 40%,transparent);border:1px solid var(--border-color);border-radius:var(--radius);cursor:pointer;transition:all .2s}.action-button:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 15%,transparent);background:color-mix(in srgb,var(--accent) 3%,transparent)}.action-button:disabled{opacity:.4;cursor:not-allowed}.action-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:color-mix(in srgb,var(--accent) 6%,transparent);border:1px solid color-mix(in srgb,var(--accent) 10%,transparent);border-radius:var(--radius);color:var(--accent);flex-shrink:0}.action-text{display:flex;flex-direction:column;gap:.25rem}.action-text strong{font-size:.875rem;color:var(--text-primary)}.action-text span:last-child{font-size:.8125rem;color:var(--text-secondary)}.actions-loading{display:flex;justify-content:center;padding:2rem}.impact-analysis-section{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border-color);max-width:400px}.impact-analysis-section .section-title{font-size:.875rem;color:var(--text-primary);margin:0 0 .75rem}.impact-form{display:flex;gap:.5rem;flex-wrap:wrap}.impact-input{flex:1;min-width:180px;padding:.625rem .875rem;font-family:JetBrains Mono,monospace;font-size:.8125rem;color:var(--text-primary);background:color-mix(in srgb,var(--bg) 60%,transparent);border:1px solid var(--border-color);border-radius:6px;transition:border-color .2s}.impact-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 8%,transparent)}.impact-select{padding:.625rem .5rem;font-family:JetBrains Mono,monospace;font-size:.8125rem;color:var(--text-primary);background:color-mix(in srgb,var(--bg) 60%,transparent);border:1px solid var(--border-color);border-radius:6px;cursor:pointer}.impact-btn{padding:.625rem 1rem;font-size:.8125rem;font-weight:600;color:var(--accent-contrast);background:var(--accent);border:none;border-radius:6px;cursor:pointer;transition:all .2s}.impact-btn:disabled{opacity:.4;cursor:not-allowed}@media(max-width:600px){.main-tab{padding:.5rem;font-size:.6875rem}.main-tab svg{display:none}.file-header{flex-direction:column;align-items:stretch;gap:.5rem}.ask-button{width:100%;text-align:center}}.ide-view{display:flex;height:100%}.ide-panel{display:flex;flex-direction:column;height:100%;overflow:hidden;transition:width .2s ease}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:var(--surface);border-bottom:1px solid var(--border-color);flex-shrink:0}.panel-title{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}.panel-toggle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--text-tertiary);font-size:.625rem;cursor:pointer;transition:all .15s}.panel-toggle:hover{background:#ffffff0f;color:var(--accent)}.explorer-panel{width:280px;flex-shrink:0;border-right:1px solid var(--border-color);background:var(--bg)}.explorer-panel.collapsed{width:40px}.explorer-panel.collapsed .panel-header{flex-direction:column;padding:.5rem .25rem;gap:.5rem}.explorer-panel.collapsed .panel-title{writing-mode:vertical-rl;text-orientation:mixed}.main-panel-container{flex:1;min-width:0}@media(max-width:768px){.ide-view{flex-direction:column}.ide-panel{width:100%!important;height:auto}.explorer-panel{max-height:250px;border-right:none;border-bottom:1px solid var(--border-color)}.explorer-panel.collapsed{max-height:40px}.explorer-panel.collapsed .panel-header{flex-direction:row}.explorer-panel.collapsed .panel-title{writing-mode:horizontal-tb}.main-panel-container{flex:1;min-height:400px}}@media(max-width:1200px){.explorer-panel{width:240px}}.onboarding-panel{display:flex;flex-direction:column;height:100%;overflow:hidden}.onboarding-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:2rem;text-align:center}.onboarding-empty-icon{color:var(--text-tertiary);margin-bottom:1rem;opacity:.5}.onboarding-empty h3{margin:0 0 .5rem;font-size:1.125rem;color:var(--text-primary)}.onboarding-empty p{margin:0 0 1.5rem;font-size:.875rem;color:var(--text-secondary);max-width:320px}.generate-btn{padding:.75rem 1.5rem;font-size:.875rem;font-weight:600;color:var(--accent-contrast);background:var(--accent);border:none;border-radius:var(--radius);cursor:pointer;transition:all .2s}.generate-btn:hover{transform:translateY(-1px)}.onboarding-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:2rem}.loading-hint{margin-top:1rem;font-size:.8125rem;color:var(--text-tertiary)}.onboarding-header{padding:1rem 1.25rem;border-bottom:1px solid var(--border-color);background:var(--surface);flex-shrink:0}.onboarding-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.onboarding-title h3{margin:0;font-size:.9375rem;color:var(--text-primary)}.step-count{font-size:.6875rem;color:var(--text-secondary)}.progress-bar{height:3px;background:var(--surface);border-radius:2px;overflow:hidden;margin-bottom:.75rem}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--info));border-radius:2px;transition:width .3s ease;box-shadow:0 0 8px color-mix(in srgb,var(--accent) 30%,transparent)}.regenerate-btn{padding:.375rem .75rem;font-size:.6875rem;font-weight:500;color:var(--text-tertiary);background:transparent;border:1px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .15s}.regenerate-btn:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 20%,transparent);color:var(--accent)}.regenerate-btn:disabled{opacity:.4;cursor:not-allowed}.onboarding-steps{flex:1;overflow-y:auto;padding:1rem 1.25rem}.step-category{margin-bottom:1.5rem}.step-category:last-child{margin-bottom:0}.category-label{font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin:0 0 .625rem;padding-bottom:.375rem;border-bottom:1px solid var(--border-color)}.step-item{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;margin-bottom:.375rem;border-radius:var(--radius);transition:background .1s}.step-item:hover{background:#ffffff05}.step-item.completed{opacity:.5}.step-item.completed .step-title{text-decoration:line-through}.step-checkbox{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;margin-top:.125rem;background:color-mix(in srgb,var(--bg) 60%,transparent);border:2px solid var(--border-color);border-radius:4px;cursor:pointer;flex-shrink:0;transition:all .15s;color:transparent}.step-checkbox:hover{border-color:var(--accent)}.step-checkbox.checked{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.step-content{flex:1;display:flex;flex-direction:column;gap:.25rem;min-width:0}.step-title{font-size:.875rem;font-weight:500;color:var(--text-primary)}.step-description{font-size:.8125rem;color:var(--text-secondary);line-height:1.4}.step-action-btn{flex-shrink:0;padding:.375rem .625rem;font-size:.6875rem;font-weight:500;color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent);border:1px solid color-mix(in srgb,var(--accent) 15%,transparent);border-radius:6px;cursor:pointer;transition:all .15s;white-space:nowrap;margin-top:.125rem}.step-action-btn:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.onboarding-complete{padding:1rem 1.25rem;text-align:center;background:color-mix(in srgb,var(--success) 6%,transparent);border-top:1px solid color-mix(in srgb,var(--success) 15%,transparent)}.onboarding-complete p{margin:0;font-size:.8125rem;font-weight:500;color:var(--success)}.assigned-path-card{background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius-lg, 12px);padding:1.25rem;display:flex;flex-direction:column;gap:.875rem;transition:border-color .15s,box-shadow .15s}.assigned-path-card:hover{border-color:color-mix(in srgb,var(--accent) 35%,transparent);box-shadow:0 4px 24px #0000002e}.apc-header{display:flex;align-items:flex-start;gap:.875rem}.apc-icon{font-size:1.625rem;flex-shrink:0;line-height:1;padding-top:.1rem}.apc-title-block{flex:1;min-width:0;display:flex;flex-direction:column;gap:.375rem}.apc-name{font-size:1rem;font-weight:700;color:var(--text-primary);line-height:1.3}.apc-meta-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.apc-status-badge{font-size:.5625rem;font-weight:800;text-transform:uppercase;letter-spacing:.09em;padding:.2rem .5rem;border-radius:4px}.status-new{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.status-progress{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--warning)}.status-ready{background:color-mix(in srgb,var(--success) 12%,transparent);color:var(--success)}.apc-source-badge{font-size:.5625rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;padding:.175rem .4rem;border-radius:4px;border:1px solid var(--border-color);color:var(--text-tertiary)}.apc-module-count{font-size:.75rem;color:var(--text-tertiary)}.apc-progress-section{display:flex;flex-direction:column;gap:.375rem}.apc-progress-item{display:flex;align-items:center;gap:.625rem}.apc-progress-label{font-size:.6875rem;color:var(--text-tertiary);width:5.5rem;flex-shrink:0}.apc-progress-track{flex:1;height:4px;background:var(--border-color);border-radius:2px;overflow:hidden}.apc-progress-fill{height:100%;border-radius:2px;transition:width .6s ease}.coverage-fill{background:var(--accent);opacity:.8}.apc-progress-pct{font-size:.6875rem;font-weight:700;color:var(--text-secondary);width:2.25rem;text-align:right;flex-shrink:0}.apc-nudge{font-size:.8125rem;color:var(--text-tertiary);line-height:1.4}.apc-nudge.urgent{color:var(--warning)}.apc-actions{display:flex;gap:.5rem;padding-top:.375rem;border-top:1px solid var(--border-color)}.apc-btn{flex:1;padding:.45rem 0;font-size:.8125rem;font-weight:600;border-radius:6px;cursor:pointer;transition:all .15s;border:1px solid;font-family:inherit}.apc-btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.apc-btn-primary:hover{opacity:.85}.apc-btn-secondary{background:transparent;color:var(--text-primary);border-color:var(--border-color)}.apc-btn-secondary:hover{border-color:var(--text-secondary);background:#ffffff0a}.apc-btn-ghost{background:transparent;color:var(--text-tertiary);border-color:var(--border-color);cursor:not-allowed;opacity:.45}.learn-dashboard{max-width:1000px;margin:0 auto;padding:2rem 1.5rem 3rem;width:100%;animation:fade-in .2s ease}.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem}.dashboard-header-left{display:flex;flex-direction:column;gap:.25rem}.dashboard-title{font-size:1.375rem;font-weight:800;letter-spacing:-.02em;color:var(--text-primary);margin:0}.dashboard-subtitle{font-size:.8125rem;color:var(--text-tertiary);margin:0}.view-toggle-btn{background:none;border:1px solid var(--border-color);border-radius:6px;color:var(--text-tertiary);font-size:.75rem;font-weight:600;padding:.375rem .75rem;cursor:pointer;transition:color .15s,border-color .15s;white-space:nowrap;font-family:inherit}.view-toggle-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}.mastery-strip{display:flex;align-items:center;gap:0;background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius-lg, 12px);padding:1rem 1.5rem;margin-bottom:2rem;flex-wrap:wrap;gap:.5rem}.mastery-strip-stat{display:flex;flex-direction:column;align-items:center;gap:.2rem;flex:1;min-width:80px}.strip-value{font-size:1.5rem;font-weight:800;letter-spacing:-.03em;color:var(--text-primary);line-height:1}.strip-label{font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-tertiary)}.mastery-strip-divider{width:1px;height:36px;background:var(--border-color);flex-shrink:0;margin:0 .25rem}.study-all-btn{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:.45rem 1rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:opacity .15s;font-family:inherit;margin-left:auto;white-space:nowrap}.study-all-btn:hover{opacity:.88}.path-shelf{display:flex;flex-direction:column;gap:1rem}.shelf-heading-row{display:flex;align-items:center;justify-content:space-between}.shelf-heading{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin:0}.shelf-admin-link{background:none;border:none;color:var(--accent);font-size:.8125rem;font-weight:600;cursor:pointer;padding:0;font-family:inherit}.shelf-admin-link:hover{text-decoration:underline}.shelf-loading{color:var(--text-tertiary);font-size:.875rem;margin:0}.shelf-error{color:var(--error, #ff3366);font-size:.8125rem;margin:0}.shelf-empty{text-align:center;padding:3rem 1.5rem;color:var(--text-tertiary);font-size:.875rem;line-height:1.8;background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius-lg, 12px)}.path-shelf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem}.admin-extras{margin-top:1.5rem;padding:.75rem 1rem;background:color-mix(in srgb,var(--accent) 6%,transparent);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:8px;font-size:.8125rem;color:var(--text-secondary)}.empty-state{text-align:center;padding:48px 24px;color:var(--text-tertiary);font-size:.875rem;line-height:1.8}.link-btn{background:none;border:none;padding:0;color:var(--accent);cursor:pointer;font-size:inherit;text-decoration:underline}.shelf-count{font-size:.75rem;color:var(--text-tertiary);background:var(--accent-dim);padding:2px 8px;border-radius:999px}.deck-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;margin-top:1rem}.deck-card{display:flex;flex-direction:column;justify-content:space-between;padding:1rem;background:var(--bg-elevated, var(--bg));border:1px solid var(--border-color);border-radius:10px;transition:border-color .15s ease,transform .15s ease}.deck-card:hover{border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.deck-card-body{margin-bottom:.875rem}.deck-card-title{font-size:.9375rem;font-weight:600;margin:0 0 .25rem;color:var(--text-primary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.deck-card-meta{margin:0;font-size:.75rem;color:var(--text-tertiary)}.deck-card-actions{display:flex;gap:.5rem}.deck-card-btn{flex:1;padding:.45rem .625rem;font-size:.8125rem;font-weight:500;border-radius:6px;cursor:pointer;transition:background .15s ease,color .15s ease}.deck-card-btn.primary{color:var(--bg);background:var(--accent);border:1px solid var(--accent)}.deck-card-btn.primary:hover:not(:disabled){background:var(--accent-hover)}.deck-card-btn.primary:disabled{opacity:.4;cursor:not-allowed}.deck-card-btn.ghost{flex:0 0 auto;color:var(--text-tertiary);background:transparent;border:1px solid var(--border-color)}.deck-card-btn.ghost:hover{color:var(--text-secondary);border-color:color-mix(in srgb,var(--text-tertiary) 50%,transparent)}.card-renderer{background:color-mix(in srgb,var(--bg) 50%,transparent);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:2rem;min-height:200px;display:flex;flex-direction:column;gap:1.5rem;transition:border-color .2s}.card-renderer:hover{border-color:#ffffff14}.card-question{font-size:1.125rem;line-height:1.6;margin:0;color:var(--text-primary)}.card-answer{padding-top:1.5rem;border-top:1px solid var(--border-color);line-height:1.6;animation:fade-in .3s ease-out}.code-block{background:var(--bg-code);border:1px solid var(--border-color);border-radius:var(--radius);padding:1rem;overflow-x:auto;font-size:.875rem}.mc-options{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.mc-option{padding:.75rem 1rem;border:1px solid var(--border-color);border-radius:var(--radius);background:color-mix(in srgb,var(--bg) 40%,transparent);color:var(--text-primary);cursor:pointer;text-align:left;transition:all .2s;font-size:.9375rem}.mc-option:hover{border-color:color-mix(in srgb,var(--accent) 20%,transparent);background:color-mix(in srgb,var(--accent) 4%,transparent)}.mc-option.selected{border-color:color-mix(in srgb,var(--accent) 30%,transparent);background:color-mix(in srgb,var(--accent) 6%,transparent);color:var(--accent)}.mc-option.correct,.mc-option.selected.correct{border-color:var(--moss, #3F8B6A);background:color-mix(in srgb,var(--moss, #3F8B6A) 12%,transparent);color:var(--moss, #3F8B6A);font-weight:500}.mc-option.incorrect,.mc-option.selected.incorrect{border-color:var(--rose, #C04848);background:color-mix(in srgb,var(--rose, #C04848) 10%,transparent);color:var(--rose, #C04848);text-decoration:line-through;text-decoration-thickness:1px}.mc-option:disabled{cursor:default}.card-image{max-width:100%;max-height:200px;object-fit:contain;border-radius:8px;margin-bottom:12px;display:block;margin-left:auto;margin-right:auto}.rating-buttons{display:flex;gap:.625rem;justify-content:center}.rating-btn{padding:.75rem 1.5rem;border:none;border-radius:var(--radius);font-weight:600;font-size:.875rem;cursor:pointer;transition:all .2s;color:var(--accent-contrast);letter-spacing:.02em}.rating-btn:hover{transform:translateY(-2px)}.rating-btn:active{transform:translateY(0)}.rating-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.rating-again{background:var(--error)}.rating-hard{background:var(--warning)}.rating-good{background:var(--success)}.rating-easy{background:var(--accent)}.review-session{max-width:700px;margin:0 auto;padding:2rem 1rem;display:flex;flex-direction:column;gap:1.5rem}.review-header{display:flex;flex-direction:column;gap:.5rem}.review-progress{text-align:center;font-size:.8125rem;color:var(--text-secondary)}.progress-bar{height:3px;background:var(--surface);border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--info));transition:width .3s ease;box-shadow:0 0 8px color-mix(in srgb,var(--accent) 30%,transparent)}.review-card-area{flex:1}.review-actions{display:flex;justify-content:center;padding:1rem 0}.btn-reveal{padding:.75rem 2.5rem;background:var(--accent);color:var(--accent-contrast);border:none;border-radius:var(--radius);font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .2s;letter-spacing:.02em}.btn-reveal:hover{transform:translateY(-1px)}.review-footer{display:flex;gap:.5rem;justify-content:center}.bloom-badge,.card-type-badge{padding:.2rem .625rem;border-radius:10px;font-size:.6875rem;background:color-mix(in srgb,var(--bg) 50%,transparent);color:var(--text-secondary);border:1px solid var(--border-color)}.bloom-remember{border-left:3px solid #00ff88}.bloom-understand{border-left:3px solid #00f5ff}.bloom-apply{border-left:3px solid #ff6b35}.bloom-analyze{border-left:3px solid #f59e0b}.bloom-evaluate{border-left:3px solid #ff3366}.bloom-create{border-left:3px solid #8b5cf6}.review-complete{max-width:500px;margin:4rem auto;text-align:center;display:flex;flex-direction:column;gap:1.5rem;align-items:center;animation:fade-in .5s ease-out}.complete-stats{display:flex;gap:2rem}.review-loading{text-align:center;padding:4rem;color:var(--text-secondary)}.lesson-phase-label{display:flex;align-items:center;justify-content:center;gap:.625rem}.phase-chip{font-size:.6875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.2rem .625rem;border-radius:10px}.learn-chip{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--info, #00f5ff)}.test-chip{background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent)}.lesson-card{background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius-lg, 12px);padding:2rem;display:flex;flex-direction:column;gap:1.25rem;animation:fade-in .25s ease-out}.lesson-card-meta{display:flex;align-items:center;gap:.5rem}.lesson-bloom-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.lesson-bloom-label{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.lesson-type-label{font-size:.6875rem;color:var(--text-tertiary);text-transform:capitalize;margin-left:auto}.lesson-question{display:flex;flex-direction:column;gap:.375rem}.lesson-question-label{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary)}.lesson-question p{font-size:1.0625rem;font-weight:500;color:var(--text-primary);line-height:1.5;margin:0}.lesson-divider{display:flex;align-items:center;gap:.75rem;color:var(--text-tertiary);font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em}.lesson-divider:before,.lesson-divider:after{content:"";flex:1;height:1px;background:var(--border-color)}.lesson-answer{color:var(--text-secondary);font-size:.9375rem;line-height:1.7}.lesson-answer p{margin:0 0 .5rem}.lesson-answer p:last-child{margin-bottom:0}.lesson-nav{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.5rem 0}.btn-lesson-prev{padding:.625rem 1.25rem;background:transparent;color:var(--text-secondary);border:1px solid var(--border-color);border-radius:var(--radius);font-size:.875rem;cursor:pointer;transition:all .15s}.btn-lesson-prev:hover:not(:disabled){color:var(--text-primary);border-color:var(--text-secondary)}.btn-lesson-prev:disabled{opacity:.3;cursor:default}.btn-lesson-next{padding:.75rem 2rem;background:var(--surface);color:var(--accent);border:1px solid var(--accent);border-radius:var(--radius);font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .15s;margin-left:auto}.btn-lesson-next:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.btn-lesson-finish{padding:.75rem 2rem;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .2s;margin-left:auto}.btn-lesson-finish:hover{transform:translateY(-1px)}.transition-icon{font-size:3rem;line-height:1}.btn-ghost{background:transparent;border:none;color:var(--text-tertiary);font-size:.875rem;cursor:pointer;padding:.375rem .75rem;border-radius:var(--radius);transition:color .15s}.btn-ghost:hover{color:var(--text-secondary)}.btn-ghost.btn-small{font-size:.75rem;padding:.25rem .5rem}:root{--react-pdf-text-layer: 1;--highlight-bg-color: rgba(180, 0, 170, 1);--highlight-selected-bg-color: rgba(0, 100, 0, 1)}@media screen and (forced-colors:active){:root{--highlight-bg-color: Highlight;--highlight-selected-bg-color: ButtonText}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translate(-100%)}.textLayer{position:absolute;text-align:initial;top:0;right:0;bottom:0;left:0;overflow:hidden;line-height:1;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;z-index:2}.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:text;margin:0;transform-origin:0 0}.textLayer span.markedContent{top:0;height:0}.textLayer .highlight{margin:-1px;padding:1px;background-color:var(--highlight-bg-color);border-radius:4px}.textLayer .highlight.appended{position:initial}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:var(--highlight-selected-bg-color)}.textLayer br::selection{background:transparent}.textLayer .endOfContent{display:block;position:absolute;top:100%;right:0;bottom:0;left:0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.textLayer.selecting .endOfContent{top:0}.hiddenCanvasElement{position:absolute;top:0;left:0;width:0;height:0;display:none}:root{--react-pdf-annotation-layer: 1;--annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color: Highlight;--input-focus-outline: 1px solid Canvas;--input-unfocused-border-color: transparent;--input-disabled-border-color: transparent;--input-hover-border-color: black;--link-outline: none}@media screen and (forced-colors:active){:root{--input-focus-border-color: CanvasText;--input-unfocused-border-color: ActiveText;--input-disabled-border-color: GrayText;--input-hover-border-color: Highlight;--link-outline: 1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:invert(100%);backdrop-filter:invert(100%)}}.annotationLayer{position:absolute;top:0;left:0;pointer-events:none;transform-origin:0 0;z-index:3}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer canvas{position:absolute;width:100%;height:100%}.annotationLayer section{position:absolute;text-align:initial;pointer-events:auto;box-sizing:border-box;margin:0;transform-origin:0 0}.annotationLayer .linkAnnotation{outline:var(--link-outline)}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .textAnnotation img{position:absolute;cursor:pointer;width:100%;height:100%;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--total-scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation :is(input,textarea)[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{background:none;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{background:none;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-image:none;background-color:transparent}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:30%;top:20%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{-webkit-appearance:none;-moz-appearance:none;appearance:none}.annotationLayer .popupTriggerArea{height:100%;width:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{position:absolute;font-size:calc(9px * var(--total-scale-factor));width:100%;min-width:calc(180px * var(--total-scale-factor));pointer-events:none}.annotationLayer .popup{position:absolute;max-width:calc(180px * var(--total-scale-factor));background-color:#ff9;box-shadow:0 calc(2px * var(--total-scale-factor)) calc(5px * var(--total-scale-factor)) #888;border-radius:calc(2px * var(--total-scale-factor));padding:calc(6px * var(--total-scale-factor));margin-left:calc(5px * var(--total-scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto}.annotationLayer .popup>*{font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{display:inline-block;margin-left:calc(5px * var(--total-scale-factor))}.annotationLayer .popupContent{border-top:1px solid rgba(51,51,51,1);margin-top:calc(2px * var(--total-scale-factor));padding-top:calc(2px * var(--total-scale-factor))}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .highlightAnnotation,.annotationLayer .underlineAnnotation,.annotationLayer .squigglyAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .lineAnnotation svg line,.annotationLayer .squareAnnotation svg rect,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .caretAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .stampAnnotation,.annotationLayer .fileAttachmentAnnotation{cursor:pointer}.annotationLayer section svg{position:absolute;width:100%;height:100%;top:0;left:0}.annotationLayer .annotationTextContent{position:absolute;width:100%;height:100%;opacity:0;color:transparent;-webkit-user-select:none;user-select:none;pointer-events:none}.annotationLayer .annotationTextContent span{width:100%;display:inline-block}.dialogue-session{max-width:700px;margin:0 auto;padding:2rem 1rem 0;display:flex;flex-direction:column;height:calc(100vh - 80px);gap:1rem}.dialogue-history{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:1rem;padding-bottom:1rem;scroll-behavior:smooth}.dialogue-message{display:flex;flex-direction:column}.dialogue-message.user{align-items:flex-end}.dialogue-message.tutor{align-items:flex-start}.dialogue-bubble{max-width:85%;border-radius:var(--radius-lg, 12px);padding:.75rem 1rem}.tutor-bubble{background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius-lg, 12px) var(--radius-lg, 12px) var(--radius-lg, 12px) 4px}.user-bubble{background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 25%,transparent);border-radius:var(--radius-lg, 12px) var(--radius-lg, 12px) 4px var(--radius-lg, 12px)}.dialogue-bubble-meta{display:flex;align-items:center;gap:.5rem;margin-bottom:.375rem}.dialogue-role-label{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}.dialogue-bubble-text p{margin:0 0 .375rem;font-size:.9375rem;line-height:1.6;color:var(--text-primary)}.dialogue-bubble-text p:last-child{margin-bottom:0}.dialogue-bubble-text br{display:block;margin:.25rem 0;content:""}.dialogue-thinking{font-size:.875rem;color:var(--text-tertiary);font-style:italic;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}.dialogue-bloom-chip{font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.125rem .4375rem;border-radius:8px;border:1px solid currentColor;opacity:.9}.dialogue-verdict-chip{font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.125rem .4375rem;border-radius:8px}.verdict-correct{background:color-mix(in srgb,var(--success) 12%,transparent);color:var(--success)}.verdict-partial{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--warning)}.verdict-incorrect{background:color-mix(in srgb,var(--error) 12%,transparent);color:var(--error)}.dialogue-input-area{border-top:1px solid var(--border-color);padding:.875rem 0 1rem;display:flex;flex-direction:column;gap:.375rem}.dialogue-input-row{display:flex;gap:.625rem;align-items:flex-end}.dialogue-textarea{flex:1;background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);color:var(--text-primary);font-size:.9375rem;line-height:1.5;padding:.625rem .875rem;resize:none;transition:border-color .15s;font-family:inherit}.dialogue-textarea:focus{outline:none;border-color:var(--accent)}.dialogue-textarea:disabled{opacity:.5;cursor:not-allowed}.dialogue-send-btn{padding:.625rem 1.25rem;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;flex-shrink:0;align-self:flex-end}.dialogue-send-btn:hover:not(:disabled){transform:translateY(-1px);opacity:.9}.dialogue-send-btn:disabled{opacity:.4;cursor:not-allowed}.dialogue-char-count{font-size:.75rem;text-align:right;padding-right:.25rem}.dialogue-error{font-size:.8125rem;color:var(--error, #ff3366);margin:0}.dialogue-complete{max-width:560px;margin:3rem auto;text-align:center;display:flex;flex-direction:column;gap:1.25rem;align-items:center;animation:fade-in .5s ease-out;padding:0 1rem 2rem}.dialogue-score-big{font-size:3.5rem;font-weight:800;line-height:1;letter-spacing:-.02em}.dialogue-card-table{width:100%;border:1px solid var(--border-color);border-radius:var(--radius-lg, 12px);overflow:hidden;text-align:left}.dialogue-card-table-header,.dialogue-card-table-row{display:grid;grid-template-columns:1fr 60px 100px;gap:.75rem;padding:.5rem .875rem;align-items:center}.dialogue-card-table-header{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);background:#ffffff05;border-bottom:1px solid var(--border-color)}.dialogue-card-table-row{font-size:.875rem;border-bottom:1px solid var(--border-color)}.dialogue-card-table-row:last-child{border-bottom:none}.dialogue-card-front{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dialogue-workspace{display:flex;flex-direction:column;height:calc(100vh - 60px);overflow:hidden}.workspace-header{display:flex;align-items:center;gap:1rem;padding:.5rem 1rem;border-bottom:1px solid var(--border-color);flex-shrink:0}.workspace-header-center{flex:1;min-width:0;display:flex;flex-direction:column;gap:.3rem}.workspace-path-name{font-size:.75rem;color:var(--text-secondary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-collapse-btn{background:none;border:1px solid var(--border-color);border-radius:6px;color:var(--text-tertiary);font-size:.75rem;padding:.25rem .5rem;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:color .15s,border-color .15s}.workspace-collapse-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}.workspace-body{display:flex;flex:1;overflow:hidden}.workspace-sidebar{width:220px;flex-shrink:0;border-right:1px solid var(--border-color);overflow-y:auto;padding:.75rem 0;transition:width .2s ease,opacity .2s ease}.workspace-sidebar.collapsed{width:0;opacity:0;overflow:hidden;padding:0}.sidebar-title{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);padding:0 .875rem .5rem}.sidebar-module{display:flex;align-items:flex-start;gap:.5rem;padding:.35rem .875rem;font-size:.8125rem;color:var(--text-secondary);border-radius:6px;margin:0 .25rem;cursor:default;line-height:1.4}.sidebar-module.active{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.sidebar-module-idx{font-size:.6875rem;font-weight:700;color:var(--text-tertiary);min-width:1.25rem;padding-top:.1rem;flex-shrink:0}.sidebar-module.active .sidebar-module-idx{color:var(--accent);opacity:.7}.source-pane{width:35%;flex-shrink:0;border-right:1px solid var(--border-color);display:flex;flex-direction:column;overflow:hidden}.source-pane-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .875rem;border-bottom:1px solid var(--border-color);flex-shrink:0}.source-pane-label{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}.source-pane-controls{display:flex;align-items:center;gap:.25rem}.source-view-toggle{font-size:.6875rem;padding:.2rem .5rem;border:1px solid var(--border-color);border-radius:6px;background:transparent;color:var(--text-tertiary);cursor:pointer}.source-view-toggle.active{background:var(--accent);border-color:var(--accent);color:#000;font-weight:600}.source-view-pdf-btn{font-size:.75rem;padding:.2rem .5rem;border:1px solid var(--border-color);border-radius:6px;background:transparent;color:var(--text-tertiary);text-decoration:none;cursor:pointer;opacity:.7;transition:opacity .15s}.source-view-pdf-btn:hover{opacity:1;color:var(--accent);border-color:var(--accent)}.pdf-viewer-container{flex:1;overflow-y:auto;display:flex;flex-direction:column;align-items:center;background:var(--bg);padding:.5rem}.pdf-page-indicator{width:100%;font-size:.6875rem;color:var(--text-tertiary);padding:.25rem .5rem;margin-bottom:.25rem}.pdf-page-note{color:var(--accent);margin-left:.25rem}.pdf-loading,.pdf-error{padding:2rem;color:var(--text-tertiary);font-size:.875rem;text-align:center}.pdf-highlight{background:color-mix(in srgb,var(--success) 35%,transparent);border-radius:2px}.react-pdf__Page{width:100%!important}.react-pdf__Page canvas{width:100%!important;height:auto!important}.source-pane-chunks{flex:1;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.75rem}.source-chunk{padding:.625rem .75rem;background:var(--surface);border:1px solid var(--border-color);border-radius:8px}.source-chunk-primary{border-color:var(--accent);border-left-width:3px}.source-chunk-meta{display:flex;align-items:center;gap:.5rem;margin-bottom:.375rem;flex-wrap:wrap}.source-chunk-anchor{font-size:.6875rem;font-weight:700;color:var(--accent);letter-spacing:.03em}.source-chunk-chapter{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary)}.source-chunk-page{font-size:.6875rem;color:var(--text-tertiary);margin-left:auto}.source-chunk-text{font-size:.875rem;line-height:1.6;color:var(--text-secondary);margin:0;white-space:pre-wrap}.source-pane-loading,.source-pane-empty{width:35%;flex-shrink:0;border-right:1px solid var(--border-color);padding:2rem 1rem;text-align:center;font-size:.875rem;color:var(--text-tertiary);display:flex;align-items:center;justify-content:center}.workspace-dialogue{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.workspace-dialogue .dialogue-history{flex:1;overflow-y:auto;padding:1rem}.workspace-dialogue .dialogue-input-area{padding:.75rem 1rem 1rem;flex-shrink:0}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.login-card{background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:40px 36px;width:100%;max-width:400px;box-shadow:var(--shadow-md)}.login-logo{display:flex;align-items:center;gap:12px;justify-content:center;margin-bottom:32px}.login-logo-icon{width:56px;height:56px;display:block;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.login-logo-text{font-size:18px;font-weight:600;color:var(--text-primary)}.login-tabs{display:flex;gap:0;margin-bottom:28px;background:var(--elevated);border-radius:var(--radius);padding:4px}.login-tab{flex:1;padding:8px 12px;background:none;border:none;border-radius:calc(var(--radius) - 2px);color:var(--text-secondary);font-size:14px;cursor:pointer;transition:background .15s,color .15s}.login-tab:hover{color:var(--text-primary)}.login-tab.active{background:var(--surface);color:var(--text-primary);font-weight:500;box-shadow:0 1px 4px #0000004d}.login-form{display:flex;flex-direction:column;gap:18px}.btn-primary{background:var(--accent);color:var(--accent-contrast);border:none;border-radius:var(--radius);padding:11px 20px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s;margin-top:4px}.setup-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.setup-card{background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:40px 36px;width:100%;max-width:560px;box-shadow:var(--shadow-md)}.setup-logo{display:flex;align-items:center;gap:12px;justify-content:center;margin-bottom:32px}.setup-logo-icon{width:56px;height:56px;display:block;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.setup-logo-text{font-size:18px;font-weight:600;color:var(--text-primary)}.setup-stepper{display:flex;align-items:center;justify-content:center;margin-bottom:36px;gap:0}.setup-step-item{display:flex;align-items:center;gap:8px}.setup-step-circle{width:32px;height:32px;border-radius:50%;border:2px solid var(--border-color);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:var(--text-tertiary);background:var(--elevated);flex-shrink:0;transition:all .2s}.setup-step-circle.active{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.setup-step-circle.done{border-color:var(--success);color:var(--success);background:color-mix(in srgb,var(--success) 10%,transparent)}.setup-step-label{font-size:12px;color:var(--text-tertiary);white-space:nowrap}.setup-step-label.active{color:var(--text-primary);font-weight:500}.setup-step-line{width:32px;height:2px;background:var(--border-color);margin:0 8px;flex-shrink:0}.setup-step-line.done{background:var(--success)}.setup-form{display:flex;flex-direction:column;gap:18px}.setup-section-title{font-size:18px;font-weight:600;color:var(--text-primary);margin:0}.setup-hint{font-size:13px;color:var(--text-secondary);margin:0;line-height:1.5}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:13px;font-weight:500;color:var(--text-secondary)}.form-group .optional{color:var(--text-tertiary);font-weight:400}.form-group input{background:var(--elevated);border:1px solid var(--border-color);border-radius:var(--radius);padding:10px 12px;color:var(--text-primary);font-size:14px;transition:border-color .15s;outline:none}.form-group input::placeholder{color:var(--text-tertiary)}.form-group input:focus{border-color:var(--accent)}.form-error{color:var(--error);font-size:13px;padding:8px 12px;background:color-mix(in srgb,var(--error) 8%,transparent);border:1px solid color-mix(in srgb,var(--error) 20%,transparent);border-radius:var(--radius-sm)}.btn-primary{background:var(--accent);color:var(--accent-contrast);border:none;border-radius:var(--radius);padding:11px 20px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s}.btn-primary:hover:not(:disabled){opacity:.88}a.btn-primary,a.btn-primary:hover,a.btn-primary:visited{color:var(--accent-contrast)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--border-color);border-radius:var(--radius);padding:11px 20px;font-size:14px;font-weight:500;cursor:pointer;transition:background .15s,color .15s}.btn-ghost:hover:not(:disabled){background:var(--elevated);color:var(--text-primary)}.btn-ghost:disabled{opacity:.5;cursor:not-allowed}.btn-danger{background:var(--error);color:#fff;border:none;border-radius:var(--radius);padding:11px 20px;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s}.btn-danger:hover:not(:disabled){opacity:.88}.btn-danger:disabled{opacity:.5;cursor:not-allowed}.source-card{background:var(--elevated);border:1px solid var(--border-color);border-radius:var(--radius);overflow:hidden;transition:border-color .15s}.source-card:hover{border-color:var(--border-hover)}.source-card-header{display:flex;align-items:center;justify-content:space-between;padding:16px;gap:12px}.source-card-title{display:flex;align-items:center;gap:12px}.source-name{font-size:14px;font-weight:500;color:var(--text-primary)}.source-desc{font-size:12px;color:var(--text-tertiary);margin-top:2px}.source-card-fields{padding:16px;display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--border-color);margin-top:0}.btn-test{background:none;border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:12px;padding:6px 12px;cursor:pointer;white-space:nowrap;transition:border-color .15s,color .15s;flex-shrink:0}.btn-test:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-test:disabled{opacity:.5;cursor:not-allowed}.test-result{font-size:12px;padding:6px 10px;border-radius:var(--radius-sm)}.test-result.ok{color:var(--success);background:color-mix(in srgb,var(--success) 8%,transparent);border:1px solid color-mix(in srgb,var(--success) 20%,transparent)}.test-result.fail{color:var(--error);background:color-mix(in srgb,var(--error) 8%,transparent);border:1px solid color-mix(in srgb,var(--error) 20%,transparent)}.toggle-label{cursor:pointer}.toggle-switch{width:40px;height:22px;background:var(--elevated);border:1px solid var(--border-color);border-radius:11px;position:relative;cursor:pointer;transition:background .2s,border-color .2s;flex-shrink:0}.toggle-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--text-secondary);border-radius:50%;transition:transform .2s,background .2s}.setup-complete{display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center}.setup-complete-icon{width:56px;height:56px;border-radius:50%;background:color-mix(in srgb,var(--success) 12%,transparent);border:2px solid var(--success);color:var(--success);font-size:24px;display:flex;align-items:center;justify-content:center}.setup-complete h2{font-size:22px;font-weight:700;color:var(--text-primary);margin:0}.setup-summary{width:100%;background:var(--elevated);border:1px solid var(--border-color);border-radius:var(--radius);overflow:hidden}.summary-item{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-bottom:1px solid var(--border-color)}.summary-item:last-child{border-bottom:none}.summary-label{font-size:13px;color:var(--text-secondary)}.summary-value{font-size:13px;font-weight:500;color:var(--text-primary)}.summary-value.success{color:var(--success)}.summary-value.accent{color:var(--accent)}.admin-section{max-width:1100px;width:100%;margin:0 auto}.admin-section-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px;gap:16px}.admin-section-title{font-size:20px;font-weight:700;color:var(--text-primary);margin:0 0 4px}.admin-section-desc{font-size:13px;color:var(--text-secondary);margin:0}.admin-error{color:var(--error);font-size:13px;padding:10px 14px;background:color-mix(in srgb,var(--error) 8%,transparent);border:1px solid color-mix(in srgb,var(--error) 20%,transparent);border-radius:var(--radius-sm);margin-bottom:16px}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);padding:8px 12px;border-bottom:1px solid var(--border-color)}.admin-table td{padding:12px;border-bottom:1px solid var(--border-color);color:var(--text-primary);vertical-align:middle}.admin-table tr:hover td{background:var(--elevated)}.admin-table tr:last-child td{border-bottom:none}.doc-filename,.user-username{font-weight:500;color:var(--text-primary)}.split-panel{display:flex;gap:0;border:1px solid var(--border-color);border-radius:var(--radius);overflow:hidden;min-height:400px}.split-panel-left{width:260px;flex-shrink:0;border-right:1px solid var(--border-color);overflow-y:auto;background:var(--surface)}.split-panel-right{flex:1;overflow-y:auto;padding:20px;background:var(--bg)}.admin-list-item{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;border-bottom:1px solid var(--border-color);transition:background .12s}.admin-list-item:hover{background:var(--elevated)}.admin-list-item.active{background:var(--accent-dim)}.admin-list-item:last-child{border-bottom:none}.admin-list-item-icon{font-size:18px;width:28px;text-align:center;flex-shrink:0}.admin-list-item-info{flex:1;min-width:0}.admin-list-item-name{font-size:13px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-list-item-meta{display:flex;align-items:center;gap:8px;margin-top:3px;font-size:11px;color:var(--text-tertiary)}.admin-detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.admin-detail-header h3{font-size:16px;font-weight:600;color:var(--text-primary);margin:0}.admin-detail-section{margin-top:24px;padding-top:20px;border-top:1px solid var(--border-color)}.admin-detail-section-header{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-bottom:12px}.admin-form-row{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.admin-form-row label{font-size:12px;font-weight:500;color:var(--text-secondary)}.admin-form-row input,.admin-form-row select,.admin-form-row textarea{background:var(--elevated);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:8px 10px;color:var(--text-primary);font-size:13px;outline:none;transition:border-color .15s}.admin-form-row input::placeholder{color:var(--text-tertiary)}.admin-form-row input:focus,.admin-form-row select:focus{border-color:var(--accent)}.admin-form-row select{cursor:pointer}.admin-form-row-group{display:flex;gap:12px;flex-wrap:wrap}.admin-form-actions{display:flex;gap:8px;justify-content:flex-end}.admin-inline-form{background:var(--elevated);border:1px solid var(--border-color);border-radius:var(--radius);padding:16px;margin-bottom:16px}.btn-sm{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:var(--radius-sm);font-size:12px;font-weight:500;cursor:pointer;border:none;transition:opacity .15s,background .15s;white-space:nowrap}.btn-sm:disabled{opacity:.5;cursor:not-allowed}.btn-sm.btn-primary{background:var(--accent);color:var(--accent-contrast)}.btn-sm.btn-primary:hover:not(:disabled){opacity:.88}.btn-sm.btn-ghost{background:none;border:1px solid var(--border-color);color:var(--text-secondary)}.btn-sm.btn-ghost:hover:not(:disabled){border-color:var(--border-hover);color:var(--text-primary)}.btn-sm.btn-danger{background:color-mix(in srgb,var(--error) 10%,transparent);border:1px solid color-mix(in srgb,var(--error) 20%,transparent);color:var(--error)}.btn-sm.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--error) 18%,transparent)}.action-btn-group{display:flex;align-items:center;gap:4px}.action-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--border-color);background:none;color:var(--text-secondary);cursor:pointer;font-size:13px;transition:background .12s,color .12s}.action-btn:hover{background:var(--elevated);color:var(--text-primary)}.action-btn.action-btn-danger{color:var(--error);border-color:color-mix(in srgb,var(--error) 20%,transparent)}.action-btn.action-btn-danger:hover{background:color-mix(in srgb,var(--error) 10%,transparent)}.toggle-switch{width:40px;height:22px;background:var(--elevated);border:1px solid var(--border-color);border-radius:11px;position:relative;cursor:pointer;transition:background .2s,border-color .2s;flex-shrink:0;outline:none}.toggle-switch:focus-visible{box-shadow:0 0 0 2px var(--accent)}.toggle-switch.on{background:var(--accent);border-color:var(--accent)}.toggle-knob{position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--text-secondary);border-radius:50%;transition:transform .2s,background .2s;pointer-events:none}.toggle-switch.on .toggle-knob{transform:translate(18px);background:var(--accent-contrast)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:100px;font-size:11px;font-weight:500;background:var(--elevated);color:var(--text-secondary);border:1px solid var(--border-color)}.badge-success{background:color-mix(in srgb,var(--success) 10%,transparent);color:var(--success);border-color:color-mix(in srgb,var(--success) 25%,transparent)}.badge-error{background:color-mix(in srgb,var(--error) 10%,transparent);color:var(--error);border-color:color-mix(in srgb,var(--error) 25%,transparent)}.badge-warning{background:color-mix(in srgb,var(--warning) 10%,transparent);color:var(--warning);border-color:color-mix(in srgb,var(--warning) 25%,transparent)}.badge-info{background:color-mix(in srgb,var(--info) 10%,transparent);color:var(--info);border-color:color-mix(in srgb,var(--info) 25%,transparent)}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-left:6px;vertical-align:middle}.status-dot.success{background:var(--success);box-shadow:0 0 4px var(--success)}.status-dot.error{background:var(--error)}.sources-list{display:flex;flex-direction:column;gap:12px}.source-config-card{background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);overflow:hidden;transition:border-color .15s}.source-config-header{display:flex;align-items:center;justify-content:space-between;padding:16px;gap:12px}.source-config-info{flex:1}.source-config-toggle{display:flex;align-items:center;gap:12px}.source-config-name{font-size:14px;font-weight:500;color:var(--text-primary);display:flex;align-items:center}.source-config-desc{font-size:12px;color:var(--text-tertiary);margin-top:2px}.source-config-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.source-config-fields{padding:14px 16px 16px;border-top:1px solid var(--border-color)}.test-result-inline{font-size:12px;padding:6px 10px;border-radius:var(--radius-sm);margin-top:8px}.test-result-inline.ok{color:var(--success);background:color-mix(in srgb,var(--success) 8%,transparent);border:1px solid color-mix(in srgb,var(--success) 20%,transparent)}.test-result-inline.fail{color:var(--error);background:color-mix(in srgb,var(--error) 8%,transparent);border:1px solid color-mix(in srgb,var(--error) 20%,transparent)}.pip-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:color-mix(in srgb,var(--warning) 10%,transparent);border-top:1px solid color-mix(in srgb,var(--warning) 30%,transparent)}.pip-banner-text{font-size:13px;color:var(--warning)}.dep-ok{padding:6px 16px;font-size:12px;color:var(--success);border-top:1px solid color-mix(in srgb,var(--success) 20%,transparent);background:color-mix(in srgb,var(--success) 6%,transparent)}.pip-output{margin:0;padding:10px 16px;font-size:11px;font-family:monospace;background:var(--bg-secondary, #1a1d27);color:var(--text-secondary);white-space:pre-wrap;word-break:break-all;max-height:160px;overflow-y:auto;border-top:1px solid var(--border-color)}.repos-list{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.repos-empty{font-size:12px;color:var(--text-tertiary);margin:0 0 4px}.repo-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-sm)}.repo-info{display:flex;flex-direction:column;gap:2px;min-width:0}.repo-name{font-size:13px;font-weight:500;color:var(--text-primary)}.repo-path{font-size:11px;color:var(--text-tertiary);font-family:monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repo-add-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.repo-add-row input{flex:1;min-width:140px}.btn-danger{color:var(--error, #f87171)}.btn-danger:hover{background:color-mix(in srgb,var(--error) 10%,transparent)}.module-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--elevated);border:1px solid var(--border-color);margin-bottom:6px}.module-index{font-size:11px;font-weight:600;color:var(--text-tertiary);width:18px;text-align:center;flex-shrink:0}.module-info{flex:1;display:flex;align-items:center;gap:8px;min-width:0}.module-name{font-size:13px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.module-meta{font-size:11px;color:var(--text-tertiary);white-space:nowrap}.group-color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.group-member-row{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:var(--radius-sm);background:var(--elevated);border:1px solid var(--border-color);margin-bottom:6px}.group-member-info{display:flex;align-items:center;gap:8px}.group-member-name{font-size:13px;color:var(--text-primary)}.admin-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.admin-modal{background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;width:100%;max-width:420px;box-shadow:var(--shadow-md)}.admin-modal h3{font-size:16px;font-weight:600;color:var(--text-primary);margin:0 0 12px}.admin-modal p{font-size:13px;color:var(--text-secondary);margin:0 0 16px;line-height:1.5}.admin-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.admin-modal-header h3{margin:0}.modal-close{background:none;border:none;color:var(--text-tertiary);cursor:pointer;padding:4px;display:flex;align-items:center}.modal-close:hover{color:var(--text-primary)}.admin-modal-actions{display:flex;gap:8px;justify-content:flex-end}.empty-admin{padding:40px 20px;text-align:center;color:var(--text-tertiary);font-size:13px;line-height:1.7}.key-row-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(440px,1fr));gap:14px}.key-row-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:4px}.key-row-head h3{font-size:15px;font-weight:600;margin:0;color:var(--text-primary)}.key-row-desc{font-size:12.5px;line-height:1.55;color:var(--text-secondary);margin:0 0 10px}.key-row-input{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.key-row-input .input{flex:1 1 240px;min-width:200px}.key-row-input .btn{flex:0 0 auto}.prov-status.is-user{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.prov-status.is-tenant{background:var(--amber-soft);color:var(--amber)}.prov-status.is-env{background:color-mix(in srgb,var(--text-tertiary) 12%,transparent);color:var(--text-secondary)}.tenant-banner{margin-top:10px;display:inline-flex;align-items:center;gap:8px;padding:5px 10px;border-radius:999px;background:color-mix(in srgb,var(--accent) 8%,transparent);font-size:12px;color:var(--text-secondary)}.tenant-banner strong{color:var(--text-primary)}.tenant-role-pill{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;padding:1px 7px;border-radius:4px;font-weight:700}.tenant-role-pill.role-owner{background:var(--violet-soft);color:var(--violet)}.tenant-role-pill.role-admin{background:var(--accent-soft);color:var(--accent)}.tenant-role-pill.role-member{background:var(--moss-soft);color:var(--moss)}.tenant-role-pill.role-viewer{background:var(--amber-soft);color:var(--amber)}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:0}.info-grid div{display:flex;flex-direction:column;gap:4px}.info-grid dt{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}.info-grid dd{font-size:14px;color:var(--text-primary);margin:0}.checklist{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.checklist li{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-primary)}.checklist svg{color:var(--moss);flex-shrink:0}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem;margin-bottom:1.75rem}.theme-option{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.875rem;background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);cursor:pointer;transition:border-color .15s,transform .15s}.theme-option:hover{border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.theme-option:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-option.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--surface))}.theme-preview{display:flex;gap:.25rem}.theme-swatch{width:22px;height:22px;border-radius:6px;border:1px solid color-mix(in srgb,var(--text-tertiary) 25%,transparent)}.theme-name{font-size:.8125rem;color:var(--text-primary);font-weight:500}.custom-colors{border:1px solid var(--border-color);border-radius:var(--radius);padding:1rem 1.25rem;background:var(--surface)}.custom-colors-title{font-size:.875rem;font-weight:600;margin-bottom:.75rem;color:var(--text-primary);padding:0}.color-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;padding:.45rem 0}.color-input{width:30px;height:30px;border:1px solid var(--border-color);border-radius:6px;cursor:pointer;background:transparent;padding:2px}.color-input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.color-label{font-size:.875rem;color:var(--text-secondary);cursor:pointer}.color-hex{font-family:JetBrains Mono,monospace;font-size:.75rem;color:var(--text-tertiary)}.btn-reset-colors{margin-top:.625rem;padding:.4rem .75rem;font-size:.8125rem;background:transparent;border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);cursor:pointer}.btn-reset-colors:hover{color:var(--text-primary);border-color:color-mix(in srgb,var(--text-tertiary) 50%,transparent)}.btn-reset-colors:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.admin-page{display:flex;height:100vh;background:var(--bg);overflow:hidden}.admin-sidebar{width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border-color);display:flex;flex-direction:column;padding:20px 0}.admin-sidebar-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);padding:0 16px 12px}.admin-nav{display:flex;flex-direction:column;gap:2px;padding:0 8px}.admin-nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--radius-sm);border:none;background:none;color:var(--text-secondary);font-size:13px;cursor:pointer;text-align:left;transition:background .15s,color .15s;width:100%}.admin-nav-item:hover{background:var(--elevated);color:var(--text-primary)}.admin-nav-item.active{background:var(--accent-dim);color:var(--accent);font-weight:500}.admin-nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.admin-nav-divider{height:1px;background:var(--border-color);margin:8px 4px}.admin-stack{display:flex;flex-direction:column;gap:1.75rem}.admin-section{background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);padding:1.25rem 1.5rem}.admin-section-header{margin-bottom:1rem}.admin-section-header--with-status{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.admin-section-title{font-size:1.0625rem;font-weight:600;margin:0 0 .25rem;color:var(--text-primary)}.admin-subsection-title{font-size:.9375rem;font-weight:600;margin:0 0 .4rem;color:var(--text-primary)}.admin-section-desc{font-size:.875rem;color:var(--text-secondary);margin:0 0 .75rem;line-height:1.5}.admin-save-message{font-size:.8125rem;color:var(--moss, #3F8B6A);background:color-mix(in srgb,var(--moss, #3F8B6A) 10%,transparent);padding:.25rem .625rem;border-radius:999px;white-space:nowrap}.admin-loading,.admin-error{padding:1.5rem;border:1px solid var(--border-color);border-radius:var(--radius);background:var(--surface);color:var(--text-secondary)}.admin-error{border-color:color-mix(in srgb,var(--rose, #C04848) 30%,var(--border-color));color:var(--text-primary)}.admin-main{flex:1;overflow-y:auto;padding:32px clamp(24px,4vw,64px);display:flex;flex-direction:column}:root{--bg: #FBFAF6;--surface: #FFFFFF;--elevated: #F4F1EA;--hairline: rgba(31, 36, 51, .07);--hairline-2: rgba(31, 36, 51, .13);--ink: #1F2433;--ink-2: #4B5163;--ink-3: #7A8092;--ink-on-accent: #FFFFFF;--accent: #4D6DC9;--accent-soft: #EAEEF9;--accent-hover: #3B58AD;--moss: #3F8B6A;--moss-soft: #E5F1EB;--amber: #B5872A;--amber-soft: #F6EFD9;--rose: #B4506A;--rose-soft: #F8E5EB;--violet: #8657B4;--violet-soft: #EFE6F5;--shadow-sm: 0 1px 2px rgba(31,36,51,.04), 0 1px 1px rgba(31,36,51,.03);--shadow-md: 0 6px 18px rgba(31,36,51,.06), 0 2px 4px rgba(31,36,51,.04);--shadow-lg: 0 14px 40px rgba(31,36,51,.09);--code-bg: #F4F1EA;--code-inline-bg: rgba(31, 36, 51, .07);--scrollbar-thumb: rgba(31, 36, 51, .16);--scrollbar-thumb-hover: rgba(31, 36, 51, .32);--r-xs: 6px;--r-sm: 10px;--r: 14px;--r-lg: 20px;--r-xl: 28px;--radius-sm: var(--r-sm);--radius: var(--r);--radius-lg: var(--r-lg);--radius-xl: var(--r-xl);--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 20px;--s6: 24px;--s7: 32px;--s8: 40px;--s9: 48px;--tx-fast: .14s cubic-bezier(.2,.7,.3,1);--tx: .22s cubic-bezier(.2,.7,.3,1);--transition-fast: var(--tx-fast);--transition-normal: var(--tx);--border-color: var(--hairline);--border-hover: var(--hairline-2);--text-primary: var(--ink);--text-secondary: var(--ink-2);--text-tertiary: var(--ink-3);--accent-dim: var(--accent-soft);--accent-contrast: var(--ink-on-accent);--success: var(--moss);--error: var(--rose);--info: var(--accent);--warning: var(--amber);--bg-primary: var(--bg);--bg-secondary: var(--surface);--bg-tertiary: var(--elevated);--bg-hover: var(--hairline-2);--primary-color: var(--accent);--accent-primary: var(--accent);--success-color: var(--moss);--error-color: var(--rose)}@media(prefers-contrast:more){:root{--hairline: rgba(31, 36, 51, .18);--ink-2: #36394A;--ink-3: #5A6075}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,SF Pro Text,system-ui,sans-serif;font-size:16.5px;line-height:1.65;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11","ss01"}h1,h2,h3,h4,h5,h6{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:600;line-height:1.3;color:var(--text-primary);letter-spacing:-.01em}h1{font-size:1.75rem;font-weight:700}h2{font-size:1.375rem}h3{font-size:1.125rem}code,pre,.monospace{font-family:JetBrains Mono,Fira Code,Consolas,Monaco,monospace}code{font-size:.875em;background:var(--code-inline-bg);padding:2px 6px;border-radius:var(--radius-sm)}pre{background:var(--code-bg);border:1px solid var(--border-color);border-radius:var(--radius);padding:16px;overflow-x:auto;font-size:.875rem;line-height:1.5}pre code{background:none;padding:0}a{color:var(--accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-hover)}button{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit}input,textarea,select{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px;color:var(--text-primary);background:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);padding:10px 14px;outline:none;transition:border-color var(--transition-fast)}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}input::placeholder,textarea::placeholder{color:var(--text-tertiary)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 18px;border-radius:999px;border:1px solid transparent;font:inherit;font-weight:600;font-size:14px;cursor:pointer;transition:background var(--tx-fast, .14s ease),color var(--tx-fast, .14s ease),transform var(--tx-fast, .14s ease),box-shadow var(--tx-fast, .14s ease);white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:active,.btn.is-active{transform:translateY(1px);filter:brightness(.96)}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none;filter:none}.btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.btn-sm{height:36px;padding:0 14px;font-size:13px}.btn-lg{height:52px;padding:0 24px;font-size:15px}.btn-block{width:100%}.btn-primary{background:var(--accent);color:var(--ink-on-accent, #fff);box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface);color:var(--ink, var(--text-primary));border-color:var(--hairline-2, var(--border-color))}.btn-secondary:hover:not(:disabled){background:var(--elevated)}.btn-ghost{background:transparent;color:var(--ink-2, var(--text-secondary))}.btn-ghost:hover:not(:disabled){background:var(--elevated);color:var(--ink, var(--text-primary))}.btn-danger{background:var(--rose);color:var(--ink-on-accent, #fff);box-shadow:var(--shadow-sm)}.btn-danger:hover:not(:disabled){filter:brightness(.94)}.btn-link{background:transparent;color:var(--accent);height:auto;padding:8px 4px;border-radius:6px;text-decoration:underline;text-underline-offset:3px;border:none}.btn-link:hover{color:var(--accent-hover)}.btn-icon{width:40px;height:40px;border-radius:10px;border:1px solid var(--hairline);background:var(--surface);color:var(--ink-2, var(--text-secondary));display:grid;place-items:center;cursor:pointer;transition:background var(--tx-fast, .14s ease),color var(--tx-fast, .14s ease)}.btn-icon:hover{background:var(--elevated);color:var(--ink, var(--text-primary))}.btn-icon:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.btn-send{width:44px;height:44px;padding:0;border-radius:12px}.btn-toggle[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);border-color:transparent}.btn.is-loading{position:relative}.btn-spinner{width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:btn-spin .8s linear infinite;display:inline-block}@keyframes btn-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.btn-spinner{animation-duration:1.6s}}.seg{display:inline-flex;background:var(--elevated);border-radius:999px;padding:4px;gap:2px}.seg-btn{height:36px;padding:0 16px;border:0;background:transparent;color:var(--ink-2, var(--text-secondary));font:inherit;font-size:13px;font-weight:500;border-radius:999px;cursor:pointer;min-width:76px;transition:background var(--tx-fast, .14s ease),color var(--tx-fast, .14s ease)}.seg-btn:hover{color:var(--ink, var(--text-primary))}.seg-btn.is-active,.seg-btn[aria-pressed=true]{background:var(--surface);color:var(--ink, var(--text-primary));box-shadow:var(--shadow-sm)}.seg-btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.field{display:flex;flex-direction:column;gap:6px;flex:1 1 280px;min-width:0}.field-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.field-label{font-weight:500;font-size:14px;color:var(--ink, var(--text-primary))}.field-req{color:var(--rose);font-weight:600;margin-left:2px}.field-counter{font-family:var(--font-mono, ui-monospace, monospace);font-size:11.5px;color:var(--ink-3, var(--text-tertiary));font-variant-numeric:tabular-nums}.field-hint{margin:0;font-size:12.5px;color:var(--ink-3, var(--text-tertiary));line-height:1.5}.field-msg{display:flex;align-items:flex-start;gap:6px;margin:0;font-size:12.5px;font-weight:500;line-height:1.5}.field-msg svg{flex:0 0 auto;margin-top:2px}.field-msg-error{color:var(--rose)}.field-msg-success{color:var(--moss)}.field-msg-warning{color:var(--amber)}.input{width:100%;height:44px;padding:0 14px;font:inherit;font-size:14.5px;color:var(--ink, var(--text-primary));background:var(--surface);border:1.5px solid var(--hairline-2, var(--border-color));border-radius:var(--r-sm, 8px);transition:border-color var(--tx-fast, .14s ease),box-shadow var(--tx-fast, .14s ease),background var(--tx-fast, .14s ease);-webkit-appearance:none}.input::placeholder{color:var(--ink-3, var(--text-tertiary))}.input:hover{border-color:var(--ink-3, var(--text-tertiary))}.input:focus,.input:focus-visible,.input.is-focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input:disabled{background:var(--elevated);color:var(--ink-3, var(--text-tertiary));cursor:not-allowed;border-style:dashed}.input[readonly]{background:var(--elevated);border-color:transparent}.input.is-error,.input[aria-invalid=true]{border-color:var(--rose);box-shadow:0 0 0 3px var(--rose-soft)}.input.is-success{border-color:var(--moss);box-shadow:0 0 0 3px var(--moss-soft)}.input.is-warning{border-color:var(--amber);box-shadow:0 0 0 3px var(--amber-soft)}.textarea,textarea.input{height:auto;padding:12px 14px;line-height:1.55;min-height:96px;resize:vertical;font-family:var(--font-sans, inherit)}.input-affix{position:relative;display:flex;align-items:center;width:100%}.input-affix .input{padding-left:40px;padding-right:44px}.input-affix .input.has-suffix{padding-left:14px;padding-right:56px}.affix-pre,.affix-post{position:absolute;display:grid;place-items:center;height:32px;color:var(--ink-3, var(--text-tertiary));pointer-events:none}.affix-pre{left:8px;width:28px}.affix-post{right:8px;min-width:32px;padding:0 8px;font-size:12px;font-weight:500;color:var(--ink-2, var(--text-secondary));font-family:var(--font-mono, ui-monospace, monospace)}.affix-post.is-button{pointer-events:auto;cursor:pointer;border:0;background:transparent;border-radius:8px;color:var(--ink-2, var(--text-secondary))}.affix-post.is-button:hover{background:var(--elevated);color:var(--ink, var(--text-primary))}.affix-post.is-button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.select{position:relative;width:100%}.select select{width:100%;height:44px;padding:0 40px 0 14px;font:inherit;font-size:14.5px;color:var(--ink, var(--text-primary));background:var(--surface);border:1.5px solid var(--hairline-2, var(--border-color));border-radius:var(--r-sm, 8px);-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer}.select select:hover{border-color:var(--ink-3, var(--text-tertiary))}.select select:focus,.select select:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.select-caret{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--ink-3, var(--text-tertiary));display:grid;place-items:center}.dropzone{display:flex;align-items:center;gap:14px;padding:18px 20px;border:1.5px dashed var(--hairline-2, var(--border-color));border-radius:var(--r, 12px);background:var(--surface);color:var(--ink-2, var(--text-secondary));cursor:pointer;transition:border-color var(--tx-fast, .14s ease),background var(--tx-fast, .14s ease);min-height:72px}.dropzone:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.dropzone svg{flex:0 0 auto;color:var(--accent)}.dropzone strong{display:block;font-weight:600;color:var(--ink, var(--text-primary));font-size:14px}.dropzone span{font-size:12.5px}.dropzone u{color:var(--accent);text-underline-offset:2px}.dropzone input[type=file]{display:none}.dropzone:focus-within{outline:3px solid var(--accent);outline-offset:2px}.check-group,.radio-group{display:flex;flex-direction:column;gap:4px}.check-grouplabel{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3, var(--text-tertiary));margin-bottom:6px}.check-row{border-radius:var(--r-sm, 8px)}.check-control{display:grid;grid-template-columns:22px 1fr;gap:12px;padding:10px 12px;border-radius:var(--r-sm, 8px);cursor:pointer;align-items:flex-start;min-height:44px;transition:background var(--tx-fast, .14s ease)}.check-control:hover{background:var(--elevated)}.check-row.is-disabled .check-control{cursor:not-allowed;opacity:.55}.check-row.is-disabled .check-control:hover{background:transparent}.check-native{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.check-box{width:22px;height:22px;border:2px solid var(--ink-3, var(--text-tertiary));border-radius:6px;background:var(--surface);display:grid;place-items:center;color:var(--ink-on-accent, #fff);margin-top:1px;flex:0 0 auto;transition:background var(--tx-fast, .14s ease),border-color var(--tx-fast, .14s ease)}.check-box svg{width:14px;height:14px;stroke-width:2.4}.check-control:hover .check-box{border-color:var(--ink, var(--text-primary))}.check-native:checked~.check-box,.check-box.is-indeterminate{background:var(--accent);border-color:var(--accent)}.check-native:focus-visible~.check-box{outline:3px solid var(--accent);outline-offset:2px}.check-row.is-error .check-box{border-color:var(--rose)}.check-row.is-error .check-native:focus-visible~.check-box{outline-color:var(--rose)}.radio-box{width:22px;height:22px;border:2px solid var(--ink-3, var(--text-tertiary));border-radius:50%;background:var(--surface);display:grid;place-items:center;margin-top:1px;flex:0 0 auto;transition:border-color var(--tx-fast, .14s ease)}.radio-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);transform:scale(0);transition:transform var(--tx-fast, .14s ease)}.check-control:hover .radio-box{border-color:var(--ink, var(--text-primary))}.check-native:checked~.radio-box{border-color:var(--accent)}.check-native:checked~.radio-box .radio-dot{transform:scale(1)}.check-native:focus-visible~.radio-box{outline:3px solid var(--accent);outline-offset:2px}.check-text{display:flex;flex-direction:column;gap:2px;padding-top:1px}.check-label{font-size:14.5px;line-height:1.45;color:var(--ink, var(--text-primary));font-weight:500}.check-hint{font-size:12.5px;color:var(--ink-3, var(--text-tertiary));line-height:1.5}.radio-cards{display:flex;flex-wrap:wrap;gap:12px}.radio-card{display:flex;flex-direction:column;gap:10px;padding:14px;background:var(--surface);border:1.5px solid var(--hairline-2, var(--border-color));border-radius:var(--r, 12px);cursor:pointer;flex:1 1 160px;min-width:160px;position:relative;transition:border-color var(--tx-fast, .14s ease),box-shadow var(--tx-fast, .14s ease)}.radio-card:hover{border-color:var(--ink-3, var(--text-tertiary))}.radio-card.is-selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.radio-card:focus-within{outline:3px solid var(--accent);outline-offset:2px}.radio-card-text{display:flex;flex-direction:column;gap:2px}.radio-card-title{font-size:14px;font-weight:600}.radio-card-desc{font-size:12px;color:var(--ink-3, var(--text-tertiary));line-height:1.45}.radio-card-mark{position:absolute;top:10px;right:10px;width:22px;height:22px;border-radius:50%;background:var(--accent);color:var(--ink-on-accent, #fff);display:grid;place-items:center;opacity:0;transform:scale(.7);transition:opacity var(--tx-fast, .14s ease),transform var(--tx-fast, .14s ease)}.radio-card-mark svg{width:12px;height:12px;stroke-width:3}.radio-card.is-selected .radio-card-mark{opacity:1;transform:scale(1)}.toggle-list{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r, 12px);overflow:hidden}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:1.25rem;padding:14px 18px;border-bottom:1px solid var(--hairline);min-height:64px}.toggle-row:last-child{border-bottom:0}.toggle-row.is-disabled{opacity:.6}.toggle-text{display:flex;flex-direction:column;gap:2px;cursor:pointer;flex:1}.toggle-label{font-size:14.5px;font-weight:500;color:var(--ink, var(--text-primary))}.toggle-desc{font-size:12.5px;color:var(--ink-3, var(--text-tertiary));line-height:1.45}.toggle{flex:0 0 auto;position:relative;width:48px;height:28px;border-radius:999px;background:var(--hairline-2, var(--border-color));border:0;cursor:pointer;padding:0;transition:background var(--tx, .22s ease)}.toggle:disabled{cursor:not-allowed}.toggle:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.toggle.is-on,.toggle[aria-checked=true]{background:var(--accent)}.toggle-thumb{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform var(--tx, .22s ease)}.toggle.is-on .toggle-thumb,.toggle[aria-checked=true] .toggle-thumb{transform:translate(20px)}.form-section{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r, 12px);padding:1.25rem 1.5rem}.form-section+.form-section{margin-top:1.25rem}.form-legend{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3, var(--text-tertiary));padding:0;margin-bottom:1rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.form-help{margin:-.5rem 0 1rem;font-size:13px;color:var(--ink-2, var(--text-secondary))}.form-actions{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1.5rem}.form-actions-end{display:flex;gap:.75rem;margin-left:auto}@media(prefers-reduced-motion:reduce){.btn,.seg-btn,.input,.select select,.check-box,.radio-box,.radio-dot,.toggle,.toggle-thumb,.check-control,.radio-card,.dropzone{transition-duration:1ms!important;animation-duration:1ms!important}}@media(prefers-contrast:more){.input,.select select,.check-box,.radio-box{border-width:2px}.btn-primary{box-shadow:0 0 0 1px var(--ink, currentColor)}}.api-key-input{width:100%;height:40px;padding:0 12px;font:inherit;font-size:13.5px;color:var(--ink, var(--text-primary));background:var(--surface);border:1.5px solid var(--hairline-2, var(--border-color));border-radius:var(--r-sm, 8px);font-family:var(--font-mono, ui-monospace, monospace);-webkit-appearance:none;transition:border-color var(--tx-fast, .14s ease),box-shadow var(--tx-fast, .14s ease)}.api-key-input::placeholder{color:var(--ink-3, var(--text-tertiary))}.api-key-input:hover{border-color:var(--ink-3, var(--text-tertiary))}.api-key-input:focus,.api-key-input:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.api-key-save-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 16px;border-radius:999px;border:1px solid transparent;background:var(--accent);color:var(--ink-on-accent, #fff);font:inherit;font-weight:600;font-size:13px;cursor:pointer;transition:background var(--tx-fast, .14s ease);box-shadow:var(--shadow-sm)}.api-key-save-btn:hover:not(:disabled){background:var(--accent-hover)}.api-key-save-btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.api-key-save-btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.api-key-delete-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 14px;border-radius:999px;background:transparent;color:var(--rose);border:1px solid color-mix(in srgb,var(--rose) 35%,var(--hairline-2, var(--border-color)));font:inherit;font-weight:600;font-size:13px;cursor:pointer;transition:background var(--tx-fast, .14s ease)}.api-key-delete-btn:hover:not(:disabled){background:color-mix(in srgb,var(--rose) 8%,transparent)}.api-key-delete-btn:focus-visible{outline:3px solid var(--rose);outline-offset:2px}.api-key-manager-input-row{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap}.api-key-manager-input-row .api-key-input{flex:1 1 240px}.btn-ghost-legacy{background:transparent;border:1px solid var(--hairline-2, var(--border-color));color:var(--ink-2, var(--text-secondary))}.eyebrow{color:var(--ink-3, var(--text-tertiary));font-size:12px;font-weight:600;margin:0 0 4px;letter-spacing:.06em;text-transform:uppercase}.help-banner{display:grid;grid-template-columns:36px 1fr 32px;gap:1rem;align-items:flex-start;padding:1.125rem 1.25rem;background:linear-gradient(180deg,var(--accent-soft),transparent 80%),var(--surface);border:1px solid var(--hairline);border-left:3px solid var(--accent);border-radius:var(--r, 12px)}.help-banner-icon{width:36px;height:36px;border-radius:10px;background:var(--accent);color:var(--ink-on-accent, #fff);display:grid;place-items:center}.help-banner-body strong{display:block;font-size:14.5px;margin-bottom:6px;color:var(--ink, var(--text-primary))}.help-banner-body p{margin:0;color:var(--ink-2, var(--text-secondary));font-size:13.5px;line-height:1.6}.help-banner-body b{color:var(--ink, var(--text-primary));font-weight:600}.help-banner-link{display:inline-flex;align-items:center;gap:6px;margin-top:10px;color:var(--accent);font-size:13px;font-weight:500;text-decoration:none}.help-banner-link:hover{text-decoration:underline}.help-banner-close{width:32px;height:32px;border:0;background:transparent;color:var(--ink-3, var(--text-tertiary));cursor:pointer;border-radius:8px;display:grid;place-items:center}.help-banner-close:hover{color:var(--ink, var(--text-primary));background:var(--elevated)}.help-banner-close:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.settings-section-card{background:var(--surface);border:1px solid var(--hairline);border-radius:14px;padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:1rem}.settings-section-head{display:flex;flex-direction:column;gap:2px}.settings-section-title{margin:0;font-size:17px;font-weight:600;letter-spacing:-.005em;color:var(--ink, var(--text-primary))}.settings-section-desc{margin:0;color:var(--ink-2, var(--text-secondary));font-size:13.5px;max-width:720px;line-height:1.55}.settings-danger{border-color:#b4506a40}.provider-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}@media(max-width:720px){.provider-grid{grid-template-columns:1fr}}.provider-card{position:relative;display:flex;flex-direction:column;gap:14px;padding:1.125rem 1.125rem 1rem;background:var(--surface);border:1.5px solid var(--hairline-2, var(--border-color));border-radius:var(--r, 12px);cursor:pointer;overflow:hidden;text-align:left;font:inherit;color:inherit;transition:border-color var(--tx-fast, .14s ease),transform var(--tx-fast, .14s ease),box-shadow var(--tx-fast, .14s ease)}.provider-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px}.prov-violet:before{background:var(--violet, #8657B4)}.prov-moss:before{background:var(--moss)}.prov-indigo:before{background:var(--accent)}.prov-amber:before{background:var(--amber)}.provider-card:hover:not(:disabled){border-color:var(--ink-3, var(--text-tertiary));transform:translateY(-1px);box-shadow:var(--shadow-md)}.provider-card.is-selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.provider-card.is-disabled{opacity:.85;cursor:not-allowed}.provider-card:focus-visible,.provider-card:focus-within{outline:3px solid var(--accent);outline-offset:2px}.provider-card-head{display:flex;align-items:flex-start;gap:12px}.provider-glyph{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:22px;flex:0 0 auto}.prov-violet .provider-glyph{background:var(--violet-soft, #EFE6F5);color:var(--violet, #8657B4)}.prov-moss .provider-glyph{background:var(--moss-soft);color:var(--moss)}.prov-indigo .provider-glyph{background:var(--accent-soft);color:var(--accent)}.prov-amber .provider-glyph{background:var(--amber-soft);color:var(--amber)}.provider-card-titles{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.provider-name{font-size:16px;font-weight:600;letter-spacing:-.005em;color:var(--ink, var(--text-primary));display:flex;align-items:center;gap:8px;flex-wrap:wrap}.provider-tag{font-size:12px;color:var(--ink-3, var(--text-tertiary));font-family:var(--font-mono, ui-monospace, monospace)}.prov-status{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font-size:11.5px;font-weight:600;letter-spacing:.02em;flex:0 0 auto}.prov-status.is-ready{background:var(--moss-soft);color:var(--moss)}.prov-status.is-local{background:var(--amber-soft);color:var(--amber)}.prov-status.is-missing{background:var(--rose-soft);color:var(--rose)}.prov-status svg{width:12px;height:12px;stroke-width:2.4}.provider-desc{margin:0;color:var(--ink-2, var(--text-secondary));font-size:13.5px;line-height:1.55}.provider-pros{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}.provider-pros li{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2, var(--text-secondary))}.provider-pros li svg{color:var(--moss);background:var(--moss-soft);border-radius:50%;padding:2px;width:18px;height:18px;flex:0 0 auto;stroke-width:2.6}.provider-foot{display:flex;justify-content:space-between;align-items:center;padding-top:.625rem;border-top:1px solid var(--hairline)}.provider-docs{display:inline-flex;align-items:center;gap:6px;color:var(--ink-3, var(--text-tertiary));font-size:12px;font-family:var(--font-mono, ui-monospace, monospace);text-decoration:none}.provider-docs:hover{color:var(--accent)}.provider-mark{width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--ink-on-accent, #fff);display:grid;place-items:center;opacity:0;transform:scale(.7);transition:opacity var(--tx-fast, .14s ease),transform var(--tx-fast, .14s ease)}.provider-mark svg{width:14px;height:14px;stroke-width:2.6}.provider-card.is-selected .provider-mark{opacity:1;transform:scale(1)}.keys-list{display:flex;flex-direction:column;gap:12px}.key-row{display:grid;grid-template-columns:44px 1fr auto;gap:1rem;align-items:center;padding:1rem 1.125rem;background:var(--bg);border:1px solid var(--hairline);border-radius:var(--r, 12px)}.key-row.is-set{background:var(--surface);border-color:var(--hairline)}.key-row-icon{width:44px;height:44px;border-radius:12px;background:var(--elevated);color:var(--ink-3, var(--text-tertiary));display:grid;place-items:center}.key-row.is-set .key-row-icon{background:var(--moss-soft);color:var(--moss)}.key-row-body{min-width:0}.key-row-head{display:flex;align-items:center;gap:10px;margin-bottom:4px;flex-wrap:wrap}.key-row-name{font-size:15px;font-weight:600;color:var(--ink, var(--text-primary))}.key-row-meta{color:var(--ink-3, var(--text-tertiary));font-size:12.5px}.key-row-meta code{font-family:var(--font-mono, ui-monospace, monospace);background:var(--elevated);padding:1px 6px;border-radius:4px;font-size:11.5px;color:var(--ink-2, var(--text-secondary))}.key-row-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.key-row-actions .input{width:220px;max-width:100%}.key-mask{font-family:var(--font-mono, ui-monospace, monospace);letter-spacing:.04em;color:var(--ink-3, var(--text-tertiary))}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;letter-spacing:.02em;height:22px}.badge-ready{background:var(--moss-soft);color:var(--moss)}.badge-warn{background:var(--rose-soft);color:var(--rose)}.badge-in-progress{background:var(--accent-soft);color:var(--accent)}.badge svg{width:12px;height:12px;stroke-width:2.4}.btn-danger-ghost{background:transparent;color:var(--rose);border:1px solid color-mix(in srgb,var(--rose) 30%,var(--hairline-2, var(--border-color)));height:40px;width:40px;border-radius:999px;display:grid;place-items:center;cursor:pointer;transition:background var(--tx-fast, .14s ease)}.btn-danger-ghost:hover{background:var(--rose-soft)}.btn-danger-ghost:focus-visible{outline:3px solid var(--rose);outline-offset:2px}.model-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.model-card{position:relative;display:flex;flex-direction:column;gap:12px;padding:1.125rem;background:var(--surface);border:1.5px solid var(--hairline-2, var(--border-color));border-radius:var(--r, 12px);cursor:pointer;text-align:left;font:inherit;color:inherit;transition:border-color var(--tx-fast, .14s ease),transform var(--tx-fast, .14s ease),box-shadow var(--tx-fast, .14s ease)}.model-card:hover:not(:disabled){border-color:var(--ink-3, var(--text-tertiary));transform:translateY(-1px)}.model-card.is-selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.model-card:focus-visible,.model-card:focus-within{outline:3px solid var(--accent);outline-offset:2px}.model-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.model-tier{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3, var(--text-tertiary));display:flex;align-items:center;gap:8px;margin-bottom:4px}.tier-badge{background:var(--moss);color:var(--ink-on-accent, #fff);padding:2px 8px;border-radius:999px;font-size:10px;letter-spacing:.04em;text-transform:uppercase}.tier-badge.tier-flagship{background:var(--violet, #8657B4)}.tier-badge.tier-fast{background:var(--amber)}.model-name{font-size:16px;font-weight:600;letter-spacing:-.005em;color:var(--ink, var(--text-primary))}.model-mark{width:22px;height:22px;border-radius:50%;background:var(--accent);color:var(--ink-on-accent, #fff);display:grid;place-items:center;opacity:0;transform:scale(.7);transition:opacity var(--tx-fast, .14s ease),transform var(--tx-fast, .14s ease)}.model-mark svg{width:12px;height:12px;stroke-width:3}.model-card.is-selected .model-mark{opacity:1;transform:scale(1)}.model-desc{margin:0;color:var(--ink-2, var(--text-secondary));font-size:13px;line-height:1.5}.model-meters{display:flex;flex-direction:column;gap:6px}.meter{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px}.meter-label{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2, var(--text-secondary))}.meter-label svg{width:14px;height:14px;color:var(--ink-3, var(--text-tertiary))}.meter-dots{display:inline-flex;gap:4px}.meter-dot{width:10px;height:6px;border-radius:2px;background:var(--elevated)}.meter-dot.is-on{background:var(--accent)}.model-foot{display:flex;justify-content:space-between;gap:8px;padding-top:.625rem;border-top:1px solid var(--hairline);flex-wrap:wrap}.model-meta{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3, var(--text-tertiary));font-family:var(--font-mono, ui-monospace, monospace)}.model-meta b{color:var(--ink, var(--text-primary));font-weight:600}.model-meta svg{width:13px;height:13px}.toast-container{position:fixed;bottom:1.5rem;right:1.5rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem;max-width:420px;pointer-events:none}.toast{display:flex;align-items:flex-start;gap:.625rem;padding:.75rem 1rem;background:color-mix(in srgb,var(--surface) 90%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);font-size:.8125rem;line-height:1.5;pointer-events:auto;animation:toast-slide-in .25s ease-out}@keyframes toast-slide-in{0%{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.toast-icon{flex-shrink:0;display:flex;align-items:center;margin-top:1px}.toast-message{flex:1;color:var(--text-primary);word-break:break-word}.toast-dismiss{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:.25rem;background:transparent;border:none;border-radius:4px;color:var(--text-tertiary);cursor:pointer;transition:all .15s}.toast-dismiss:hover{background:#ffffff0f;color:var(--text-secondary)}.toast-error{border-left:3px solid var(--error)}.toast-error .toast-icon{color:var(--error)}.toast-success{border-left:3px solid var(--success)}.toast-success .toast-icon{color:var(--success)}.toast-warning{border-left:3px solid var(--warning)}.toast-warning .toast-icon{color:var(--warning)}.toast-info{border-left:3px solid var(--accent)}.toast-info .toast-icon{color:var(--accent)}
