@bridge_gpt/mcp-server 0.2.14 → 0.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +2 -2
  2. package/build/agents.generated.js +19 -1
  3. package/build/commands.generated.js +6 -5
  4. package/build/conductor/bridge-api-client.js +191 -11
  5. package/build/conductor/claude-hook.js +22 -4
  6. package/build/conductor/cli.js +11 -13
  7. package/build/conductor/done-gate.js +5 -0
  8. package/build/conductor/epic-reconcile.js +62 -13
  9. package/build/conductor/epic-runtime.js +447 -35
  10. package/build/conductor/epic-state.js +517 -63
  11. package/build/conductor/errors.js +41 -0
  12. package/build/conductor/event-accessors.js +234 -0
  13. package/build/conductor/file-scope-guard.js +201 -0
  14. package/build/conductor/github-mergeability.js +85 -0
  15. package/build/conductor/local-merge.js +47 -1
  16. package/build/conductor/merge-identity.js +41 -0
  17. package/build/conductor/merge-ledger.js +13 -68
  18. package/build/conductor/plan.js +12 -2
  19. package/build/conductor/pr-discovery.js +11 -1
  20. package/build/conductor/supervisor-config.js +4 -39
  21. package/build/conductor/supervisor-escalation.js +10 -26
  22. package/build/conductor/supervisor-ledger.js +5 -12
  23. package/build/conductor/supervisor-message-relay.js +2 -5
  24. package/build/conductor/supervisor-notification.js +1 -1
  25. package/build/conductor/supervisor-runtime.js +12 -54
  26. package/build/conductor/supervisor-state.js +4 -18
  27. package/build/conductor/supervisor-types.js +2 -2
  28. package/build/conductor/taxonomy.js +4 -0
  29. package/build/conductor-bin.js +2333 -666
  30. package/build/conductor-claude-hook-bin.js +4 -2
  31. package/build/doctor.js +32 -0
  32. package/build/index.js +9985 -7579
  33. package/build/install-bridge.js +25 -8
  34. package/build/install-doctor.js +387 -0
  35. package/build/pipelines.generated.js +30 -5
  36. package/build/readme.generated.js +1 -1
  37. package/build/regression-check.js +872 -0
  38. package/build/review-tickets.js +175 -21
  39. package/build/sfcc/permissions.js +13 -1
  40. package/build/sfcc/reads-custom-object-def.js +56 -39
  41. package/build/sfcc/register.js +1 -1
  42. package/build/sfcc/tool-wrapper.js +5 -1
  43. package/build/start-tickets-conductor.js +22 -6
  44. package/build/start-tickets-prereqs.js +73 -0
  45. package/build/start-tickets.js +122 -22
  46. package/build/version.generated.js +1 -1
  47. package/package.json +5 -5
  48. package/pipelines/review-ticket.json +24 -2
  49. package/public/css/main.min.css +3272 -1
  50. package/public/css/main.min.css.map +1 -1
  51. package/smoke-test/SMOKE-TEST.md +4 -2
