      .project-kb-shell {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
      }

      .project-kb-header {
        padding: 18px 24px 16px;
        border-bottom: 1px solid var(--border);
        background: linear-gradient(
          180deg,
          rgba(255, 186, 24, 0.05),
          rgba(255, 186, 24, 0)
        );
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 16px;
      }

      .project-kb-header-main {
        display: flex;
        align-items: center;
        gap: 14px;
        min-width: 0;
      }

      .project-kb-back {
        background: transparent;
        border: 1px solid var(--border);
        color: var(--text-secondary);
        border-radius: var(--radius);
        padding: 8px 12px;
        cursor: pointer;
        font-size: 12px;
        font-family: var(--font-mono);
        transition: all var(--transition);
      }

      .project-kb-back:hover {
        border-color: var(--accent);
        color: var(--accent);
      }

      .project-kb-title-wrap {
        min-width: 0;
      }

      .project-kb-title {
        font-size: 18px;
        font-weight: 600;
        line-height: 1.2;
      }

      .project-kb-subtitle {
        color: var(--text-secondary);
        font-size: 12px;
        margin-top: 4px;
      }

      .project-kb-actions {
        display: flex;
        align-items: center;
        gap: 10px;
      }

      .project-kb-pill {
        border: 1px solid var(--border);
        border-radius: 999px;
        padding: 6px 10px;
        font-size: 10px;
        font-family: var(--font-mono);
        text-transform: uppercase;
        letter-spacing: 0.08em;
        color: var(--text-secondary);
        background: var(--bg-card);
      }

      .project-kb-pill.success {
        border-color: rgba(255, 186, 24, 0.22);
        color: var(--accent);
        background: rgba(255, 186, 24, 0.08);
      }

      .project-kb-pill.error {
        border-color: rgba(255, 51, 51, 0.24);
        color: #ff6666;
        background: rgba(255, 51, 51, 0.08);
      }

      .project-kb-tabs {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        padding: 14px 24px 0;
      }

      .project-kb-tab {
        background: var(--bg-card);
        border: 1px solid var(--border);
        color: var(--text-secondary);
        border-radius: 999px;
        padding: 8px 14px;
        cursor: pointer;
        font-size: 11px;
        font-family: var(--font-mono);
        text-transform: uppercase;
        letter-spacing: 0.06em;
        transition: all var(--transition);
      }

      .project-kb-tab:hover {
        border-color: var(--accent);
        color: var(--accent);
      }

      .project-kb-tab.active {
        background: var(--accent-subtle);
        border-color: rgba(255, 186, 24, 0.2);
        color: var(--accent);
      }

      .project-kb-tab.disabled {
        opacity: 0.45;
      }

      .project-kb-content {
        flex: 1;
        min-height: 0;
        overflow-y: auto;
        padding: 18px 24px 24px;
      }

      .kb-notice {
        margin-bottom: 16px;
        border-radius: var(--radius-lg);
        border: 1px solid var(--border);
        background: var(--bg-card);
        padding: 14px 16px;
        font-size: 13px;
        line-height: 1.6;
      }

      .kb-notice.success {
        border-color: rgba(255, 186, 24, 0.2);
        background: rgba(255, 186, 24, 0.07);
      }

      .kb-notice.error {
        border-color: rgba(255, 51, 51, 0.2);
        background: rgba(255, 51, 51, 0.07);
      }

      .kb-panel {
        background: var(--bg-card);
        border: 1px solid var(--border);
        border-radius: var(--radius-lg);
        padding: 18px;
      }

      .kb-panel + .kb-panel {
        margin-top: 14px;
      }

      .kb-panel-header {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 14px;
        margin-bottom: 16px;
      }

      .kb-panel-title {
        font-size: 14px;
        font-weight: 600;
        font-family: var(--font-mono);
      }

      .kb-panel-subtitle {
        margin-top: 6px;
        color: var(--text-secondary);
        font-size: 12px;
        line-height: 1.6;
      }

      .kb-btn {
        background: transparent;
        border: 1px solid var(--border);
        color: var(--text-secondary);
        border-radius: var(--radius);
        padding: 8px 12px;
        cursor: pointer;
        font-size: 11px;
        font-family: var(--font-mono);
        text-transform: uppercase;
        letter-spacing: 0.05em;
        transition: all var(--transition);
      }

      .kb-btn:hover {
        border-color: var(--accent);
        color: var(--accent);
      }

      .kb-btn.primary {
        background: var(--accent);
        border-color: var(--accent);
        color: #000;
        font-weight: 600;
      }

      .kb-btn.primary:hover {
        background: var(--accent-dim);
        border-color: var(--accent-dim);
        color: #000;
      }

      .kb-btn.danger:hover {
        border-color: var(--danger);
        color: var(--danger);
      }

      .kb-btn:disabled {
        opacity: 0.45;
        cursor: not-allowed;
      }

      .kb-btn-row {
        display: flex;
        align-items: center;
        gap: 8px;
        flex-wrap: wrap;
      }

      .kb-source-list,
      .kb-file-list {
        display: flex;
        flex-direction: column;
        gap: 12px;
      }

      .kb-source-row,
      .kb-file-row {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 16px;
        padding: 14px;
        border: 1px solid var(--border);
        border-radius: var(--radius);
        background: var(--bg-secondary);
      }

      .kb-source-meta,
      .kb-file-meta {
        min-width: 0;
        flex: 1;
      }

      .kb-source-name,
      .kb-file-name {
        font-size: 13px;
        font-weight: 600;
        color: var(--text-primary);
      }

      .kb-source-desc,
      .kb-file-desc {
        color: var(--text-secondary);
        font-size: 12px;
        line-height: 1.6;
        margin-top: 5px;
      }

      .kb-source-extra,
      .kb-file-extra {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        margin-top: 8px;
      }

      .kb-chip {
        border-radius: 999px;
        padding: 4px 8px;
        font-size: 10px;
        font-family: var(--font-mono);
        background: var(--bg-primary);
        border: 1px solid var(--border);
        color: var(--text-secondary);
      }

      .kb-chip.success {
        color: var(--accent);
        border-color: rgba(255, 186, 24, 0.2);
        background: rgba(255, 186, 24, 0.06);
      }

      .kb-chip.error {
        color: #ff6666;
        border-color: rgba(255, 51, 51, 0.24);
        background: rgba(255, 51, 51, 0.08);
      }

      .kb-chip.muted {
        color: var(--text-muted);
      }

      .kb-source-actions,
      .kb-file-actions {
        display: flex;
        align-items: center;
        gap: 8px;
        flex-wrap: wrap;
        justify-content: flex-end;
      }

      .kb-state-card {
        border: 1px dashed var(--border);
        border-radius: var(--radius-lg);
        padding: 24px 18px;
        text-align: center;
        color: var(--text-secondary);
        background: rgba(255, 255, 255, 0.01);
      }

      .kb-state-card strong {
        display: block;
        color: var(--text-primary);
        font-size: 14px;
        margin-bottom: 8px;
      }

      .kb-state-card.error {
        border-color: rgba(255, 51, 51, 0.2);
        color: #ff8f8f;
      }

      .kb-dropzone {
        border: 1px dashed rgba(255, 186, 24, 0.32);
        border-radius: var(--radius-lg);
        padding: 26px 18px;
        text-align: center;
        background: linear-gradient(
          180deg,
          rgba(255, 186, 24, 0.06),
          rgba(255, 186, 24, 0.02)
        );
        cursor: pointer;
        transition: all var(--transition);
      }

      .kb-dropzone.dragover {
        border-color: var(--accent);
        box-shadow: 0 0 24px var(--accent-glow);
      }

      .kb-dropzone-title {
        font-size: 14px;
        font-weight: 600;
      }

      .kb-dropzone-subtitle {
        margin-top: 8px;
        color: var(--text-secondary);
        font-size: 12px;
        line-height: 1.6;
      }

      .kb-settings-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        gap: 12px;
      }

      .kb-settings-block + .kb-settings-block {
        margin-top: 14px;
      }

      .kb-settings-textarea {
        width: 100%;
        min-height: 150px;
        resize: vertical;
        border: 1px solid var(--border);
        border-radius: var(--radius);
        background: var(--bg-secondary);
        color: var(--text-primary);
        padding: 12px 14px;
        font-size: 13px;
        line-height: 1.6;
        font-family: inherit;
        outline: none;
        transition: border-color var(--transition), box-shadow var(--transition);
      }

      .kb-settings-textarea:focus {
        border-color: rgba(255, 186, 24, 0.4);
        box-shadow: 0 0 0 3px rgba(255, 186, 24, 0.08);
      }

      .kb-settings-help {
        margin-top: 8px;
        color: var(--text-secondary);
        font-size: 12px;
        line-height: 1.6;
      }

      .kb-github-form-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
        gap: 12px;
        margin-bottom: 12px;
      }

      .kb-text-input {
        width: 100%;
        border: 1px solid var(--border);
        border-radius: var(--radius);
        background: var(--bg-secondary);
        color: var(--text-primary);
        padding: 11px 12px;
        font-size: 13px;
        line-height: 1.4;
        outline: none;
        transition: border-color var(--transition), box-shadow var(--transition);
      }

      .kb-text-input:focus {
        border-color: rgba(255, 186, 24, 0.4);
        box-shadow: 0 0 0 3px rgba(255, 186, 24, 0.08);
      }

      .kb-github-textarea {
        min-height: 110px;
      }

      .kb-chat-shell {
        display: grid;
        grid-template-columns: minmax(260px, 300px) minmax(0, 1fr);
        gap: 16px;
        min-height: 620px;
      }

      .kb-chat-sidebar {
        display: flex;
        flex-direction: column;
        gap: 12px;
      }

      .kb-chat-session-list {
        display: flex;
        flex-direction: column;
        gap: 10px;
      }

      .kb-chat-session-item {
        border: 1px solid var(--border);
        border-radius: var(--radius);
        background: var(--bg-secondary);
        padding: 12px;
        cursor: pointer;
        transition: all var(--transition);
      }

      .kb-chat-session-item:hover {
        border-color: rgba(255, 186, 24, 0.24);
        transform: translateY(-1px);
      }

      .kb-chat-session-item.active {
        border-color: rgba(255, 186, 24, 0.26);
        background: rgba(255, 186, 24, 0.06);
        box-shadow: 0 0 0 1px rgba(255, 186, 24, 0.08);
      }

      .kb-chat-session-top {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 10px;
      }

      .kb-chat-session-title {
        font-size: 13px;
        font-weight: 600;
        line-height: 1.45;
        color: var(--text-primary);
      }

      .kb-chat-session-time {
        margin-top: 6px;
        color: var(--text-secondary);
        font-size: 11px;
        line-height: 1.4;
      }

      .kb-chat-session-delete {
        border: 0;
        background: transparent;
        color: var(--text-muted);
        cursor: pointer;
        font-size: 16px;
        line-height: 1;
        padding: 2px 4px;
        border-radius: 6px;
        transition: all var(--transition);
      }

      .kb-chat-session-delete:hover {
        color: var(--danger);
        background: rgba(255, 51, 51, 0.08);
      }

      .kb-chat-main {
        display: flex;
        flex-direction: column;
        min-height: 0;
      }

      .kb-chat-frame {
        display: flex;
        flex-direction: column;
        min-height: 620px;
      }

      .kb-chat-status {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        margin-bottom: 14px;
      }

      .kb-chat-transcript {
        flex: 1;
        min-height: 360px;
        border: 1px solid var(--border);
        border-radius: var(--radius-lg);
        background:
          radial-gradient(circle at top right, rgba(255, 186, 24, 0.07), transparent 30%),
          var(--bg-secondary);
        padding: 18px;
        overflow-y: auto;
        display: flex;
        flex-direction: column;
        gap: 14px;
      }

      .kb-chat-message {
        display: flex;
        flex-direction: column;
        gap: 7px;
        max-width: 88%;
      }

      .kb-chat-message.user {
        align-self: flex-end;
      }

      .kb-chat-message.assistant {
        align-self: flex-start;
      }

      .kb-chat-message-meta {
        display: flex;
        align-items: center;
        gap: 8px;
        color: var(--text-secondary);
        font-size: 11px;
        font-family: var(--font-mono);
        text-transform: uppercase;
        letter-spacing: 0.05em;
      }

      .kb-chat-message.user .kb-chat-message-meta {
        justify-content: flex-end;
      }

      .kb-chat-bubble {
        border-radius: 18px;
        border: 1px solid var(--border);
        padding: 14px 16px;
        font-size: 13px;
        line-height: 1.7;
        background: var(--bg-card);
        color: var(--text-primary);
      }

      .kb-chat-message.user .kb-chat-bubble {
        background: linear-gradient(180deg, rgba(255, 186, 24, 0.16), rgba(255, 186, 24, 0.08));
        border-color: rgba(255, 186, 24, 0.22);
      }

      .kb-chat-message.assistant .kb-chat-bubble {
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02);
      }

      .kb-chat-bubble p:first-child,
      .kb-chat-bubble ul:first-child,
      .kb-chat-bubble h2:first-child,
      .kb-chat-bubble h3:first-child,
      .kb-chat-bubble h4:first-child,
      .kb-chat-bubble pre:first-child {
        margin-top: 0;
      }

      .kb-chat-bubble p:last-child,
      .kb-chat-bubble ul:last-child,
      .kb-chat-bubble h2:last-child,
      .kb-chat-bubble h3:last-child,
      .kb-chat-bubble h4:last-child,
      .kb-chat-bubble pre:last-child {
        margin-bottom: 0;
      }

      .kb-chat-thinking {
        color: var(--accent);
        font-family: var(--font-mono);
        letter-spacing: 0.05em;
        text-transform: uppercase;
        font-size: 11px;
      }

      .kb-chat-composer {
        margin-top: 14px;
        border: 1px solid var(--border);
        border-radius: var(--radius-lg);
        background: var(--bg-card);
        padding: 14px;
      }

      .kb-chat-textarea {
        width: 100%;
        min-height: 96px;
        max-height: 240px;
        resize: vertical;
        border: 1px solid var(--border);
        border-radius: var(--radius);
        background: var(--bg-secondary);
        color: var(--text-primary);
        padding: 12px 14px;
        font-size: 13px;
        line-height: 1.6;
        font-family: inherit;
        outline: none;
        transition: border-color var(--transition), box-shadow var(--transition);
      }

      .kb-chat-textarea:focus {
        border-color: rgba(255, 186, 24, 0.4);
        box-shadow: 0 0 0 3px rgba(255, 186, 24, 0.08);
      }

      .kb-chat-composer-footer {
        margin-top: 12px;
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
      }

      .kb-chat-composer-hint {
        color: var(--text-secondary);
        font-size: 11px;
        line-height: 1.5;
      }

      .kb-chat-empty {
        margin: auto 0;
      }

      .kb-stat-card {
        border: 1px solid var(--border);
        border-radius: var(--radius);
        padding: 14px;
        background: var(--bg-secondary);
      }

      .kb-stat-label {
        color: var(--text-secondary);
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: 0.08em;
        font-family: var(--font-mono);
      }

      .kb-stat-value {
        margin-top: 8px;
        font-size: 18px;
        font-weight: 600;
      }

      @media (max-width: 960px) {
        .project-kb-header,
        .kb-panel-header,
        .kb-source-row,
        .kb-file-row {
          flex-direction: column;
          align-items: stretch;
        }

        .project-kb-actions,
        .kb-source-actions,
        .kb-file-actions {
          justify-content: flex-start;
        }

        .kb-chat-shell {
          grid-template-columns: 1fr;
          min-height: auto;
        }

        .kb-chat-frame {
          min-height: auto;
        }

        .kb-chat-transcript {
          min-height: 320px;
        }

        .kb-chat-message {
          max-width: 100%;
        }

        .kb-chat-composer-footer {
          flex-direction: column;
          align-items: stretch;
        }
      }
