PlanReviewPanel.module.css 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /* Plan-review takeover: the waiting-approval card language (amber strip on a
  2. floating capsule, right-aligned actions) applied to a reviewed plan. Kept as
  3. its own module rather than shared with ui-conversation's ApprovalPanel: the
  4. two takeovers agree on tokens and geometry, not on content — this one's body
  5. is scrollable markdown, that one's is a headline plus a command line. Warn
  6. semantics ride the alias state tokens; no hardcoded colors. */
  7. /* Mirrors the question card's frame so the takeover is a content swap. */
  8. .frame {
  9. display: flex;
  10. justify-content: center;
  11. padding: 6px 24px 10px;
  12. }
  13. .card {
  14. display: flex;
  15. overflow: hidden;
  16. flex-direction: column;
  17. width: 100%;
  18. max-width: 776px;
  19. /* Composer seat sits in a fixed-height conversation column (overflow
  20. hidden): cap the card against the viewport and scroll the plan, so the
  21. strip and the decision row stay reachable on a long plan. */
  22. max-height: min(60vh, 520px);
  23. border: 1px solid var(--dsw-alias-state-warn-secondary);
  24. border-radius: 20px;
  25. background: var(--dsw-specific-input-major);
  26. box-shadow: var(--dsw-shadow-lv2);
  27. color: var(--dsw-alias-label-primary);
  28. /* Elevated surface in dark: the plan body inside scrolls once the card hits
  29. the cap above, so the thumb takes the l2 pair (see ui-theme
  30. styles/scrollbar.css for the rebinding contract). */
  31. --dsh-scrollbar-thumb: var(--dsw-alias-scrollbar-bg-l2);
  32. --dsh-scrollbar-thumb-hover: var(--dsw-alias-scrollbar-hover-l2);
  33. }
  34. .card,
  35. .card * {
  36. box-sizing: border-box;
  37. }
  38. /* Tinted full-width header band, as on the approval takeover. */
  39. .strip {
  40. display: flex;
  41. align-items: center;
  42. flex-shrink: 0;
  43. gap: 8px;
  44. padding: 10px 16px;
  45. background: var(--dsw-alias-state-warn-tertiary);
  46. color: var(--dsw-alias-state-warn-primary);
  47. font-size: 13px;
  48. line-height: 18px;
  49. }
  50. .dot {
  51. width: 8px;
  52. height: 8px;
  53. border-radius: 50%;
  54. background: var(--dsw-alias-state-warn-primary);
  55. }
  56. /* The plan is the panel's message: it takes the whole body and the scroll. */
  57. .body {
  58. flex: 1 1 auto;
  59. min-height: 0;
  60. overflow-y: auto;
  61. overscroll-behavior: contain;
  62. padding: 12px 16px 4px;
  63. font-size: 14px;
  64. line-height: 22px;
  65. }
  66. .footer {
  67. display: flex;
  68. align-items: center;
  69. justify-content: space-between;
  70. flex-shrink: 0;
  71. gap: 12px;
  72. padding: 8px 16px 12px;
  73. }
  74. .feedback {
  75. min-height: 16px;
  76. color: var(--dsw-alias-state-error-primary);
  77. font-size: 11px;
  78. line-height: 16px;
  79. }
  80. .actions {
  81. display: flex;
  82. align-items: center;
  83. flex-shrink: 0;
  84. gap: 8px;
  85. }
  86. @media (max-width: 720px) {
  87. .frame {
  88. padding: 6px 10px 10px;
  89. }
  90. .card {
  91. border-radius: 16px;
  92. }
  93. .body {
  94. padding: 10px 12px 4px;
  95. }
  96. .footer {
  97. align-items: flex-end;
  98. padding: 8px 12px 10px;
  99. }
  100. }