reviewflow 3.19.2 → 3.21.0

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 (185) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/config/projectConfig.d.ts +7 -0
  3. package/dist/config/projectConfig.d.ts.map +1 -1
  4. package/dist/config/projectConfig.js +18 -0
  5. package/dist/config/projectConfig.js.map +1 -1
  6. package/dist/dashboard/index.html +452 -142
  7. package/dist/dashboard/modules/cardCounters.d.ts +32 -0
  8. package/dist/dashboard/modules/cardCounters.d.ts.map +1 -0
  9. package/dist/dashboard/modules/cardCounters.js +40 -0
  10. package/dist/dashboard/modules/cardCounters.js.map +1 -0
  11. package/dist/dashboard/modules/constants.d.ts +1 -0
  12. package/dist/dashboard/modules/constants.d.ts.map +1 -1
  13. package/dist/dashboard/modules/constants.js +1 -0
  14. package/dist/dashboard/modules/constants.js.map +1 -1
  15. package/dist/dashboard/modules/managePanel.d.ts +49 -0
  16. package/dist/dashboard/modules/managePanel.d.ts.map +1 -0
  17. package/dist/dashboard/modules/managePanel.js +123 -0
  18. package/dist/dashboard/modules/managePanel.js.map +1 -0
  19. package/dist/dashboard/modules/overview.d.ts +65 -0
  20. package/dist/dashboard/modules/overview.d.ts.map +1 -0
  21. package/dist/dashboard/modules/overview.js +260 -0
  22. package/dist/dashboard/modules/overview.js.map +1 -0
  23. package/dist/dashboard/modules/settingsModal.d.ts +77 -0
  24. package/dist/dashboard/modules/settingsModal.d.ts.map +1 -0
  25. package/dist/dashboard/modules/settingsModal.js +182 -0
  26. package/dist/dashboard/modules/settingsModal.js.map +1 -0
  27. package/dist/dashboard/modules/tabBar.d.ts +60 -0
  28. package/dist/dashboard/modules/tabBar.d.ts.map +1 -0
  29. package/dist/dashboard/modules/tabBar.js +103 -0
  30. package/dist/dashboard/modules/tabBar.js.map +1 -0
  31. package/dist/dashboard/styles.css +936 -0
  32. package/dist/frameworks/config/configLoader.d.ts +8 -0
  33. package/dist/frameworks/config/configLoader.d.ts.map +1 -1
  34. package/dist/frameworks/config/configLoader.js +18 -0
  35. package/dist/frameworks/config/configLoader.js.map +1 -1
  36. package/dist/main/routes.d.ts.map +1 -1
  37. package/dist/main/routes.js +67 -11
  38. package/dist/main/routes.js.map +1 -1
  39. package/dist/modules/cli-configuration/entities/projectConfig/projectConfig.gateway.d.ts +20 -0
  40. package/dist/modules/cli-configuration/entities/projectConfig/projectConfig.gateway.d.ts.map +1 -0
  41. package/dist/modules/cli-configuration/entities/projectConfig/projectConfig.gateway.js +2 -0
  42. package/dist/modules/cli-configuration/entities/projectConfig/projectConfig.gateway.js.map +1 -0
  43. package/dist/modules/cli-configuration/entities/repositoryEntry/repositoryEntry.d.ts +13 -0
  44. package/dist/modules/cli-configuration/entities/repositoryEntry/repositoryEntry.d.ts.map +1 -0
  45. package/dist/modules/cli-configuration/entities/repositoryEntry/repositoryEntry.js +2 -0
  46. package/dist/modules/cli-configuration/entities/repositoryEntry/repositoryEntry.js.map +1 -0
  47. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.d.ts +6 -1
  48. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.d.ts.map +1 -1
  49. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.js +116 -13
  50. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.js.map +1 -1
  51. package/dist/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.d.ts +43 -0
  52. package/dist/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.d.ts.map +1 -0
  53. package/dist/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.js +82 -0
  54. package/dist/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.js.map +1 -0
  55. package/dist/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.d.ts +7 -0
  56. package/dist/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.d.ts.map +1 -0
  57. package/dist/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.js +48 -0
  58. package/dist/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.js.map +1 -0
  59. package/dist/modules/cli-configuration/usecases/cli/addRepositoriesToConfig.usecase.d.ts +1 -6
  60. package/dist/modules/cli-configuration/usecases/cli/addRepositoriesToConfig.usecase.d.ts.map +1 -1
  61. package/dist/modules/cli-configuration/usecases/cli/addRepositoriesToConfig.usecase.js.map +1 -1
  62. package/dist/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.d.ts +21 -0
  63. package/dist/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.d.ts.map +1 -0
  64. package/dist/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.js +27 -0
  65. package/dist/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.js.map +1 -0
  66. package/dist/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.d.ts +22 -0
  67. package/dist/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.d.ts.map +1 -0
  68. package/dist/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.js +27 -0
  69. package/dist/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.js.map +1 -0
  70. package/dist/modules/cli-configuration/usecases/cli/writeInitConfig.usecase.d.ts +1 -6
  71. package/dist/modules/cli-configuration/usecases/cli/writeInitConfig.usecase.d.ts.map +1 -1
  72. package/dist/modules/cli-configuration/usecases/cli/writeInitConfig.usecase.js.map +1 -1
  73. package/dist/modules/cli-configuration/usecases/dashboardRepositories/addRepositoryFromDashboard.usecase.d.ts +19 -0
  74. package/dist/modules/cli-configuration/usecases/dashboardRepositories/addRepositoryFromDashboard.usecase.d.ts.map +1 -0
  75. package/dist/modules/cli-configuration/usecases/dashboardRepositories/addRepositoryFromDashboard.usecase.js +30 -0
  76. package/dist/modules/cli-configuration/usecases/dashboardRepositories/addRepositoryFromDashboard.usecase.js.map +1 -0
  77. package/dist/modules/cli-configuration/usecases/dashboardRepositories/removeRepositoryFromDashboard.usecase.d.ts +16 -0
  78. package/dist/modules/cli-configuration/usecases/dashboardRepositories/removeRepositoryFromDashboard.usecase.d.ts.map +1 -0
  79. package/dist/modules/cli-configuration/usecases/dashboardRepositories/removeRepositoryFromDashboard.usecase.js +27 -0
  80. package/dist/modules/cli-configuration/usecases/dashboardRepositories/removeRepositoryFromDashboard.usecase.js.map +1 -0
  81. package/dist/modules/cli-configuration/usecases/dashboardRepositories/updateRepositoryEnabledFromDashboard.usecase.d.ts +17 -0
  82. package/dist/modules/cli-configuration/usecases/dashboardRepositories/updateRepositoryEnabledFromDashboard.usecase.d.ts.map +1 -0
  83. package/dist/modules/cli-configuration/usecases/dashboardRepositories/updateRepositoryEnabledFromDashboard.usecase.js +28 -0
  84. package/dist/modules/cli-configuration/usecases/dashboardRepositories/updateRepositoryEnabledFromDashboard.usecase.js.map +1 -0
  85. package/dist/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.d.ts +31 -0
  86. package/dist/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.d.ts.map +1 -0
  87. package/dist/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.js +102 -0
  88. package/dist/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.js.map +1 -0
  89. package/dist/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.d.ts +16 -0
  90. package/dist/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.d.ts.map +1 -0
  91. package/dist/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.js +53 -0
  92. package/dist/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.js.map +1 -0
  93. package/dist/modules/statistics-insights/interface-adapters/presenters/overview.presenter.d.ts +93 -0
  94. package/dist/modules/statistics-insights/interface-adapters/presenters/overview.presenter.d.ts.map +1 -0
  95. package/dist/modules/statistics-insights/interface-adapters/presenters/overview.presenter.js +145 -0
  96. package/dist/modules/statistics-insights/interface-adapters/presenters/overview.presenter.js.map +1 -0
  97. package/dist/tests/acceptance/177-dashboard-add-project-ui.acceptance.test.d.ts +12 -0
  98. package/dist/tests/acceptance/177-dashboard-add-project-ui.acceptance.test.d.ts.map +1 -0
  99. package/dist/tests/acceptance/177-dashboard-add-project-ui.acceptance.test.js +304 -0
  100. package/dist/tests/acceptance/177-dashboard-add-project-ui.acceptance.test.js.map +1 -0
  101. package/dist/tests/acceptance/178-dashboard-tabs-reposition.acceptance.test.d.ts +12 -0
  102. package/dist/tests/acceptance/178-dashboard-tabs-reposition.acceptance.test.d.ts.map +1 -0
  103. package/dist/tests/acceptance/178-dashboard-tabs-reposition.acceptance.test.js +131 -0
  104. package/dist/tests/acceptance/178-dashboard-tabs-reposition.acceptance.test.js.map +1 -0
  105. package/dist/tests/acceptance/179-dashboard-project-settings-modal.acceptance.test.d.ts +12 -0
  106. package/dist/tests/acceptance/179-dashboard-project-settings-modal.acceptance.test.d.ts.map +1 -0
  107. package/dist/tests/acceptance/179-dashboard-project-settings-modal.acceptance.test.js +312 -0
  108. package/dist/tests/acceptance/179-dashboard-project-settings-modal.acceptance.test.js.map +1 -0
  109. package/dist/tests/acceptance/91-dashboard-multi-project-overview.acceptance.test.d.ts +10 -0
  110. package/dist/tests/acceptance/91-dashboard-multi-project-overview.acceptance.test.d.ts.map +1 -0
  111. package/dist/tests/acceptance/91-dashboard-multi-project-overview.acceptance.test.js +275 -0
  112. package/dist/tests/acceptance/91-dashboard-multi-project-overview.acceptance.test.js.map +1 -0
  113. package/dist/tests/factories/projectStatsApiResponse.factory.d.ts +16 -0
  114. package/dist/tests/factories/projectStatsApiResponse.factory.d.ts.map +1 -0
  115. package/dist/tests/factories/projectStatsApiResponse.factory.js +39 -0
  116. package/dist/tests/factories/projectStatsApiResponse.factory.js.map +1 -0
  117. package/dist/tests/factories/recentReviewFile.factory.d.ts +5 -0
  118. package/dist/tests/factories/recentReviewFile.factory.d.ts.map +1 -0
  119. package/dist/tests/factories/recentReviewFile.factory.js +16 -0
  120. package/dist/tests/factories/recentReviewFile.factory.js.map +1 -0
  121. package/dist/tests/factories/repositoryConfig.factory.d.ts +5 -0
  122. package/dist/tests/factories/repositoryConfig.factory.d.ts.map +1 -0
  123. package/dist/tests/factories/repositoryConfig.factory.js +14 -0
  124. package/dist/tests/factories/repositoryConfig.factory.js.map +1 -0
  125. package/dist/tests/stubs/projectConfigGateway.stub.d.ts +15 -0
  126. package/dist/tests/stubs/projectConfigGateway.stub.d.ts.map +1 -0
  127. package/dist/tests/stubs/projectConfigGateway.stub.js +40 -0
  128. package/dist/tests/stubs/projectConfigGateway.stub.js.map +1 -0
  129. package/dist/tests/units/config/projectConfig.test.js +43 -0
  130. package/dist/tests/units/config/projectConfig.test.js.map +1 -1
  131. package/dist/tests/units/dashboard/modules/cardCounters.test.d.ts +2 -0
  132. package/dist/tests/units/dashboard/modules/cardCounters.test.d.ts.map +1 -0
  133. package/dist/tests/units/dashboard/modules/cardCounters.test.js +106 -0
  134. package/dist/tests/units/dashboard/modules/cardCounters.test.js.map +1 -0
  135. package/dist/tests/units/dashboard/modules/constants.test.js +2 -1
  136. package/dist/tests/units/dashboard/modules/constants.test.js.map +1 -1
  137. package/dist/tests/units/dashboard/modules/managePanel.test.d.ts +2 -0
  138. package/dist/tests/units/dashboard/modules/managePanel.test.d.ts.map +1 -0
  139. package/dist/tests/units/dashboard/modules/managePanel.test.js +112 -0
  140. package/dist/tests/units/dashboard/modules/managePanel.test.js.map +1 -0
  141. package/dist/tests/units/dashboard/modules/overview.test.d.ts +2 -0
  142. package/dist/tests/units/dashboard/modules/overview.test.d.ts.map +1 -0
  143. package/dist/tests/units/dashboard/modules/overview.test.js +268 -0
  144. package/dist/tests/units/dashboard/modules/overview.test.js.map +1 -0
  145. package/dist/tests/units/dashboard/modules/settingsModal.test.d.ts +2 -0
  146. package/dist/tests/units/dashboard/modules/settingsModal.test.d.ts.map +1 -0
  147. package/dist/tests/units/dashboard/modules/settingsModal.test.js +166 -0
  148. package/dist/tests/units/dashboard/modules/settingsModal.test.js.map +1 -0
  149. package/dist/tests/units/dashboard/modules/tabBar.test.d.ts +2 -0
  150. package/dist/tests/units/dashboard/modules/tabBar.test.d.ts.map +1 -0
  151. package/dist/tests/units/dashboard/modules/tabBar.test.js +128 -0
  152. package/dist/tests/units/dashboard/modules/tabBar.test.js.map +1 -0
  153. package/dist/tests/units/frameworks/config/configLoader.test.js +35 -1
  154. package/dist/tests/units/frameworks/config/configLoader.test.js.map +1 -1
  155. package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.test.js +111 -0
  156. package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.test.js.map +1 -1
  157. package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.test.d.ts +2 -0
  158. package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.test.d.ts.map +1 -0
  159. package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.test.js +298 -0
  160. package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.test.js.map +1 -0
  161. package/dist/tests/units/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.d.ts +2 -0
  162. package/dist/tests/units/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.d.ts.map +1 -0
  163. package/dist/tests/units/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.js +72 -0
  164. package/dist/tests/units/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.js.map +1 -0
  165. package/dist/tests/units/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.test.d.ts +2 -0
  166. package/dist/tests/units/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.test.d.ts.map +1 -0
  167. package/dist/tests/units/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.test.js +76 -0
  168. package/dist/tests/units/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.test.js.map +1 -0
  169. package/dist/tests/units/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.test.d.ts +2 -0
  170. package/dist/tests/units/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.test.d.ts.map +1 -0
  171. package/dist/tests/units/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.test.js +84 -0
  172. package/dist/tests/units/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.test.js.map +1 -0
  173. package/dist/tests/units/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.test.d.ts +2 -0
  174. package/dist/tests/units/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.test.d.ts.map +1 -0
  175. package/dist/tests/units/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.test.js +141 -0
  176. package/dist/tests/units/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.test.js.map +1 -0
  177. package/dist/tests/units/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.test.d.ts +2 -0
  178. package/dist/tests/units/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.test.d.ts.map +1 -0
  179. package/dist/tests/units/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.test.js +200 -0
  180. package/dist/tests/units/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.test.js.map +1 -0
  181. package/dist/tests/units/modules/statistics-insights/interface-adapters/presenters/overview.presenter.test.d.ts +2 -0
  182. package/dist/tests/units/modules/statistics-insights/interface-adapters/presenters/overview.presenter.test.d.ts.map +1 -0
  183. package/dist/tests/units/modules/statistics-insights/interface-adapters/presenters/overview.presenter.test.js +331 -0
  184. package/dist/tests/units/modules/statistics-insights/interface-adapters/presenters/overview.presenter.test.js.map +1 -0
  185. package/package.json +1 -1
