panels.css 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. details {
  2. --clr-500: var(--clr-blue-500);
  3. --clr-600: var(--clr-blue-600);
  4. --clr-700: var(--clr-blue-700);
  5. --clr-500-desaturated: var(--clr-blue-desaturated-500);
  6. --clr-600-desaturated: var(--clr-blue-desaturated-600);
  7. --clr-700-desaturated: var(--clr-blue-desaturated-700);
  8. max-height: 1.5em;
  9. overflow: hidden;
  10. transition: all .4s ease-in-out;
  11. margin-inline-start: -0.75rem;
  12. margin-inline-start: -0.81rem;
  13. @media (width < 535px) {
  14. & > *:not(summary) {
  15. margin-inline-start: 0.75rem;
  16. /* margin-inline-start: 0.81rem; */
  17. }
  18. }
  19. & details {
  20. margin-inline-start: 0;
  21. }
  22. &[open] {
  23. max-height: 90vh;
  24. /* max-height: 300vh; */
  25. /* overflow: auto; */
  26. summary { padding-block-end: .5em; }
  27. }
  28. /* if the repeater items don't fit the width */
  29. @media (width > 360px) {
  30. &:has(.repeater-item:nth-child(4)) {
  31. max-height: unset;
  32. }
  33. }
  34. @media (width <= 360px) {
  35. &:has(.repeater-item:nth-child(2)) {
  36. max-height: unset;
  37. }
  38. }
  39. /* color variations */
  40. &.danger {
  41. --clr-primary-hsl: var(--clr-danger-hsl);
  42. --clr-500: var(--clr-red-500);
  43. --clr-600: var(--clr-red-600);
  44. --clr-700: var(--clr-red-700);
  45. --clr-500-desaturated: var(--clr-red-desaturated-500);
  46. --clr-600-desaturated: var(--clr-red-desaturated-600);
  47. --clr-700-desaturated: var(--clr-red-desaturated-700);
  48. }
  49. &.success {
  50. --clr-primary-hsl: var(--clr-success-hsl);
  51. --clr-500: var(--clr-green-500);
  52. --clr-600: var(--clr-green-600);
  53. --clr-700: var(--clr-green-700);
  54. --clr-500-desaturated: var(--clr-green-desaturated-500);
  55. --clr-600-desaturated: var(--clr-green-desaturated-600);
  56. --clr-700-desaturated: var(--clr-green-desaturated-700);
  57. }
  58. &.warning {
  59. --clr-primary-hsl: var(--clr-warning-hsl);
  60. --clr-500: var(--clr-brown-500);
  61. --clr-600: var(--clr-brown-600);
  62. --clr-700: var(--clr-brown-700);
  63. --clr-500-desaturated: var(--clr-brown-desaturated-500);
  64. --clr-600-desaturated: var(--clr-brown-desaturated-600);
  65. --clr-700-desaturated: var(--clr-brown-desaturated-700);
  66. }
  67. /* button */
  68. & > summary {
  69. font-size: 16px;
  70. line-height: 26px;
  71. cursor: pointer;
  72. transition:
  73. outline .4s cubic-bezier(0.22, 1, 0.36, 1),
  74. padding .2s ease-in;
  75. color: var(--clr-500);
  76. color: var(--clr-600);
  77. font-family: inherit;
  78. font-weight: bold;
  79. letter-spacing: -.025em;
  80. max-width: min-content;
  81. user-select: auto;
  82. white-space: nowrap;
  83. &:hover {
  84. background: none;
  85. color: var(--clr-700);
  86. }
  87. &:focus-visible {
  88. outline: none;
  89. text-decoration: underline;
  90. /* text-underline-offset: 0.2em; */
  91. text-underline-position: under;
  92. text-decoration-thickness: 2;
  93. color: #000;
  94. border-radius: 8px;
  95. }
  96. &:focus-visible::marker {
  97. color: inherit;
  98. }
  99. &::marker {
  100. color: var(--clr-600-desaturated);
  101. color: hsl(var(--clr-primary-hsl)/.8);
  102. }
  103. &:hover::marker {
  104. color: inherit;
  105. }
  106. &:active {
  107. transform: scale(.975);
  108. transition: transform .3s cubic-bezier(0.22, 1, 0.36, 1),
  109. outline .4s cubic-bezier(0.22, 1, 0.36, 1),
  110. background-color .2s linear;
  111. }
  112. }
  113. /* contents */
  114. /* & > *:nth-child(2):last-child { */
  115. & > .panel {
  116. background: hsl(var(--clr-primary-hsl)/.1);
  117. border-radius: 8px;
  118. border: solid 1.5px hsl(var(--clr-primary-hsl)/.075);
  119. gap: 1rem;
  120. /* margin-block: 1rem 2rem; */
  121. padding: 0.75rem 1rem 1rem;
  122. position: relative;
  123. justify-content: flex-start;
  124. & label {
  125. color: var(--clr-700-desaturated);
  126. font-weight: 600;
  127. letter-spacing: -.0175em;
  128. }
  129. & > p:last-child:not([class]) {
  130. color: var(--clr-500-desaturated);
  131. }
  132. }
  133. }
  134. .panel > small {
  135. display: block;
  136. opacity: 75%;
  137. text-wrap: balance;
  138. line-height: 1.75;
  139. font-weight: 600;
  140. display: grid;
  141. gap: 1em;
  142. /* outline: solid 1px red; */
  143. }