shared.css 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. :root {
  2. color-scheme: dark;
  3. --bg: #0c0f14;
  4. --card: #141a22;
  5. --border: #2a3340;
  6. --text: #e8eef6;
  7. --muted: #8b98a8;
  8. --accent: #3b82f6;
  9. --accent-hover: #60a5fa;
  10. --danger: #f87171;
  11. --ok: #4ade80;
  12. font-family:
  13. ui-sans-serif,
  14. system-ui,
  15. -apple-system,
  16. Segoe UI,
  17. Roboto,
  18. sans-serif;
  19. }
  20. * {
  21. box-sizing: border-box;
  22. }
  23. body {
  24. margin: 0;
  25. background: var(--bg);
  26. color: var(--text);
  27. }
  28. body.popup {
  29. width: 340px;
  30. padding: 14px;
  31. }
  32. body.page {
  33. max-width: 480px;
  34. margin: 0 auto;
  35. padding: 20px 16px 40px;
  36. min-height: 100vh;
  37. }
  38. .head {
  39. display: flex;
  40. align-items: center;
  41. gap: 10px;
  42. margin-bottom: 14px;
  43. }
  44. .logo {
  45. border-radius: 8px;
  46. }
  47. .grow {
  48. flex: 1;
  49. min-width: 0;
  50. }
  51. h1 {
  52. margin: 0;
  53. font-size: 16px;
  54. font-weight: 600;
  55. }
  56. .sub {
  57. margin: 2px 0 0;
  58. font-size: 11px;
  59. color: var(--muted);
  60. }
  61. .blurb {
  62. margin: 0 0 12px;
  63. font-size: 13px;
  64. line-height: 1.45;
  65. color: var(--muted);
  66. }
  67. .badge {
  68. font-size: 10px;
  69. font-weight: 600;
  70. text-transform: uppercase;
  71. letter-spacing: 0.04em;
  72. padding: 4px 8px;
  73. border-radius: 999px;
  74. border: 1px solid var(--border);
  75. }
  76. .badge.locked {
  77. color: #fbbf24;
  78. border-color: #854d0e;
  79. }
  80. .badge.unlocked {
  81. color: var(--ok);
  82. border-color: #166534;
  83. }
  84. .error {
  85. background: #450a0a;
  86. border: 1px solid #7f1d1d;
  87. color: #fecaca;
  88. padding: 8px 10px;
  89. border-radius: 8px;
  90. font-size: 12px;
  91. margin: 0 0 12px;
  92. }
  93. .ok {
  94. color: var(--ok);
  95. font-size: 14px;
  96. font-weight: 500;
  97. }
  98. .field {
  99. display: flex;
  100. flex-direction: column;
  101. gap: 6px;
  102. margin-bottom: 12px;
  103. font-size: 12px;
  104. color: var(--muted);
  105. }
  106. .field input,
  107. .field textarea {
  108. border: 1px solid var(--border);
  109. border-radius: 8px;
  110. background: var(--card);
  111. color: var(--text);
  112. padding: 9px 10px;
  113. font-size: 13px;
  114. }
  115. .field textarea {
  116. font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  117. resize: vertical;
  118. }
  119. .pw-row {
  120. display: flex;
  121. gap: 6px;
  122. }
  123. .pw-row input {
  124. flex: 1;
  125. border: 1px solid var(--border);
  126. border-radius: 8px;
  127. background: var(--card);
  128. color: var(--text);
  129. padding: 9px 10px;
  130. font-size: 13px;
  131. }
  132. .eye {
  133. width: 40px;
  134. border: 1px solid var(--border);
  135. border-radius: 8px;
  136. background: var(--card);
  137. cursor: pointer;
  138. }
  139. button.primary,
  140. button.ghost,
  141. button.danger {
  142. width: 100%;
  143. border-radius: 8px;
  144. padding: 10px 12px;
  145. font-size: 13px;
  146. font-weight: 500;
  147. cursor: pointer;
  148. margin-bottom: 6px;
  149. border: 1px solid var(--border);
  150. text-align: left;
  151. }
  152. button.primary {
  153. background: var(--accent);
  154. border-color: transparent;
  155. color: #fff;
  156. }
  157. button.primary:hover {
  158. background: var(--accent-hover);
  159. }
  160. button.primary:disabled {
  161. opacity: 0.45;
  162. cursor: not-allowed;
  163. }
  164. button.ghost {
  165. background: var(--card);
  166. color: var(--text);
  167. }
  168. button.danger {
  169. background: transparent;
  170. border-color: #7f1d1d;
  171. color: var(--danger);
  172. }
  173. .meta,
  174. .label {
  175. font-size: 11px;
  176. color: var(--muted);
  177. margin: 0 0 6px;
  178. }
  179. .mono {
  180. font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  181. font-size: 12px;
  182. }
  183. .break {
  184. word-break: break-all;
  185. margin: 0 0 12px;
  186. color: var(--text);
  187. }
  188. .foot {
  189. margin: 14px 0 0;
  190. font-size: 10px;
  191. color: var(--muted);
  192. line-height: 1.4;
  193. }
  194. .row {
  195. display: flex;
  196. flex-wrap: wrap;
  197. gap: 6px;
  198. }
  199. .row button {
  200. width: auto;
  201. flex: 1;
  202. min-width: 100px;
  203. }
  204. .phrase-grid {
  205. list-style: none;
  206. margin: 0 0 12px;
  207. padding: 0;
  208. display: grid;
  209. grid-template-columns: 1fr 1fr;
  210. gap: 6px;
  211. }
  212. .phrase-grid li {
  213. border: 1px solid var(--border);
  214. border-radius: 999px;
  215. padding: 8px 10px;
  216. font-family: ui-monospace, monospace;
  217. font-size: 12px;
  218. display: flex;
  219. gap: 6px;
  220. }
  221. .phrase-grid .n {
  222. color: var(--muted);
  223. }
  224. .reveal-box {
  225. border: 1px dashed var(--border);
  226. border-radius: 12px;
  227. padding: 24px;
  228. text-align: center;
  229. margin-bottom: 12px;
  230. }
  231. .quiz-row {
  232. margin-bottom: 14px;
  233. }
  234. .q-label {
  235. margin: 0 0 6px;
  236. font-size: 13px;
  237. font-weight: 500;
  238. }
  239. .choices {
  240. display: flex;
  241. flex-wrap: wrap;
  242. gap: 6px;
  243. }
  244. .choice {
  245. border: 1px solid var(--border);
  246. border-radius: 999px;
  247. background: var(--card);
  248. color: var(--text);
  249. padding: 8px 12px;
  250. font-family: ui-monospace, monospace;
  251. font-size: 12px;
  252. cursor: pointer;
  253. width: auto !important;
  254. margin: 0 !important;
  255. }
  256. .choice.selected {
  257. border-color: var(--accent);
  258. background: rgba(59, 130, 246, 0.15);
  259. color: var(--accent-hover);
  260. }