@@ -4573,3 +4573,939 @@ input:focus-visible,
4573
4573
  animation: none !important;
4574
4574
  }
4575
4575
  }
4576
+
4577
+ /* ============================================================
4578
+ SPEC-91 — Dashboard Multi-Project Overview
4579
+ Visual DNA: warm near-black + amber + green, monospace,
4580
+ corner-bracket frames, // LABEL prefix, glow-pulse status dots.
4581
+ Reference: project_agentic_os_design_dna.md.
4582
+ ============================================================ */
4583
+
4584
+ .dashboard-tab-bar-wrapper {
4585
+ --overview-bg: #0a0908;
4586
+ --overview-border-faint: rgba(255, 180, 100, 0.12);
4587
+ --overview-border-active: rgba(255, 138, 61, 0.65);
4588
+ --overview-accent: #ff8a3d;
4589
+ --overview-accent-dim: #a85a25;
4590
+ --overview-success: #5ce28b;
4591
+ --overview-text-primary: #f3eee8;
4592
+ --overview-text-muted: #7a716a;
4593
+ --overview-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Berkeley Mono", monospace;
4594
+
4595
+ display: block;
4596
+ font-family: var(--overview-mono);
4597
+ }
4598
+
4599
+ .dashboard-tab-bar {
4600
+ display: flex;
4601
+ flex-wrap: wrap;
4602
+ gap: 4px;
4603
+ padding: 0;
4604
+ margin: 0;
4605
+ border-bottom: 1px solid var(--overview-border-faint);
4606
+ }
4607
+
4608
+ .dashboard-tab {
4609
+ background: transparent;
4610
+ border: 1px solid transparent;
4611
+ border-bottom: none;
4612
+ color: var(--overview-text-muted);
4613
+ cursor: pointer;
4614
+ font-family: var(--overview-mono);
4615
+ font-size: 12px;
4616
+ letter-spacing: 0.08em;
4617
+ padding: 8px 14px;
4618
+ text-transform: uppercase;
4619
+ transition: color 120ms ease-out, background-color 120ms ease-out, border-color 120ms ease-out;
4620
+ }
4621
+
4622
+ .dashboard-tab:hover {
4623
+ color: var(--overview-text-primary);
4624
+ background: rgba(255, 138, 61, 0.06);
4625
+ }
4626
+
4627
+ .dashboard-tab.is-active {
4628
+ color: var(--overview-accent);
4629
+ border-color: var(--overview-border-active);
4630
+ background: var(--overview-bg);
4631
+ position: relative;
4632
+ }
4633
+
4634
+ .dashboard-tab.is-active::before {
4635
+ content: "";
4636
+ position: absolute;
4637
+ top: -1px;
4638
+ left: -1px;
4639
+ width: 8px;
4640
+ height: 8px;
4641
+ border-top: 2px solid var(--overview-accent);
4642
+ border-left: 2px solid var(--overview-accent);
4643
+ pointer-events: none;
4644
+ }
4645
+
4646
+ .dashboard-tab.is-active::after {
4647
+ content: "";
4648
+ position: absolute;
4649
+ top: -1px;
4650
+ right: -1px;
4651
+ width: 8px;
4652
+ height: 8px;
4653
+ border-top: 2px solid var(--overview-accent);
4654
+ border-right: 2px solid var(--overview-accent);
4655
+ pointer-events: none;
4656
+ }
4657
+
4658
+ #overview-section {
4659
+ --overview-bg: #0a0908;
4660
+ --overview-border-faint: rgba(255, 180, 100, 0.12);
4661
+ --overview-border-active: rgba(255, 138, 61, 0.65);
4662
+ --overview-accent: #ff8a3d;
4663
+ --overview-accent-dim: #a85a25;
4664
+ --overview-success: #5ce28b;
4665
+ --overview-text-primary: #f3eee8;
4666
+ --overview-text-muted: #7a716a;
4667
+ --overview-glow-active: 0 0 12px rgba(255, 138, 61, 0.55);
4668
+ --overview-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Berkeley Mono", monospace;
4669
+
4670
+ display: block;
4671
+ margin: 24px 0;
4672
+ font-family: var(--overview-mono);
4673
+ color: var(--overview-text-primary);
4674
+ }
4675
+
4676
+ body:not(.overview-tab-active) #overview-section {
4677
+ display: none;
4678
+ }
4679
+
4680
+ body.overview-tab-active .dashboard-main > *:not(#overview-section) {
4681
+ display: none;
4682
+ }
4683
+
4684
+ #overview-section .overview-grid {
4685
+ display: grid;
4686
+ grid-template-columns: 1fr;
4687
+ gap: 18px;
4688
+ }
4689
+
4690
+ @media (min-width: 1100px) {
4691
+ #overview-section .overview-grid {
4692
+ grid-template-columns: 1fr 1fr;
4693
+ }
4694
+
4695
+ #overview-section .overview-grid > [data-section="projects"] {
4696
+ grid-column: 1 / -1;
4697
+ }
4698
+ }
4699
+
4700
+ #overview-section .overview-panel {
4701
+ position: relative;
4702
+ background: var(--overview-bg);
4703
+ border: 1px solid var(--overview-border-faint);
4704
+ padding: 18px 20px 16px;
4705
+ animation: overview-reveal 250ms ease-out;
4706
+ }
4707
+
4708
+ #overview-section .overview-panel::before,
4709
+ #overview-section .overview-panel::after {
4710
+ content: "";
4711
+ position: absolute;
4712
+ width: 12px;
4713
+ height: 12px;
4714
+ pointer-events: none;
4715
+ }
4716
+
4717
+ #overview-section .overview-panel::before {
4718
+ top: -1px;
4719
+ left: -1px;
4720
+ border-top: 2px solid var(--overview-border-active);
4721
+ border-left: 2px solid var(--overview-border-active);
4722
+ }
4723
+
4724
+ #overview-section .overview-panel::after {
4725
+ bottom: -1px;
4726
+ right: -1px;
4727
+ border-bottom: 2px solid var(--overview-border-active);
4728
+ border-right: 2px solid var(--overview-border-active);
4729
+ }
4730
+
4731
+ @keyframes overview-reveal {
4732
+ from { opacity: 0; transform: translateY(4px); }
4733
+ to { opacity: 1; transform: translateY(0); }
4734
+ }
4735
+
4736
+ #overview-section .overview-panel-title {
4737
+ font-family: var(--overview-mono);
4738
+ font-size: 13px;
4739
+ letter-spacing: 0.04em;
4740
+ color: var(--overview-accent);
4741
+ margin-bottom: 14px;
4742
+ }
4743
+
4744
+ #overview-section .overview-empty {
4745
+ color: var(--overview-text-muted);
4746
+ font-family: var(--overview-mono);
4747
+ font-size: 12px;
4748
+ padding: 16px 0;
4749
+ text-align: center;
4750
+ }
4751
+
4752
+ #overview-section .overview-active-list,
4753
+ #overview-section .overview-recent-list {
4754
+ list-style: none;
4755
+ margin: 0;
4756
+ padding: 0;
4757
+ display: flex;
4758
+ flex-direction: column;
4759
+ gap: 6px;
4760
+ }
4761
+
4762
+ #overview-section .overview-active-row,
4763
+ #overview-section .overview-recent-row {
4764
+ display: grid;
4765
+ grid-template-columns: 14px auto 1fr auto;
4766
+ align-items: center;
4767
+ gap: 12px;
4768
+ padding: 6px 8px;
4769
+ border: 1px solid transparent;
4770
+ font-family: var(--overview-mono);
4771
+ font-size: 12px;
4772
+ transition: border-color 120ms ease-out, background-color 120ms ease-out;
4773
+ }
4774
+
4775
+ #overview-section .overview-active-row:hover,
4776
+ #overview-section .overview-recent-row:hover {
4777
+ border-color: var(--overview-border-faint);
4778
+ background: rgba(255, 138, 61, 0.04);
4779
+ }
4780
+
4781
+ #overview-section .overview-status-dot {
4782
+ width: 8px;
4783
+ height: 8px;
4784
+ border-radius: 50%;
4785
+ background: var(--overview-success);
4786
+ box-shadow: 0 0 6px rgba(92, 226, 139, 0.55);
4787
+ animation: overview-pulse 1.4s ease-in-out infinite;
4788
+ }
4789
+
4790
+ @keyframes overview-pulse {
4791
+ 0%, 100% { opacity: 0.7; box-shadow: 0 0 6px rgba(92, 226, 139, 0.45); }
4792
+ 50% { opacity: 1; box-shadow: 0 0 12px rgba(92, 226, 139, 0.75); }
4793
+ }
4794
+
4795
+ #overview-section .overview-active-project,
4796
+ #overview-section .overview-recent-project {
4797
+ color: var(--overview-accent);
4798
+ letter-spacing: 0.04em;
4799
+ }
4800
+
4801
+ #overview-section .overview-active-mr,
4802
+ #overview-section .overview-recent-mr {
4803
+ color: var(--overview-text-primary);
4804
+ text-decoration: none;
4805
+ font-weight: 600;
4806
+ }
4807
+
4808
+ #overview-section .overview-active-mr:hover {
4809
+ color: var(--overview-accent);
4810
+ text-decoration: underline;
4811
+ }
4812
+
4813
+ #overview-section .overview-active-elapsed {
4814
+ color: var(--overview-text-muted);
4815
+ text-align: right;
4816
+ }
4817
+
4818
+ #overview-section .overview-recent-title {
4819
+ color: var(--overview-text-muted);
4820
+ font-size: 11px;
4821
+ overflow: hidden;
4822
+ text-overflow: ellipsis;
4823
+ white-space: nowrap;
4824
+ }
4825
+
4826
+ #overview-section .overview-project-card-grid {
4827
+ display: grid;
4828
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
4829
+ gap: 12px;
4830
+ }
4831
+
4832
+ #overview-section .overview-project-card {
4833
+ background: transparent;
4834
+ border: 1px solid var(--overview-border-faint);
4835
+ color: var(--overview-text-primary);
4836
+ cursor: pointer;
4837
+ font-family: var(--overview-mono);
4838
+ padding: 14px 14px 10px;
4839
+ text-align: left;
4840
+ transition: border-color 120ms ease-out, background-color 120ms ease-out, transform 120ms ease-out;
4841
+ }
4842
+
4843
+ #overview-section .overview-project-card:hover {
4844
+ border-color: var(--overview-border-active);
4845
+ background: rgba(255, 138, 61, 0.06);
4846
+ transform: translateY(-1px);
4847
+ }
4848
+
4849
+ #overview-section .overview-project-card-header {
4850
+ display: flex;
4851
+ align-items: baseline;
4852
+ justify-content: space-between;
4853
+ margin-bottom: 8px;
4854
+ }
4855
+
4856
+ #overview-section .overview-project-card-name {
4857
+ color: var(--overview-accent);
4858
+ font-size: 13px;
4859
+ letter-spacing: 0.05em;
4860
+ }
4861
+
4862
+ #overview-section .overview-project-card-platform {
4863
+ color: var(--overview-text-muted);
4864
+ font-size: 10px;
4865
+ text-transform: uppercase;
4866
+ letter-spacing: 0.1em;
4867
+ }
4868
+
4869
+ #overview-section .overview-project-card-totals {
4870
+ display: flex;
4871
+ justify-content: space-between;
4872
+ font-size: 11px;
4873
+ color: var(--overview-text-primary);
4874
+ margin-bottom: 8px;
4875
+ }
4876
+
4877
+ #overview-section .overview-project-card-score {
4878
+ color: var(--overview-success);
4879
+ }
4880
+
4881
+ #overview-section .overview-project-card-sparkline {
4882
+ height: 28px;
4883
+ color: var(--overview-accent);
4884
+ }
4885
+
4886
+ #overview-section .overview-sparkline {
4887
+ width: 100%;
4888
+ height: 100%;
4889
+ display: block;
4890
+ }
4891
+
4892
+ @media (prefers-reduced-motion: reduce) {
4893
+ #overview-section .overview-panel,
4894
+ #overview-section .overview-status-dot,
4895
+ #overview-section .overview-project-card {
4896
+ animation: none !important;
4897
+ transition: none !important;
4898
+ }
4899
+ }
4900
+
4901
+ /* SPEC-177 — Project CRUD UI + sidebar animations */
4902
+
4903
+ .manage-projects-toggle {
4904
+ display: flex;
4905
+ align-items: center;
4906
+ justify-content: space-between;
4907
+ gap: 0.5rem;
4908
+ width: 100%;
4909
+ padding: 0.4rem 0.6rem;
4910
+ margin-bottom: 0.35rem;
4911
+ background: transparent;
4912
+ border: 1px solid rgba(251, 191, 36, 0.18);
4913
+ border-radius: 4px;
4914
+ color: #fbbf24;
4915
+ font-family: 'JetBrains Mono', ui-monospace, monospace;
4916
+ font-size: 0.72rem;
4917
+ letter-spacing: 0.06em;
4918
+ cursor: pointer;
4919
+ transition: border-color 200ms ease, background-color 200ms ease;
4920
+ }
4921
+
4922
+ .manage-projects-toggle:hover {
4923
+ border-color: rgba(251, 191, 36, 0.45);
4924
+ background-color: rgba(251, 191, 36, 0.04);
4925
+ }
4926
+
4927
+ .manage-projects-toggle[aria-expanded="true"] .manage-projects-toggle-icon {
4928
+ transform: rotate(180deg);
4929
+ }
4930
+
4931
+ .manage-projects-toggle-icon {
4932
+ width: 14px;
4933
+ height: 14px;
4934
+ transition: transform 200ms ease;
4935
+ }
4936
+
4937
+ #manage-panel {
4938
+ overflow: hidden;
4939
+ max-height: 0;
4940
+ opacity: 0;
4941
+ margin-bottom: 0;
4942
+ transition: max-height 250ms ease, opacity 250ms ease, margin-bottom 250ms ease;
4943
+ }
4944
+
4945
+ #manage-panel[data-open="true"] {
4946
+ max-height: 480px;
4947
+ opacity: 1;
4948
+ margin-bottom: 0.5rem;
4949
+ transition: max-height 250ms ease, opacity 250ms ease, margin-bottom 250ms ease;
4950
+ }
4951
+
4952
+ #manage-panel[data-open="false"] {
4953
+ transition: max-height 200ms ease, opacity 200ms ease, margin-bottom 200ms ease;
4954
+ }
4955
+
4956
+ #manage-panel .manage-panel-inner {
4957
+ display: flex;
4958
+ flex-direction: column;
4959
+ gap: 0.5rem;
4960
+ padding: 0.5rem;
4961
+ border: 1px solid rgba(251, 191, 36, 0.15);
4962
+ border-radius: 4px;
4963
+ background: rgba(20, 17, 14, 0.6);
4964
+ }
4965
+
4966
+ #manage-panel .manage-rows {
4967
+ display: flex;
4968
+ flex-direction: column;
4969
+ gap: 0.3rem;
4970
+ }
4971
+
4972
+ .manage-row {
4973
+ display: grid;
4974
+ grid-template-columns: 1fr auto auto auto;
4975
+ align-items: center;
4976
+ gap: 0.4rem;
4977
+ padding: 0.35rem 0.5rem;
4978
+ background: rgba(0, 0, 0, 0.25);
4979
+ border: 1px solid rgba(255, 255, 255, 0.06);
4980
+ border-radius: 3px;
4981
+ font-family: 'JetBrains Mono', ui-monospace, monospace;
4982
+ font-size: 0.72rem;
4983
+ color: #e7e5e4;
4984
+ transition: opacity 200ms ease, max-height 250ms ease, box-shadow 1500ms ease;
4985
+ overflow: hidden;
4986
+ }
4987
+
4988
+ .manage-row[data-enabled="false"] {
4989
+ opacity: 0.5;
4990
+ }
4991
+
4992
+ .manage-row-name {
4993
+ font-weight: 600;
4994
+ color: #fbbf24;
4995
+ white-space: nowrap;
4996
+ overflow: hidden;
4997
+ text-overflow: ellipsis;
4998
+ }
4999
+
5000
+ .manage-row-path {
5001
+ color: rgba(231, 229, 228, 0.55);
5002
+ font-size: 0.68rem;
5003
+ white-space: nowrap;
5004
+ overflow: hidden;
5005
+ text-overflow: ellipsis;
5006
+ }
5007
+
5008
+ .manage-row-toggle,
5009
+ .manage-row-delete {
5010
+ background: transparent;
5011
+ border: 1px solid rgba(255, 255, 255, 0.12);
5012
+ border-radius: 3px;
5013
+ color: #e7e5e4;
5014
+ font-family: inherit;
5015
+ font-size: 0.85rem;
5016
+ padding: 0 0.45rem;
5017
+ cursor: pointer;
5018
+ transition: transform 200ms ease, border-color 200ms ease, background-color 200ms ease;
5019
+ }
5020
+
5021
+ .manage-row-toggle .row-toggle-icon {
5022
+ display: inline-block;
5023
+ width: 10px;
5024
+ height: 10px;
5025
+ border-radius: 999px;
5026
+ background: #34d399;
5027
+ transition: transform 200ms ease, background-color 200ms ease;
5028
+ }
5029
+
5030
+ .manage-row-toggle.is-off .row-toggle-icon {
5031
+ background: #71717a;
5032
+ transform: rotate(180deg);
5033
+ }
5034
+
5035
+ .manage-row-toggle.is-on .row-toggle-icon {
5036
+ transform: rotate(0deg);
5037
+ }
5038
+
5039
+ .manage-row-delete:hover {
5040
+ border-color: #f87171;
5041
+ color: #f87171;
5042
+ }
5043
+
5044
+ .manage-row.is-entering {
5045
+ animation: spec177-manage-row-enter 1500ms ease forwards;
5046
+ }
5047
+
5048
+ .manage-row.is-leaving {
5049
+ max-height: 0;
5050
+ opacity: 0;
5051
+ padding-top: 0;
5052
+ padding-bottom: 0;
5053
+ margin-top: 0;
5054
+ margin-bottom: 0;
5055
+ border-width: 0;
5056
+ transition: max-height 250ms ease, opacity 250ms ease, padding 250ms ease, margin 250ms ease;
5057
+ }
5058
+
5059
+ @keyframes spec177-manage-row-enter {
5060
+ 0% {
5061
+ transform: translateY(-8px);
5062
+ opacity: 0;
5063
+ box-shadow: 0 0 0 0 rgba(52, 211, 153, 0);
5064
+ }
5065
+ 20% {
5066
+ transform: translateY(0);
5067
+ opacity: 1;
5068
+ box-shadow: 0 0 12px 2px rgba(52, 211, 153, 0.45);
5069
+ }
5070
+ 100% {
5071
+ transform: translateY(0);
5072
+ opacity: 1;
5073
+ box-shadow: 0 0 0 0 rgba(52, 211, 153, 0);
5074
+ }
5075
+ }
5076
+
5077
+ .add-form {
5078
+ display: flex;
5079
+ gap: 0.4rem;
5080
+ margin-top: 0.2rem;
5081
+ }
5082
+
5083
+ .add-form-input {
5084
+ flex: 1 1 auto;
5085
+ min-width: 0;
5086
+ padding: 0.35rem 0.5rem;
5087
+ background: rgba(0, 0, 0, 0.35);
5088
+ border: 1px solid rgba(251, 191, 36, 0.2);
5089
+ border-radius: 3px;
5090
+ color: #e7e5e4;
5091
+ font-family: 'JetBrains Mono', ui-monospace, monospace;
5092
+ font-size: 0.72rem;
5093
+ transition: border-color 200ms ease, box-shadow 200ms ease;
5094
+ }
5095
+
5096
+ .add-form-input:focus {
5097
+ outline: none;
5098
+ border-color: rgba(251, 191, 36, 0.6);
5099
+ }
5100
+
5101
+ .add-form-input.is-success {
5102
+ animation: spec177-input-success 1500ms ease forwards;
5103
+ }
5104
+
5105
+ @keyframes spec177-input-success {
5106
+ 0% {
5107
+ box-shadow: 0 0 0 0 rgba(52, 211, 153, 0);
5108
+ border-color: rgba(251, 191, 36, 0.2);
5109
+ }
5110
+ 30% {
5111
+ box-shadow: 0 0 12px 2px rgba(52, 211, 153, 0.55);
5112
+ border-color: #34d399;
5113
+ }
5114
+ 100% {
5115
+ box-shadow: 0 0 0 0 rgba(52, 211, 153, 0);
5116
+ border-color: rgba(251, 191, 36, 0.2);
5117
+ }
5118
+ }
5119
+
5120
+ .add-form-submit {
5121
+ padding: 0.35rem 0.7rem;
5122
+ background: rgba(251, 191, 36, 0.12);
5123
+ border: 1px solid rgba(251, 191, 36, 0.4);
5124
+ border-radius: 3px;
5125
+ color: #fbbf24;
5126
+ font-family: 'JetBrains Mono', ui-monospace, monospace;
5127
+ font-size: 0.72rem;
5128
+ letter-spacing: 0.04em;
5129
+ cursor: pointer;
5130
+ transition: background-color 200ms ease, border-color 200ms ease;
5131
+ }
5132
+
5133
+ .add-form-submit:hover {
5134
+ background: rgba(251, 191, 36, 0.22);
5135
+ border-color: #fbbf24;
5136
+ }
5137
+
5138
+ .add-form-submit.is-busy {
5139
+ animation: spec177-submit-busy 1200ms ease-in-out infinite;
5140
+ }
5141
+
5142
+ @keyframes spec177-submit-busy {
5143
+ 0%, 100% {
5144
+ border-color: rgba(251, 191, 36, 0.4);
5145
+ box-shadow: 0 0 0 0 rgba(251, 191, 36, 0);
5146
+ }
5147
+ 50% {
5148
+ border-color: #fbbf24;
5149
+ box-shadow: 0 0 10px 1px rgba(251, 191, 36, 0.4);
5150
+ }
5151
+ }
5152
+
5153
+ .add-form.is-error {
5154
+ animation: spec177-shake 300ms ease;
5155
+ }
5156
+
5157
+ @keyframes spec177-shake {
5158
+ 0%, 100% { transform: translateX(0); }
5159
+ 20% { transform: translateX(-4px); }
5160
+ 40% { transform: translateX(4px); }
5161
+ 60% { transform: translateX(-4px); }
5162
+ 80% { transform: translateX(4px); }
5163
+ }
5164
+
5165
+ .add-form-error {
5166
+ margin: 0;
5167
+ font-family: 'JetBrains Mono', ui-monospace, monospace;
5168
+ font-size: 0.68rem;
5169
+ color: #f87171;
5170
+ }
5171
+
5172
+ .dashboard-tab {
5173
+ transition: opacity 200ms ease, transform 1500ms ease, max-width 250ms ease, box-shadow 1500ms ease;
5174
+ }
5175
+
5176
+ .dashboard-tab[data-enabled="false"] {
5177
+ opacity: 0.4;
5178
+ }
5179
+
5180
+ .dashboard-tab.is-entering {
5181
+ animation: spec177-tab-enter 1500ms ease forwards;
5182
+ }
5183
+
5184
+ @keyframes spec177-tab-enter {
5185
+ 0% {
5186
+ transform: translateX(20px);
5187
+ opacity: 0;
5188
+ box-shadow: 0 0 0 0 rgba(52, 211, 153, 0);
5189
+ }
5190
+ 20% {
5191
+ transform: translateX(0);
5192
+ opacity: 1;
5193
+ box-shadow: 0 0 16px 3px rgba(52, 211, 153, 0.55);
5194
+ }
5195
+ 100% {
5196
+ transform: translateX(0);
5197
+ opacity: 1;
5198
+ box-shadow: 0 0 0 0 rgba(52, 211, 153, 0);
5199
+ }
5200
+ }
5201
+
5202
+ .dashboard-tab.is-leaving {
5203
+ opacity: 0;
5204
+ max-width: 0;
5205
+ padding-left: 0;
5206
+ padding-right: 0;
5207
+ margin: 0;
5208
+ border-width: 0;
5209
+ overflow: hidden;
5210
+ transition: opacity 250ms ease, max-width 250ms ease, padding 250ms ease, margin 250ms ease;
5211
+ }
5212
+
5213
+ @media (prefers-reduced-motion: reduce) {
5214
+ #manage-panel,
5215
+ #manage-panel .manage-panel-inner,
5216
+ .manage-row,
5217
+ .manage-row.is-entering,
5218
+ .manage-row.is-leaving,
5219
+ .manage-row-toggle,
5220
+ .manage-row-toggle .row-toggle-icon,
5221
+ .dashboard-tab,
5222
+ .dashboard-tab.is-entering,
5223
+ .dashboard-tab.is-leaving,
5224
+ .add-form,
5225
+ .add-form-input,
5226
+ .add-form-input.is-success,
5227
+ .add-form-submit,
5228
+ .add-form-submit.is-busy,
5229
+ .add-form.is-error {
5230
+ animation: none !important;
5231
+ transform: none !important;
5232
+ transition: opacity 150ms linear !important;
5233
+ box-shadow: none !important;
5234
+ }
5235
+ }
5236
+
5237
+ /* SPEC-178 — Project bar (horizontal navigation above cards) */
5238
+ .project-bar {
5239
+ position: relative;
5240
+ display: flex;
5241
+ align-items: flex-start;
5242
+ gap: 1rem;
5243
+ margin-bottom: 1rem;
5244
+ flex-wrap: nowrap;
5245
+ animation: project-bar-enter 250ms ease-out;
5246
+ }
5247
+
5248
+ .project-bar > #manage-projects-toggle {
5249
+ flex: 0 0 auto;
5250
+ }
5251
+
5252
+ .project-bar > #manage-panel {
5253
+ flex: 0 0 auto;
5254
+ min-width: 0;
5255
+ }
5256
+
5257
+ .project-bar > #dashboard-tabs {
5258
+ flex: 1 1 auto;
5259
+ min-width: 0;
5260
+ overflow-x: auto;
5261
+ }
5262
+
5263
+ /* SPEC-178 — Scope marker label above cards */
5264
+ .cards-scope-marker {
5265
+ font-family: 'JetBrains Mono', 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
5266
+ font-size: 11px;
5267
+ letter-spacing: 0.12em;
5268
+ text-transform: uppercase;
5269
+ margin: 0 0 0.5rem 0;
5270
+ display: flex;
5271
+ gap: 0.5rem;
5272
+ align-items: baseline;
5273
+ transition: opacity 200ms ease-out;
5274
+ }
5275
+
5276
+ .cards-scope-marker .cards-scope-prefix {
5277
+ color: rgba(251, 191, 36, 0.55);
5278
+ }
5279
+
5280
+ .cards-scope-marker .cards-scope-label {
5281
+ color: rgba(251, 191, 36, 0.95);
5282
+ font-weight: 600;
5283
+ }
5284
+
5285
+ .cards-scope-marker[data-scope-kind="overview"] .cards-scope-label {
5286
+ color: rgba(243, 238, 232, 0.9);
5287
+ }
5288
+
5289
+ @keyframes project-bar-enter {
5290
+ from {
5291
+ opacity: 0;
5292
+ transform: translateY(-6px);
5293
+ }
5294
+ to {
5295
+ opacity: 1;
5296
+ transform: translateY(0);
5297
+ }
5298
+ }
5299
+
5300
+ @media (max-width: 900px) {
5301
+ .project-bar {
5302
+ flex-wrap: wrap;
5303
+ }
5304
+
5305
+ .project-bar > #dashboard-tabs {
5306
+ width: 100%;
5307
+ flex-basis: 100%;
5308
+ }
5309
+ }
5310
+
5311
+ @media (prefers-reduced-motion: reduce) {
5312
+ .project-bar {
5313
+ animation: none !important;
5314
+ }
5315
+
5316
+ .cards-scope-marker {
5317
+ transition: none !important;
5318
+ }
5319
+ }
5320
+
5321
+ /* SPEC-179 — Settings modal + sidebar Settings button (Agentic OS DNA) */
5322
+
5323
+ .sidebar-settings-button {
5324
+ display: flex;
5325
+ align-items: center;
5326
+ justify-content: flex-start;
5327
+ margin-top: 0.75rem;
5328
+ padding: 0.5rem 0.75rem;
5329
+ background: transparent;
5330
+ border: 1px solid rgba(255, 176, 32, 0.35);
5331
+ color: #ffb020;
5332
+ font-family: var(--font-mono, 'JetBrains Mono', monospace);
5333
+ font-size: 0.75rem;
5334
+ letter-spacing: 0.05em;
5335
+ text-transform: uppercase;
5336
+ cursor: pointer;
5337
+ transition: border-color 120ms ease, background-color 120ms ease, color 120ms ease;
5338
+ }
5339
+
5340
+ .sidebar-settings-button:hover,
5341
+ .sidebar-settings-button:focus-visible {
5342
+ border-color: #ffb020;
5343
+ background: rgba(255, 176, 32, 0.08);
5344
+ color: #ffd27a;
5345
+ outline: none;
5346
+ }
5347
+
5348
+ .sidebar-settings-button[hidden] {
5349
+ display: none !important;
5350
+ }
5351
+
5352
+ .sidebar-settings-button__prefix {
5353
+ font-weight: 600;
5354
+ }
5355
+
5356
+ .settings-modal {
5357
+ margin: auto;
5358
+ max-width: 600px;
5359
+ width: calc(100% - 2rem);
5360
+ padding: 0;
5361
+ border: 1px solid #ffb020;
5362
+ background: #1a1410;
5363
+ color: #f4ead7;
5364
+ font-family: var(--font-mono, 'JetBrains Mono', monospace);
5365
+ box-shadow: 0 0 32px rgba(255, 176, 32, 0.18);
5366
+ border-radius: 6px;
5367
+ }
5368
+
5369
+ .settings-modal::backdrop {
5370
+ background: rgba(10, 7, 4, 0.78);
5371
+ backdrop-filter: blur(2px);
5372
+ }
5373
+
5374
+ .settings-modal__form {
5375
+ display: flex;
5376
+ flex-direction: column;
5377
+ gap: 1rem;
5378
+ padding: 1.5rem;
5379
+ }
5380
+
5381
+ .settings-modal__title {
5382
+ margin: 0 0 0.5rem;
5383
+ color: #ffb020;
5384
+ font-size: 0.875rem;
5385
+ letter-spacing: 0.06em;
5386
+ text-transform: uppercase;
5387
+ }
5388
+
5389
+ .settings-modal__field {
5390
+ display: flex;
5391
+ flex-direction: column;
5392
+ gap: 0.35rem;
5393
+ border: none;
5394
+ padding: 0;
5395
+ }
5396
+
5397
+ .settings-modal__legend {
5398
+ color: #f4ead7;
5399
+ font-size: 0.75rem;
5400
+ text-transform: uppercase;
5401
+ letter-spacing: 0.05em;
5402
+ padding: 0;
5403
+ margin-bottom: 0.35rem;
5404
+ }
5405
+
5406
+ .settings-modal__label {
5407
+ font-size: 0.75rem;
5408
+ letter-spacing: 0.05em;
5409
+ text-transform: uppercase;
5410
+ color: #d6c89a;
5411
+ }
5412
+
5413
+ .settings-modal__radio {
5414
+ display: inline-flex;
5415
+ align-items: center;
5416
+ gap: 0.4rem;
5417
+ margin-right: 1rem;
5418
+ font-size: 0.875rem;
5419
+ color: #f4ead7;
5420
+ }
5421
+
5422
+ .settings-modal__input,
5423
+ .settings-modal__select {
5424
+ background: #0c0905;
5425
+ border: 1px solid rgba(255, 176, 32, 0.3);
5426
+ color: #f4ead7;
5427
+ padding: 0.4rem 0.6rem;
5428
+ font-family: inherit;
5429
+ font-size: 0.875rem;
5430
+ border-radius: 3px;
5431
+ }
5432
+
5433
+ .settings-modal__input:focus,
5434
+ .settings-modal__select:focus {
5435
+ outline: none;
5436
+ border-color: #ffb020;
5437
+ box-shadow: 0 0 0 2px rgba(255, 176, 32, 0.18);
5438
+ }
5439
+
5440
+ .settings-modal__error {
5441
+ margin: 0;
5442
+ min-height: 1.25em;
5443
+ color: #ff6464;
5444
+ font-size: 0.8125rem;
5445
+ }
5446
+
5447
+ .settings-modal__actions {
5448
+ display: flex;
5449
+ justify-content: flex-end;
5450
+ gap: 0.5rem;
5451
+ }
5452
+
5453
+ .settings-modal__cancel,
5454
+ .settings-modal__submit {
5455
+ padding: 0.4rem 0.85rem;
5456
+ border-radius: 3px;
5457
+ font-family: inherit;
5458
+ font-size: 0.8125rem;
5459
+ letter-spacing: 0.04em;
5460
+ cursor: pointer;
5461
+ border: 1px solid rgba(255, 176, 32, 0.3);
5462
+ background: transparent;
5463
+ color: #f4ead7;
5464
+ transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
5465
+ }
5466
+
5467
+ .settings-modal__cancel:hover {
5468
+ border-color: #ffb020;
5469
+ }
5470
+
5471
+ .settings-modal__submit {
5472
+ background: #ffb020;
5473
+ border-color: #ffb020;
5474
+ color: #1a1410;
5475
+ font-weight: 600;
5476
+ }
5477
+
5478
+ .settings-modal__submit:hover {
5479
+ background: #ffd27a;
5480
+ }
5481
+
5482
+ .project-card__external {
5483
+ display: inline-flex;
5484
+ align-items: center;
5485
+ justify-content: center;
5486
+ margin-left: auto;
5487
+ padding: 0 0.35rem;
5488
+ color: #ffb020;
5489
+ font-size: 0.875rem;
5490
+ text-decoration: none;
5491
+ border-radius: 3px;
5492
+ transition: color 120ms ease, background-color 120ms ease;
5493
+ }
5494
+
5495
+ .project-card__external:hover,
5496
+ .project-card__external:focus-visible {
5497
+ color: #ffd27a;
5498
+ background: rgba(255, 176, 32, 0.1);
5499
+ outline: none;
5500
+ }
5501
+
5502
+ @media (prefers-reduced-motion: reduce) {
5503
+ .settings-modal {
5504
+ animation: none !important;
5505
+ transition: opacity 0.1s linear;
5506
+ }
5507
+
5508
+ .sidebar-settings-button {
5509
+ transition: none !important;
5510
+ }
5511
+ }