@@ -1,2 +1,3273 @@
1
- body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.header{background-color:var(--surface-color);box-shadow:var(--box-shadow);height:var(--header-height);left:0;position:fixed;top:0;width:100%;z-index:100}.header-container{align-items:center;display:flex;height:100%;justify-content:space-between;margin:0 auto;max-width:1200px;padding:0 1rem}.logo-container img{height:32px;width:auto}.nav-menu ul{display:flex;list-style-type:none}.nav-menu li{margin-left:2rem}.nav-menu a{color:var(--text-color);font-weight:500;text-decoration:none}.nav-menu a:hover{color:var(--primary-color)}.main-content{margin:2rem auto;max-width:1200px;padding:0 1rem}.container{background-color:var(--surface-color);border-radius:.5rem;box-shadow:var(--box-shadow);margin-bottom:2rem;padding:2rem}.section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.section-header h1{color:var(--text-color);font-size:1.5rem;font-weight:600}.form-intro{color:var(--secondary-color);font-size:.875rem;margin-bottom:1.5rem}.form-intro code{color:var(--text-color);font-size:.8125rem}.form-group{margin-bottom:1.5rem}.form-group-block{align-items:center;display:flex;justify-content:left}input[type=email],input[type=number],input[type=password],input[type=text],input[type=url],select,textarea{background-color:#fff;border:1px solid var(--border-color);border-radius:.25rem;font-size:1rem;padding:.5rem;width:100%}.projects-grid{display:grid;gap:1rem;grid-template-columns:1fr}.project-card{background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:.5rem;padding:1.5rem;transition:transform .15s cubic-bezier(.4,0,.2,1),box-shadow .15s cubic-bezier(.4,0,.2,1)}.project-card:hover{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);transform:translateY(-2px)}.project-card h2{color:var(--text-color);font-size:1.125rem;margin-bottom:1rem}.project-card p{color:var(--secondary-color);display:-webkit-box;font-size:.875rem;height:4.5rem;margin-bottom:1.5rem;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-clamp:3}.project-card .project-meta{align-items:center;color:var(--secondary-color);display:flex;font-size:.75rem;justify-content:space-between;margin-bottom:1rem}.project-card-actions{flex-direction:column;gap:.75rem}.project-card-actions-row{align-items:center;display:flex;gap:.5rem;justify-content:space-between;width:100%}.project-card-actions-row .btn{flex:1;margin:.5rem;text-align:center}.project-card-actions-secondary{justify-content:flex-end}.delete-link{color:var(--error-color);cursor:pointer;font-size:.875rem;font-weight:500;text-decoration:none;transition:color .15s ease}.delete-link:hover{color:#dc2626;text-decoration:underline}.modal{background-color:rgba(0,0,0,.4);height:100%;overflow:auto;width:100%}.modal-content{background-color:var(--surface-color);border-radius:.5rem;box-shadow:var(--box-shadow);margin:15% auto;max-width:500px;padding:2rem;width:80%}.close-modal{color:var(--secondary-color);cursor:pointer;float:right;font-size:1.5rem;font-weight:700}.close-modal:hover{color:var(--text-color)}#modal-body,#modal-title{margin-bottom:1rem}#modal-body{line-height:1.5}#modal-body ul{margin:.5rem 0;padding-left:1.5rem}#modal-body li{margin:.25rem 0}#modal-body p{margin:.5rem 0}.modal-actions{border-top:1px solid var(--border-color);display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem;padding-top:1rem}.modal-actions.hidden{display:none}.loading-overlay{align-items:center;background-color:hsla(0,0%,100%,.8);display:flex;flex-direction:column;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:2000}.spinner{animation:spin 1s linear infinite;border:4px solid rgba(0,0,0,.1);border-radius:50%;border-top:4px solid var(--primary-color);height:40px;margin-bottom:1rem;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.projects-grid{grid-template-columns:1fr}.header-container{padding:0 1rem}.nav-menu li{margin-left:1rem}.container{padding:1.5rem}.modal-content{margin:10% auto;width:90%}}input.input-error,select.input-error,textarea.input-error{border-color:var(--error-color);box-shadow:0 0 0 .2rem rgba(239,68,68,.25)}.health-stat-value.config-healthy{color:#16a34a}.health-stat-value.config-errors{color:var(--error-color)}.health-stat-value.config-warnings{color:#f59e0b}.dismiss-warning-btn{background-color:transparent;border:1px solid var(--border-color);border-radius:.25rem;color:var(--secondary-color);cursor:pointer;font-size:.875rem;padding:.375rem .75rem;transition:all .2s ease}.dismiss-warning-btn:hover{background-color:#f9fafb;border-color:var(--secondary-color);color:var(--text-color)}.dismiss-warning-btn:active{background-color:#f3f4f6}.dismiss-warning-btn:disabled{cursor:not-allowed;opacity:.5}.pinecone-stat-label{color:var(--secondary-color);font-size:.875rem;margin-bottom:.25rem}.pinecone-stat-value{color:var(--text-color);font-size:1.5rem;font-weight:600}.pinecone-stat-value.stat-healthy{color:#16a34a}.pinecone-stat-value.stat-error{color:var(--error-color)}.pinecone-match-badge{border-radius:.25rem;display:inline-block;font-size:.75rem;font-weight:500;padding:.125rem .5rem}.pinecone-match-badge.match-yes{background-color:#dcfce7;color:#166534}.pinecone-match-badge.match-no{background-color:#fef2f2;color:#991b1b}.setup-detail-intro{color:var(--secondary-color);font-size:.9rem;line-height:1.5;margin:.5rem 0 1.5rem}.install-status-panel{background-color:#f9fafb;border:1px solid var(--border-color);border-radius:.25rem;margin-bottom:2rem;padding:1rem}.install-status-panel-title{color:var(--text-color);font-size:1rem;font-weight:500;margin-bottom:.75rem}.install-status-summary{align-items:center;color:var(--secondary-color);display:flex;flex-wrap:wrap;font-size:.875rem;gap:1rem;margin-bottom:1rem}.install-status-summary-count{color:var(--text-color);font-weight:600}.install-status-groups{display:flex;flex-direction:column;gap:1rem}.install-status-group{border-top:1px solid var(--border-color);padding-top:.75rem}.install-status-group-title{color:var(--text-color);font-size:.875rem;font-weight:500;margin-bottom:.5rem}.install-status-field-row{align-items:center;display:flex;flex-wrap:wrap;font-size:.875rem;gap:.5rem;padding:.375rem 0}.install-status-field-name{color:var(--text-color);font-weight:500}.install-status-field-value{color:var(--secondary-color);word-break:break-word}.install-status-field-confirm{color:#92400e;font-size:.75rem;font-style:italic}.install-status-error{background-color:#f9fafb;border:1px solid var(--border-color);border-radius:.25rem;color:var(--secondary-color);font-size:.875rem;padding:.75rem 1rem}.install-status-badge{border-radius:.25rem;display:inline-block;font-size:.75rem;font-weight:500;line-height:1.4;padding:.125rem .5rem;white-space:nowrap}.install-status-badge.status-set{background-color:#dcfce7;color:#166534}.install-status-badge.status-unset{background-color:#fef3c7;color:#92400e}.install-status-badge.status-loading,.install-status-badge.status-unavailable{background-color:#f1f5f9;color:var(--secondary-color)}.install-status-badge-slot{align-items:center;display:inline-flex;margin-left:6px;vertical-align:middle}.install-status-edit{background:none;border:none;color:var(--primary-color,#2563eb);cursor:pointer;font-size:.8rem;font-weight:500;padding:0;text-decoration:underline}.install-status-edit:hover{text-decoration:none}.install-status-edit:focus-visible{border-radius:.25rem;outline:2px solid var(--primary-color,#2563eb);outline-offset:2px}@media (max-width:600px){.install-status-summary{gap:.5rem}.install-status-field-row{align-items:flex-start;flex-direction:column}.install-status-badge-slot{margin-left:0;margin-top:.25rem}}.public-page-header{align-items:center;border-bottom:1px solid var(--border-color);display:flex;justify-content:flex-start;margin-bottom:1.5rem;padding:1rem 0}.public-page-header a{align-items:center;color:inherit;display:inline-flex;text-decoration:none}.public-page-logo{display:block;height:auto;max-width:240px;width:100%}@media (max-width:480px){.public-page-logo{max-width:180px}}.public-page-hero{padding:2rem 0 1.5rem}.public-page-hero h1{color:var(--text-color);font-size:1.75rem;font-weight:600;margin-bottom:1rem}.public-page-copy{color:var(--text-color);font-size:1rem;line-height:1.6}.public-page-copy p{margin-bottom:.75rem}.public-page-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}.public-page-actions a{display:inline-block;text-decoration:none}.public-page-footer{border-top:1px solid var(--border-color);color:var(--secondary-color);font-size:.875rem;margin-top:3rem;padding-top:1.5rem}.public-page-footer-nav{display:flex;flex-wrap:wrap;gap:1.5rem}.public-page-footer-nav a{color:var(--secondary-color);text-decoration:none}.public-page-footer-nav a:hover{color:var(--primary-color);text-decoration:underline}.legal-page-content{background-color:var(--surface-color);border-radius:.5rem;box-shadow:var(--box-shadow);max-width:800px;padding:2rem}.legal-page-content h1{color:var(--text-color);font-size:1.75rem;font-weight:600;margin-bottom:.5rem}.legal-page-content .last-updated{color:var(--secondary-color);font-size:.875rem;margin-bottom:1.5rem}.legal-section{margin-bottom:1.5rem}.legal-section h2{color:var(--text-color);font-size:1.25rem;font-weight:600;margin-bottom:.5rem}.legal-section p{color:var(--text-color);line-height:1.6;margin-bottom:.75rem}.save-container{display:flex;justify-content:center;margin-top:2rem}.save-container .btn{font-size:1rem;padding:.75rem 1.5rem}.form-static-text{background-color:var(--background-color);border:1px solid var(--border-color);border-radius:.25rem;color:var(--secondary-color);font-family:monospace;margin-top:.5rem;padding:.5rem;word-break:break-all}.header-title{color:var(--text-color);font-size:1.2rem;font-weight:600}.explain-link{color:var(--primary-color);margin-left:.5rem}.explain-link:hover{text-decoration:underline}.explanation-content{background-color:#eef2ff;border-left:4px solid var(--primary-color);border-radius:0 .25rem .25rem 0;color:#374151;flex-basis:100%;font-size:.875rem;margin-top:.5rem;padding:.75rem;width:100%}.project-card-actions{align-items:center;display:flex;justify-content:space-between}.explain-link{background-color:#6c757d;border-radius:50%;color:#fff;cursor:pointer;display:inline-block;font-size:.8em;font-weight:700;line-height:1.2;margin-left:6px;padding:1px 6px;text-decoration:none;vertical-align:middle}.explain-link:hover{background-color:#444;text-decoration:none}.explanation-content{background-color:#f8f9fa;border:1px solid #ced4da;border-radius:4px;color:#495057;font-size:.9em;line-height:1.4;margin-top:8px;padding:10px}#project-detail-container .explanation-content{display:block}#project-detail-container .explanation-content.hidden{display:none}.code-input{border:1px solid var(--border-color);border-radius:.25rem;font-family:Courier New,Courier,monospace;font-size:.9rem;line-height:1.4;padding:.75rem;width:100%}.form-error{color:#dc3545;font-size:.875em}input.input-error,select.input-error,textarea.input-error{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-error:not(:empty){display:block}.form-error{color:var(--error-color);display:none;font-size:.875rem;margin-top:.5rem}.form-error.visible{display:block}.mcp-docs-checkbox-list{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem}.mcp-doc-option{align-items:center;cursor:pointer;display:flex;gap:.5rem;line-height:1.4}.mcp-doc-checkbox{flex-shrink:0;margin:0}.mcp-doc-label{display:inline}.mcp-docs-empty-state{color:var(--secondary-color);font-size:.875rem;padding:.5rem .75rem}#project-detail-container .ci-followup-section,.mcp-docs-empty-state{border:1px solid var(--border-color);border-radius:.25rem;margin-top:.5rem}#project-detail-container .ci-followup-section{padding:.75rem}#project-detail-container .ci-followup-controls{display:flex;flex-direction:column;gap:.75rem;margin-top:.75rem}#project-detail-container .ci-followup-strategy-option{display:block;margin-bottom:.5rem}#project-detail-container .form-help{color:var(--secondary-color);font-size:.875rem;margin:.25rem 0 0}#project-detail-container .ci-followup-byte-counter{color:var(--secondary-color);font-size:.8125rem;margin-top:.25rem}#project-detail-container .ci-followup-byte-counter.over-limit{color:var(--error-color)}#project-detail-container .form-group-document-format{border-left:3px solid var(--border-color);padding-left:.75rem}#project-detail-container .document-format-help{color:var(--secondary-color);font-size:.875rem;line-height:1.4;margin:0 0 .5rem}.analysis-section{border-bottom:1px solid var(--border-color);margin-bottom:2rem;padding-bottom:1.5rem}#build-section{padding-top:2rem}.analysis-section:last-child{border-bottom:none}.analysis-section h4{font-size:1.1rem;font-weight:600;margin-bottom:1rem}.analysis-info-label{color:#555;font-style:italic;line-height:1.5;margin-bottom:10px}.reanalyze-container{font-size:.9em;margin-top:10px}.reanalyze-container p{margin:0}.reanalyze-container a{color:var(--primary-color);font-weight:500;text-decoration:none}.reanalyze-container a:hover{text-decoration:underline}.code-analysis{border-top:1px solid var(--border-color);margin-top:2rem;padding:1rem 0}.code-analysis h3{font-size:1.1rem;font-weight:600;margin-bottom:1rem}.code-analysis form{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.code-analysis form>div{display:flex;flex-direction:column;gap:.25rem}.code-analysis label{color:var(--text-color);font-weight:500}.code-analysis select,.code-analysis textarea{border:1px solid var(--border-color);border-radius:.25rem;font-family:inherit;padding:.5rem}.code-analysis select:focus,.code-analysis textarea:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px rgba(37,99,235,.1);outline:none}.status-message{border-radius:.25rem;font-size:.875rem;margin-top:.5rem;padding:.5rem}.status-message.processing{background-color:#e0f2fe;border:1px solid #81d4fa;color:#0277bd}.status-message.success{background-color:#e8f5e8;border:1px solid #a5d6a7;color:#2e7d32}.status-message.error{background-color:#ffebee;border:1px solid #ef9a9a;color:#c62828}.textarea-wide{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.875rem;line-height:1.4;resize:vertical;width:100%}.code-analysis button{align-self:flex-start;margin-top:.5rem}.planner-section{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}select[multiple]{border:1px solid var(--border-color);border-radius:.25rem;min-height:180px}label{color:var(--text-color)}#learn-repository-section{border-bottom:1px solid var(--border-color);padding-bottom:2rem;*{margin-top:1rem}}.learn-section{border-bottom:1px solid #e5e7eb;margin-bottom:1.5rem;padding-bottom:1.5rem}.learn-section:last-of-type{border-bottom:none;margin-bottom:0}.learn-section.lr-state-idle{border-left:3px solid var(--border-color);padding-left:1rem}.learn-section.lr-state-draft,.learn-section.lr-state-review,.learn-section.lr-state-running{border-left:3px solid var(--primary-color);padding-left:1rem}.learn-section.lr-state-complete{border-left:3px solid var(--text-color);padding-left:1rem}.lr-reanalyze-link{display:inline-block}.lr-initial-mode-options{align-items:center;display:flex;flex-direction:row;gap:1.25rem}.lr-initial-mode-options label{display:inline;font-weight:400}.lr-in-progress-container{border:1px solid var(--border-color);border-radius:.375rem;margin:.5rem 0 1rem;padding:.75rem 1rem}.lr-reanalyze-confirm-btn+.lr-reanalyze-cancel-btn{margin-left:.5rem}#estimator-section{display:flex;flex-direction:column;gap:1rem}#estimator-section>div{border:1px solid var(--border-color);border-radius:.375rem;padding:1rem}#estimator-optimize{background-color:#f0f9ff;border-color:#0ea5e9}#estimator-running{background-color:#fef3c7;border-color:#f59e0b}#estimator-review{background-color:#f0fdf4;border-color:#22c55e}#estimator-loading{background-color:#f3f4f6;border-color:var(--border-color);text-align:center}#range-editor{margin:1rem 0}#range-json{background-color:#f8fafc;border:1px solid var(--border-color);border-radius:.375rem;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.875rem;line-height:1.5;min-height:300px;padding:.75rem;resize:vertical;width:100%}#range-json:focus{border-color:var(--primary-color);box-shadow:0 0 0 2px rgba(37,99,235,.1);outline:none}.estimator-actions{display:flex;gap:.5rem;margin-top:1rem}.estimator-actions .btn{flex:0 0 auto}@media (max-width:768px){#range-json{font-size:.75rem;min-height:200px}.estimator-actions{flex-direction:column}.estimator-actions .btn{width:100%}}.estimator-message{border-radius:.375rem;margin-bottom:1rem;padding:.75rem}.estimator-message.success{background-color:#dcfce7;border:1px solid #22c55e;color:#166534}.estimator-message.error{background-color:#fef2f2;border:1px solid #ef4444;color:#991b1b}.estimator-message.info{background-color:#eff6ff;border:1px solid #3b82f6;color:#1e40af}.draft-review-container .btn+.btn{margin-left:1.5rem}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(/public/fonts/SourceSansPro-Regular.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(/public/fonts/SourceSansPro-Italic.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:200;src:url(/public/fonts/SourceSansPro-ExtraLight.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:200;src:url(/public/fonts/SourceSansPro-ExtraLightItalic.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(/public/fonts/SourceSansPro-Light.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(/public/fonts/SourceSansPro-LightItalic.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(/public/fonts/SourceSansPro-SemiBold.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(/public/fonts/SourceSansPro-SemiBoldItalic.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(/public/fonts/SourceSansPro-Bold.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(/public/fonts/SourceSansPro-BoldItalic.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:900;src:url(/public/fonts/SourceSansPro-Black.ttf) format("truetype")}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:900;src:url(/public/fonts/SourceSansPro-BlackItalic.ttf) format("truetype")}:root{--primary-color:#e2624b;--primary-dark:#c51616;--secondary-color:#6b7280;--light-grey:#eee;--secondary-button-background:#fdf4ec;--light-orange:#f2b27a;--dark-orange:#e17055;--background-color:#fffdf0;--surface-color:#fff;--text-color:#393d4e;--border-color:#e6e4d5;--error-color:#ef4444;--success-color:#10b981;--header-height:60px;--box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--background-color);color:var(--text-color);font-family:Source Sans Pro,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5;min-height:100vh;padding-top:var(--header-height)}.hidden{display:none!important}.btn{border:1px solid transparent;border-radius:4px;cursor:pointer;font-size:1rem;line-height:1.25rem;padding:.75rem 2rem;transition:background-color .3s ease}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover{background-color:var(--primary-dark)}.btn-secondary{background-color:var(--secondary-button-background);border:1px solid var(--light-orange);color:#333}.btn-secondary:hover{background-color:var(--dark-orange);color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.2)}.btn-sm{font-size:.75rem;padding:.2rem .5rem}.btn-danger{background-color:var(--error-color);color:#fff}.btn-danger:hover{background-color:#b91c1c}.btn:disabled{background-color:#d1d5db;cursor:not-allowed;opacity:.6}label{display:block;font-size:.875rem;font-weight:500;margin-bottom:.5rem}input[type=email],input[type=number],input[type=password],input[type=text],input[type=url],textarea{background-color:#fff;border:1px solid var(--border-color);border-radius:.25rem;font-size:1rem;padding:.5rem;width:100%}input[type=number]{width:auto}textarea{min-height:100px;resize:vertical}.required{color:var(--error-color)}.form-group.checkbox{align-items:center;display:flex;flex-wrap:wrap}.form-group.checkbox input{margin-right:.5rem}.form-group.checkbox label{margin-bottom:0}.modal{align-items:center;background:rgba(0,0,0,.4);display:none;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:1000}#get-started-container .get-started-intro{color:var(--text-muted,#666);line-height:1.6;margin-bottom:1.5rem;max-width:720px}#get-started-container .get-started-section{background:var(--card-bg,#fff);border:1px solid var(--border-color,#e0e0e0);border-radius:8px;margin-bottom:1.5rem;padding:1.5rem}#get-started-container .get-started-section h2{font-size:1.15rem;margin-bottom:.75rem;margin-top:0}.install-key-panel{background:var(--code-bg,#f8f9fa);border:1px solid var(--border-color,#e0e0e0);border-radius:8px;margin:.75rem 0 1.25rem;padding:1rem 1.25rem}.install-key-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between}.install-key-header h3{font-size:1rem;margin:0 0 .25rem}.install-key-header p{color:var(--text-muted,#666);font-size:.88rem;margin:0;max-width:48ch}.install-key-actions{align-items:center;display:flex;flex-shrink:0;gap:.6rem}.install-key-status{color:var(--success-color,#28a745);font-size:.82rem}.install-key-error{color:var(--danger-color,#dc3545);font-size:.85rem;margin:.75rem 0 0}.install-key-error.hidden{display:none}.install-key-result{margin-top:1rem}.install-key-result.hidden{display:none}.install-key-panel .key-warning{background:#fff3cd;border:1px solid #ffc107;border-radius:4px;color:#856404;font-size:.88rem;font-weight:600;margin-bottom:.75rem;padding:.75rem}.install-key-panel .key-display{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.install-key-panel .key-display input{background:#fff;border:1px solid var(--border-color,#dee2e6);border-radius:4px;flex:1;font-family:monospace;font-size:.85rem;min-width:200px;padding:.5rem .75rem}.bapi-api-key-slot-filled{background:#d4edda;color:#155724;font-style:normal}#editor-tabs{border-bottom:2px solid var(--border-color,#e0e0e0);display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;padding-bottom:.25rem}.snippet-tab-btn{background:none;border:none;border-bottom:3px solid transparent;border-radius:4px 4px 0 0;color:var(--text-muted,#666);cursor:pointer;font-size:.9rem;padding:.4rem .8rem;transition:color .15s,border-color .15s}.snippet-tab-btn:hover{color:var(--primary-color,#007bff)}.snippet-tab-btn.active,.snippet-tab-btn[aria-selected=true]{border-bottom-color:var(--primary-color,#007bff);color:var(--primary-color,#007bff);font-weight:600}.snippet-tab-btn:focus-visible{outline:2px solid var(--primary-color,#007bff);outline-offset:2px}.snippet-panel{margin-bottom:.5rem}.snippet-panel.hidden{display:none}.snippet-meta{color:var(--text-muted,#888);font-family:monospace;font-size:.78rem;margin-bottom:.4rem}.snippet-notes{color:var(--text-muted,#666);font-size:.85rem;font-style:italic;margin-bottom:.5rem}.snippet-panel pre{background:var(--code-bg,#f5f5f5);border:1px solid var(--border-color,#ddd);border-radius:6px;margin-bottom:.5rem;max-width:100%;overflow-x:auto;padding:1rem}.snippet-panel code{font-family:Courier New,Courier,monospace;font-size:.82rem;line-height:1.5;overflow-wrap:normal;white-space:pre;word-break:normal}.bapi-api-key-slot{background:#fff3cd;border-radius:3px;color:#856404;font-style:italic;font-weight:600;padding:0 2px}.snippet-copy-row{align-items:center;display:flex;gap:.5rem;margin-top:.25rem}.copy-status{color:var(--success-color,#28a745);font-size:.82rem;min-width:60px}.install-bridge-notice{background:#fff8e1;border-left:4px solid #f59e0b;border-radius:4px;font-size:.9rem;line-height:1.5;margin-bottom:1rem;padding:.75rem 1rem}.handoff-copy-row{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem}.handoff-command{background:var(--code-bg,#f5f5f5);border:1px solid var(--border-color,#ddd);border-radius:4px;font-family:monospace;font-size:.95rem;padding:.3rem .6rem}.status-summary{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.status-total{color:var(--text-muted,#666);font-size:.85rem}.status-chip{border-radius:12px;display:inline-block;font-size:.8rem;font-weight:600;letter-spacing:.02em;padding:.2rem .6rem}.status-set{background:#d4edda;color:#155724}.status-unset{background:#f8d7da;color:#721c24}.status-group{margin-bottom:1rem}.status-group-title{color:var(--text-muted,#555);font-size:.9rem;font-weight:600;letter-spacing:.05em;margin:0 0 .4rem;text-transform:uppercase}.status-field-row{align-items:baseline;border-bottom:1px solid var(--border-color,#eee);display:flex;flex-wrap:wrap;gap:.6rem;padding:.25rem 0}.status-field-row:last-child{border-bottom:none}.status-field-name{font-family:monospace;font-size:.88rem}.status-field-value{color:var(--text-muted,#888);font-family:monospace;font-size:.8rem;word-break:break-all}.status-empty{color:var(--text-muted,#888);font-size:.9rem;font-style:italic}.get-started-state{padding:1rem 0}.get-started-state.hidden{display:none}.skeleton{animation:skeleton-shimmer 1.4s infinite;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;border-radius:6px;margin-bottom:.75rem}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-tabs{height:36px;width:70%}.skeleton-code{height:160px;width:100%}.skeleton-status{height:80px;width:100%}.get-started-error-msg{color:var(--danger-color,#dc3545);margin-bottom:.75rem}.get-started-footer{margin-top:1rem;text-align:center}@media (max-width:600px){.snippet-tab-btn{font-size:.82rem;padding:.35rem .55rem}.handoff-copy-row{align-items:flex-start}.handoff-copy-row,.install-key-header{flex-direction:column}.install-key-actions{width:100%}.install-key-actions .btn{flex:1}.install-key-panel .key-display{align-items:stretch;flex-direction:column}.install-key-panel .key-display .btn,.install-key-panel .key-display input{width:100%}.status-field-row{flex-direction:column;gap:.2rem}}.collapsible-drawers{margin-bottom:2rem}.drawer{border:1px solid var(--border-color);border-radius:.25rem;margin-bottom:1rem;overflow:hidden}.drawer-header{align-items:center;background-color:#f9fafb;cursor:pointer;display:flex;justify-content:space-between;padding:1rem}.drawer-header h2{font-size:1rem;font-weight:500}.toggle-drawer{background:none;border:none;cursor:pointer;font-size:1rem;transition:transform var(--drawer-transition)}.drawer-content{border-top:1px solid var(--border-color);padding:1rem}.learn-repository-jobs-section,.parse-repository-jobs-section{display:flex;flex-direction:column;gap:1.5rem}.operation-last-ran{font-size:.875rem;margin-top:.5rem}.parse-schedule-status{border:1px solid var(--border-color);border-radius:4px;font-size:.875rem;margin-top:.75rem;padding:.75rem}.parse-schedule-status--active{border-color:var(--success-color);color:var(--success-color)}.parse-schedule-status--empty,.parse-schedule-status--paused{border-color:var(--dark-orange);color:var(--dark-orange)}.parse-schedule-next-run{color:var(--text-color);display:block;margin-top:.25rem}.parse-schedule-actions{display:flex;gap:.5rem;margin-top:.5rem}.operation-row{border-bottom:1px solid var(--border-color);display:flex;flex-direction:column;padding-bottom:1rem}.operation-row:last-child{border-bottom:none;padding-bottom:0}.operation-item{display:flex;flex-direction:column;gap:.5rem}.operation-item .btn{align-self:flex-start}.operation-label{color:var(--secondary-color);font-size:.875rem;line-height:1.4}.schedule-controls{align-items:flex-end;display:flex;gap:1rem;margin-top:.5rem}.schedule-controls .form-group{margin-bottom:0}.schedule-controls .form-group.inline{display:flex;flex-direction:column;gap:.25rem}.schedule-controls .form-group.inline label{color:var(--secondary-color);font-size:.75rem}.schedule-controls .form-group.inline input,.schedule-controls .form-group.inline select{font-size:.875rem;min-width:120px;padding:.375rem .5rem;width:auto}.integrity-error,.integrity-loading{color:var(--secondary-color);padding:1rem;text-align:center}.integrity-error{background-color:#fef2f2;border:1px solid #fecaca;border-radius:.25rem;color:var(--error-color)}.integrity-summary{background-color:#f9fafb;border-radius:.25rem;display:flex;gap:2rem;margin-bottom:1.5rem;padding:1rem}.integrity-stat{align-items:center;display:flex;flex-direction:column}.integrity-stat-label{color:var(--secondary-color);font-size:.875rem;margin-bottom:.25rem}.integrity-stat-value{color:var(--text-color);font-size:1.5rem;font-weight:600}.integrity-stat-value.integrity-healthy{color:#16a34a}.integrity-empty-state{background-color:#f0fdf4;border:1px solid #bbf7d0;border-radius:.25rem;color:#166534;padding:1.5rem;text-align:center}.integrity-empty-state p{font-weight:500;margin:0}.integrity-table{border-collapse:collapse;margin-top:1rem;width:100%}.integrity-table td,.integrity-table th{border-bottom:1px solid var(--border-color);padding:.75rem;text-align:left}.integrity-table th{background-color:#f9fafb;color:var(--secondary-color);font-size:.875rem;font-weight:500}.integrity-table td{font-size:.875rem;vertical-align:top}.integrity-table tbody tr:hover{background-color:#f9fafb}.integrity-file-list{background-color:#f1f5f9;border-radius:4px;font-family:monospace;font-size:.8rem;list-style:none;margin:0;max-height:150px;overflow-y:auto;padding:.5rem}.integrity-file-list li{padding:.125rem 0;word-break:break-all}.integrity-file-list li:not(:last-child){border-bottom:1px solid #e2e8f0}.integrity-more-files{color:var(--secondary-color);font-size:.8rem;font-style:italic;margin-top:.25rem}#integrity-issues-container h3{color:var(--text-color);font-size:1rem;font-weight:500;margin-bottom:.5rem}.config-health-error,.config-health-loading{color:var(--secondary-color);padding:1rem;text-align:center}.config-health-error{background-color:#fef2f2;border:1px solid #fecaca;border-radius:.25rem;color:var(--error-color)}.health-stats{background-color:#f9fafb;border-radius:.25rem;display:flex;gap:2rem;margin-bottom:1.5rem;padding:1rem}.health-stat{align-items:center;display:flex;flex-direction:column}.health-stat-label{color:var(--secondary-color);font-size:.875rem;margin-bottom:.25rem}.health-stat-value{color:var(--text-color);font-size:1.5rem;font-weight:600}.health-stat-value.health-configured{color:#16a34a}.health-stat-value.health-errors{color:var(--error-color)}.health-stat-value.health-warnings{color:#f59e0b}.config-health-all-good{background-color:#f0fdf4;border:1px solid #bbf7d0;border-radius:.25rem;color:#166534;padding:1.5rem;text-align:center}.config-health-all-good p{font-weight:500;margin:0}.config-health-table{border-collapse:collapse;margin-top:1rem;width:100%}.config-health-table td,.config-health-table th{border-bottom:1px solid var(--border-color);padding:.75rem;text-align:left}.config-health-table th{background-color:#f9fafb;color:var(--secondary-color);font-size:.875rem;font-weight:500}.config-health-table td{font-size:.875rem;vertical-align:top}.config-health-table tbody tr:hover{background-color:#f9fafb}.config-status-badge{border-radius:.25rem;display:inline-block;font-size:.75rem;font-weight:500;padding:.25rem .5rem;text-transform:uppercase}.config-status-badge.status-invalid,.config-status-badge.status-missing{background-color:#fef2f2;color:#991b1b}.btn-text{background-color:transparent;border:1px solid var(--border-color);border-radius:.25rem;color:var(--secondary-color);cursor:pointer;font-size:.875rem;padding:.375rem .75rem;transition:all .2s ease}.btn-text:hover{background-color:#f9fafb;border-color:var(--secondary-color);color:var(--text-color)}.btn-text:active{background-color:#f3f4f6}.btn-text:disabled{cursor:not-allowed;opacity:.5}#config-errors-container h3,#config-warnings-container h3{color:var(--text-color);font-size:1rem;font-weight:500;margin-bottom:.5rem;margin-top:1.5rem}#config-errors-container h3{color:var(--error-color)}#config-warnings-container h3{color:#f59e0b}.pinecone-health-actions{align-items:center;display:flex;gap:1rem;margin-bottom:1rem}.last-run-text{color:var(--secondary-color);font-size:.875rem}.pinecone-health-error,.pinecone-health-loading{color:var(--secondary-color);padding:1rem;text-align:center}.pinecone-health-error{background-color:#fef2f2;border:1px solid #fecaca;border-radius:.25rem;color:var(--error-color)}.pinecone-health-no-results{background-color:#f9fafb;border:1px solid var(--border-color);border-radius:.25rem;color:var(--secondary-color);padding:1rem;text-align:center}.pinecone-health-no-results p{margin:0}.pinecone-health-status-container{align-items:center;display:flex;gap:.5rem;margin-bottom:1rem}.pinecone-health-status{border-radius:.25rem;display:inline-block;font-size:.75rem;font-weight:600;padding:.25rem .75rem;text-transform:uppercase}.pinecone-health-status.status-healthy{background-color:#dcfce7;color:#166534}.pinecone-health-status.status-error{background-color:#fef2f2;color:#991b1b}.pinecone-health-status.status-warning{background-color:#fef3c7;color:#92400e}.pinecone-health-status.status-running{background-color:#dbeafe;color:#1e40af}.pinecone-health-summary{background-color:#f9fafb;border-radius:.25rem;display:flex;flex-wrap:wrap;gap:2rem;margin-bottom:1.5rem;padding:1rem}.pinecone-health-stat{align-items:center;display:flex;flex-direction:column;min-width:80px}.pinecone-health-stat-label{color:var(--secondary-color);font-size:.875rem;margin-bottom:.25rem}.pinecone-health-stat-value{color:var(--text-color);font-size:1.5rem;font-weight:600}.pinecone-health-all-good{background-color:#f0fdf4;border:1px solid #bbf7d0;border-radius:.25rem;color:#166534;padding:1.5rem;text-align:center}.pinecone-health-all-good p{font-weight:500;margin:0}.pinecone-health-table{border-collapse:collapse;margin-top:1rem;table-layout:fixed;width:100%}.pinecone-health-table td,.pinecone-health-table th{border-bottom:1px solid var(--border-color);padding:.75rem;text-align:left}.pinecone-health-table th{background-color:#f9fafb;color:var(--secondary-color);font-size:.875rem;font-weight:500}.pinecone-health-table td{font-size:.875rem;vertical-align:middle;word-wrap:break-word}.pinecone-health-table tbody tr:hover{background-color:#f9fafb}#pinecone-namespace-container .pinecone-health-table td:first-child,#pinecone-namespace-container .pinecone-health-table th:first-child{width:25%}#pinecone-namespace-container .pinecone-health-table td:nth-child(2),#pinecone-namespace-container .pinecone-health-table th:nth-child(2){width:15%}#pinecone-namespace-container .pinecone-health-table td:nth-child(3),#pinecone-namespace-container .pinecone-health-table td:nth-child(4),#pinecone-namespace-container .pinecone-health-table td:nth-child(5),#pinecone-namespace-container .pinecone-health-table th:nth-child(3),#pinecone-namespace-container .pinecone-health-table th:nth-child(4),#pinecone-namespace-container .pinecone-health-table th:nth-child(5){text-align:right;width:12%}#pinecone-namespace-container .pinecone-health-table td:nth-child(6),#pinecone-namespace-container .pinecone-health-table th:nth-child(6){text-align:center;width:12%}#pinecone-failures-container .pinecone-health-table td:first-child,#pinecone-failures-container .pinecone-health-table th:first-child{width:20%}#pinecone-failures-container .pinecone-health-table td:nth-child(2),#pinecone-failures-container .pinecone-health-table th:nth-child(2){width:15%}#pinecone-failures-container .pinecone-health-table td:nth-child(3),#pinecone-failures-container .pinecone-health-table th:nth-child(3){font-family:monospace;font-size:.8rem;width:30%}#pinecone-failures-container .pinecone-health-table td:nth-child(4),#pinecone-failures-container .pinecone-health-table th:nth-child(4){width:35%}#pinecone-failures-container h3,#pinecone-namespace-container h3{color:var(--text-color);font-size:1rem;font-weight:500;margin-bottom:.5rem;margin-top:1.5rem}#pinecone-failures-container h3{color:var(--error-color)}.pinecone-regenerate-section{border-top:1px solid var(--border-color);margin-top:1.5rem;padding-top:1.5rem}.pinecone-regenerate-section h4{color:var(--text-color);font-size:.95rem;font-weight:600;margin:0 0 .5rem}.regenerate-instructions{color:var(--secondary-color);font-size:.875rem;margin:0 0 .75rem}.regenerate-checkboxes{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.regenerate-checkboxes .checkbox-label{align-items:center;cursor:pointer;display:flex;font-size:.875rem;gap:.5rem}.regenerate-checkboxes .checkbox-label input[type=checkbox]{accent-color:var(--primary-color);cursor:pointer;height:16px;width:16px}.regenerate-checkboxes .checkbox-label span{color:var(--text-color)}.regenerate-checkboxes .namespace-name{background-color:#f1f5f9;border-radius:.25rem;color:var(--secondary-color);font-family:monospace;font-size:.8rem;padding:.125rem .375rem}.regenerate-checkboxes .metadata-warning{color:#f59e0b;font-size:.75rem;margin-left:.25rem}.info-tooltip-btn{align-items:center;background:none;border:none;color:#6b7280;cursor:pointer;display:inline-flex;font-size:.75rem;height:18px;justify-content:center;margin-left:.375rem;padding:0;transition:color .15s ease;vertical-align:middle;width:18px}.info-tooltip-btn:hover{color:var(--primary-color)}.namespace-info{background-color:#f3f4f6;border-left:3px solid var(--primary-color);border-radius:0 .25rem .25rem 0;color:#4b5563;font-size:.8rem;line-height:1.4;margin:.375rem 0 .75rem 1.5rem;padding:.625rem .75rem}.namespace-info.hidden{display:none}.namespace-info strong{color:var(--text-color)}.regenerate-note{align-items:flex-start;background-color:#eff6ff;border:1px solid #bfdbfe;border-radius:.25rem;display:flex;gap:.5rem;margin-bottom:1rem;padding:.625rem .75rem}.regenerate-note .note-label{color:#1e40af;font-size:.8rem;font-weight:600}.regenerate-note .note-text{color:#1e40af;font-size:.8rem;line-height:1.4}.regenerate-warning{align-items:flex-start;background-color:#fef3c7;border:1px solid #fcd34d;border-radius:.25rem;display:flex;gap:.5rem;margin-bottom:1rem;padding:.75rem}.regenerate-warning .warning-icon{font-size:1rem;line-height:1}.regenerate-warning .warning-text{color:#92400e;font-size:.8rem;line-height:1.4}.btn-warning{background-color:#f59e0b;border:1px solid #d97706;color:#fff}.btn-warning:hover{background-color:#d97706;border-color:#b45309}.btn-warning:active{background-color:#b45309}.btn-warning:disabled{background-color:#fcd34d;border-color:#fcd34d;cursor:not-allowed}.learn-repo-schedule-section{border-radius:6px;margin-top:.75rem;padding:1rem}.learn-repo-schedule-section h4{margin:0 0 .25rem}.learn-repo-instructions{color:#6b7280;font-size:.85rem;margin-bottom:.75rem}.learn-repo-analysis-types{border:none;display:grid;gap:.25rem 1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0 0 .75rem;padding:0}.learn-repo-analysis-types legend{font-weight:600;margin-bottom:.25rem}.learn-repo-actions{margin-top:.5rem}.learn-repo-message{color:#1f2937;font-size:.875rem;margin-top:.5rem}.learn-repo-schedule-status{display:flex;flex-direction:column;gap:.5rem;margin-top:.75rem}.learn-repo-schedule-row{background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:4px;padding:.75rem}.learn-repo-schedule-meta{color:#4b5563;font-size:.85rem;margin:.25rem 0}.learn-repo-row-actions{display:flex;gap:.5rem;margin-top:.5rem}.learn-repo-status-running{color:#2563eb}.learn-repo-status-success{color:#15803d}.learn-repo-status-failure{color:#b91c1c}.learn-repo-status-idle{color:#6b7280}.learn-repo-schedule-row details{font-size:.85rem;margin-top:.5rem}.learn-repo-schedule-row details pre{background-color:#fff;border:1px solid #e5e7eb;border-radius:3px;margin:.25rem 0 0;padding:.5rem;white-space:pre-wrap}.form-error{color:#b91c1c;font-size:.85rem;margin-top:.25rem}
1
+ /*!*************************************************************************************************!*\
2
+ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./src/css/setup.css ***!
3
+ \*************************************************************************************************/
4
+ /* Setup page CSS */
5
+
6
+ /* Reset and base styles */
7
+ * {
8
+ margin: 0;
9
+ padding: 0;
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ body {
14
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
15
+ background-color: var(--background-color);
16
+ color: var(--text-color);
17
+ line-height: 1.5;
18
+ min-height: 100vh;
19
+ padding-top: var(--header-height);
20
+ }
21
+
22
+ /* Header styles */
23
+ .header {
24
+ position: fixed;
25
+ top: 0;
26
+ left: 0;
27
+ width: 100%;
28
+ height: var(--header-height);
29
+ background-color: var(--surface-color);
30
+ box-shadow: var(--box-shadow);
31
+ z-index: 100;
32
+ }
33
+
34
+ .header-container {
35
+ display: flex;
36
+ justify-content: space-between;
37
+ align-items: center;
38
+ max-width: 1200px;
39
+ height: 100%;
40
+ margin: 0 auto;
41
+ padding: 0 1rem;
42
+ }
43
+
44
+ .logo-container img {
45
+ height: 32px;
46
+ width: auto;
47
+ }
48
+
49
+ .nav-menu ul {
50
+ display: flex;
51
+ list-style-type: none;
52
+ }
53
+
54
+ .nav-menu li {
55
+ margin-left: 2rem;
56
+ }
57
+
58
+ .nav-menu a {
59
+ color: var(--text-color);
60
+ text-decoration: none;
61
+ font-weight: 500;
62
+ }
63
+
64
+ .nav-menu a:hover {
65
+ color: var(--primary-color);
66
+ }
67
+
68
+ /* Main content area */
69
+ .main-content {
70
+ max-width: 1200px;
71
+ margin: 2rem auto;
72
+ padding: 0 1rem;
73
+ }
74
+
75
+ /* Container styles */
76
+ .container {
77
+ background-color: var(--surface-color);
78
+ border-radius: 0.5rem;
79
+ padding: 2rem;
80
+ box-shadow: var(--box-shadow);
81
+ margin-bottom: 2rem;
82
+ }
83
+
84
+ .hidden {
85
+ display: none !important;
86
+ }
87
+
88
+ /* Section header */
89
+ .section-header {
90
+ display: flex;
91
+ justify-content: space-between;
92
+ align-items: center;
93
+ margin-bottom: 2rem;
94
+ }
95
+
96
+ .section-header h1 {
97
+ font-size: 1.5rem;
98
+ font-weight: 600;
99
+ color: var(--text-color);
100
+ }
101
+
102
+ /* Form styles */
103
+ .form-intro {
104
+ font-size: 0.875rem;
105
+ color: var(--secondary-color);
106
+ margin-bottom: 1.5rem;
107
+ }
108
+
109
+ .form-intro code {
110
+ font-size: 0.8125rem;
111
+ color: var(--text-color);
112
+ }
113
+
114
+ .form-group {
115
+ margin-bottom: 1.5rem;
116
+ }
117
+
118
+ .form-group-block {
119
+ display: flex;
120
+ justify-content: left;
121
+ align-items: center;
122
+ }
123
+
124
+ label {
125
+ display: block;
126
+ font-size: 0.875rem;
127
+ font-weight: 500;
128
+ margin-bottom: 0.5rem;
129
+ }
130
+
131
+ input[type="text"],
132
+ input[type="password"],
133
+ input[type="email"],
134
+ input[type="url"],
135
+ input[type="number"],
136
+ select,
137
+ textarea {
138
+ width: 100%;
139
+ padding: 0.5rem;
140
+ font-size: 1rem;
141
+ border: 1px solid var(--border-color);
142
+ border-radius: 0.25rem;
143
+ background-color: #fff;
144
+ }
145
+
146
+ input[type="number"] {
147
+ width: auto;
148
+ }
149
+
150
+ textarea {
151
+ min-height: 100px;
152
+ resize: vertical;
153
+ }
154
+
155
+ .required {
156
+ color: var(--error-color);
157
+ }
158
+
159
+ /* Checkbox styling */
160
+ .form-group.checkbox {
161
+ display: flex;
162
+ align-items: center;
163
+ flex-wrap: wrap;
164
+ }
165
+
166
+ .form-group.checkbox input {
167
+ margin-right: 0.5rem;
168
+ }
169
+
170
+ .form-group.checkbox label {
171
+ margin-bottom: 0;
172
+ }
173
+
174
+ /* Projects grid */
175
+ .projects-grid {
176
+ display: grid;
177
+ grid-template-columns: 1fr;
178
+ gap: 1rem;
179
+ }
180
+
181
+ .project-card {
182
+ background-color: var(--surface-color);
183
+ border: 1px solid var(--border-color);
184
+ border-radius: 0.5rem;
185
+ padding: 1.5rem;
186
+ transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1);
187
+ }
188
+
189
+ .project-card:hover {
190
+ transform: translateY(-2px);
191
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
192
+ }
193
+
194
+ .project-card h2 {
195
+ font-size: 1.125rem;
196
+ margin-bottom: 1rem;
197
+ color: var(--text-color);
198
+ }
199
+
200
+ .project-card p {
201
+ font-size: 0.875rem;
202
+ color: var(--secondary-color);
203
+ margin-bottom: 1.5rem;
204
+ height: 4.5rem;
205
+ overflow: hidden;
206
+ text-overflow: ellipsis;
207
+ display: -webkit-box;
208
+ -webkit-line-clamp: 3;
209
+ -webkit-box-orient: vertical;
210
+ line-clamp: 3;
211
+ }
212
+
213
+ .project-card .project-meta {
214
+ display: flex;
215
+ justify-content: space-between;
216
+ align-items: center;
217
+ font-size: 0.75rem;
218
+ color: var(--secondary-color);
219
+ margin-bottom: 1rem;
220
+ }
221
+
222
+ /* Project card actions layout */
223
+ .project-card-actions {
224
+ display: flex;
225
+ flex-direction: column;
226
+ gap: 0.75rem;
227
+ }
228
+
229
+ .project-card-actions-row {
230
+ display: flex;
231
+ gap: 0.5rem;
232
+ justify-content: space-between;
233
+ align-items: center;
234
+ width: 100%;
235
+ }
236
+
237
+ .project-card-actions-row .btn {
238
+ flex: 1;
239
+ text-align: center;
240
+ margin: 0.5rem;
241
+ }
242
+
243
+ .project-card-actions-secondary {
244
+ justify-content: flex-end;
245
+ }
246
+
247
+ /* Delete link styling */
248
+ .delete-link {
249
+ color: var(--error-color);
250
+ text-decoration: none;
251
+ font-size: 0.875rem;
252
+ font-weight: 500;
253
+ cursor: pointer;
254
+ transition: color 150ms ease;
255
+ }
256
+
257
+ .delete-link:hover {
258
+ color: #dc2626;
259
+ text-decoration: underline;
260
+ }
261
+
262
+ /* Modal styles */
263
+ .modal {
264
+ display: none;
265
+ position: fixed;
266
+ z-index: 1000;
267
+ left: 0;
268
+ top: 0;
269
+ width: 100%;
270
+ height: 100%;
271
+ overflow: auto;
272
+ background-color: rgba(0, 0, 0, 0.4);
273
+ }
274
+
275
+ .modal-content {
276
+ background-color: var(--surface-color);
277
+ margin: 15% auto;
278
+ padding: 2rem;
279
+ border-radius: 0.5rem;
280
+ width: 80%;
281
+ max-width: 500px;
282
+ box-shadow: var(--box-shadow);
283
+ }
284
+
285
+ .close-modal {
286
+ color: var(--secondary-color);
287
+ float: right;
288
+ font-size: 1.5rem;
289
+ font-weight: bold;
290
+ cursor: pointer;
291
+ }
292
+
293
+ .close-modal:hover {
294
+ color: var(--text-color);
295
+ }
296
+
297
+ #modal-title {
298
+ margin-bottom: 1rem;
299
+ }
300
+
301
+ #modal-body {
302
+ margin-bottom: 1rem;
303
+ line-height: 1.5;
304
+ }
305
+
306
+ #modal-body ul {
307
+ margin: 0.5rem 0;
308
+ padding-left: 1.5rem;
309
+ }
310
+
311
+ #modal-body li {
312
+ margin: 0.25rem 0;
313
+ }
314
+
315
+ #modal-body p {
316
+ margin: 0.5rem 0;
317
+ }
318
+
319
+ .modal-actions {
320
+ display: flex;
321
+ justify-content: flex-end;
322
+ gap: 0.75rem;
323
+ margin-top: 1.5rem;
324
+ padding-top: 1rem;
325
+ border-top: 1px solid var(--border-color);
326
+ }
327
+
328
+ .modal-actions.hidden {
329
+ display: none;
330
+ }
331
+
332
+ /* Loading overlay */
333
+ .loading-overlay {
334
+ position: fixed;
335
+ top: 0;
336
+ left: 0;
337
+ width: 100%;
338
+ height: 100%;
339
+ background-color: rgba(255, 255, 255, 0.8);
340
+ z-index: 2000;
341
+ display: flex;
342
+ flex-direction: column;
343
+ justify-content: center;
344
+ align-items: center;
345
+ }
346
+
347
+ .spinner {
348
+ border: 4px solid rgba(0, 0, 0, 0.1);
349
+ width: 40px;
350
+ height: 40px;
351
+ border-radius: 50%;
352
+ border-top-color: var(--primary-color);
353
+ animation: spin 1s linear infinite;
354
+ margin-bottom: 1rem;
355
+ }
356
+
357
+ @keyframes spin {
358
+ 0% { transform: rotate(0deg); }
359
+ 100% { transform: rotate(360deg); }
360
+ }
361
+
362
+ /* Responsive adjustments */
363
+ @media (max-width: 768px) {
364
+ .projects-grid {
365
+ grid-template-columns: 1fr;
366
+ }
367
+
368
+ .header-container {
369
+ padding: 0 1rem;
370
+ }
371
+
372
+ .nav-menu li {
373
+ margin-left: 1rem;
374
+ }
375
+
376
+ .container {
377
+ padding: 1.5rem;
378
+ }
379
+
380
+ .modal-content {
381
+ width: 90%;
382
+ margin: 10% auto;
383
+ }
384
+ }
385
+ /*!********************************************************************************************************!*\
386
+ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./src/css/setup-detail.css ***!
387
+ \********************************************************************************************************/
388
+ /* src/css/setup-detail.css */
389
+
390
+ /* Collapsible drawers specific to Setup Detail View */
391
+ .collapsible-drawers {
392
+ margin-bottom: 2rem;
393
+ }
394
+
395
+ .drawer {
396
+ border: 1px solid var(--border-color);
397
+ border-radius: 0.25rem;
398
+ margin-bottom: 1rem;
399
+ overflow: hidden;
400
+ }
401
+
402
+ .drawer-header {
403
+ display: flex;
404
+ justify-content: space-between;
405
+ align-items: center;
406
+ padding: 1rem;
407
+ background-color: #f9fafb;
408
+ cursor: pointer;
409
+ }
410
+
411
+ .drawer-header h2 {
412
+ font-size: 1rem;
413
+ font-weight: 500;
414
+ }
415
+
416
+ .toggle-drawer {
417
+ background: none;
418
+ border: none;
419
+ font-size: 1rem;
420
+ cursor: pointer;
421
+ transition: transform var(--drawer-transition);
422
+ }
423
+
424
+ .drawer-content {
425
+ padding: 1rem;
426
+ border-top: 1px solid var(--border-color);
427
+ /* Visibility is controlled solely by the global `.hidden` class (BAPI-301);
428
+ `.expanded` is reserved for header/glyph styling. The shared drawer helper
429
+ sets the ▲/▼ glyph text directly, so no CSS rotation is applied. */
430
+ }
431
+
432
+ /* Save button container specific to Setup Detail View */
433
+ .save-container {
434
+ display: flex;
435
+ justify-content: center;
436
+ margin-top: 2rem;
437
+ }
438
+
439
+ .save-container .btn {
440
+ padding: 0.75rem 1.5rem;
441
+ font-size: 1rem;
442
+ }
443
+
444
+ /* Static text display (like repo name) */
445
+ .form-static-text {
446
+ background-color: var(--background-color);
447
+ padding: 0.5rem;
448
+ border: 1px solid var(--border-color);
449
+ border-radius: 0.25rem;
450
+ font-family: monospace;
451
+ color: var(--secondary-color);
452
+ margin-top: 0.5rem;
453
+ word-break: break-all;
454
+ }
455
+
456
+ /* Header title specific to this page */
457
+ .header-title {
458
+ font-size: 1.2rem;
459
+ font-weight: 600;
460
+ color: var(--text-color);
461
+ }
462
+
463
+ /* Explain Link Styling */
464
+ .explain-link {
465
+ display: inline-block;
466
+ margin-left: 6px;
467
+ padding: 1px 6px;
468
+ font-size: 0.8em;
469
+ font-weight: bold;
470
+ color: #fff;
471
+ background-color: #6c757d;
472
+ border-radius: 50%;
473
+ text-decoration: none;
474
+ cursor: pointer;
475
+ vertical-align: middle;
476
+ line-height: 1.2;
477
+ }
478
+
479
+ .explain-link:hover {
480
+ background-color: #444;
481
+ text-decoration: none;
482
+ }
483
+
484
+ .explanation-content {
485
+ /* Hidden by default via the global `.hidden` class in the markup; the JS
486
+ toggles only `.hidden` (BAPI-301), so no base `display: none` here. */
487
+ margin-top: 8px;
488
+ padding: 10px;
489
+ border: 1px solid #ced4da;
490
+ border-radius: 4px;
491
+ background-color: #f8f9fa;
492
+ font-size: 0.9em;
493
+ color: #495057;
494
+ line-height: 1.4;
495
+ }
496
+
497
+ /* Form error styling */
498
+ .form-error {
499
+ color: var(--error-color);
500
+ font-size: 0.875rem;
501
+ margin-top: 0.5rem;
502
+ display: none;
503
+ }
504
+
505
+ .form-error.visible {
506
+ display: block;
507
+ }
508
+
509
+ input.input-error,
510
+ textarea.input-error,
511
+ select.input-error {
512
+ border-color: var(--error-color);
513
+ box-shadow: 0 0 0 0.2rem rgba(239, 68, 68, 0.25);
514
+ }
515
+
516
+ /* Required field indicator */
517
+ .required {
518
+ color: var(--error-color);
519
+ }
520
+
521
+ /* ========================================
522
+ Data Integrity Section Styles
523
+ ======================================== */
524
+
525
+ /* Loading and error states */
526
+ .integrity-loading,
527
+ .integrity-error {
528
+ padding: 1rem;
529
+ text-align: center;
530
+ color: var(--secondary-color);
531
+ }
532
+
533
+ .integrity-error {
534
+ color: var(--error-color);
535
+ background-color: #fef2f2;
536
+ border: 1px solid #fecaca;
537
+ border-radius: 0.25rem;
538
+ }
539
+
540
+ /* Summary statistics */
541
+ .integrity-summary {
542
+ display: flex;
543
+ gap: 2rem;
544
+ margin-bottom: 1.5rem;
545
+ padding: 1rem;
546
+ background-color: #f9fafb;
547
+ border-radius: 0.25rem;
548
+ }
549
+
550
+ .integrity-stat {
551
+ display: flex;
552
+ flex-direction: column;
553
+ align-items: center;
554
+ }
555
+
556
+ .integrity-stat-label {
557
+ font-size: 0.875rem;
558
+ color: var(--secondary-color);
559
+ margin-bottom: 0.25rem;
560
+ }
561
+
562
+ .integrity-stat-value {
563
+ font-size: 1.5rem;
564
+ font-weight: 600;
565
+ color: var(--text-color);
566
+ }
567
+
568
+ .integrity-stat-value.integrity-healthy {
569
+ color: #16a34a;
570
+ }
571
+
572
+ /* Empty state */
573
+ .integrity-empty-state {
574
+ padding: 1.5rem;
575
+ text-align: center;
576
+ background-color: #f0fdf4;
577
+ border: 1px solid #bbf7d0;
578
+ border-radius: 0.25rem;
579
+ color: #166534;
580
+ }
581
+
582
+ .integrity-empty-state p {
583
+ margin: 0;
584
+ font-weight: 500;
585
+ }
586
+
587
+ /* Issues table */
588
+ .integrity-table {
589
+ width: 100%;
590
+ border-collapse: collapse;
591
+ margin-top: 1rem;
592
+ }
593
+
594
+ .integrity-table th,
595
+ .integrity-table td {
596
+ padding: 0.75rem;
597
+ text-align: left;
598
+ border-bottom: 1px solid var(--border-color);
599
+ }
600
+
601
+ .integrity-table th {
602
+ background-color: #f9fafb;
603
+ font-weight: 500;
604
+ font-size: 0.875rem;
605
+ color: var(--secondary-color);
606
+ }
607
+
608
+ .integrity-table td {
609
+ font-size: 0.875rem;
610
+ vertical-align: top;
611
+ }
612
+
613
+ .integrity-table tbody tr:hover {
614
+ background-color: #f9fafb;
615
+ }
616
+
617
+ /* File list styling */
618
+ .integrity-file-list {
619
+ font-family: monospace;
620
+ font-size: 0.8rem;
621
+ background-color: #f1f5f9;
622
+ padding: 0.5rem;
623
+ border-radius: 4px;
624
+ max-height: 150px;
625
+ overflow-y: auto;
626
+ margin: 0;
627
+ list-style: none;
628
+ }
629
+
630
+ .integrity-file-list li {
631
+ padding: 0.125rem 0;
632
+ word-break: break-all;
633
+ }
634
+
635
+ .integrity-file-list li:not(:last-child) {
636
+ border-bottom: 1px solid #e2e8f0;
637
+ }
638
+
639
+ .integrity-more-files {
640
+ font-style: italic;
641
+ color: var(--secondary-color);
642
+ font-size: 0.8rem;
643
+ margin-top: 0.25rem;
644
+ }
645
+
646
+ /* Issues container header */
647
+ #integrity-issues-container h3 {
648
+ font-size: 1rem;
649
+ font-weight: 500;
650
+ color: var(--text-color);
651
+ margin-bottom: 0.5rem;
652
+ }
653
+
654
+ /* ========================================
655
+ Configuration Health Section Styles
656
+ ======================================== */
657
+
658
+ /* Loading and error states */
659
+ .config-health-loading,
660
+ .config-health-error {
661
+ padding: 1rem;
662
+ text-align: center;
663
+ color: var(--secondary-color);
664
+ }
665
+
666
+ .config-health-error {
667
+ color: var(--error-color);
668
+ background-color: #fef2f2;
669
+ border: 1px solid #fecaca;
670
+ border-radius: 0.25rem;
671
+ }
672
+
673
+ /* Summary statistics */
674
+ .health-stats {
675
+ display: flex;
676
+ gap: 2rem;
677
+ margin-bottom: 1.5rem;
678
+ padding: 1rem;
679
+ background-color: #f9fafb;
680
+ border-radius: 0.25rem;
681
+ }
682
+
683
+ .health-stat {
684
+ display: flex;
685
+ flex-direction: column;
686
+ align-items: center;
687
+ }
688
+
689
+ .health-stat-label {
690
+ font-size: 0.875rem;
691
+ color: var(--secondary-color);
692
+ margin-bottom: 0.25rem;
693
+ }
694
+
695
+ .health-stat-value {
696
+ font-size: 1.5rem;
697
+ font-weight: 600;
698
+ color: var(--text-color);
699
+ }
700
+
701
+ .health-stat-value.config-healthy {
702
+ color: #16a34a;
703
+ }
704
+
705
+ .health-stat-value.config-errors {
706
+ color: var(--error-color);
707
+ }
708
+
709
+ .health-stat-value.config-warnings {
710
+ color: #f59e0b;
711
+ }
712
+
713
+ /* All good state */
714
+ .config-health-all-good {
715
+ padding: 1.5rem;
716
+ text-align: center;
717
+ background-color: #f0fdf4;
718
+ border: 1px solid #bbf7d0;
719
+ border-radius: 0.25rem;
720
+ color: #166534;
721
+ }
722
+
723
+ .config-health-all-good p {
724
+ margin: 0;
725
+ font-weight: 500;
726
+ }
727
+
728
+ /* Config health table */
729
+ .config-health-table {
730
+ width: 100%;
731
+ border-collapse: collapse;
732
+ margin-top: 1rem;
733
+ }
734
+
735
+ .config-health-table th,
736
+ .config-health-table td {
737
+ padding: 0.75rem;
738
+ text-align: left;
739
+ border-bottom: 1px solid var(--border-color);
740
+ }
741
+
742
+ .config-health-table th {
743
+ background-color: #f9fafb;
744
+ font-weight: 500;
745
+ font-size: 0.875rem;
746
+ color: var(--secondary-color);
747
+ }
748
+
749
+ .config-health-table td {
750
+ font-size: 0.875rem;
751
+ vertical-align: top;
752
+ }
753
+
754
+ .config-health-table tbody tr:hover {
755
+ background-color: #f9fafb;
756
+ }
757
+
758
+ /* Status badge styling */
759
+ .config-status-badge {
760
+ display: inline-block;
761
+ padding: 0.25rem 0.5rem;
762
+ border-radius: 0.25rem;
763
+ font-size: 0.75rem;
764
+ font-weight: 500;
765
+ text-transform: uppercase;
766
+ }
767
+
768
+ .config-status-badge.status-missing {
769
+ background-color: #fef2f2;
770
+ color: #991b1b;
771
+ }
772
+
773
+ .config-status-badge.status-invalid {
774
+ background-color: #fef2f2;
775
+ color: #991b1b;
776
+ }
777
+
778
+ /* Dismiss button styling */
779
+ .dismiss-warning-btn {
780
+ background-color: transparent;
781
+ border: 1px solid var(--border-color);
782
+ border-radius: 0.25rem;
783
+ padding: 0.375rem 0.75rem;
784
+ font-size: 0.875rem;
785
+ color: var(--secondary-color);
786
+ cursor: pointer;
787
+ transition: all 0.2s ease;
788
+ }
789
+
790
+ .dismiss-warning-btn:hover {
791
+ background-color: #f9fafb;
792
+ border-color: var(--secondary-color);
793
+ color: var(--text-color);
794
+ }
795
+
796
+ .dismiss-warning-btn:active {
797
+ background-color: #f3f4f6;
798
+ }
799
+
800
+ .dismiss-warning-btn:disabled {
801
+ opacity: 0.5;
802
+ cursor: not-allowed;
803
+ }
804
+
805
+ /* Config errors/warnings container headers */
806
+ #config-errors-container h3,
807
+ #config-warnings-container h3 {
808
+ font-size: 1rem;
809
+ font-weight: 500;
810
+ color: var(--text-color);
811
+ margin-bottom: 0.5rem;
812
+ margin-top: 1.5rem;
813
+ }
814
+
815
+ #config-errors-container h3 {
816
+ color: var(--error-color);
817
+ }
818
+
819
+ #config-warnings-container h3 {
820
+ color: #f59e0b;
821
+ }
822
+
823
+ /* ========================================
824
+ Pinecone Data Integrity Section Styles
825
+ ======================================== */
826
+
827
+ /* Actions container with button and last run text */
828
+ .pinecone-health-actions {
829
+ display: flex;
830
+ align-items: center;
831
+ gap: 1rem;
832
+ margin-bottom: 1rem;
833
+ }
834
+
835
+ .last-run-text {
836
+ font-size: 0.875rem;
837
+ color: var(--secondary-color);
838
+ }
839
+
840
+ /* Loading and error states */
841
+ .pinecone-health-loading,
842
+ .pinecone-health-error {
843
+ padding: 1rem;
844
+ text-align: center;
845
+ color: var(--secondary-color);
846
+ }
847
+
848
+ .pinecone-health-error {
849
+ color: var(--error-color);
850
+ background-color: #fef2f2;
851
+ border: 1px solid #fecaca;
852
+ border-radius: 0.25rem;
853
+ }
854
+
855
+ /* No results state */
856
+ .pinecone-health-no-results {
857
+ padding: 1rem;
858
+ text-align: center;
859
+ color: var(--secondary-color);
860
+ background-color: #f9fafb;
861
+ border: 1px solid var(--border-color);
862
+ border-radius: 0.25rem;
863
+ }
864
+
865
+ .pinecone-health-no-results p {
866
+ margin: 0;
867
+ }
868
+
869
+ /* Status container and badge */
870
+ .pinecone-health-status-container {
871
+ display: flex;
872
+ align-items: center;
873
+ gap: 0.5rem;
874
+ margin-bottom: 1rem;
875
+ }
876
+
877
+ .pinecone-health-status {
878
+ display: inline-block;
879
+ padding: 0.25rem 0.75rem;
880
+ border-radius: 0.25rem;
881
+ font-size: 0.75rem;
882
+ font-weight: 600;
883
+ text-transform: uppercase;
884
+ }
885
+
886
+ .pinecone-health-status.status-healthy {
887
+ background-color: #dcfce7;
888
+ color: #166534;
889
+ }
890
+
891
+ .pinecone-health-status.status-error {
892
+ background-color: #fef2f2;
893
+ color: #991b1b;
894
+ }
895
+
896
+ .pinecone-health-status.status-warning {
897
+ background-color: #fef3c7;
898
+ color: #92400e;
899
+ }
900
+
901
+ .pinecone-health-status.status-running {
902
+ background-color: #dbeafe;
903
+ color: #1e40af;
904
+ }
905
+
906
+ /* Summary statistics */
907
+ .pinecone-health-summary {
908
+ display: flex;
909
+ gap: 2rem;
910
+ margin-bottom: 1.5rem;
911
+ padding: 1rem;
912
+ background-color: #f9fafb;
913
+ border-radius: 0.25rem;
914
+ flex-wrap: wrap;
915
+ }
916
+
917
+ .pinecone-health-stat {
918
+ display: flex;
919
+ flex-direction: column;
920
+ align-items: center;
921
+ min-width: 80px;
922
+ }
923
+
924
+ .pinecone-stat-label {
925
+ font-size: 0.875rem;
926
+ color: var(--secondary-color);
927
+ margin-bottom: 0.25rem;
928
+ }
929
+
930
+ .pinecone-stat-value {
931
+ font-size: 1.5rem;
932
+ font-weight: 600;
933
+ color: var(--text-color);
934
+ }
935
+
936
+ .pinecone-stat-value.stat-healthy {
937
+ color: #16a34a;
938
+ }
939
+
940
+ .pinecone-stat-value.stat-error {
941
+ color: var(--error-color);
942
+ }
943
+
944
+ /* All good state */
945
+ .pinecone-health-all-good {
946
+ padding: 1.5rem;
947
+ text-align: center;
948
+ background-color: #f0fdf4;
949
+ border: 1px solid #bbf7d0;
950
+ border-radius: 0.25rem;
951
+ color: #166534;
952
+ }
953
+
954
+ .pinecone-health-all-good p {
955
+ margin: 0;
956
+ font-weight: 500;
957
+ }
958
+
959
+ /* Pinecone health table (shared styles for namespace and failures tables) */
960
+ .pinecone-health-table {
961
+ width: 100%;
962
+ border-collapse: collapse;
963
+ margin-top: 1rem;
964
+ table-layout: fixed;
965
+ }
966
+
967
+ .pinecone-health-table th,
968
+ .pinecone-health-table td {
969
+ padding: 0.75rem;
970
+ text-align: left;
971
+ border-bottom: 1px solid var(--border-color);
972
+ }
973
+
974
+ .pinecone-health-table th {
975
+ background-color: #f9fafb;
976
+ font-weight: 500;
977
+ font-size: 0.875rem;
978
+ color: var(--secondary-color);
979
+ }
980
+
981
+ .pinecone-health-table td {
982
+ font-size: 0.875rem;
983
+ vertical-align: middle;
984
+ word-wrap: break-word;
985
+ }
986
+
987
+ .pinecone-health-table tbody tr:hover {
988
+ background-color: #f9fafb;
989
+ }
990
+
991
+ /* Namespace results table column widths */
992
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(1),
993
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(1) {
994
+ width: 25%;
995
+ }
996
+
997
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(2),
998
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(2) {
999
+ width: 15%;
1000
+ }
1001
+
1002
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(3),
1003
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(3),
1004
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(4),
1005
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(4),
1006
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(5),
1007
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(5) {
1008
+ width: 12%;
1009
+ text-align: right;
1010
+ }
1011
+
1012
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(6),
1013
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(6) {
1014
+ width: 12%;
1015
+ text-align: center;
1016
+ }
1017
+
1018
+ /* Sample failures table column widths */
1019
+ #pinecone-failures-container .pinecone-health-table th:nth-child(1),
1020
+ #pinecone-failures-container .pinecone-health-table td:nth-child(1) {
1021
+ width: 20%;
1022
+ }
1023
+
1024
+ #pinecone-failures-container .pinecone-health-table th:nth-child(2),
1025
+ #pinecone-failures-container .pinecone-health-table td:nth-child(2) {
1026
+ width: 15%;
1027
+ }
1028
+
1029
+ #pinecone-failures-container .pinecone-health-table th:nth-child(3),
1030
+ #pinecone-failures-container .pinecone-health-table td:nth-child(3) {
1031
+ width: 30%;
1032
+ font-family: monospace;
1033
+ font-size: 0.8rem;
1034
+ }
1035
+
1036
+ #pinecone-failures-container .pinecone-health-table th:nth-child(4),
1037
+ #pinecone-failures-container .pinecone-health-table td:nth-child(4) {
1038
+ width: 35%;
1039
+ }
1040
+
1041
+ /* Match indicator */
1042
+ .pinecone-match-badge {
1043
+ display: inline-block;
1044
+ padding: 0.125rem 0.5rem;
1045
+ border-radius: 0.25rem;
1046
+ font-size: 0.75rem;
1047
+ font-weight: 500;
1048
+ }
1049
+
1050
+ .pinecone-match-badge.match-yes {
1051
+ background-color: #dcfce7;
1052
+ color: #166534;
1053
+ }
1054
+
1055
+ .pinecone-match-badge.match-no {
1056
+ background-color: #fef2f2;
1057
+ color: #991b1b;
1058
+ }
1059
+
1060
+ /* Container headers */
1061
+ #pinecone-namespace-container h3,
1062
+ #pinecone-failures-container h3 {
1063
+ font-size: 1rem;
1064
+ font-weight: 500;
1065
+ color: var(--text-color);
1066
+ margin-bottom: 0.5rem;
1067
+ margin-top: 1.5rem;
1068
+ }
1069
+
1070
+ #pinecone-failures-container h3 {
1071
+ color: var(--error-color);
1072
+ }
1073
+
1074
+ /* ========================================
1075
+ Install Status Review Panel (BAPI-384)
1076
+ ======================================== */
1077
+
1078
+ /* Intro paragraph below the page title */
1079
+ .setup-detail-intro {
1080
+ margin: 0.5rem 0 1.5rem;
1081
+ font-size: 0.9rem;
1082
+ color: var(--secondary-color);
1083
+ line-height: 1.5;
1084
+ }
1085
+
1086
+ /* Top-level review panel; matches the drawer/panel border + radius + spacing */
1087
+ .install-status-panel {
1088
+ border: 1px solid var(--border-color);
1089
+ border-radius: 0.25rem;
1090
+ padding: 1rem;
1091
+ margin-bottom: 2rem;
1092
+ background-color: #f9fafb;
1093
+ }
1094
+
1095
+ .install-status-panel-title {
1096
+ font-size: 1rem;
1097
+ font-weight: 500;
1098
+ color: var(--text-color);
1099
+ margin-bottom: 0.75rem;
1100
+ }
1101
+
1102
+ /* Compact set/unset counts */
1103
+ .install-status-summary {
1104
+ display: flex;
1105
+ flex-wrap: wrap;
1106
+ align-items: center;
1107
+ gap: 1rem;
1108
+ font-size: 0.875rem;
1109
+ color: var(--secondary-color);
1110
+ margin-bottom: 1rem;
1111
+ }
1112
+
1113
+ .install-status-summary-count {
1114
+ font-weight: 600;
1115
+ color: var(--text-color);
1116
+ }
1117
+
1118
+ /* Manifest-driven group list */
1119
+ .install-status-groups {
1120
+ display: flex;
1121
+ flex-direction: column;
1122
+ gap: 1rem;
1123
+ }
1124
+
1125
+ .install-status-group {
1126
+ border-top: 1px solid var(--border-color);
1127
+ padding-top: 0.75rem;
1128
+ }
1129
+
1130
+ .install-status-group-title {
1131
+ font-size: 0.875rem;
1132
+ font-weight: 500;
1133
+ color: var(--text-color);
1134
+ margin-bottom: 0.5rem;
1135
+ }
1136
+
1137
+ .install-status-field-row {
1138
+ display: flex;
1139
+ flex-wrap: wrap;
1140
+ align-items: center;
1141
+ gap: 0.5rem;
1142
+ padding: 0.375rem 0;
1143
+ font-size: 0.875rem;
1144
+ }
1145
+
1146
+ .install-status-field-name {
1147
+ font-weight: 500;
1148
+ color: var(--text-color);
1149
+ }
1150
+
1151
+ .install-status-field-value {
1152
+ color: var(--secondary-color);
1153
+ word-break: break-word;
1154
+ }
1155
+
1156
+ .install-status-field-confirm {
1157
+ font-size: 0.75rem;
1158
+ font-style: italic;
1159
+ color: #92400e;
1160
+ }
1161
+
1162
+ /* Unavailable / error area */
1163
+ .install-status-error {
1164
+ padding: 0.75rem 1rem;
1165
+ font-size: 0.875rem;
1166
+ color: var(--secondary-color);
1167
+ background-color: #f9fafb;
1168
+ border: 1px solid var(--border-color);
1169
+ border-radius: 0.25rem;
1170
+ }
1171
+
1172
+ /* Base status badge — always pairs color with text, never color alone */
1173
+ .install-status-badge {
1174
+ display: inline-block;
1175
+ padding: 0.125rem 0.5rem;
1176
+ border-radius: 0.25rem;
1177
+ font-size: 0.75rem;
1178
+ font-weight: 500;
1179
+ line-height: 1.4;
1180
+ white-space: nowrap;
1181
+ }
1182
+
1183
+ .install-status-badge.status-set {
1184
+ background-color: #dcfce7;
1185
+ color: #166534;
1186
+ }
1187
+
1188
+ .install-status-badge.status-unset {
1189
+ background-color: #fef3c7;
1190
+ color: #92400e;
1191
+ }
1192
+
1193
+ .install-status-badge.status-loading {
1194
+ background-color: #f1f5f9;
1195
+ color: var(--secondary-color);
1196
+ }
1197
+
1198
+ .install-status-badge.status-unavailable {
1199
+ background-color: #f1f5f9;
1200
+ color: var(--secondary-color);
1201
+ }
1202
+
1203
+ /* Inline badge slot next to a field label */
1204
+ .install-status-badge-slot {
1205
+ display: inline-flex;
1206
+ align-items: center;
1207
+ margin-left: 6px;
1208
+ vertical-align: middle;
1209
+ }
1210
+
1211
+ /* Keyboard-focusable edit affordance — matches existing link/button affordances */
1212
+ .install-status-edit {
1213
+ background: none;
1214
+ border: none;
1215
+ padding: 0;
1216
+ font-size: 0.8rem;
1217
+ font-weight: 500;
1218
+ color: var(--primary-color, #2563eb);
1219
+ text-decoration: underline;
1220
+ cursor: pointer;
1221
+ }
1222
+
1223
+ .install-status-edit:hover {
1224
+ text-decoration: none;
1225
+ }
1226
+
1227
+ .install-status-edit:focus-visible {
1228
+ outline: 2px solid var(--primary-color, #2563eb);
1229
+ outline-offset: 2px;
1230
+ border-radius: 0.25rem;
1231
+ }
1232
+
1233
+ /* Mobile: keep labels/badges/edit controls from crowding the controls */
1234
+ @media (max-width: 600px) {
1235
+ .install-status-summary {
1236
+ gap: 0.5rem;
1237
+ }
1238
+
1239
+ .install-status-field-row {
1240
+ flex-direction: column;
1241
+ align-items: flex-start;
1242
+ }
1243
+
1244
+ .install-status-badge-slot {
1245
+ margin-left: 0;
1246
+ margin-top: 0.25rem;
1247
+ }
1248
+ }
1249
+
1250
+
1251
+ /*!********************************************************************************************************!*\
1252
+ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./src/css/public-pages.css ***!
1253
+ \********************************************************************************************************/
1254
+ /* Public-page styling for the homepage and the legal placeholder pages.
1255
+ Class-scoped only — no overrides of body, :root, .hidden, or form elements. */
1256
+
1257
+ .public-page-header {
1258
+ display: flex;
1259
+ align-items: center;
1260
+ justify-content: flex-start;
1261
+ padding: 1rem 0;
1262
+ margin-bottom: 1.5rem;
1263
+ border-bottom: 1px solid var(--border-color);
1264
+ }
1265
+
1266
+ .public-page-header a {
1267
+ display: inline-flex;
1268
+ align-items: center;
1269
+ text-decoration: none;
1270
+ color: inherit;
1271
+ }
1272
+
1273
+ .public-page-logo {
1274
+ height: auto;
1275
+ max-width: 240px;
1276
+ width: 100%;
1277
+ display: block;
1278
+ }
1279
+
1280
+ @media (max-width: 480px) {
1281
+ .public-page-logo {
1282
+ max-width: 180px;
1283
+ }
1284
+ }
1285
+
1286
+ .public-page-hero {
1287
+ padding: 2rem 0 1.5rem;
1288
+ }
1289
+
1290
+ .public-page-hero h1 {
1291
+ font-size: 1.75rem;
1292
+ font-weight: 600;
1293
+ color: var(--text-color);
1294
+ margin-bottom: 1rem;
1295
+ }
1296
+
1297
+ .public-page-copy {
1298
+ font-size: 1rem;
1299
+ color: var(--text-color);
1300
+ line-height: 1.6;
1301
+ }
1302
+
1303
+ .public-page-copy p {
1304
+ margin-bottom: 0.75rem;
1305
+ }
1306
+
1307
+ .public-page-actions {
1308
+ margin-top: 1.5rem;
1309
+ display: flex;
1310
+ gap: 0.75rem;
1311
+ flex-wrap: wrap;
1312
+ }
1313
+
1314
+ .public-page-actions a {
1315
+ text-decoration: none;
1316
+ display: inline-block;
1317
+ }
1318
+
1319
+ .public-page-footer {
1320
+ margin-top: 3rem;
1321
+ padding-top: 1.5rem;
1322
+ border-top: 1px solid var(--border-color);
1323
+ color: var(--secondary-color);
1324
+ font-size: 0.875rem;
1325
+ }
1326
+
1327
+ .public-page-footer-nav {
1328
+ display: flex;
1329
+ gap: 1.5rem;
1330
+ flex-wrap: wrap;
1331
+ }
1332
+
1333
+ .public-page-footer-nav a {
1334
+ color: var(--secondary-color);
1335
+ text-decoration: none;
1336
+ }
1337
+
1338
+ .public-page-footer-nav a:hover {
1339
+ color: var(--primary-color);
1340
+ text-decoration: underline;
1341
+ }
1342
+
1343
+ .legal-page-content {
1344
+ max-width: 800px;
1345
+ background-color: var(--surface-color);
1346
+ border-radius: 0.5rem;
1347
+ padding: 2rem;
1348
+ box-shadow: var(--box-shadow);
1349
+ }
1350
+
1351
+ .legal-page-content h1 {
1352
+ font-size: 1.75rem;
1353
+ font-weight: 600;
1354
+ color: var(--text-color);
1355
+ margin-bottom: 0.5rem;
1356
+ }
1357
+
1358
+ .legal-page-content .last-updated {
1359
+ color: var(--secondary-color);
1360
+ font-size: 0.875rem;
1361
+ margin-bottom: 1.5rem;
1362
+ }
1363
+
1364
+ .legal-section {
1365
+ margin-bottom: 1.5rem;
1366
+ }
1367
+
1368
+ .legal-section h2 {
1369
+ font-size: 1.25rem;
1370
+ font-weight: 600;
1371
+ color: var(--text-color);
1372
+ margin-bottom: 0.5rem;
1373
+ }
1374
+
1375
+ .legal-section p {
1376
+ color: var(--text-color);
1377
+ line-height: 1.6;
1378
+ margin-bottom: 0.75rem;
1379
+ }
1380
+
1381
+ /*!**********************************************************************************************************!*\
1382
+ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./src/css/project-detail.css ***!
1383
+ \**********************************************************************************************************/
1384
+ /* src/css/project-detail.css */
1385
+
1386
+ /* Collapsible drawers specific to Project Detail View */
1387
+ .collapsible-drawers {
1388
+ margin-bottom: 2rem;
1389
+ }
1390
+
1391
+ .drawer {
1392
+ border: 1px solid var(--border-color);
1393
+ border-radius: 0.25rem;
1394
+ margin-bottom: 1rem;
1395
+ overflow: hidden;
1396
+ }
1397
+
1398
+ .drawer-header {
1399
+ display: flex;
1400
+ justify-content: space-between;
1401
+ align-items: center;
1402
+ padding: 1rem;
1403
+ background-color: #f9fafb;
1404
+ cursor: pointer;
1405
+ }
1406
+
1407
+ .drawer-header h2 {
1408
+ font-size: 1rem;
1409
+ font-weight: 500;
1410
+ }
1411
+
1412
+ .toggle-drawer {
1413
+ background: none;
1414
+ border: none;
1415
+ font-size: 1rem;
1416
+ cursor: pointer;
1417
+ transition: transform var(--drawer-transition);
1418
+ }
1419
+
1420
+ .drawer-content {
1421
+ padding: 1rem;
1422
+ border-top: 1px solid var(--border-color);
1423
+ /* Visibility is controlled solely by the global `.hidden` class (BAPI-301);
1424
+ `.expanded` is reserved for header/glyph styling. The shared drawer helper
1425
+ sets the ▲/▼ glyph text directly, so no CSS rotation is applied. */
1426
+ }
1427
+
1428
+ /* Save button container specific to Project Detail View */
1429
+ .save-container {
1430
+ display: flex;
1431
+ justify-content: center;
1432
+ margin-top: 2rem;
1433
+ }
1434
+
1435
+ .save-container .btn {
1436
+ padding: 0.75rem 1.5rem;
1437
+ font-size: 1rem;
1438
+ }
1439
+
1440
+ /* Static text display (like project path) */
1441
+ .form-static-text {
1442
+ background-color: var(--background-color);
1443
+ padding: 0.5rem;
1444
+ border: 1px solid var(--border-color);
1445
+ border-radius: 0.25rem;
1446
+ font-family: monospace; /* Or choose appropriate font */
1447
+ color: var(--secondary-color);
1448
+ margin-top: 0.5rem; /* Align with inputs */
1449
+ word-break: break-all; /* Prevent long paths from breaking layout */
1450
+ }
1451
+
1452
+ /* Header title specific to this page */
1453
+ .header-title {
1454
+ font-size: 1.2rem;
1455
+ font-weight: 600;
1456
+ color: var(--text-color);
1457
+ }
1458
+
1459
+ /* Explain Link Styling */
1460
+ .explain-link {
1461
+ margin-left: 0.5rem;
1462
+ color: var(--primary-color);
1463
+ text-decoration: none;
1464
+ font-weight: bold;
1465
+ }
1466
+
1467
+ .explain-link:hover {
1468
+ text-decoration: underline;
1469
+ }
1470
+
1471
+ .explanation-content {
1472
+ margin-top: 0.5rem;
1473
+ padding: 0.75rem;
1474
+ background-color: #eef2ff; /* Light indigo background */
1475
+ border-left: 4px solid var(--primary-color);
1476
+ font-size: 0.875rem;
1477
+ color: #374151; /* Gray-700 */
1478
+ border-radius: 0 0.25rem 0.25rem 0; /* Slight rounding */
1479
+ flex-basis: 100%;
1480
+ width: 100%;
1481
+ }
1482
+
1483
+ .project-card-actions {
1484
+ display: flex;
1485
+ justify-content: space-between;
1486
+ align-items: center;
1487
+ }
1488
+
1489
+ /* Explanation link and content styles */
1490
+ .explain-link {
1491
+ display: inline-block;
1492
+ margin-left: 6px;
1493
+ padding: 1px 6px;
1494
+ font-size: 0.8em;
1495
+ font-weight: bold;
1496
+ color: #fff;
1497
+ background-color: #6c757d; /* Bootstrap secondary color */
1498
+ border-radius: 50%;
1499
+ text-decoration: none;
1500
+ cursor: pointer;
1501
+ vertical-align: middle; /* Align with the label text */
1502
+ line-height: 1.2;
1503
+ }
1504
+
1505
+ .explain-link:hover {
1506
+ background-color: #444;
1507
+ text-decoration: none;
1508
+ }
1509
+
1510
+ .explanation-content {
1511
+ /* Base styling only; visibility is toggled via the .hidden class so the JS
1512
+ can show/hide help without inline display mutations. */
1513
+ margin-top: 8px;
1514
+ padding: 10px;
1515
+ border: 1px solid #ced4da; /* Light grey border */
1516
+ border-radius: 4px;
1517
+ background-color: #f8f9fa; /* Light background */
1518
+ font-size: 0.9em;
1519
+ color: #495057;
1520
+ line-height: 1.4;
1521
+ }
1522
+
1523
+ /* The shared setup-detail.css defines a global `.explanation-content { display:
1524
+ none }` that also lands in the bundled stylesheet. Scope the visible/hidden
1525
+ states to this page's container so they win deterministically regardless of
1526
+ bundle order, while leaving the setup-detail page's own behavior untouched.
1527
+ The .hidden variant has higher specificity so it always hides when present. */
1528
+ #project-detail-container .explanation-content {
1529
+ display: block;
1530
+ }
1531
+
1532
+ #project-detail-container .explanation-content.hidden {
1533
+ display: none;
1534
+ }
1535
+
1536
+ /* Added styles for JSON input textarea */
1537
+ .code-input {
1538
+ font-family: 'Courier New', Courier, monospace;
1539
+ border: 1px solid var(--border-color);
1540
+ border-radius: 0.25rem;
1541
+ padding: 0.75rem;
1542
+ font-size: 0.9rem;
1543
+ line-height: 1.4;
1544
+ width: 100%; /* Ensure it takes full width */
1545
+ }
1546
+
1547
+ /* Add styles for input validation feedback */
1548
+ .form-error {
1549
+ color: #dc3545; /* Bootstrap danger color */
1550
+ font-size: 0.875em;
1551
+ margin-top: 0.25rem;
1552
+ display: none; /* Hide by default */
1553
+ }
1554
+
1555
+ input.input-error,
1556
+ textarea.input-error,
1557
+ select.input-error {
1558
+ border-color: #dc3545;
1559
+ box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); /* Optional: Add a glow */
1560
+ }
1561
+
1562
+ /* Ensure error messages are shown when they have content */
1563
+ .form-error:not(:empty) {
1564
+ display: block;
1565
+ }
1566
+
1567
+ /* Added styles for validation error messages */
1568
+ .form-error {
1569
+ color: var(--error-color);
1570
+ font-size: 0.875rem;
1571
+ margin-top: 0.5rem;
1572
+ display: none; /* Hidden by default */
1573
+ }
1574
+
1575
+ .form-error.visible {
1576
+ display: block; /* Visible when needed */
1577
+ }
1578
+
1579
+ /* MCP Validation Manuals selector
1580
+ Lay each manual out on its own row with clear spacing between the checkbox and
1581
+ its label. JS-emitted classes (.mcp-doc-option/.mcp-doc-checkbox/.mcp-doc-label)
1582
+ are only styled here — never renamed. */
1583
+ .mcp-docs-checkbox-list {
1584
+ display: flex;
1585
+ flex-direction: column;
1586
+ gap: 0.5rem;
1587
+ margin-top: 0.5rem;
1588
+ }
1589
+
1590
+ .mcp-doc-option {
1591
+ display: flex;
1592
+ align-items: center;
1593
+ gap: 0.5rem;
1594
+ line-height: 1.4;
1595
+ cursor: pointer;
1596
+ }
1597
+
1598
+ .mcp-doc-checkbox {
1599
+ margin: 0; /* drop inconsistent default checkbox margins */
1600
+ flex-shrink: 0; /* keep the checkbox from shrinking next to long labels */
1601
+ }
1602
+
1603
+ .mcp-doc-label {
1604
+ /* Spacing comes from the parent's gap; keep the label inline and readable. */
1605
+ display: inline;
1606
+ }
1607
+
1608
+ .mcp-docs-empty-state {
1609
+ margin-top: 0.5rem;
1610
+ padding: 0.5rem 0.75rem;
1611
+ border: 1px solid var(--border-color);
1612
+ border-radius: 0.25rem;
1613
+ color: var(--secondary-color);
1614
+ font-size: 0.875rem;
1615
+ }
1616
+
1617
+ /* --- CI Follow-up sub-section (BAPI-308) --- */
1618
+ /* Page-scoped under #project-detail-container so these styles never leak to other
1619
+ Configure-page-like layouts. Uses existing semantic CSS variables. */
1620
+ #project-detail-container .ci-followup-section {
1621
+ border: 1px solid var(--border-color);
1622
+ border-radius: 0.25rem;
1623
+ padding: 0.75rem;
1624
+ margin-top: 0.5rem;
1625
+ }
1626
+
1627
+ #project-detail-container .ci-followup-controls {
1628
+ display: flex;
1629
+ flex-direction: column;
1630
+ gap: 0.75rem;
1631
+ margin-top: 0.75rem;
1632
+ }
1633
+
1634
+ #project-detail-container .ci-followup-strategy-option {
1635
+ display: block;
1636
+ margin-bottom: 0.5rem;
1637
+ }
1638
+
1639
+ /* .form-help styles all page-scoped help paragraphs (the deep-research stall
1640
+ timeout helper and the CI Follow-up strategy descriptions), not only the CI
1641
+ Follow-up sub-section. */
1642
+ #project-detail-container .form-help {
1643
+ margin: 0.25rem 0 0;
1644
+ color: var(--secondary-color);
1645
+ font-size: 0.875rem;
1646
+ }
1647
+
1648
+ #project-detail-container .ci-followup-byte-counter {
1649
+ margin-top: 0.25rem;
1650
+ color: var(--secondary-color);
1651
+ font-size: 0.8125rem;
1652
+ }
1653
+
1654
+ #project-detail-container .ci-followup-byte-counter.over-limit {
1655
+ color: var(--error-color);
1656
+ }
1657
+
1658
+ /* BAPI-355: low-emphasis grouping for the TDD/FSD document-format controls.
1659
+ Keeps the existing drawer rhythm (form-group spacing, textarea readability,
1660
+ focus states inherited from the base textarea rules) while visually grouping
1661
+ the two document-format textareas under a shared intro paragraph. */
1662
+ #project-detail-container .form-group-document-format {
1663
+ border-left: 3px solid var(--border-color);
1664
+ padding-left: 0.75rem;
1665
+ }
1666
+
1667
+ #project-detail-container .document-format-help {
1668
+ margin: 0 0 0.5rem;
1669
+ color: var(--secondary-color);
1670
+ font-size: 0.875rem;
1671
+ line-height: 1.4;
1672
+ }
1673
+ /*!*************************************************************************************************************!*\
1674
+ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./src/css/optimize_analysis.css ***!
1675
+ \*************************************************************************************************************/
1676
+ /* Code Analysis Styling */
1677
+
1678
+ .hidden {
1679
+ display: none !important;
1680
+ }
1681
+
1682
+ .analysis-section {
1683
+ margin-bottom: 2rem;
1684
+ padding-bottom: 1.5rem;
1685
+ border-bottom: 1px solid var(--border-color);
1686
+ }
1687
+
1688
+ #build-section {
1689
+ padding-top: 2rem;
1690
+ }
1691
+
1692
+ .analysis-section:last-child {
1693
+ border-bottom: none;
1694
+ }
1695
+
1696
+ .analysis-section h4 {
1697
+ margin-bottom: 1rem;
1698
+ font-size: 1.1rem;
1699
+ font-weight: 600;
1700
+ }
1701
+
1702
+ .analysis-info-label {
1703
+ margin-bottom: 10px;
1704
+ font-style: italic;
1705
+ color: #555;
1706
+ line-height: 1.5;
1707
+ }
1708
+
1709
+ .reanalyze-container {
1710
+ margin-top: 10px;
1711
+ font-size: 0.9em;
1712
+ }
1713
+
1714
+ .reanalyze-container p {
1715
+ margin: 0;
1716
+ }
1717
+
1718
+ .reanalyze-container a {
1719
+ color: var(--primary-color);
1720
+ text-decoration: none;
1721
+ font-weight: 500;
1722
+ }
1723
+
1724
+ .reanalyze-container a:hover {
1725
+ text-decoration: underline;
1726
+ }
1727
+
1728
+ .code-analysis {
1729
+ margin-top: 2rem;
1730
+ padding: 1rem 0;
1731
+ border-top: 1px solid var(--border-color);
1732
+ }
1733
+
1734
+ .code-analysis h3 {
1735
+ margin-bottom: 1rem;
1736
+ font-size: 1.1rem;
1737
+ font-weight: 600;
1738
+ }
1739
+
1740
+ .code-analysis form {
1741
+ display: flex;
1742
+ flex-direction: column;
1743
+ gap: 1rem;
1744
+ margin-bottom: 1rem;
1745
+ }
1746
+
1747
+ .code-analysis form > div {
1748
+ display: flex;
1749
+ flex-direction: column;
1750
+ gap: 0.25rem;
1751
+ }
1752
+
1753
+ .code-analysis label {
1754
+ font-weight: 500;
1755
+ color: var(--text-color);
1756
+ }
1757
+
1758
+ .code-analysis select,
1759
+ .code-analysis textarea {
1760
+ padding: 0.5rem;
1761
+ border: 1px solid var(--border-color);
1762
+ border-radius: 0.25rem;
1763
+ font-family: inherit;
1764
+ }
1765
+
1766
+ .code-analysis select:focus,
1767
+ .code-analysis textarea:focus {
1768
+ outline: none;
1769
+ border-color: var(--primary-color);
1770
+ box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
1771
+ }
1772
+
1773
+ .status-message {
1774
+ margin-top: 0.5rem;
1775
+ font-size: 0.875rem;
1776
+ padding: 0.5rem;
1777
+ border-radius: 0.25rem;
1778
+ }
1779
+
1780
+ .status-message.processing {
1781
+ background-color: #e0f2fe;
1782
+ color: #0277bd;
1783
+ border: 1px solid #81d4fa;
1784
+ }
1785
+
1786
+ .status-message.success {
1787
+ background-color: #e8f5e8;
1788
+ color: #2e7d32;
1789
+ border: 1px solid #a5d6a7;
1790
+ }
1791
+
1792
+ .status-message.error {
1793
+ background-color: #ffebee;
1794
+ color: #c62828;
1795
+ border: 1px solid #ef9a9a;
1796
+ }
1797
+
1798
+ .textarea-wide {
1799
+ width: 100%;
1800
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1801
+ font-size: 0.875rem;
1802
+ line-height: 1.4;
1803
+ resize: vertical;
1804
+ }
1805
+
1806
+ .code-analysis button {
1807
+ align-self: flex-start;
1808
+ margin-top: 0.5rem;
1809
+ }
1810
+
1811
+ /*!****************************************************************************************************!*\
1812
+ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./src/css/optimize.css ***!
1813
+ \****************************************************************************************************/
1814
+ /* src/css/optimize.css */
1815
+
1816
+ /* Collapsible drawers specific to Optimize View */
1817
+ .collapsible-drawers {
1818
+ margin-bottom: 2rem;
1819
+ }
1820
+
1821
+ .drawer {
1822
+ border: 1px solid var(--border-color);
1823
+ border-radius: 0.25rem;
1824
+ margin-bottom: 1rem;
1825
+ overflow: hidden;
1826
+ }
1827
+
1828
+ .drawer-header {
1829
+ display: flex;
1830
+ justify-content: space-between;
1831
+ align-items: center;
1832
+ padding: 1rem;
1833
+ background-color: #f9fafb;
1834
+ cursor: pointer;
1835
+ }
1836
+
1837
+ .drawer-header h2 {
1838
+ font-size: 1rem;
1839
+ font-weight: 500;
1840
+ }
1841
+
1842
+ .toggle-drawer {
1843
+ background: none;
1844
+ border: none;
1845
+ font-size: 1rem;
1846
+ cursor: pointer;
1847
+ transition: transform var(--drawer-transition);
1848
+ }
1849
+
1850
+ .drawer-content {
1851
+ padding: 1rem;
1852
+ border-top: 1px solid var(--border-color);
1853
+ /* Visibility is controlled solely by the global `.hidden` class (BAPI-301);
1854
+ `.expanded` is reserved for header/glyph styling. The shared drawer helper
1855
+ sets the ▲/▼ glyph text directly, so no CSS rotation is applied. */
1856
+ }
1857
+
1858
+ /* Planner sub-section */
1859
+ .planner-section {
1860
+ display: flex;
1861
+ flex-direction: column;
1862
+ gap: 1rem;
1863
+ margin-top: 1rem;
1864
+ }
1865
+
1866
+ select[multiple] {
1867
+ min-height: 180px;
1868
+ border: 1px solid var(--border-color);
1869
+ border-radius: 0.25rem;
1870
+ }
1871
+
1872
+ /* Label styling */
1873
+ label {
1874
+ font-weight: 500;
1875
+ color: var(--text-color);
1876
+ margin-bottom: 0.5rem;
1877
+ display: block;
1878
+ }
1879
+
1880
+ /* ====================================================================
1881
+ * LEARN REPOSITORY STYLES
1882
+ * ==================================================================== */
1883
+ #learn-repository-section {
1884
+ * {
1885
+ margin-top: 1rem;
1886
+ }
1887
+
1888
+ padding-bottom: 2rem;
1889
+ border-bottom: 1px solid var(--border-color);
1890
+ }
1891
+
1892
+ .learn-section {
1893
+ padding-bottom: 1.5rem;
1894
+ margin-bottom: 1.5rem;
1895
+ border-bottom: 1px solid #e5e7eb;
1896
+ }
1897
+
1898
+ .learn-section:last-of-type {
1899
+ border-bottom: none;
1900
+ margin-bottom: 0;
1901
+ }
1902
+
1903
+ /* ====================================================================
1904
+ * LEARN REPOSITORY PER-SECTION STATE CLASSES (BAPI-307)
1905
+ *
1906
+ * Declarative per-section state cues. Visibility is driven ONLY by the global
1907
+ * `.hidden` class (toggled in JS by the renderer); these classes add a small
1908
+ * left-border status accent and never set display/visibility. `data-state` is
1909
+ * intentionally NOT used as a visibility mechanism, and `.hidden` is never
1910
+ * redefined here.
1911
+ * ==================================================================== */
1912
+ .learn-section.lr-state-idle {
1913
+ border-left: 3px solid var(--border-color);
1914
+ padding-left: 1rem;
1915
+ }
1916
+
1917
+ .learn-section.lr-state-running {
1918
+ border-left: 3px solid var(--primary-color);
1919
+ padding-left: 1rem;
1920
+ }
1921
+
1922
+ .learn-section.lr-state-review {
1923
+ border-left: 3px solid var(--primary-color);
1924
+ padding-left: 1rem;
1925
+ }
1926
+
1927
+ .learn-section.lr-state-draft {
1928
+ border-left: 3px solid var(--primary-color);
1929
+ padding-left: 1rem;
1930
+ }
1931
+
1932
+ .learn-section.lr-state-complete {
1933
+ border-left: 3px solid var(--text-color);
1934
+ padding-left: 1rem;
1935
+ }
1936
+
1937
+ /* The Reanalyze control is now a <button> (BAPI-307) rather than an inline
1938
+ * link; keep it left-aligned as a block action within the section actions. */
1939
+ .lr-reanalyze-link {
1940
+ display: inline-block;
1941
+ }
1942
+
1943
+ .lr-initial-mode-options {
1944
+ display: flex;
1945
+ flex-direction: row;
1946
+ gap: 1.25rem;
1947
+ align-items: center;
1948
+ }
1949
+
1950
+ .lr-initial-mode-options label {
1951
+ display: inline;
1952
+ font-weight: normal;
1953
+ }
1954
+
1955
+ .lr-in-progress-container {
1956
+ margin: 0.5rem 0 1rem;
1957
+ padding: 0.75rem 1rem;
1958
+ border: 1px solid var(--border-color);
1959
+ border-radius: 0.375rem;
1960
+ }
1961
+
1962
+ /* Horizontal separation between the reanalyze Confirm and Cancel buttons.
1963
+ * Adjacent-sibling margin keeps the existing block-level radio labels from
1964
+ * being reflowed, which a flex/gap container would do. */
1965
+ .lr-reanalyze-confirm-btn + .lr-reanalyze-cancel-btn {
1966
+ margin-left: 0.5rem;
1967
+ }
1968
+
1969
+ /* ====================================================================
1970
+ * ESTIMATOR SECTION STYLES
1971
+ * ==================================================================== */
1972
+
1973
+ #estimator-section {
1974
+ display: flex;
1975
+ flex-direction: column;
1976
+ gap: 1rem;
1977
+ }
1978
+
1979
+ #estimator-section > div {
1980
+ padding: 1rem;
1981
+ border-radius: 0.375rem;
1982
+ border: 1px solid var(--border-color);
1983
+ }
1984
+
1985
+ #estimator-optimize {
1986
+ background-color: #f0f9ff;
1987
+ border-color: #0ea5e9;
1988
+ }
1989
+
1990
+ #estimator-running {
1991
+ background-color: #fef3c7;
1992
+ border-color: #f59e0b;
1993
+ }
1994
+
1995
+ #estimator-review {
1996
+ background-color: #f0fdf4;
1997
+ border-color: #22c55e;
1998
+ }
1999
+
2000
+ #estimator-loading {
2001
+ background-color: #f3f4f6;
2002
+ border-color: var(--border-color);
2003
+ text-align: center;
2004
+ }
2005
+
2006
+ #range-editor {
2007
+ margin: 1rem 0;
2008
+ }
2009
+
2010
+ #range-json {
2011
+ width: 100%;
2012
+ min-height: 300px;
2013
+ padding: 0.75rem;
2014
+ border: 1px solid var(--border-color);
2015
+ border-radius: 0.375rem;
2016
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
2017
+ font-size: 0.875rem;
2018
+ line-height: 1.5;
2019
+ background-color: #f8fafc;
2020
+ resize: vertical;
2021
+ }
2022
+
2023
+ #range-json:focus {
2024
+ outline: none;
2025
+ border-color: var(--primary-color);
2026
+ box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.1);
2027
+ }
2028
+
2029
+ .estimator-actions {
2030
+ display: flex;
2031
+ gap: 0.5rem;
2032
+ margin-top: 1rem;
2033
+ }
2034
+
2035
+ .estimator-actions .btn {
2036
+ flex: 0 0 auto;
2037
+ }
2038
+
2039
+ /* Responsive design for estimator */
2040
+ @media (max-width: 768px) {
2041
+ #range-json {
2042
+ min-height: 200px;
2043
+ font-size: 0.75rem;
2044
+ }
2045
+
2046
+ .estimator-actions {
2047
+ flex-direction: column;
2048
+ }
2049
+
2050
+ .estimator-actions .btn {
2051
+ width: 100%;
2052
+ }
2053
+ }
2054
+
2055
+ /* Success/Error states for estimator messages */
2056
+ .estimator-message {
2057
+ padding: 0.75rem;
2058
+ border-radius: 0.375rem;
2059
+ margin-bottom: 1rem;
2060
+ }
2061
+
2062
+ .estimator-message.success {
2063
+ background-color: #dcfce7;
2064
+ color: #166534;
2065
+ border: 1px solid #22c55e;
2066
+ }
2067
+
2068
+ .estimator-message.error {
2069
+ background-color: #fef2f2;
2070
+ color: #991b1b;
2071
+ border: 1px solid #ef4444;
2072
+ }
2073
+
2074
+ .estimator-message.info {
2075
+ background-color: #eff6ff;
2076
+ color: #1e40af;
2077
+ border: 1px solid #3b82f6;
2078
+ }
2079
+
2080
+ .draft-review-container .btn + .btn {
2081
+ margin-left: 1.5rem;
2082
+ }
2083
+
2084
+ /*!***************************************************************************************************!*\
2085
+ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./src/css/globals.css ***!
2086
+ \***************************************************************************************************/
2087
+ /* Font faces */
2088
+ @font-face {
2089
+ font-family: 'Source Sans Pro';
2090
+ src: url('/public/fonts/SourceSansPro-Regular.ttf') format('truetype');
2091
+ font-weight: 400;
2092
+ font-style: normal;
2093
+ }
2094
+
2095
+ @font-face {
2096
+ font-family: 'Source Sans Pro';
2097
+ src: url('/public/fonts/SourceSansPro-Italic.ttf') format('truetype');
2098
+ font-weight: 400;
2099
+ font-style: italic;
2100
+ }
2101
+
2102
+ @font-face {
2103
+ font-family: 'Source Sans Pro';
2104
+ src: url('/public/fonts/SourceSansPro-ExtraLight.ttf') format('truetype');
2105
+ font-weight: 200;
2106
+ font-style: normal;
2107
+ }
2108
+
2109
+ @font-face {
2110
+ font-family: 'Source Sans Pro';
2111
+ src: url('/public/fonts/SourceSansPro-ExtraLightItalic.ttf') format('truetype');
2112
+ font-weight: 200;
2113
+ font-style: italic;
2114
+ }
2115
+
2116
+ @font-face {
2117
+ font-family: 'Source Sans Pro';
2118
+ src: url('/public/fonts/SourceSansPro-Light.ttf') format('truetype');
2119
+ font-weight: 300;
2120
+ font-style: normal;
2121
+ }
2122
+
2123
+ @font-face {
2124
+ font-family: 'Source Sans Pro';
2125
+ src: url('/public/fonts/SourceSansPro-LightItalic.ttf') format('truetype');
2126
+ font-weight: 300;
2127
+ font-style: italic;
2128
+ }
2129
+
2130
+ @font-face {
2131
+ font-family: 'Source Sans Pro';
2132
+ src: url('/public/fonts/SourceSansPro-SemiBold.ttf') format('truetype');
2133
+ font-weight: 600;
2134
+ font-style: normal;
2135
+ }
2136
+
2137
+ @font-face {
2138
+ font-family: 'Source Sans Pro';
2139
+ src: url('/public/fonts/SourceSansPro-SemiBoldItalic.ttf') format('truetype');
2140
+ font-weight: 600;
2141
+ font-style: italic;
2142
+ }
2143
+
2144
+ @font-face {
2145
+ font-family: 'Source Sans Pro';
2146
+ src: url('/public/fonts/SourceSansPro-Bold.ttf') format('truetype');
2147
+ font-weight: 700;
2148
+ font-style: normal;
2149
+ }
2150
+
2151
+ @font-face {
2152
+ font-family: 'Source Sans Pro';
2153
+ src: url('/public/fonts/SourceSansPro-BoldItalic.ttf') format('truetype');
2154
+ font-weight: 700;
2155
+ font-style: italic;
2156
+ }
2157
+
2158
+ @font-face {
2159
+ font-family: 'Source Sans Pro';
2160
+ src: url('/public/fonts/SourceSansPro-Black.ttf') format('truetype');
2161
+ font-weight: 900;
2162
+ font-style: normal;
2163
+ }
2164
+
2165
+ @font-face {
2166
+ font-family: 'Source Sans Pro';
2167
+ src: url('/public/fonts/SourceSansPro-BlackItalic.ttf') format('truetype');
2168
+ font-weight: 900;
2169
+ font-style: italic;
2170
+ }
2171
+
2172
+ /* Global variables */
2173
+ :root {
2174
+ --primary-color: #E2624B;
2175
+ --primary-dark: #C51616;
2176
+ --secondary-color: #6b7280;
2177
+ --light-grey: #eee;
2178
+ --secondary-button-background: #fdf4ec;
2179
+ --light-orange: #F2B27A;
2180
+ --dark-orange: #e17055;
2181
+ --background-color: #fffdf0;
2182
+ --surface-color: #ffffff;
2183
+ --text-color: #393D4E;
2184
+ --border-color: #e6e4d5;
2185
+ --error-color: #ef4444;
2186
+ --success-color: #10b981;
2187
+ --header-height: 60px;
2188
+ --box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
2189
+ }
2190
+
2191
+ /* Reset and base styles */
2192
+ * {
2193
+ margin: 0;
2194
+ padding: 0;
2195
+ box-sizing: border-box;
2196
+ }
2197
+
2198
+ body {
2199
+ font-family: 'Source Sans Pro', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
2200
+ background-color: var(--background-color);
2201
+ color: var(--text-color);
2202
+ line-height: 1.5;
2203
+ min-height: 100vh;
2204
+ padding-top: var(--header-height);
2205
+ }
2206
+
2207
+ .hidden {
2208
+ display: none !important;
2209
+ }
2210
+
2211
+ /* Button styles */
2212
+ .btn {
2213
+ cursor: pointer;
2214
+ padding: 0.75rem 2rem;
2215
+ border-radius: 4px;
2216
+ border: 1px solid transparent;
2217
+ font-size: 1rem;
2218
+ line-height: 1.25rem;
2219
+ transition: background-color 0.3s ease;
2220
+ }
2221
+
2222
+ .btn-primary {
2223
+ background-color: var(--primary-color);
2224
+ color: white;
2225
+ }
2226
+
2227
+ .btn-primary:hover {
2228
+ background-color: var(--primary-dark);
2229
+ }
2230
+
2231
+ .btn-secondary {
2232
+ background-color: var(--secondary-button-background);
2233
+ border: 1px solid var(--light-orange);
2234
+ color: #333;
2235
+ }
2236
+
2237
+ .btn-secondary:hover {
2238
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
2239
+ background-color: var(--dark-orange);
2240
+ color: white;
2241
+ }
2242
+
2243
+ .btn-sm {
2244
+ padding: 0.2rem 0.5rem;
2245
+ font-size: 0.75rem;
2246
+ }
2247
+
2248
+ .btn-danger {
2249
+ background-color: var(--error-color);
2250
+ color: white;
2251
+ }
2252
+
2253
+ .btn-danger:hover {
2254
+ background-color: #b91c1c; /* darker red for hover */
2255
+ }
2256
+
2257
+ .btn:disabled {
2258
+ background-color: #d1d5db;
2259
+ cursor: not-allowed;
2260
+ opacity: 0.6;
2261
+ }
2262
+
2263
+ /* Form element base styles */
2264
+ label {
2265
+ display: block;
2266
+ font-size: 0.875rem;
2267
+ font-weight: 500;
2268
+ margin-bottom: 0.5rem;
2269
+ }
2270
+
2271
+ input[type="text"],
2272
+ input[type="password"],
2273
+ input[type="email"],
2274
+ input[type="url"],
2275
+ input[type="number"],
2276
+ textarea {
2277
+ width: 100%;
2278
+ padding: 0.5rem;
2279
+ font-size: 1rem;
2280
+ border: 1px solid var(--border-color);
2281
+ border-radius: 0.25rem;
2282
+ background-color: #fff;
2283
+ }
2284
+
2285
+ input[type="number"] {
2286
+ width: auto;
2287
+ }
2288
+
2289
+ textarea {
2290
+ min-height: 100px;
2291
+ resize: vertical;
2292
+ }
2293
+
2294
+ .required {
2295
+ color: var(--error-color);
2296
+ }
2297
+
2298
+ /* Checkbox styling */
2299
+ .form-group.checkbox {
2300
+ display: flex;
2301
+ align-items: center;
2302
+ flex-wrap: wrap;
2303
+ }
2304
+
2305
+ .form-group.checkbox input {
2306
+ margin-right: 0.5rem;
2307
+ }
2308
+
2309
+ .form-group.checkbox label {
2310
+ margin-bottom: 0;
2311
+ }
2312
+
2313
+ /* Modal base styles (if used globally) */
2314
+ .modal {
2315
+ display: none;
2316
+ position: fixed;
2317
+ z-index: 1000;
2318
+ left: 0;
2319
+ top: 0;
2320
+ width: 100vw;
2321
+ height: 100vh;
2322
+ background: rgba(0,0,0,0.4);
2323
+ align-items: center;
2324
+ justify-content: center;
2325
+ }
2326
+
2327
+ /*!*******************************************************************************************************!*\
2328
+ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./src/css/data_health.css ***!
2329
+ \*******************************************************************************************************/
2330
+ /* src/css/data_health.css */
2331
+
2332
+ /* Collapsible drawers for Data Health View */
2333
+ .collapsible-drawers {
2334
+ margin-bottom: 2rem;
2335
+ }
2336
+
2337
+ .drawer {
2338
+ border: 1px solid var(--border-color);
2339
+ border-radius: 0.25rem;
2340
+ margin-bottom: 1rem;
2341
+ overflow: hidden;
2342
+ }
2343
+
2344
+ .drawer-header {
2345
+ display: flex;
2346
+ justify-content: space-between;
2347
+ align-items: center;
2348
+ padding: 1rem;
2349
+ background-color: #f9fafb;
2350
+ cursor: pointer;
2351
+ }
2352
+
2353
+ .drawer-header h2 {
2354
+ font-size: 1rem;
2355
+ font-weight: 500;
2356
+ }
2357
+
2358
+ .toggle-drawer {
2359
+ background: none;
2360
+ border: none;
2361
+ font-size: 1rem;
2362
+ cursor: pointer;
2363
+ transition: transform var(--drawer-transition);
2364
+ }
2365
+
2366
+ .drawer-content {
2367
+ padding: 1rem;
2368
+ border-top: 1px solid var(--border-color);
2369
+ /* Visibility is controlled solely by the global `.hidden` class (BAPI-301);
2370
+ `.expanded` is reserved for header/glyph styling. The shared drawer helper
2371
+ sets the ▲/▼ glyph text directly, so no CSS rotation is applied. */
2372
+ }
2373
+
2374
+ /* ========================================
2375
+ Parse / Learn Repository Jobs Section Styles
2376
+ ======================================== */
2377
+
2378
+ .parse-repository-jobs-section,
2379
+ .learn-repository-jobs-section {
2380
+ display: flex;
2381
+ flex-direction: column;
2382
+ gap: 1.5rem;
2383
+ }
2384
+
2385
+ /* Last-ran timestamp shown under the Update Repository action.
2386
+ Replaces a former inline style on the template. */
2387
+ .operation-last-ran {
2388
+ margin-top: 0.5rem;
2389
+ font-size: 0.875rem;
2390
+ }
2391
+
2392
+ /* Parse schedule status panel. Replaces the former inline-styled status
2393
+ blocks; state colors come from global design tokens (no hardcoded colors). */
2394
+ .parse-schedule-status {
2395
+ margin-top: 0.75rem;
2396
+ padding: 0.75rem;
2397
+ border: 1px solid var(--border-color);
2398
+ border-radius: 4px;
2399
+ font-size: 0.875rem;
2400
+ }
2401
+
2402
+ .parse-schedule-status--active {
2403
+ color: var(--success-color);
2404
+ border-color: var(--success-color);
2405
+ }
2406
+
2407
+ .parse-schedule-status--paused,
2408
+ .parse-schedule-status--empty {
2409
+ color: var(--dark-orange);
2410
+ border-color: var(--dark-orange);
2411
+ }
2412
+
2413
+ .parse-schedule-next-run {
2414
+ display: block;
2415
+ margin-top: 0.25rem;
2416
+ color: var(--text-color);
2417
+ }
2418
+
2419
+ .parse-schedule-actions {
2420
+ margin-top: 0.5rem;
2421
+ display: flex;
2422
+ gap: 0.5rem;
2423
+ }
2424
+
2425
+ .operation-row {
2426
+ display: flex;
2427
+ flex-direction: column;
2428
+ padding-bottom: 1rem;
2429
+ border-bottom: 1px solid var(--border-color);
2430
+ }
2431
+
2432
+ .operation-row:last-child {
2433
+ border-bottom: none;
2434
+ padding-bottom: 0;
2435
+ }
2436
+
2437
+ .operation-item {
2438
+ display: flex;
2439
+ flex-direction: column;
2440
+ gap: 0.5rem;
2441
+ }
2442
+
2443
+ .operation-item .btn {
2444
+ align-self: flex-start;
2445
+ }
2446
+
2447
+ .operation-label {
2448
+ font-size: 0.875rem;
2449
+ color: var(--secondary-color);
2450
+ line-height: 1.4;
2451
+ }
2452
+
2453
+ .schedule-controls {
2454
+ display: flex;
2455
+ gap: 1rem;
2456
+ margin-top: 0.5rem;
2457
+ align-items: flex-end;
2458
+ }
2459
+
2460
+ .schedule-controls .form-group {
2461
+ margin-bottom: 0;
2462
+ }
2463
+
2464
+ .schedule-controls .form-group.inline {
2465
+ display: flex;
2466
+ flex-direction: column;
2467
+ gap: 0.25rem;
2468
+ }
2469
+
2470
+ .schedule-controls .form-group.inline label {
2471
+ font-size: 0.75rem;
2472
+ color: var(--secondary-color);
2473
+ }
2474
+
2475
+ .schedule-controls .form-group.inline input,
2476
+ .schedule-controls .form-group.inline select {
2477
+ width: auto;
2478
+ min-width: 120px;
2479
+ padding: 0.375rem 0.5rem;
2480
+ font-size: 0.875rem;
2481
+ }
2482
+
2483
+ /* ========================================
2484
+ Data Integrity Section Styles
2485
+ ======================================== */
2486
+
2487
+ /* Loading and error states */
2488
+ .integrity-loading,
2489
+ .integrity-error {
2490
+ padding: 1rem;
2491
+ text-align: center;
2492
+ color: var(--secondary-color);
2493
+ }
2494
+
2495
+ .integrity-error {
2496
+ color: var(--error-color);
2497
+ background-color: #fef2f2;
2498
+ border: 1px solid #fecaca;
2499
+ border-radius: 0.25rem;
2500
+ }
2501
+
2502
+ /* Summary statistics */
2503
+ .integrity-summary {
2504
+ display: flex;
2505
+ gap: 2rem;
2506
+ margin-bottom: 1.5rem;
2507
+ padding: 1rem;
2508
+ background-color: #f9fafb;
2509
+ border-radius: 0.25rem;
2510
+ }
2511
+
2512
+ .integrity-stat {
2513
+ display: flex;
2514
+ flex-direction: column;
2515
+ align-items: center;
2516
+ }
2517
+
2518
+ .integrity-stat-label {
2519
+ font-size: 0.875rem;
2520
+ color: var(--secondary-color);
2521
+ margin-bottom: 0.25rem;
2522
+ }
2523
+
2524
+ .integrity-stat-value {
2525
+ font-size: 1.5rem;
2526
+ font-weight: 600;
2527
+ color: var(--text-color);
2528
+ }
2529
+
2530
+ .integrity-stat-value.integrity-healthy {
2531
+ color: #16a34a;
2532
+ }
2533
+
2534
+ /* Empty state */
2535
+ .integrity-empty-state {
2536
+ padding: 1.5rem;
2537
+ text-align: center;
2538
+ background-color: #f0fdf4;
2539
+ border: 1px solid #bbf7d0;
2540
+ border-radius: 0.25rem;
2541
+ color: #166534;
2542
+ }
2543
+
2544
+ .integrity-empty-state p {
2545
+ margin: 0;
2546
+ font-weight: 500;
2547
+ }
2548
+
2549
+ /* Issues table */
2550
+ .integrity-table {
2551
+ width: 100%;
2552
+ border-collapse: collapse;
2553
+ margin-top: 1rem;
2554
+ }
2555
+
2556
+ .integrity-table th,
2557
+ .integrity-table td {
2558
+ padding: 0.75rem;
2559
+ text-align: left;
2560
+ border-bottom: 1px solid var(--border-color);
2561
+ }
2562
+
2563
+ .integrity-table th {
2564
+ background-color: #f9fafb;
2565
+ font-weight: 500;
2566
+ font-size: 0.875rem;
2567
+ color: var(--secondary-color);
2568
+ }
2569
+
2570
+ .integrity-table td {
2571
+ font-size: 0.875rem;
2572
+ vertical-align: top;
2573
+ }
2574
+
2575
+ .integrity-table tbody tr:hover {
2576
+ background-color: #f9fafb;
2577
+ }
2578
+
2579
+ /* File list styling */
2580
+ .integrity-file-list {
2581
+ font-family: monospace;
2582
+ font-size: 0.8rem;
2583
+ background-color: #f1f5f9;
2584
+ padding: 0.5rem;
2585
+ border-radius: 4px;
2586
+ max-height: 150px;
2587
+ overflow-y: auto;
2588
+ margin: 0;
2589
+ list-style: none;
2590
+ }
2591
+
2592
+ .integrity-file-list li {
2593
+ padding: 0.125rem 0;
2594
+ word-break: break-all;
2595
+ }
2596
+
2597
+ .integrity-file-list li:not(:last-child) {
2598
+ border-bottom: 1px solid #e2e8f0;
2599
+ }
2600
+
2601
+ .integrity-more-files {
2602
+ font-style: italic;
2603
+ color: var(--secondary-color);
2604
+ font-size: 0.8rem;
2605
+ margin-top: 0.25rem;
2606
+ }
2607
+
2608
+ /* Issues container header */
2609
+ #integrity-issues-container h3 {
2610
+ font-size: 1rem;
2611
+ font-weight: 500;
2612
+ color: var(--text-color);
2613
+ margin-bottom: 0.5rem;
2614
+ }
2615
+
2616
+ /* ========================================
2617
+ Configuration Health Section Styles
2618
+ ======================================== */
2619
+
2620
+ /* Loading and error states */
2621
+ .config-health-loading,
2622
+ .config-health-error {
2623
+ padding: 1rem;
2624
+ text-align: center;
2625
+ color: var(--secondary-color);
2626
+ }
2627
+
2628
+ .config-health-error {
2629
+ color: var(--error-color);
2630
+ background-color: #fef2f2;
2631
+ border: 1px solid #fecaca;
2632
+ border-radius: 0.25rem;
2633
+ }
2634
+
2635
+ /* Summary statistics */
2636
+ .health-stats {
2637
+ display: flex;
2638
+ gap: 2rem;
2639
+ margin-bottom: 1.5rem;
2640
+ padding: 1rem;
2641
+ background-color: #f9fafb;
2642
+ border-radius: 0.25rem;
2643
+ }
2644
+
2645
+ .health-stat {
2646
+ display: flex;
2647
+ flex-direction: column;
2648
+ align-items: center;
2649
+ }
2650
+
2651
+ .health-stat-label {
2652
+ font-size: 0.875rem;
2653
+ color: var(--secondary-color);
2654
+ margin-bottom: 0.25rem;
2655
+ }
2656
+
2657
+ .health-stat-value {
2658
+ font-size: 1.5rem;
2659
+ font-weight: 600;
2660
+ color: var(--text-color);
2661
+ }
2662
+
2663
+ .health-stat-value.health-configured {
2664
+ color: #16a34a;
2665
+ }
2666
+
2667
+ .health-stat-value.health-errors {
2668
+ color: var(--error-color);
2669
+ }
2670
+
2671
+ .health-stat-value.health-warnings {
2672
+ color: #f59e0b;
2673
+ }
2674
+
2675
+ /* All good state */
2676
+ .config-health-all-good {
2677
+ padding: 1.5rem;
2678
+ text-align: center;
2679
+ background-color: #f0fdf4;
2680
+ border: 1px solid #bbf7d0;
2681
+ border-radius: 0.25rem;
2682
+ color: #166534;
2683
+ }
2684
+
2685
+ .config-health-all-good p {
2686
+ margin: 0;
2687
+ font-weight: 500;
2688
+ }
2689
+
2690
+ /* Config health table */
2691
+ .config-health-table {
2692
+ width: 100%;
2693
+ border-collapse: collapse;
2694
+ margin-top: 1rem;
2695
+ }
2696
+
2697
+ .config-health-table th,
2698
+ .config-health-table td {
2699
+ padding: 0.75rem;
2700
+ text-align: left;
2701
+ border-bottom: 1px solid var(--border-color);
2702
+ }
2703
+
2704
+ .config-health-table th {
2705
+ background-color: #f9fafb;
2706
+ font-weight: 500;
2707
+ font-size: 0.875rem;
2708
+ color: var(--secondary-color);
2709
+ }
2710
+
2711
+ .config-health-table td {
2712
+ font-size: 0.875rem;
2713
+ vertical-align: top;
2714
+ }
2715
+
2716
+ .config-health-table tbody tr:hover {
2717
+ background-color: #f9fafb;
2718
+ }
2719
+
2720
+ /* Status badge styling */
2721
+ .config-status-badge {
2722
+ display: inline-block;
2723
+ padding: 0.25rem 0.5rem;
2724
+ border-radius: 0.25rem;
2725
+ font-size: 0.75rem;
2726
+ font-weight: 500;
2727
+ text-transform: uppercase;
2728
+ }
2729
+
2730
+ .config-status-badge.status-missing {
2731
+ background-color: #fef2f2;
2732
+ color: #991b1b;
2733
+ }
2734
+
2735
+ .config-status-badge.status-invalid {
2736
+ background-color: #fef2f2;
2737
+ color: #991b1b;
2738
+ }
2739
+
2740
+ /* Dismiss button / text button styling */
2741
+ .btn-text {
2742
+ background-color: transparent;
2743
+ border: 1px solid var(--border-color);
2744
+ border-radius: 0.25rem;
2745
+ padding: 0.375rem 0.75rem;
2746
+ font-size: 0.875rem;
2747
+ color: var(--secondary-color);
2748
+ cursor: pointer;
2749
+ transition: all 0.2s ease;
2750
+ }
2751
+
2752
+ .btn-text:hover {
2753
+ background-color: #f9fafb;
2754
+ border-color: var(--secondary-color);
2755
+ color: var(--text-color);
2756
+ }
2757
+
2758
+ .btn-text:active {
2759
+ background-color: #f3f4f6;
2760
+ }
2761
+
2762
+ .btn-text:disabled {
2763
+ opacity: 0.5;
2764
+ cursor: not-allowed;
2765
+ }
2766
+
2767
+ /* Config errors/warnings container headers */
2768
+ #config-errors-container h3,
2769
+ #config-warnings-container h3 {
2770
+ font-size: 1rem;
2771
+ font-weight: 500;
2772
+ color: var(--text-color);
2773
+ margin-bottom: 0.5rem;
2774
+ margin-top: 1.5rem;
2775
+ }
2776
+
2777
+ #config-errors-container h3 {
2778
+ color: var(--error-color);
2779
+ }
2780
+
2781
+ #config-warnings-container h3 {
2782
+ color: #f59e0b;
2783
+ }
2784
+
2785
+ /* ========================================
2786
+ Pinecone Data Integrity Section Styles
2787
+ ======================================== */
2788
+
2789
+ /* Actions container with button and last run text */
2790
+ .pinecone-health-actions {
2791
+ display: flex;
2792
+ align-items: center;
2793
+ gap: 1rem;
2794
+ margin-bottom: 1rem;
2795
+ }
2796
+
2797
+ .last-run-text {
2798
+ font-size: 0.875rem;
2799
+ color: var(--secondary-color);
2800
+ }
2801
+
2802
+ /* Loading and error states */
2803
+ .pinecone-health-loading,
2804
+ .pinecone-health-error {
2805
+ padding: 1rem;
2806
+ text-align: center;
2807
+ color: var(--secondary-color);
2808
+ }
2809
+
2810
+ .pinecone-health-error {
2811
+ color: var(--error-color);
2812
+ background-color: #fef2f2;
2813
+ border: 1px solid #fecaca;
2814
+ border-radius: 0.25rem;
2815
+ }
2816
+
2817
+ /* No results state */
2818
+ .pinecone-health-no-results {
2819
+ padding: 1rem;
2820
+ text-align: center;
2821
+ color: var(--secondary-color);
2822
+ background-color: #f9fafb;
2823
+ border: 1px solid var(--border-color);
2824
+ border-radius: 0.25rem;
2825
+ }
2826
+
2827
+ .pinecone-health-no-results p {
2828
+ margin: 0;
2829
+ }
2830
+
2831
+ /* Status container and badge */
2832
+ .pinecone-health-status-container {
2833
+ display: flex;
2834
+ align-items: center;
2835
+ gap: 0.5rem;
2836
+ margin-bottom: 1rem;
2837
+ }
2838
+
2839
+ .pinecone-health-status {
2840
+ display: inline-block;
2841
+ padding: 0.25rem 0.75rem;
2842
+ border-radius: 0.25rem;
2843
+ font-size: 0.75rem;
2844
+ font-weight: 600;
2845
+ text-transform: uppercase;
2846
+ }
2847
+
2848
+ .pinecone-health-status.status-healthy {
2849
+ background-color: #dcfce7;
2850
+ color: #166534;
2851
+ }
2852
+
2853
+ .pinecone-health-status.status-error {
2854
+ background-color: #fef2f2;
2855
+ color: #991b1b;
2856
+ }
2857
+
2858
+ .pinecone-health-status.status-warning {
2859
+ background-color: #fef3c7;
2860
+ color: #92400e;
2861
+ }
2862
+
2863
+ .pinecone-health-status.status-running {
2864
+ background-color: #dbeafe;
2865
+ color: #1e40af;
2866
+ }
2867
+
2868
+ /* Summary statistics */
2869
+ .pinecone-health-summary {
2870
+ display: flex;
2871
+ gap: 2rem;
2872
+ margin-bottom: 1.5rem;
2873
+ padding: 1rem;
2874
+ background-color: #f9fafb;
2875
+ border-radius: 0.25rem;
2876
+ flex-wrap: wrap;
2877
+ }
2878
+
2879
+ .pinecone-health-stat {
2880
+ display: flex;
2881
+ flex-direction: column;
2882
+ align-items: center;
2883
+ min-width: 80px;
2884
+ }
2885
+
2886
+ .pinecone-health-stat-label {
2887
+ font-size: 0.875rem;
2888
+ color: var(--secondary-color);
2889
+ margin-bottom: 0.25rem;
2890
+ }
2891
+
2892
+ .pinecone-health-stat-value {
2893
+ font-size: 1.5rem;
2894
+ font-weight: 600;
2895
+ color: var(--text-color);
2896
+ }
2897
+
2898
+ /* All good state */
2899
+ .pinecone-health-all-good {
2900
+ padding: 1.5rem;
2901
+ text-align: center;
2902
+ background-color: #f0fdf4;
2903
+ border: 1px solid #bbf7d0;
2904
+ border-radius: 0.25rem;
2905
+ color: #166534;
2906
+ }
2907
+
2908
+ .pinecone-health-all-good p {
2909
+ margin: 0;
2910
+ font-weight: 500;
2911
+ }
2912
+
2913
+ /* Pinecone health table (shared styles for namespace and failures tables) */
2914
+ .pinecone-health-table {
2915
+ width: 100%;
2916
+ border-collapse: collapse;
2917
+ margin-top: 1rem;
2918
+ table-layout: fixed;
2919
+ }
2920
+
2921
+ .pinecone-health-table th,
2922
+ .pinecone-health-table td {
2923
+ padding: 0.75rem;
2924
+ text-align: left;
2925
+ border-bottom: 1px solid var(--border-color);
2926
+ }
2927
+
2928
+ .pinecone-health-table th {
2929
+ background-color: #f9fafb;
2930
+ font-weight: 500;
2931
+ font-size: 0.875rem;
2932
+ color: var(--secondary-color);
2933
+ }
2934
+
2935
+ .pinecone-health-table td {
2936
+ font-size: 0.875rem;
2937
+ vertical-align: middle;
2938
+ word-wrap: break-word;
2939
+ }
2940
+
2941
+ .pinecone-health-table tbody tr:hover {
2942
+ background-color: #f9fafb;
2943
+ }
2944
+
2945
+ /* Namespace results table column widths */
2946
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(1),
2947
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(1) {
2948
+ width: 25%;
2949
+ }
2950
+
2951
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(2),
2952
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(2) {
2953
+ width: 15%;
2954
+ }
2955
+
2956
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(3),
2957
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(3),
2958
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(4),
2959
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(4),
2960
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(5),
2961
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(5) {
2962
+ width: 12%;
2963
+ text-align: right;
2964
+ }
2965
+
2966
+ #pinecone-namespace-container .pinecone-health-table th:nth-child(6),
2967
+ #pinecone-namespace-container .pinecone-health-table td:nth-child(6) {
2968
+ width: 12%;
2969
+ text-align: center;
2970
+ }
2971
+
2972
+ /* Sample failures table column widths */
2973
+ #pinecone-failures-container .pinecone-health-table th:nth-child(1),
2974
+ #pinecone-failures-container .pinecone-health-table td:nth-child(1) {
2975
+ width: 20%;
2976
+ }
2977
+
2978
+ #pinecone-failures-container .pinecone-health-table th:nth-child(2),
2979
+ #pinecone-failures-container .pinecone-health-table td:nth-child(2) {
2980
+ width: 15%;
2981
+ }
2982
+
2983
+ #pinecone-failures-container .pinecone-health-table th:nth-child(3),
2984
+ #pinecone-failures-container .pinecone-health-table td:nth-child(3) {
2985
+ width: 30%;
2986
+ font-family: monospace;
2987
+ font-size: 0.8rem;
2988
+ }
2989
+
2990
+ #pinecone-failures-container .pinecone-health-table th:nth-child(4),
2991
+ #pinecone-failures-container .pinecone-health-table td:nth-child(4) {
2992
+ width: 35%;
2993
+ }
2994
+
2995
+ /* Container headers */
2996
+ #pinecone-namespace-container h3,
2997
+ #pinecone-failures-container h3 {
2998
+ font-size: 1rem;
2999
+ font-weight: 500;
3000
+ color: var(--text-color);
3001
+ margin-bottom: 0.5rem;
3002
+ margin-top: 1.5rem;
3003
+ }
3004
+
3005
+ #pinecone-failures-container h3 {
3006
+ color: var(--error-color);
3007
+ }
3008
+
3009
+ /* ========================================
3010
+ Pinecone Regenerate Section Styles
3011
+ ======================================== */
3012
+
3013
+ .pinecone-regenerate-section {
3014
+ margin-top: 1.5rem;
3015
+ padding-top: 1.5rem;
3016
+ border-top: 1px solid var(--border-color);
3017
+ }
3018
+
3019
+ .pinecone-regenerate-section h4 {
3020
+ font-size: 0.95rem;
3021
+ font-weight: 600;
3022
+ color: var(--text-color);
3023
+ margin: 0 0 0.5rem 0;
3024
+ }
3025
+
3026
+ .regenerate-instructions {
3027
+ font-size: 0.875rem;
3028
+ color: var(--secondary-color);
3029
+ margin: 0 0 0.75rem 0;
3030
+ }
3031
+
3032
+ .regenerate-checkboxes {
3033
+ display: flex;
3034
+ flex-direction: column;
3035
+ gap: 0.5rem;
3036
+ margin-bottom: 1rem;
3037
+ }
3038
+
3039
+ .regenerate-checkboxes .checkbox-label {
3040
+ display: flex;
3041
+ align-items: center;
3042
+ gap: 0.5rem;
3043
+ font-size: 0.875rem;
3044
+ cursor: pointer;
3045
+ }
3046
+
3047
+ .regenerate-checkboxes .checkbox-label input[type="checkbox"] {
3048
+ width: 16px;
3049
+ height: 16px;
3050
+ cursor: pointer;
3051
+ accent-color: var(--primary-color);
3052
+ }
3053
+
3054
+ .regenerate-checkboxes .checkbox-label span {
3055
+ color: var(--text-color);
3056
+ }
3057
+
3058
+ .regenerate-checkboxes .namespace-name {
3059
+ font-family: monospace;
3060
+ font-size: 0.8rem;
3061
+ background-color: #f1f5f9;
3062
+ padding: 0.125rem 0.375rem;
3063
+ border-radius: 0.25rem;
3064
+ color: var(--secondary-color);
3065
+ }
3066
+
3067
+ .regenerate-checkboxes .metadata-warning {
3068
+ font-size: 0.75rem;
3069
+ color: #f59e0b;
3070
+ margin-left: 0.25rem;
3071
+ }
3072
+
3073
+ /* Info tooltip button */
3074
+ .info-tooltip-btn {
3075
+ display: inline-flex;
3076
+ align-items: center;
3077
+ justify-content: center;
3078
+ width: 18px;
3079
+ height: 18px;
3080
+ margin-left: 0.375rem;
3081
+ padding: 0;
3082
+ font-size: 0.75rem;
3083
+ color: #6b7280;
3084
+ background: none;
3085
+ border: none;
3086
+ cursor: pointer;
3087
+ vertical-align: middle;
3088
+ transition: color 0.15s ease;
3089
+ }
3090
+
3091
+ .info-tooltip-btn:hover {
3092
+ color: var(--primary-color);
3093
+ }
3094
+
3095
+ /* Namespace info panel */
3096
+ .namespace-info {
3097
+ margin: 0.375rem 0 0.75rem 1.5rem;
3098
+ padding: 0.625rem 0.75rem;
3099
+ font-size: 0.8rem;
3100
+ color: #4b5563;
3101
+ background-color: #f3f4f6;
3102
+ border-left: 3px solid var(--primary-color);
3103
+ border-radius: 0 0.25rem 0.25rem 0;
3104
+ line-height: 1.4;
3105
+ }
3106
+
3107
+ .namespace-info.hidden {
3108
+ display: none;
3109
+ }
3110
+
3111
+ .namespace-info strong {
3112
+ color: var(--text-color);
3113
+ }
3114
+
3115
+ /* Note styling (softer than warning) */
3116
+ .regenerate-note {
3117
+ display: flex;
3118
+ align-items: flex-start;
3119
+ gap: 0.5rem;
3120
+ padding: 0.625rem 0.75rem;
3121
+ background-color: #eff6ff;
3122
+ border: 1px solid #bfdbfe;
3123
+ border-radius: 0.25rem;
3124
+ margin-bottom: 1rem;
3125
+ }
3126
+
3127
+ .regenerate-note .note-label {
3128
+ font-size: 0.8rem;
3129
+ font-weight: 600;
3130
+ color: #1e40af;
3131
+ }
3132
+
3133
+ .regenerate-note .note-text {
3134
+ font-size: 0.8rem;
3135
+ color: #1e40af;
3136
+ line-height: 1.4;
3137
+ }
3138
+
3139
+ .regenerate-warning {
3140
+ display: flex;
3141
+ align-items: flex-start;
3142
+ gap: 0.5rem;
3143
+ padding: 0.75rem;
3144
+ background-color: #fef3c7;
3145
+ border: 1px solid #fcd34d;
3146
+ border-radius: 0.25rem;
3147
+ margin-bottom: 1rem;
3148
+ }
3149
+
3150
+ .regenerate-warning .warning-icon {
3151
+ font-size: 1rem;
3152
+ line-height: 1;
3153
+ }
3154
+
3155
+ .regenerate-warning .warning-text {
3156
+ font-size: 0.8rem;
3157
+ color: #92400e;
3158
+ line-height: 1.4;
3159
+ }
3160
+
3161
+ /* Warning button style */
3162
+ .btn-warning {
3163
+ background-color: #f59e0b;
3164
+ color: #fff;
3165
+ border: 1px solid #d97706;
3166
+ }
3167
+
3168
+ .btn-warning:hover {
3169
+ background-color: #d97706;
3170
+ border-color: #b45309;
3171
+ }
3172
+
3173
+ .btn-warning:active {
3174
+ background-color: #b45309;
3175
+ }
3176
+
3177
+ .btn-warning:disabled {
3178
+ background-color: #fcd34d;
3179
+ border-color: #fcd34d;
3180
+ cursor: not-allowed;
3181
+ }
3182
+
3183
+ /* `.hidden` is provided by the global utility in src/css/globals.css; do not
3184
+ redefine it here (BAPI-301). */
3185
+
3186
+ /* Phase 1b: Learn-repository auto-update schedule */
3187
+ .learn-repo-schedule-section {
3188
+ border-radius: 6px;
3189
+ padding: 1rem;
3190
+ margin-top: 0.75rem;
3191
+ }
3192
+ .learn-repo-schedule-section h4 {
3193
+ margin: 0 0 0.25rem 0;
3194
+ }
3195
+ .learn-repo-instructions {
3196
+ font-size: 0.85rem;
3197
+ color: #6b7280;
3198
+ margin-bottom: 0.75rem;
3199
+ }
3200
+ .learn-repo-analysis-types {
3201
+ border: none;
3202
+ padding: 0;
3203
+ margin: 0 0 0.75rem 0;
3204
+ display: grid;
3205
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
3206
+ gap: 0.25rem 1rem;
3207
+ }
3208
+ .learn-repo-analysis-types legend {
3209
+ font-weight: 600;
3210
+ margin-bottom: 0.25rem;
3211
+ }
3212
+ .learn-repo-actions {
3213
+ margin-top: 0.5rem;
3214
+ }
3215
+ .learn-repo-message {
3216
+ margin-top: 0.5rem;
3217
+ font-size: 0.875rem;
3218
+ color: #1f2937;
3219
+ }
3220
+ .learn-repo-schedule-status {
3221
+ margin-top: 0.75rem;
3222
+ display: flex;
3223
+ flex-direction: column;
3224
+ gap: 0.5rem;
3225
+ }
3226
+ .learn-repo-schedule-row {
3227
+ border: 1px solid #e5e7eb;
3228
+ border-radius: 4px;
3229
+ padding: 0.75rem;
3230
+ background-color: #f9fafb;
3231
+ }
3232
+ .learn-repo-schedule-meta {
3233
+ font-size: 0.85rem;
3234
+ color: #4b5563;
3235
+ margin: 0.25rem 0;
3236
+ }
3237
+ .learn-repo-row-actions {
3238
+ margin-top: 0.5rem;
3239
+ display: flex;
3240
+ gap: 0.5rem;
3241
+ }
3242
+ .learn-repo-status-running {
3243
+ color: #2563eb;
3244
+ }
3245
+ .learn-repo-status-success {
3246
+ color: #15803d;
3247
+ }
3248
+ .learn-repo-status-failure {
3249
+ color: #b91c1c;
3250
+ }
3251
+ .learn-repo-status-idle {
3252
+ color: #6b7280;
3253
+ }
3254
+ .learn-repo-schedule-row details {
3255
+ margin-top: 0.5rem;
3256
+ font-size: 0.85rem;
3257
+ }
3258
+ .learn-repo-schedule-row details pre {
3259
+ white-space: pre-wrap;
3260
+ background-color: #ffffff;
3261
+ border: 1px solid #e5e7eb;
3262
+ border-radius: 3px;
3263
+ padding: 0.5rem;
3264
+ margin: 0.25rem 0 0 0;
3265
+ }
3266
+ .form-error {
3267
+ color: #b91c1c;
3268
+ font-size: 0.85rem;
3269
+ margin-top: 0.25rem;
3270
+ }
3271
+
3272
+
2
3273
  /*# sourceMappingURL=main.min.css.map*/