@iann29/rastro 0.10.8 → 0.11.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 (182) hide show
  1. package/README.md +8 -0
  2. package/agent/integration.md +45 -0
  3. package/agent/manifest.json +4 -4
  4. package/dist/client/federation.d.ts +82 -9
  5. package/dist/client/federation.d.ts.map +1 -1
  6. package/dist/client/federation.js +40 -2
  7. package/dist/client/federation.js.map +1 -1
  8. package/dist/client/index.d.ts +464 -8
  9. package/dist/client/index.d.ts.map +1 -1
  10. package/dist/client/index.js +259 -7
  11. package/dist/client/index.js.map +1 -1
  12. package/dist/component/_generated/api.d.ts +10 -0
  13. package/dist/component/_generated/api.d.ts.map +1 -1
  14. package/dist/component/_generated/api.js.map +1 -1
  15. package/dist/component/_generated/component.d.ts +273 -21
  16. package/dist/component/_generated/component.d.ts.map +1 -1
  17. package/dist/component/_generated/server.d.ts +2 -0
  18. package/dist/component/_generated/server.d.ts.map +1 -1
  19. package/dist/component/_generated/server.js.map +1 -1
  20. package/dist/component/constants.d.ts +31 -0
  21. package/dist/component/constants.d.ts.map +1 -1
  22. package/dist/component/constants.js +31 -0
  23. package/dist/component/constants.js.map +1 -1
  24. package/dist/component/convex.config.d.ts +2 -0
  25. package/dist/component/convex.config.js +7 -0
  26. package/dist/component/convex.config.js.map +1 -1
  27. package/dist/component/errors.d.ts +1 -1
  28. package/dist/component/errors.d.ts.map +1 -1
  29. package/dist/component/errors.js.map +1 -1
  30. package/dist/component/http.d.ts.map +1 -1
  31. package/dist/component/http.js +64 -0
  32. package/dist/component/http.js.map +1 -1
  33. package/dist/component/leadAdsValidators.d.ts +1092 -0
  34. package/dist/component/leadAdsValidators.d.ts.map +1 -0
  35. package/dist/component/leadAdsValidators.js +304 -0
  36. package/dist/component/leadAdsValidators.js.map +1 -0
  37. package/dist/component/leadFormRules.d.ts +60 -0
  38. package/dist/component/leadFormRules.d.ts.map +1 -0
  39. package/dist/component/leadFormRules.js +140 -0
  40. package/dist/component/leadFormRules.js.map +1 -0
  41. package/dist/component/leadFormStore.d.ts +16 -0
  42. package/dist/component/leadFormStore.d.ts.map +1 -0
  43. package/dist/component/leadFormStore.js +92 -0
  44. package/dist/component/leadFormStore.js.map +1 -0
  45. package/dist/component/leadgenToken.d.ts +56 -0
  46. package/dist/component/leadgenToken.d.ts.map +1 -0
  47. package/dist/component/leadgenToken.js +262 -0
  48. package/dist/component/leadgenToken.js.map +1 -0
  49. package/dist/component/leads.d.ts +76 -7
  50. package/dist/component/leads.d.ts.map +1 -1
  51. package/dist/component/leads.js +112 -78
  52. package/dist/component/leads.js.map +1 -1
  53. package/dist/component/meta.d.ts.map +1 -1
  54. package/dist/component/meta.js +21 -1
  55. package/dist/component/meta.js.map +1 -1
  56. package/dist/component/metaCapi.d.ts.map +1 -1
  57. package/dist/component/metaCapi.js +10 -0
  58. package/dist/component/metaCapi.js.map +1 -1
  59. package/dist/component/metaFake.d.ts +44 -0
  60. package/dist/component/metaFake.d.ts.map +1 -1
  61. package/dist/component/metaFake.js +400 -1
  62. package/dist/component/metaFake.js.map +1 -1
  63. package/dist/component/metaGraph.d.ts +91 -0
  64. package/dist/component/metaGraph.d.ts.map +1 -1
  65. package/dist/component/metaGraph.js +217 -0
  66. package/dist/component/metaGraph.js.map +1 -1
  67. package/dist/component/metaLeads.d.ts +681 -0
  68. package/dist/component/metaLeads.d.ts.map +1 -0
  69. package/dist/component/metaLeads.js +2634 -0
  70. package/dist/component/metaLeads.js.map +1 -0
  71. package/dist/component/schema.d.ts +414 -5
  72. package/dist/component/schema.d.ts.map +1 -1
  73. package/dist/component/schema.js +169 -1
  74. package/dist/component/schema.js.map +1 -1
  75. package/dist/component/validators.d.ts +235 -11
  76. package/dist/component/validators.d.ts.map +1 -1
  77. package/dist/component/validators.js +14 -1
  78. package/dist/component/validators.js.map +1 -1
  79. package/dist/tracker/generated.d.ts +1 -1
  80. package/dist/tracker/generated.js +1 -1
  81. package/dist/ui/campaigns/CampaignsView.d.ts +5 -1
  82. package/dist/ui/campaigns/CampaignsView.d.ts.map +1 -1
  83. package/dist/ui/campaigns/CampaignsView.js.map +1 -1
  84. package/dist/ui/campaigns/Drawer.d.ts.map +1 -1
  85. package/dist/ui/campaigns/Drawer.js +8 -26
  86. package/dist/ui/campaigns/Drawer.js.map +1 -1
  87. package/dist/ui/campaigns/labels.d.ts +29 -1
  88. package/dist/ui/campaigns/labels.d.ts.map +1 -1
  89. package/dist/ui/campaigns/labels.js +77 -2
  90. package/dist/ui/campaigns/labels.js.map +1 -1
  91. package/dist/ui/campaigns/model.js +2 -2
  92. package/dist/ui/campaigns/model.js.map +1 -1
  93. package/dist/ui/forms/FirstContact.d.ts +19 -0
  94. package/dist/ui/forms/FirstContact.d.ts.map +1 -0
  95. package/dist/ui/forms/FirstContact.js +81 -0
  96. package/dist/ui/forms/FirstContact.js.map +1 -0
  97. package/dist/ui/forms/FormLead.d.ts +28 -0
  98. package/dist/ui/forms/FormLead.d.ts.map +1 -0
  99. package/dist/ui/forms/FormLead.js +199 -0
  100. package/dist/ui/forms/FormLead.js.map +1 -0
  101. package/dist/ui/forms/FormRulesDrawer.d.ts +49 -0
  102. package/dist/ui/forms/FormRulesDrawer.d.ts.map +1 -0
  103. package/dist/ui/forms/FormRulesDrawer.js +149 -0
  104. package/dist/ui/forms/FormRulesDrawer.js.map +1 -0
  105. package/dist/ui/forms/FormsView.d.ts +10 -0
  106. package/dist/ui/forms/FormsView.d.ts.map +1 -0
  107. package/dist/ui/forms/FormsView.js +215 -0
  108. package/dist/ui/forms/FormsView.js.map +1 -0
  109. package/dist/ui/forms/Icons.d.ts +46 -0
  110. package/dist/ui/forms/Icons.d.ts.map +1 -0
  111. package/dist/ui/forms/Icons.js +45 -0
  112. package/dist/ui/forms/Icons.js.map +1 -0
  113. package/dist/ui/forms/RuleRow.d.ts +37 -0
  114. package/dist/ui/forms/RuleRow.d.ts.map +1 -0
  115. package/dist/ui/forms/RuleRow.js +80 -0
  116. package/dist/ui/forms/RuleRow.js.map +1 -0
  117. package/dist/ui/forms/WhatsAppButtonGuide.d.ts +33 -0
  118. package/dist/ui/forms/WhatsAppButtonGuide.d.ts.map +1 -0
  119. package/dist/ui/forms/WhatsAppButtonGuide.js +90 -0
  120. package/dist/ui/forms/WhatsAppButtonGuide.js.map +1 -0
  121. package/dist/ui/forms/index.d.ts +11 -0
  122. package/dist/ui/forms/index.d.ts.map +1 -0
  123. package/dist/ui/forms/index.js +7 -0
  124. package/dist/ui/forms/index.js.map +1 -0
  125. package/dist/ui/forms/journey.d.ts +19 -0
  126. package/dist/ui/forms/journey.d.ts.map +1 -0
  127. package/dist/ui/forms/journey.js +54 -0
  128. package/dist/ui/forms/journey.js.map +1 -0
  129. package/dist/ui/forms/model.d.ts +239 -0
  130. package/dist/ui/forms/model.d.ts.map +1 -0
  131. package/dist/ui/forms/model.js +556 -0
  132. package/dist/ui/forms/model.js.map +1 -0
  133. package/dist/ui/forms/sample.d.ts +36 -0
  134. package/dist/ui/forms/sample.d.ts.map +1 -0
  135. package/dist/ui/forms/sample.js +444 -0
  136. package/dist/ui/forms/sample.js.map +1 -0
  137. package/dist/ui/forms/types.d.ts +454 -0
  138. package/dist/ui/forms/types.d.ts.map +1 -0
  139. package/dist/ui/forms/types.js +2 -0
  140. package/dist/ui/forms/types.js.map +1 -0
  141. package/dist/ui/index.d.ts +2 -0
  142. package/dist/ui/index.d.ts.map +1 -1
  143. package/dist/ui/index.js +4 -0
  144. package/dist/ui/index.js.map +1 -1
  145. package/dist/ui/integrations/Overlay.d.ts +3 -1
  146. package/dist/ui/integrations/Overlay.d.ts.map +1 -1
  147. package/dist/ui/integrations/Overlay.js +2 -2
  148. package/dist/ui/integrations/Overlay.js.map +1 -1
  149. package/dist/ui/portfolio/PortfolioView.d.ts +4 -1
  150. package/dist/ui/portfolio/PortfolioView.d.ts.map +1 -1
  151. package/dist/ui/portfolio/PortfolioView.js.map +1 -1
  152. package/dist/ui/sample.d.ts +3 -1
  153. package/dist/ui/sample.d.ts.map +1 -1
  154. package/dist/ui/sample.js +2 -0
  155. package/dist/ui/sample.js.map +1 -1
  156. package/dist/ui/seed.d.ts +1 -1
  157. package/dist/ui/ui.css +2301 -0
  158. package/docs/federation.md +19 -0
  159. package/docs/meta-ads.md +713 -7
  160. package/docs/upgrading.md +75 -0
  161. package/llms.txt +1 -0
  162. package/package.json +1 -1
  163. package/src/component/_generated/api.ts +10 -0
  164. package/src/component/_generated/component.ts +289 -20
  165. package/src/component/_generated/server.ts +2 -0
  166. package/src/component/constants.ts +33 -0
  167. package/src/component/convex.config.ts +7 -0
  168. package/src/component/errors.ts +3 -1
  169. package/src/component/http.ts +75 -0
  170. package/src/component/leadAdsValidators.ts +365 -0
  171. package/src/component/leadFormRules.ts +202 -0
  172. package/src/component/leadFormStore.ts +129 -0
  173. package/src/component/leadgenToken.ts +348 -0
  174. package/src/component/leads.ts +136 -84
  175. package/src/component/meta.ts +21 -1
  176. package/src/component/metaCapi.ts +13 -1
  177. package/src/component/metaFake.ts +485 -1
  178. package/src/component/metaGraph.ts +327 -0
  179. package/src/component/metaLeads.ts +3101 -0
  180. package/src/component/schema.ts +187 -1
  181. package/src/component/validators.ts +17 -1
  182. package/src/tracker/generated.ts +1 -1
package/dist/ui/ui.css CHANGED
@@ -1027,6 +1027,18 @@
1027
1027
  text-overflow: ellipsis;
1028
1028
  white-space: nowrap;
1029
1029
  }
1030
+ .rastro-campaigns__form-lead {
1031
+ display: flex;
1032
+ flex-direction: column;
1033
+ align-items: flex-start;
1034
+ gap: 8px;
1035
+ min-width: 0;
1036
+ margin-bottom: 12px;
1037
+ }
1038
+ .rastro-campaigns__form-lead > .rastro-forms__lead {
1039
+ align-self: stretch;
1040
+ min-width: 0;
1041
+ }
1030
1042
  .rastro-campaigns__timeline {
1031
1043
  display: flex;
1032
1044
  flex-direction: column;
@@ -1192,6 +1204,2295 @@
1192
1204
  color: var(--rastro-fg);
1193
1205
  }
1194
1206
 
1207
+ /* src/ui/forms/forms.css */
1208
+ /*
1209
+ * Formulários (Lead Ads): FormsView (D1), FormRulesDrawer (D2, D7; D8 under
1210
+ * 640px of its own width), WhatsAppButtonGuide (D3), and the lead's badge and
1211
+ * answers for the host's card (D4–D6, D9). Container queries, not media
1212
+ * queries: each piece reads its own width, wherever the host puts it.
1213
+ */
1214
+
1215
+ .rastro-forms {
1216
+ --rastro-forms-meta: #0866ff;
1217
+ --rastro-forms-meta-bg: color-mix(in oklab, #0866ff 13%, var(--rastro-card));
1218
+ --rastro-forms-meta-fg: color-mix(in oklab, #0866ff 70%, var(--rastro-fg));
1219
+ --rastro-forms-tint: color-mix(
1220
+ in oklab,
1221
+ var(--rastro-accent) 7%,
1222
+ var(--rastro-card)
1223
+ );
1224
+ --rastro-forms-tint-line: color-mix(
1225
+ in oklab,
1226
+ var(--rastro-accent) 22%,
1227
+ var(--rastro-card)
1228
+ );
1229
+ --rastro-forms-quiet: color-mix(
1230
+ in oklab,
1231
+ var(--rastro-muted) 55%,
1232
+ var(--rastro-card)
1233
+ );
1234
+ --rastro-forms-discard: oklch(0.52 0.08 285);
1235
+ --rastro-forms-danger-line: color-mix(
1236
+ in oklab,
1237
+ var(--rastro-weak) 28%,
1238
+ var(--rastro-card)
1239
+ );
1240
+ --rastro-forms-ring: color-mix(in oklab, var(--rastro-fg) 9%, transparent);
1241
+ line-height: normal;
1242
+ }
1243
+ /* Reset with one class of weight, so each part's own margin wins. */
1244
+ .rastro-forms :where(p, h2, h3, ul, ol, dl, dd) {
1245
+ margin: 0;
1246
+ }
1247
+ .rastro-forms :where(button, input, select, textarea) {
1248
+ font: inherit;
1249
+ color: inherit;
1250
+ }
1251
+ .rastro-forms :focus-visible {
1252
+ outline: 2px solid var(--rastro-accent);
1253
+ outline-offset: 2px;
1254
+ }
1255
+ .rastro-forms__icon {
1256
+ flex: none;
1257
+ }
1258
+ .rastro-forms__grow {
1259
+ flex: 1;
1260
+ min-width: 0;
1261
+ }
1262
+ .rastro-forms__sr {
1263
+ position: absolute;
1264
+ width: 1px;
1265
+ height: 1px;
1266
+ overflow: hidden;
1267
+ clip: rect(0 0 0 0);
1268
+ white-space: nowrap;
1269
+ }
1270
+ .rastro-forms__inline {
1271
+ display: inline-flex;
1272
+ align-items: center;
1273
+ gap: 5px;
1274
+ }
1275
+ .rastro-forms__eyebrow {
1276
+ font-size: 10.5px;
1277
+ font-weight: 700;
1278
+ letter-spacing: 0.14em;
1279
+ text-transform: uppercase;
1280
+ color: var(--rastro-muted-fg);
1281
+ }
1282
+ .rastro-forms__tip {
1283
+ display: flex;
1284
+ align-items: center;
1285
+ gap: 6px;
1286
+ font-size: 12px;
1287
+ color: var(--rastro-muted-fg);
1288
+ line-height: 1.4;
1289
+ }
1290
+ .rastro-forms__none {
1291
+ color: var(--rastro-muted-fg);
1292
+ font-size: 12.5px;
1293
+ }
1294
+ .rastro-forms__dot {
1295
+ width: 9px;
1296
+ height: 9px;
1297
+ border-radius: 999px;
1298
+ display: inline-block;
1299
+ flex: none;
1300
+ background: var(--rastro-muted-fg);
1301
+ }
1302
+
1303
+ /* Pills and badges */
1304
+ .rastro-forms__pill {
1305
+ display: inline-flex;
1306
+ align-items: center;
1307
+ gap: 5px;
1308
+ height: 24px;
1309
+ padding: 0 10px;
1310
+ border-radius: 999px;
1311
+ font-size: 12px;
1312
+ font-weight: 600;
1313
+ white-space: nowrap;
1314
+ background: var(--rastro-muted);
1315
+ color: var(--rastro-fg);
1316
+ }
1317
+ .rastro-forms__pill[data-tone="ok"] {
1318
+ background: var(--rastro-strong-bg);
1319
+ color: var(--rastro-strong);
1320
+ }
1321
+ .rastro-forms__pill[data-tone="warn"] {
1322
+ background: var(--rastro-ok-bg);
1323
+ color: var(--rastro-ok);
1324
+ }
1325
+ .rastro-forms__pill[data-tone="line"] {
1326
+ background: var(--rastro-card);
1327
+ box-shadow: inset 0 0 0 1px var(--rastro-border);
1328
+ color: var(--rastro-muted-fg);
1329
+ }
1330
+ .rastro-forms__pill[data-tone="sync"] {
1331
+ background: var(--rastro-forms-meta-bg);
1332
+ color: var(--rastro-forms-meta-fg);
1333
+ }
1334
+ .rastro-forms__live {
1335
+ width: 7px;
1336
+ height: 7px;
1337
+ border-radius: 999px;
1338
+ background: currentColor;
1339
+ box-shadow: 0 0 0 3px color-mix(in oklab, currentColor 22%, transparent);
1340
+ flex: none;
1341
+ }
1342
+ .rastro-forms__spin {
1343
+ width: 10px;
1344
+ height: 10px;
1345
+ border-radius: 999px;
1346
+ border: 2px solid currentColor;
1347
+ border-right-color: transparent;
1348
+ display: inline-block;
1349
+ flex: none;
1350
+ animation: rastro-forms-spin 0.9s linear infinite;
1351
+ }
1352
+ @keyframes rastro-forms-spin {
1353
+ to {
1354
+ transform: rotate(360deg);
1355
+ }
1356
+ }
1357
+ @media (prefers-reduced-motion: reduce) {
1358
+ .rastro-forms__spin {
1359
+ animation: none;
1360
+ }
1361
+ }
1362
+ .rastro-forms__badge {
1363
+ display: inline-flex;
1364
+ align-items: center;
1365
+ height: 18px;
1366
+ padding: 0 7px;
1367
+ border-radius: 999px;
1368
+ font-size: 9.5px;
1369
+ font-weight: 800;
1370
+ letter-spacing: 0.05em;
1371
+ text-transform: uppercase;
1372
+ white-space: nowrap;
1373
+ background: var(--rastro-muted);
1374
+ color: var(--rastro-muted-fg);
1375
+ }
1376
+ .rastro-forms__badge[data-tone="rec"] {
1377
+ background: var(--rastro-accent);
1378
+ color: var(--rastro-accent-fg);
1379
+ }
1380
+ .rastro-forms__badge[data-tone="on"] {
1381
+ background: var(--rastro-forms-tint);
1382
+ color: var(--rastro-fg);
1383
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-tint-line);
1384
+ }
1385
+ .rastro-forms__badge[data-tone="risk"] {
1386
+ background: var(--rastro-weak-bg);
1387
+ color: var(--rastro-weak);
1388
+ }
1389
+
1390
+ /* Buttons */
1391
+ .rastro-forms__btn {
1392
+ display: inline-flex;
1393
+ align-items: center;
1394
+ justify-content: center;
1395
+ gap: 7px;
1396
+ height: 36px;
1397
+ padding: 0 14px;
1398
+ border: 0;
1399
+ border-radius: 10px;
1400
+ font-size: 13.5px;
1401
+ font-weight: 600;
1402
+ white-space: nowrap;
1403
+ text-decoration: none;
1404
+ cursor: pointer;
1405
+ background: var(--rastro-accent);
1406
+ }
1407
+ .rastro-forms .rastro-forms__btn {
1408
+ color: var(--rastro-accent-fg);
1409
+ }
1410
+ .rastro-forms .rastro-forms__btn[data-variant="outline"],
1411
+ .rastro-forms .rastro-forms__btn[data-variant="ghost"] {
1412
+ color: var(--rastro-fg);
1413
+ }
1414
+ .rastro-forms__btn[data-variant="outline"] {
1415
+ background: var(--rastro-card);
1416
+ box-shadow: inset 0 0 0 1px var(--rastro-border);
1417
+ }
1418
+ .rastro-forms__btn[data-variant="ghost"] {
1419
+ background: transparent;
1420
+ }
1421
+ .rastro-forms .rastro-forms__btn[data-variant="danger"] {
1422
+ background: var(--rastro-weak);
1423
+ color: var(--rastro-card);
1424
+ }
1425
+ .rastro-forms__btn[data-size="sm"] {
1426
+ height: 32px;
1427
+ padding: 0 12px;
1428
+ font-size: 13px;
1429
+ border-radius: 9px;
1430
+ }
1431
+ .rastro-forms__btn[data-size="xs"] {
1432
+ height: 26px;
1433
+ padding: 0 9px;
1434
+ font-size: 12px;
1435
+ border-radius: 7px;
1436
+ }
1437
+ .rastro-forms__btn[data-block] {
1438
+ width: 100%;
1439
+ height: 40px;
1440
+ }
1441
+ .rastro-forms__btn:hover:not(:disabled) {
1442
+ filter: brightness(1.06);
1443
+ }
1444
+ .rastro-forms__btn[data-variant="outline"]:hover:not(:disabled),
1445
+ .rastro-forms__btn[data-variant="ghost"]:hover:not(:disabled) {
1446
+ filter: none;
1447
+ background: var(--rastro-muted);
1448
+ }
1449
+ .rastro-forms__btn:disabled {
1450
+ opacity: 0.45;
1451
+ cursor: not-allowed;
1452
+ }
1453
+ .rastro-forms__icon-btn {
1454
+ display: inline-grid;
1455
+ place-items: center;
1456
+ width: 28px;
1457
+ height: 28px;
1458
+ border: 0;
1459
+ border-radius: 7px;
1460
+ background: transparent;
1461
+ color: var(--rastro-muted-fg);
1462
+ cursor: pointer;
1463
+ flex: none;
1464
+ padding: 0;
1465
+ }
1466
+ .rastro-forms__icon-btn:hover:not(:disabled) {
1467
+ background: var(--rastro-muted);
1468
+ color: var(--rastro-fg);
1469
+ }
1470
+ .rastro-forms__icon-btn:disabled {
1471
+ cursor: default;
1472
+ opacity: 0.5;
1473
+ }
1474
+ .rastro-forms__close {
1475
+ display: grid;
1476
+ place-items: center;
1477
+ width: 34px;
1478
+ height: 34px;
1479
+ border: 0;
1480
+ border-radius: 10px;
1481
+ background: var(--rastro-card);
1482
+ box-shadow: inset 0 0 0 1px var(--rastro-border);
1483
+ color: var(--rastro-muted-fg);
1484
+ cursor: pointer;
1485
+ }
1486
+ .rastro-forms__close:hover {
1487
+ color: var(--rastro-fg);
1488
+ background: var(--rastro-muted);
1489
+ }
1490
+ .rastro-forms__lnk {
1491
+ display: inline-flex;
1492
+ align-items: center;
1493
+ gap: 4px;
1494
+ border: 0;
1495
+ background: none;
1496
+ padding: 0;
1497
+ font-weight: 700;
1498
+ font-size: inherit;
1499
+ color: var(--rastro-fg);
1500
+ white-space: nowrap;
1501
+ cursor: pointer;
1502
+ text-decoration: underline;
1503
+ text-decoration-color: var(--rastro-forms-tint-line);
1504
+ text-underline-offset: 3px;
1505
+ }
1506
+ .rastro-forms__lnk[data-tone="muted"] {
1507
+ color: var(--rastro-muted-fg);
1508
+ }
1509
+ .rastro-forms__lnk:hover {
1510
+ text-decoration-color: currentColor;
1511
+ }
1512
+
1513
+ /* Callouts */
1514
+ .rastro-forms__callout {
1515
+ display: flex;
1516
+ gap: 10px;
1517
+ align-items: flex-start;
1518
+ padding: 10px 12px;
1519
+ border-radius: 10px;
1520
+ font-size: 13px;
1521
+ line-height: 1.45;
1522
+ background: var(--rastro-muted);
1523
+ }
1524
+ .rastro-forms__callout > .rastro-forms__icon {
1525
+ margin-top: 2px;
1526
+ }
1527
+ .rastro-forms__callout[data-tone="bad"] {
1528
+ background: var(--rastro-weak-bg);
1529
+ color: var(--rastro-weak);
1530
+ }
1531
+ .rastro-forms__callout[data-tone="ok"] {
1532
+ background: var(--rastro-strong-bg);
1533
+ color: var(--rastro-strong);
1534
+ }
1535
+ .rastro-forms__callout b {
1536
+ font-weight: 600;
1537
+ }
1538
+
1539
+ /* FormsView (D1) */
1540
+ .rastro-forms__view {
1541
+ container: rastro-forms / inline-size;
1542
+ display: flex;
1543
+ flex-direction: column;
1544
+ gap: 14px;
1545
+ min-width: 0;
1546
+ }
1547
+ .rastro-forms__skeleton {
1548
+ height: 260px;
1549
+ }
1550
+ .rastro-forms__skeleton[data-size="sm"] {
1551
+ height: 36px;
1552
+ }
1553
+ .rastro-forms__status {
1554
+ display: flex;
1555
+ align-items: center;
1556
+ gap: 8px 12px;
1557
+ flex-wrap: wrap;
1558
+ }
1559
+ .rastro-forms__summary {
1560
+ margin-left: auto;
1561
+ font-size: 12.5px;
1562
+ color: var(--rastro-muted-fg);
1563
+ }
1564
+ .rastro-forms__summary b {
1565
+ font-weight: 700;
1566
+ color: var(--rastro-fg);
1567
+ }
1568
+ .rastro-forms__card {
1569
+ background: var(--rastro-card);
1570
+ border-radius: calc(var(--rastro-radius) + 6px);
1571
+ box-shadow:
1572
+ 0 0 0 1px var(--rastro-border),
1573
+ 0 1px 2px rgb(0 0 0 / 5%);
1574
+ min-width: 0;
1575
+ overflow: hidden;
1576
+ }
1577
+ .rastro-forms__card-h {
1578
+ display: flex;
1579
+ align-items: center;
1580
+ gap: 12px;
1581
+ padding: 16px 20px;
1582
+ min-width: 0;
1583
+ }
1584
+ .rastro-forms__card-title {
1585
+ font-size: 15px;
1586
+ font-weight: 700;
1587
+ overflow-wrap: anywhere;
1588
+ }
1589
+ .rastro-forms__card-sub {
1590
+ margin-top: 2px;
1591
+ display: flex;
1592
+ align-items: center;
1593
+ gap: 4px;
1594
+ flex-wrap: wrap;
1595
+ font-size: 12px;
1596
+ color: var(--rastro-muted-fg);
1597
+ }
1598
+ .rastro-forms__card-actions {
1599
+ display: flex;
1600
+ align-items: center;
1601
+ gap: 8px;
1602
+ flex-wrap: wrap;
1603
+ justify-content: flex-end;
1604
+ }
1605
+ .rastro-forms__confirm-stop {
1606
+ display: inline-flex;
1607
+ align-items: center;
1608
+ gap: 6px;
1609
+ font-size: 12.5px;
1610
+ }
1611
+ .rastro-forms__card-error {
1612
+ flex-wrap: wrap;
1613
+ margin: 0 20px 14px;
1614
+ }
1615
+ .rastro-forms__card-error > span {
1616
+ flex: 1 1 12rem;
1617
+ min-width: 0;
1618
+ }
1619
+ .rastro-forms__card-error > .rastro-forms__btn {
1620
+ flex-shrink: 0;
1621
+ margin-left: auto;
1622
+ }
1623
+ .rastro-forms__card-empty {
1624
+ padding: 0 20px 18px;
1625
+ font-size: 13px;
1626
+ color: var(--rastro-muted-fg);
1627
+ }
1628
+ /* The Page's tile with the Facebook mark on its corner, inside its box. */
1629
+ .rastro-forms__pg-wrap {
1630
+ position: relative;
1631
+ width: 45px;
1632
+ height: 45px;
1633
+ flex: none;
1634
+ }
1635
+ .rastro-forms__pg {
1636
+ width: 40px;
1637
+ height: 40px;
1638
+ border-radius: 12px;
1639
+ display: grid;
1640
+ place-items: center;
1641
+ flex: none;
1642
+ font-weight: 800;
1643
+ font-size: 13px;
1644
+ background: var(--rastro-forms-tint);
1645
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-tint-line);
1646
+ }
1647
+ .rastro-forms__pg[data-muted] {
1648
+ background: var(--rastro-muted);
1649
+ box-shadow: none;
1650
+ color: var(--rastro-muted-fg);
1651
+ }
1652
+ .rastro-forms__pg-badge {
1653
+ position: absolute;
1654
+ right: 0;
1655
+ bottom: 0;
1656
+ width: 18px;
1657
+ height: 18px;
1658
+ border-radius: 999px;
1659
+ display: grid;
1660
+ place-items: center;
1661
+ background: var(--rastro-card);
1662
+ box-shadow: 0 0 0 1px var(--rastro-border);
1663
+ }
1664
+ .rastro-forms__blocked {
1665
+ display: flex;
1666
+ align-items: center;
1667
+ gap: 10px;
1668
+ padding: 9px 12px;
1669
+ border-radius: 12px;
1670
+ background: var(--rastro-weak-bg);
1671
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-danger-line);
1672
+ color: var(--rastro-weak);
1673
+ font-size: 13px;
1674
+ }
1675
+ .rastro-forms__blocked .rastro-forms__btn {
1676
+ margin-left: 6px;
1677
+ }
1678
+ .rastro-forms__link-page {
1679
+ display: inline-flex;
1680
+ gap: 8px;
1681
+ align-items: center;
1682
+ }
1683
+
1684
+ .rastro-forms__table {
1685
+ width: 100%;
1686
+ border-collapse: collapse;
1687
+ font-size: 13px;
1688
+ }
1689
+ .rastro-forms__table th {
1690
+ text-align: left;
1691
+ font-size: 10.5px;
1692
+ font-weight: 700;
1693
+ text-transform: uppercase;
1694
+ letter-spacing: 0.06em;
1695
+ color: var(--rastro-muted-fg);
1696
+ padding: 9px 12px;
1697
+ border-top: 1px solid var(--rastro-border);
1698
+ border-bottom: 1px solid var(--rastro-border);
1699
+ background: var(--rastro-forms-quiet);
1700
+ white-space: nowrap;
1701
+ }
1702
+ .rastro-forms__table td {
1703
+ padding: 12px;
1704
+ border-bottom: 1px solid var(--rastro-border);
1705
+ vertical-align: middle;
1706
+ white-space: nowrap;
1707
+ }
1708
+ .rastro-forms__table th:first-child,
1709
+ .rastro-forms__table td:first-child {
1710
+ padding-left: 20px;
1711
+ white-space: normal;
1712
+ }
1713
+ .rastro-forms__table th:last-child,
1714
+ .rastro-forms__table td:last-child {
1715
+ padding-right: 16px;
1716
+ text-align: right;
1717
+ width: 44px;
1718
+ }
1719
+ .rastro-forms__table tbody tr:last-child td {
1720
+ border-bottom: 0;
1721
+ }
1722
+ .rastro-forms__table tbody tr {
1723
+ cursor: pointer;
1724
+ }
1725
+ .rastro-forms__table tbody tr:hover td,
1726
+ .rastro-forms__table tbody tr[data-open] td {
1727
+ background: var(--rastro-forms-tint);
1728
+ }
1729
+ .rastro-forms__table tbody tr[data-off] td {
1730
+ color: var(--rastro-muted-fg);
1731
+ }
1732
+ .rastro-forms__fn {
1733
+ display: flex;
1734
+ align-items: center;
1735
+ gap: 10px;
1736
+ min-width: 0;
1737
+ }
1738
+ .rastro-forms__fi {
1739
+ width: 30px;
1740
+ height: 30px;
1741
+ border-radius: 9px;
1742
+ background: var(--rastro-muted);
1743
+ color: var(--rastro-muted-fg);
1744
+ display: grid;
1745
+ place-items: center;
1746
+ flex: none;
1747
+ }
1748
+ .rastro-forms__table tr:hover .rastro-forms__fi,
1749
+ .rastro-forms__table tr[data-open] .rastro-forms__fi {
1750
+ background: var(--rastro-card);
1751
+ color: var(--rastro-fg);
1752
+ }
1753
+ .rastro-forms__t {
1754
+ display: block;
1755
+ font-weight: 700;
1756
+ color: var(--rastro-fg);
1757
+ overflow-wrap: anywhere;
1758
+ }
1759
+ [data-off] .rastro-forms__t {
1760
+ color: inherit;
1761
+ }
1762
+ .rastro-forms__s {
1763
+ display: block;
1764
+ margin-top: 1px;
1765
+ font-size: 11.5px;
1766
+ color: var(--rastro-muted-fg);
1767
+ overflow-wrap: anywhere;
1768
+ }
1769
+ .rastro-forms__leads {
1770
+ display: flex;
1771
+ align-items: center;
1772
+ }
1773
+ .rastro-forms__num {
1774
+ font-weight: 800;
1775
+ font-size: 15px;
1776
+ }
1777
+ .rastro-forms__last {
1778
+ margin-top: 1px;
1779
+ font-size: 11.5px;
1780
+ color: var(--rastro-muted-fg);
1781
+ }
1782
+ .rastro-forms__spark {
1783
+ display: inline-flex;
1784
+ align-items: flex-end;
1785
+ gap: 2px;
1786
+ height: 18px;
1787
+ margin-left: 8px;
1788
+ }
1789
+ .rastro-forms__spark i {
1790
+ width: 4px;
1791
+ border-radius: 2px;
1792
+ background: var(--rastro-forms-tint-line);
1793
+ }
1794
+ .rastro-forms__dst {
1795
+ display: inline-flex;
1796
+ align-items: center;
1797
+ gap: 6px;
1798
+ font-size: 12.5px;
1799
+ font-weight: 600;
1800
+ }
1801
+ .rastro-forms__dst[data-muted] {
1802
+ color: var(--rastro-muted-fg);
1803
+ }
1804
+ .rastro-forms__rl {
1805
+ display: inline-flex;
1806
+ align-items: center;
1807
+ gap: 5px;
1808
+ height: 24px;
1809
+ padding: 0 9px;
1810
+ border: 0;
1811
+ border-radius: 999px;
1812
+ font-size: 12px;
1813
+ font-weight: 700;
1814
+ color: var(--rastro-muted-fg);
1815
+ background: var(--rastro-muted);
1816
+ }
1817
+ .rastro-forms__rl[data-none] {
1818
+ background: transparent;
1819
+ padding: 0;
1820
+ color: var(--rastro-fg);
1821
+ cursor: pointer;
1822
+ }
1823
+ .rastro-forms__rl[data-none]:hover {
1824
+ text-decoration: underline;
1825
+ text-underline-offset: 3px;
1826
+ }
1827
+ .rastro-forms__cell-skeleton {
1828
+ display: inline-block;
1829
+ width: 70px;
1830
+ height: 12px;
1831
+ }
1832
+ .rastro-forms__chev {
1833
+ color: var(--rastro-muted-fg);
1834
+ }
1835
+ .rastro-forms__list {
1836
+ display: none;
1837
+ list-style: none;
1838
+ padding: 0 0 4px;
1839
+ margin: 0;
1840
+ border-top: 1px solid var(--rastro-border);
1841
+ }
1842
+ .rastro-forms__list li + li {
1843
+ border-top: 1px solid var(--rastro-border);
1844
+ }
1845
+ .rastro-forms__list-item {
1846
+ width: 100%;
1847
+ display: flex;
1848
+ align-items: center;
1849
+ gap: 10px;
1850
+ padding: 11px 14px;
1851
+ border: 0;
1852
+ background: transparent;
1853
+ text-align: left;
1854
+ cursor: pointer;
1855
+ min-width: 0;
1856
+ }
1857
+ .rastro-forms__list-item:hover {
1858
+ background: var(--rastro-forms-tint);
1859
+ }
1860
+ .rastro-forms__list-item[data-off] {
1861
+ color: var(--rastro-muted-fg);
1862
+ }
1863
+ .rastro-forms__list-item > .rastro-forms__icon:last-child {
1864
+ color: var(--rastro-muted-fg);
1865
+ }
1866
+
1867
+ @container rastro-forms (max-width: 1023px) {
1868
+ .rastro-forms__table [data-col="entry"] {
1869
+ display: none;
1870
+ }
1871
+ }
1872
+ @container rastro-forms (max-width: 859px) {
1873
+ .rastro-forms__table {
1874
+ display: none;
1875
+ }
1876
+ .rastro-forms__list {
1877
+ display: block;
1878
+ }
1879
+ .rastro-forms__card-h {
1880
+ flex-wrap: wrap;
1881
+ padding: 14px;
1882
+ }
1883
+ .rastro-forms__card-actions,
1884
+ .rastro-forms__blocked,
1885
+ .rastro-forms__link-page {
1886
+ width: 100%;
1887
+ justify-content: flex-start;
1888
+ }
1889
+ .rastro-forms__blocked {
1890
+ flex-wrap: wrap;
1891
+ }
1892
+ .rastro-forms__blocked .rastro-forms__btn {
1893
+ margin-left: 0;
1894
+ }
1895
+ .rastro-forms__summary {
1896
+ margin-left: 0;
1897
+ }
1898
+ .rastro-forms__card-empty {
1899
+ padding: 0 14px 14px;
1900
+ }
1901
+ }
1902
+ @container rastro-forms (max-width: 479px) {
1903
+ .rastro-forms__list-item .rastro-forms__pill {
1904
+ display: none;
1905
+ }
1906
+ .rastro-forms__link-page {
1907
+ flex-wrap: wrap;
1908
+ }
1909
+ .rastro-forms__link-page .rastro-forms__select {
1910
+ flex: 1 1 100%;
1911
+ }
1912
+ }
1913
+
1914
+ /* Overlays: the drawer (a sheet on the right) and the guide (centered). */
1915
+ .rastro-forms__scrim {
1916
+ position: fixed;
1917
+ inset: 0;
1918
+ width: 100%;
1919
+ height: 100%;
1920
+ max-width: none;
1921
+ max-height: none;
1922
+ margin: 0;
1923
+ border: 0;
1924
+ padding: 16px;
1925
+ color: var(--rastro-fg);
1926
+ font-family: var(--rastro-font);
1927
+ font-size: 14px;
1928
+ line-height: normal;
1929
+ background: rgb(46 46 46 / 42%);
1930
+ overflow-y: auto;
1931
+ }
1932
+ .rastro-forms__scrim[open] {
1933
+ display: grid;
1934
+ place-items: center;
1935
+ }
1936
+ .rastro-forms__scrim::backdrop {
1937
+ background: transparent;
1938
+ }
1939
+ .rastro-forms__scrim[data-side] {
1940
+ place-items: stretch end;
1941
+ padding: 0;
1942
+ overflow: hidden;
1943
+ }
1944
+
1945
+ /* FormRulesDrawer (D2, D7) */
1946
+ .rastro-forms__drawer {
1947
+ container: rastro-forms-drawer / inline-size;
1948
+ position: relative;
1949
+ width: min(680px, 100vw);
1950
+ height: 100dvh;
1951
+ max-height: 100dvh;
1952
+ background: var(--rastro-card);
1953
+ border-radius: 20px 0 0 20px;
1954
+ box-shadow: -30px 0 70px -20px rgb(0 0 0 / 35%);
1955
+ display: flex;
1956
+ flex-direction: column;
1957
+ outline: none;
1958
+ overflow: hidden;
1959
+ }
1960
+ .rastro-forms__drawer [data-narrow] {
1961
+ display: none;
1962
+ }
1963
+ .rastro-forms__drawer-head {
1964
+ position: relative;
1965
+ flex: none;
1966
+ padding: 16px 24px 12px;
1967
+ border-bottom: 1px solid var(--rastro-border);
1968
+ }
1969
+ .rastro-forms__drawer-head .rastro-forms__close {
1970
+ position: absolute;
1971
+ right: 18px;
1972
+ top: 18px;
1973
+ }
1974
+ .rastro-forms__drawer-head .rastro-forms__eyebrow {
1975
+ padding-right: 48px;
1976
+ }
1977
+ .rastro-forms__drawer-title {
1978
+ margin-top: 6px;
1979
+ padding-right: 48px;
1980
+ font-size: 22px;
1981
+ font-weight: 800;
1982
+ letter-spacing: -0.02em;
1983
+ line-height: 1.2;
1984
+ overflow-wrap: anywhere;
1985
+ }
1986
+ .rastro-forms__drawer-meta {
1987
+ display: flex;
1988
+ align-items: center;
1989
+ gap: 10px;
1990
+ flex-wrap: wrap;
1991
+ margin-top: 8px;
1992
+ font-size: 12.5px;
1993
+ color: var(--rastro-muted-fg);
1994
+ }
1995
+ .rastro-forms__ext {
1996
+ margin-left: auto;
1997
+ display: inline-flex;
1998
+ align-items: center;
1999
+ gap: 5px;
2000
+ font-weight: 700;
2001
+ color: var(--rastro-muted-fg);
2002
+ text-decoration: none;
2003
+ }
2004
+ .rastro-forms__ext:hover {
2005
+ color: var(--rastro-fg);
2006
+ }
2007
+ .rastro-forms__note {
2008
+ margin-top: 10px;
2009
+ display: flex;
2010
+ align-items: center;
2011
+ gap: 8px;
2012
+ padding: 7px 10px;
2013
+ border-radius: 10px;
2014
+ background: var(--rastro-muted);
2015
+ font-size: 12px;
2016
+ color: var(--rastro-muted-fg);
2017
+ }
2018
+ .rastro-forms__drawer-bar {
2019
+ flex: none;
2020
+ align-items: center;
2021
+ gap: 10px;
2022
+ padding: 12px 14px;
2023
+ border-bottom: 1px solid var(--rastro-border);
2024
+ }
2025
+ .rastro-forms__drawer-bar .rastro-forms__icon-btn {
2026
+ width: 34px;
2027
+ height: 34px;
2028
+ border-radius: 999px;
2029
+ }
2030
+ .rastro-forms__drawer-name {
2031
+ display: block;
2032
+ font-size: 16px;
2033
+ font-weight: 800;
2034
+ overflow: hidden;
2035
+ text-overflow: ellipsis;
2036
+ white-space: nowrap;
2037
+ }
2038
+ .rastro-forms__drawer-body {
2039
+ flex: 1;
2040
+ min-height: 0;
2041
+ overflow-y: auto;
2042
+ padding: 4px 24px 8px;
2043
+ display: flex;
2044
+ flex-direction: column;
2045
+ }
2046
+ .rastro-forms__drawer-body > .rastro-forms__callout {
2047
+ margin-top: 12px;
2048
+ }
2049
+ /* A refused save: above the footer, so the draft stays in view. */
2050
+ .rastro-forms__drawer-error {
2051
+ flex: none;
2052
+ margin: 0 24px 10px;
2053
+ }
2054
+ .rastro-forms__drawer-skeleton {
2055
+ height: 160px;
2056
+ margin-top: 16px;
2057
+ }
2058
+ .rastro-forms__drawer-foot {
2059
+ flex: none;
2060
+ display: flex;
2061
+ align-items: center;
2062
+ gap: 10px;
2063
+ padding: 10px 24px;
2064
+ border-top: 1px solid var(--rastro-border);
2065
+ }
2066
+ .rastro-forms__drawer-foot .rastro-forms__tip {
2067
+ flex: 1;
2068
+ min-width: 0;
2069
+ }
2070
+ .rastro-forms__foot-actions {
2071
+ margin-left: auto;
2072
+ display: flex;
2073
+ gap: 8px;
2074
+ }
2075
+ .rastro-forms__dsec {
2076
+ padding: 12px 0 10px;
2077
+ border-bottom: 1px solid var(--rastro-border);
2078
+ }
2079
+ .rastro-forms__dsec:last-child {
2080
+ border-bottom: 0;
2081
+ }
2082
+ .rastro-forms__sec-t {
2083
+ display: flex;
2084
+ align-items: baseline;
2085
+ gap: 10px;
2086
+ margin: 0 0 8px;
2087
+ font-size: 12px;
2088
+ font-weight: 400;
2089
+ color: var(--rastro-muted-fg);
2090
+ }
2091
+ .rastro-forms__sec-t b {
2092
+ font-size: 14px;
2093
+ font-weight: 800;
2094
+ color: var(--rastro-fg);
2095
+ }
2096
+ .rastro-forms__n {
2097
+ align-self: center;
2098
+ width: 22px;
2099
+ height: 22px;
2100
+ border-radius: 7px;
2101
+ display: grid;
2102
+ place-items: center;
2103
+ flex: none;
2104
+ font-size: 11px;
2105
+ font-weight: 800;
2106
+ color: var(--rastro-fg);
2107
+ background: var(--rastro-forms-tint);
2108
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-tint-line);
2109
+ }
2110
+
2111
+ /* Fields */
2112
+ .rastro-forms__entry {
2113
+ display: grid;
2114
+ grid-template-columns: 1fr 1fr;
2115
+ gap: 10px;
2116
+ }
2117
+ .rastro-forms__entry[data-single] {
2118
+ grid-template-columns: 1fr;
2119
+ }
2120
+ .rastro-forms__select {
2121
+ position: relative;
2122
+ display: flex;
2123
+ align-items: center;
2124
+ gap: 8px;
2125
+ height: 38px;
2126
+ padding: 0 12px;
2127
+ border-radius: 12px;
2128
+ background: var(--rastro-card);
2129
+ box-shadow: inset 0 0 0 1px var(--rastro-border);
2130
+ font-size: 13px;
2131
+ font-weight: 600;
2132
+ min-width: 0;
2133
+ white-space: nowrap;
2134
+ }
2135
+ .rastro-forms__select[data-size="sm"] {
2136
+ height: 32px;
2137
+ border-radius: 9px;
2138
+ }
2139
+ .rastro-forms__select > .rastro-forms__icon:last-child {
2140
+ color: var(--rastro-muted-fg);
2141
+ pointer-events: none;
2142
+ }
2143
+ .rastro-forms__select select {
2144
+ appearance: none;
2145
+ flex: 1;
2146
+ min-width: 0;
2147
+ height: 100%;
2148
+ border: 0;
2149
+ padding: 0;
2150
+ background: transparent;
2151
+ font-weight: 600;
2152
+ text-overflow: ellipsis;
2153
+ cursor: pointer;
2154
+ outline: none;
2155
+ }
2156
+ .rastro-forms__select:focus-within {
2157
+ box-shadow:
2158
+ inset 0 0 0 1px var(--rastro-accent),
2159
+ 0 0 0 3px var(--rastro-forms-tint);
2160
+ }
2161
+ .rastro-forms__select select:disabled {
2162
+ cursor: default;
2163
+ opacity: 1;
2164
+ }
2165
+ .rastro-forms__select[data-tone="discard"] {
2166
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-danger-line);
2167
+ }
2168
+ .rastro-forms__select[data-static] {
2169
+ gap: 8px;
2170
+ }
2171
+ .rastro-forms__select-k {
2172
+ color: var(--rastro-muted-fg);
2173
+ }
2174
+ .rastro-forms__select-v {
2175
+ flex: 1;
2176
+ min-width: 0;
2177
+ overflow: hidden;
2178
+ text-overflow: ellipsis;
2179
+ }
2180
+ .rastro-forms__door {
2181
+ display: inline-flex;
2182
+ align-items: center;
2183
+ gap: 4px;
2184
+ height: 18px;
2185
+ padding: 0 7px;
2186
+ border-radius: 999px;
2187
+ background: var(--rastro-accent);
2188
+ color: var(--rastro-accent-fg);
2189
+ font-size: 9.5px;
2190
+ font-weight: 800;
2191
+ letter-spacing: 0.04em;
2192
+ text-transform: uppercase;
2193
+ pointer-events: none;
2194
+ flex: none;
2195
+ }
2196
+
2197
+ /* Rules */
2198
+ .rastro-forms__rules {
2199
+ list-style: none;
2200
+ padding: 0;
2201
+ display: flex;
2202
+ flex-direction: column;
2203
+ gap: 6px;
2204
+ }
2205
+ .rastro-forms__rule {
2206
+ display: grid;
2207
+ grid-template-columns: 16px minmax(0, 1fr) 18px 160px 62px 28px;
2208
+ gap: 4px 10px;
2209
+ align-items: center;
2210
+ padding: 7px 6px 7px 4px;
2211
+ border-radius: 14px;
2212
+ background: var(--rastro-card);
2213
+ box-shadow: inset 0 0 0 1px var(--rastro-border);
2214
+ }
2215
+ .rastro-forms__rule[data-tone="discard"] {
2216
+ background: var(--rastro-weak-bg);
2217
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-danger-line);
2218
+ }
2219
+ .rastro-forms__rule[data-dragging] {
2220
+ opacity: 0.6;
2221
+ }
2222
+ .rastro-forms__grip .rastro-forms__icon-btn {
2223
+ width: 16px;
2224
+ height: 28px;
2225
+ cursor: grab;
2226
+ color: color-mix(in oklab, var(--rastro-muted-fg) 70%, transparent);
2227
+ }
2228
+ .rastro-forms__rule-body {
2229
+ min-width: 0;
2230
+ }
2231
+ .rastro-forms__rule-q {
2232
+ display: flex;
2233
+ align-items: center;
2234
+ gap: 4px;
2235
+ margin-bottom: 4px;
2236
+ font-size: 11.5px;
2237
+ color: var(--rastro-muted-fg);
2238
+ white-space: nowrap;
2239
+ min-width: 0;
2240
+ }
2241
+ .rastro-forms__rule-q b {
2242
+ color: var(--rastro-fg);
2243
+ font-weight: 700;
2244
+ overflow: hidden;
2245
+ text-overflow: ellipsis;
2246
+ }
2247
+ .rastro-forms__q-select {
2248
+ position: relative;
2249
+ display: inline-flex;
2250
+ align-items: center;
2251
+ gap: 2px;
2252
+ min-width: 0;
2253
+ max-width: 100%;
2254
+ color: var(--rastro-fg);
2255
+ }
2256
+ .rastro-forms__q-select select {
2257
+ appearance: none;
2258
+ /* As wide as the question chosen, not the longest one. */
2259
+ field-sizing: content;
2260
+ border: 0;
2261
+ padding: 0 14px 0 0;
2262
+ margin-right: -14px;
2263
+ background: transparent;
2264
+ font-size: 11.5px;
2265
+ font-weight: 700;
2266
+ min-width: 0;
2267
+ max-width: 100%;
2268
+ text-overflow: ellipsis;
2269
+ cursor: pointer;
2270
+ }
2271
+ .rastro-forms__q-select .rastro-forms__icon {
2272
+ pointer-events: none;
2273
+ color: var(--rastro-muted-fg);
2274
+ }
2275
+ .rastro-forms__answers {
2276
+ display: flex;
2277
+ align-items: center;
2278
+ flex-wrap: wrap;
2279
+ gap: 4px;
2280
+ min-width: 0;
2281
+ }
2282
+ .rastro-forms__ans-wrap {
2283
+ display: inline-flex;
2284
+ align-items: center;
2285
+ min-width: 0;
2286
+ max-width: 100%;
2287
+ }
2288
+ .rastro-forms__ans {
2289
+ display: inline-flex;
2290
+ align-items: center;
2291
+ height: 24px;
2292
+ padding: 0 9px;
2293
+ border: 1px dashed var(--rastro-border);
2294
+ border-radius: 999px;
2295
+ background: transparent;
2296
+ font-size: 12px;
2297
+ font-weight: 700;
2298
+ color: var(--rastro-muted-fg);
2299
+ white-space: nowrap;
2300
+ overflow: hidden;
2301
+ text-overflow: ellipsis;
2302
+ max-width: 100%;
2303
+ }
2304
+ button.rastro-forms__ans {
2305
+ cursor: pointer;
2306
+ }
2307
+ .rastro-forms__ans[data-on] {
2308
+ border-style: solid;
2309
+ background: var(--rastro-muted);
2310
+ color: var(--rastro-fg);
2311
+ }
2312
+ .rastro-forms__or {
2313
+ margin: 0 4px;
2314
+ font-size: 11px;
2315
+ color: var(--rastro-muted-fg);
2316
+ }
2317
+ .rastro-forms__ans-edit {
2318
+ display: inline-grid;
2319
+ place-items: center;
2320
+ min-width: 24px;
2321
+ height: 24px;
2322
+ padding: 0 6px;
2323
+ border: 0;
2324
+ border-radius: 999px;
2325
+ background: transparent;
2326
+ font-size: 11.5px;
2327
+ font-weight: 700;
2328
+ color: var(--rastro-muted-fg);
2329
+ cursor: pointer;
2330
+ }
2331
+ .rastro-forms__ans-edit:hover {
2332
+ background: var(--rastro-muted);
2333
+ color: var(--rastro-fg);
2334
+ }
2335
+ .rastro-forms__rule-arrow {
2336
+ display: flex;
2337
+ color: var(--rastro-muted-fg);
2338
+ }
2339
+ .rastro-forms__rule-dest {
2340
+ min-width: 0;
2341
+ }
2342
+ .rastro-forms__cnt {
2343
+ text-align: right;
2344
+ line-height: 1.1;
2345
+ }
2346
+ .rastro-forms__cnt b {
2347
+ display: block;
2348
+ font-size: 14px;
2349
+ font-weight: 800;
2350
+ }
2351
+ .rastro-forms__cnt span {
2352
+ font-size: 10.5px;
2353
+ color: var(--rastro-muted-fg);
2354
+ white-space: nowrap;
2355
+ }
2356
+ .rastro-forms__rule-trash {
2357
+ display: flex;
2358
+ justify-content: center;
2359
+ }
2360
+ .rastro-forms__motivo {
2361
+ grid-column: 2 / -1;
2362
+ display: flex;
2363
+ align-items: center;
2364
+ gap: 6px;
2365
+ margin-top: -2px;
2366
+ font-size: 11.5px;
2367
+ color: var(--rastro-weak);
2368
+ min-width: 0;
2369
+ }
2370
+ .rastro-forms__motivo b,
2371
+ .rastro-forms__motivo input {
2372
+ font-weight: 700;
2373
+ }
2374
+ .rastro-forms__motivo input {
2375
+ flex: 0 1 260px;
2376
+ min-width: 80px;
2377
+ height: 22px;
2378
+ padding: 0 6px;
2379
+ border: 0;
2380
+ border-radius: 6px;
2381
+ background: color-mix(in oklab, var(--rastro-card) 70%, transparent);
2382
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-danger-line);
2383
+ font-size: 11.5px;
2384
+ color: var(--rastro-weak);
2385
+ }
2386
+ .rastro-forms__motivo input::placeholder {
2387
+ color: color-mix(in oklab, var(--rastro-weak) 55%, transparent);
2388
+ font-weight: 500;
2389
+ }
2390
+ .rastro-forms__motivo-tail {
2391
+ white-space: nowrap;
2392
+ }
2393
+ .rastro-forms__rule-problem {
2394
+ grid-column: 2 / -1;
2395
+ font-size: 11.5px;
2396
+ color: var(--rastro-ok);
2397
+ }
2398
+ .rastro-forms__empty-rules {
2399
+ padding: 10px 12px;
2400
+ border-radius: 12px;
2401
+ border: 1px dashed var(--rastro-border);
2402
+ font-size: 12.5px;
2403
+ color: var(--rastro-muted-fg);
2404
+ }
2405
+ .rastro-forms__addr {
2406
+ align-self: flex-start;
2407
+ display: inline-flex;
2408
+ align-items: center;
2409
+ gap: 6px;
2410
+ margin: 8px 0 0 4px;
2411
+ padding: 0;
2412
+ border: 0;
2413
+ background: none;
2414
+ font-size: 12.5px;
2415
+ font-weight: 700;
2416
+ color: var(--rastro-fg);
2417
+ cursor: pointer;
2418
+ }
2419
+ .rastro-forms__addr:disabled {
2420
+ color: var(--rastro-muted-fg);
2421
+ cursor: default;
2422
+ }
2423
+ .rastro-forms__sim {
2424
+ margin-top: 8px;
2425
+ padding: 9px 12px;
2426
+ border-radius: 14px;
2427
+ background: var(--rastro-muted);
2428
+ }
2429
+ .rastro-forms__sim[data-pending] .rastro-forms__bar,
2430
+ .rastro-forms__sim[data-pending] .rastro-forms__leg {
2431
+ opacity: 0.55;
2432
+ transition: opacity 0.2s;
2433
+ }
2434
+ .rastro-forms__sim p {
2435
+ margin-bottom: 6px;
2436
+ font-size: 12px;
2437
+ color: var(--rastro-muted-fg);
2438
+ }
2439
+ .rastro-forms__sim p b {
2440
+ color: var(--rastro-fg);
2441
+ }
2442
+ .rastro-forms__bar {
2443
+ display: flex;
2444
+ height: 10px;
2445
+ border-radius: 999px;
2446
+ overflow: hidden;
2447
+ gap: 2px;
2448
+ }
2449
+ .rastro-forms__bar i {
2450
+ display: block;
2451
+ height: 100%;
2452
+ min-width: 3px;
2453
+ }
2454
+ .rastro-forms__leg {
2455
+ list-style: none;
2456
+ padding: 0;
2457
+ display: flex;
2458
+ flex-wrap: wrap;
2459
+ gap: 6px 14px;
2460
+ margin-top: 6px;
2461
+ font-size: 12px;
2462
+ color: var(--rastro-muted-fg);
2463
+ }
2464
+ .rastro-forms__leg li {
2465
+ display: inline-flex;
2466
+ align-items: center;
2467
+ gap: 6px;
2468
+ }
2469
+ .rastro-forms__leg b {
2470
+ color: var(--rastro-fg);
2471
+ }
2472
+
2473
+ /* First contact */
2474
+ .rastro-forms__contact {
2475
+ display: flex;
2476
+ flex-direction: column;
2477
+ gap: 7px;
2478
+ }
2479
+ .rastro-forms__fc {
2480
+ padding: 10px 12px;
2481
+ border-radius: 14px;
2482
+ background: var(--rastro-card);
2483
+ box-shadow: inset 0 0 0 1px var(--rastro-border);
2484
+ }
2485
+ .rastro-forms__fc[data-tone="rec"] {
2486
+ box-shadow:
2487
+ inset 0 0 0 1px var(--rastro-forms-tint-line),
2488
+ 0 0 0 3px var(--rastro-forms-tint);
2489
+ }
2490
+ .rastro-forms__fc[data-tone="off"] {
2491
+ background: var(--rastro-forms-quiet);
2492
+ }
2493
+ .rastro-forms__fc[data-tone="risk"] {
2494
+ box-shadow:
2495
+ inset 0 0 0 1px var(--rastro-forms-danger-line),
2496
+ 0 0 0 3px var(--rastro-weak-bg);
2497
+ }
2498
+ .rastro-forms__fc[data-collapsed] {
2499
+ padding-block: 8px;
2500
+ }
2501
+ .rastro-forms__fc-h {
2502
+ display: flex;
2503
+ gap: 10px;
2504
+ align-items: flex-start;
2505
+ }
2506
+ .rastro-forms__fc[data-collapsed] .rastro-forms__fc-h {
2507
+ align-items: center;
2508
+ }
2509
+ .rastro-forms__fc-ico {
2510
+ width: 32px;
2511
+ height: 32px;
2512
+ border-radius: 10px;
2513
+ display: grid;
2514
+ place-items: center;
2515
+ flex: none;
2516
+ background: var(--rastro-muted);
2517
+ color: var(--rastro-muted-fg);
2518
+ }
2519
+ .rastro-forms__fc[data-tone="rec"] .rastro-forms__fc-ico {
2520
+ background: var(--rastro-forms-tint);
2521
+ color: var(--rastro-fg);
2522
+ }
2523
+ .rastro-forms__fc[data-tone="risk"] .rastro-forms__fc-ico {
2524
+ background: var(--rastro-weak-bg);
2525
+ color: var(--rastro-weak);
2526
+ }
2527
+ .rastro-forms__fc-title {
2528
+ display: flex;
2529
+ align-items: center;
2530
+ flex-wrap: wrap;
2531
+ gap: 4px 8px;
2532
+ font-size: 13px;
2533
+ font-weight: 800;
2534
+ }
2535
+ .rastro-forms__fc-desc {
2536
+ margin-top: 2px;
2537
+ font-size: 12px;
2538
+ color: var(--rastro-muted-fg);
2539
+ line-height: 1.45;
2540
+ }
2541
+ .rastro-forms__fc-f {
2542
+ display: flex;
2543
+ align-items: center;
2544
+ flex-wrap: wrap;
2545
+ gap: 4px 10px;
2546
+ margin: 6px 0 0 42px;
2547
+ font-size: 12px;
2548
+ color: var(--rastro-muted-fg);
2549
+ }
2550
+ .rastro-forms__fc-text {
2551
+ margin: 8px 0 0 42px;
2552
+ }
2553
+ .rastro-forms__ta {
2554
+ display: block;
2555
+ width: 100%;
2556
+ padding: 8px 10px;
2557
+ border: 0;
2558
+ border-radius: 12px;
2559
+ background: var(--rastro-card);
2560
+ box-shadow: inset 0 0 0 1px var(--rastro-border);
2561
+ font-size: 12.5px;
2562
+ line-height: 1.55;
2563
+ color: var(--rastro-fg);
2564
+ text-align: left;
2565
+ }
2566
+ textarea.rastro-forms__ta {
2567
+ resize: vertical;
2568
+ }
2569
+ .rastro-forms__ta[data-preview] {
2570
+ white-space: nowrap;
2571
+ overflow: hidden;
2572
+ text-overflow: ellipsis;
2573
+ cursor: text;
2574
+ }
2575
+ .rastro-forms__ta[data-preview]:disabled {
2576
+ cursor: default;
2577
+ }
2578
+ .rastro-forms__ta[data-preview]:hover:not(:disabled) {
2579
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-tint-line);
2580
+ }
2581
+ .rastro-forms__var {
2582
+ display: inline-flex;
2583
+ align-items: center;
2584
+ height: 20px;
2585
+ padding: 0 7px;
2586
+ margin: 0 1px;
2587
+ border-radius: 6px;
2588
+ background: var(--rastro-forms-tint);
2589
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-tint-line);
2590
+ font-size: 12px;
2591
+ font-weight: 700;
2592
+ }
2593
+ .rastro-forms__ta-bar {
2594
+ display: flex;
2595
+ align-items: center;
2596
+ gap: 10px;
2597
+ margin-top: 6px;
2598
+ font-size: 12px;
2599
+ }
2600
+ .rastro-forms__ta-bar .rastro-forms__tip {
2601
+ margin-left: auto;
2602
+ }
2603
+ .rastro-forms__confirm {
2604
+ display: inline-flex;
2605
+ align-items: center;
2606
+ gap: 6px;
2607
+ height: 24px;
2608
+ padding: 0 10px;
2609
+ border-radius: 999px;
2610
+ background: var(--rastro-muted);
2611
+ font-size: 12px;
2612
+ font-weight: 600;
2613
+ white-space: nowrap;
2614
+ cursor: pointer;
2615
+ }
2616
+ .rastro-forms__confirm input {
2617
+ margin: 0;
2618
+ accent-color: var(--rastro-accent);
2619
+ }
2620
+ .rastro-forms__switch {
2621
+ position: relative;
2622
+ width: 38px;
2623
+ height: 22px;
2624
+ margin-top: 4px;
2625
+ border: 0;
2626
+ border-radius: 999px;
2627
+ padding: 0;
2628
+ flex: none;
2629
+ background: color-mix(
2630
+ in oklab,
2631
+ var(--rastro-muted-fg) 45%,
2632
+ var(--rastro-card)
2633
+ );
2634
+ cursor: pointer;
2635
+ }
2636
+ .rastro-forms__switch::after {
2637
+ content: "";
2638
+ position: absolute;
2639
+ left: 3px;
2640
+ top: 3px;
2641
+ width: 16px;
2642
+ height: 16px;
2643
+ border-radius: 999px;
2644
+ background: var(--rastro-card);
2645
+ transition: transform 0.15s;
2646
+ }
2647
+ .rastro-forms__switch[aria-checked="true"] {
2648
+ background: var(--rastro-accent);
2649
+ }
2650
+ .rastro-forms__switch[aria-checked="true"]::after {
2651
+ transform: translateX(16px);
2652
+ }
2653
+ .rastro-forms__switch:disabled {
2654
+ opacity: 0.5;
2655
+ cursor: default;
2656
+ }
2657
+ .rastro-forms__auto {
2658
+ margin: 12px 0 0 42px;
2659
+ display: flex;
2660
+ flex-direction: column;
2661
+ gap: 10px;
2662
+ }
2663
+ .rastro-forms__risk {
2664
+ display: flex;
2665
+ gap: 10px;
2666
+ padding: 11px 12px;
2667
+ border-radius: 12px;
2668
+ background: var(--rastro-weak-bg);
2669
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-danger-line);
2670
+ color: var(--rastro-weak);
2671
+ font-size: 12.5px;
2672
+ line-height: 1.5;
2673
+ }
2674
+ .rastro-forms__risk b {
2675
+ font-weight: 700;
2676
+ }
2677
+ .rastro-forms__brakes-title {
2678
+ margin-top: 2px;
2679
+ font-size: 12px;
2680
+ font-weight: 800;
2681
+ }
2682
+ .rastro-forms__brakes {
2683
+ display: grid;
2684
+ grid-template-columns: 1fr 1fr;
2685
+ gap: 10px;
2686
+ }
2687
+ .rastro-forms__field {
2688
+ display: flex;
2689
+ flex-direction: column;
2690
+ min-width: 0;
2691
+ }
2692
+ .rastro-forms__lab {
2693
+ display: block;
2694
+ margin: 0 0 5px;
2695
+ font-size: 10px;
2696
+ font-weight: 800;
2697
+ letter-spacing: 0.06em;
2698
+ text-transform: uppercase;
2699
+ color: var(--rastro-weak);
2700
+ }
2701
+ .rastro-forms__field-box {
2702
+ display: flex;
2703
+ align-items: center;
2704
+ gap: 8px;
2705
+ height: 34px;
2706
+ padding: 0 10px;
2707
+ border-radius: 10px;
2708
+ background: var(--rastro-card);
2709
+ box-shadow: inset 0 0 0 1px var(--rastro-border);
2710
+ font-size: 12.5px;
2711
+ font-weight: 600;
2712
+ min-width: 0;
2713
+ }
2714
+ .rastro-forms__field-box[data-static] {
2715
+ color: var(--rastro-fg);
2716
+ }
2717
+ .rastro-forms__field-box select {
2718
+ appearance: none;
2719
+ flex: 1;
2720
+ min-width: 0;
2721
+ height: 100%;
2722
+ border: 0;
2723
+ padding: 0;
2724
+ background: transparent;
2725
+ font-weight: 600;
2726
+ text-overflow: ellipsis;
2727
+ cursor: pointer;
2728
+ }
2729
+ .rastro-forms__ack {
2730
+ display: flex;
2731
+ gap: 9px;
2732
+ align-items: flex-start;
2733
+ font-size: 12.5px;
2734
+ line-height: 1.45;
2735
+ cursor: pointer;
2736
+ }
2737
+ .rastro-forms__ack input {
2738
+ width: 16px;
2739
+ height: 16px;
2740
+ margin: 1px 0 0;
2741
+ flex: none;
2742
+ accent-color: var(--rastro-weak);
2743
+ }
2744
+ .rastro-forms__auto-actions {
2745
+ display: flex;
2746
+ flex-wrap: wrap;
2747
+ gap: 8px;
2748
+ }
2749
+
2750
+ /* The phone (D8): the drawer full screen, no rounded edge. */
2751
+ @media (max-width: 679px) {
2752
+ .rastro-forms__drawer {
2753
+ border-radius: 0;
2754
+ }
2755
+ }
2756
+ @container rastro-forms-drawer (max-width: 639px) {
2757
+ .rastro-forms__drawer [data-wide] {
2758
+ display: none;
2759
+ }
2760
+ .rastro-forms__drawer [data-narrow] {
2761
+ display: revert;
2762
+ }
2763
+ .rastro-forms__drawer .rastro-forms__drawer-bar {
2764
+ display: flex;
2765
+ }
2766
+ .rastro-forms__drawer-body {
2767
+ padding: 0 16px 8px;
2768
+ }
2769
+ .rastro-forms__drawer .rastro-forms__sec-t b {
2770
+ display: inline;
2771
+ }
2772
+ .rastro-forms__rule {
2773
+ grid-template-columns: minmax(0, 1fr) auto;
2774
+ gap: 8px;
2775
+ padding: 10px 12px;
2776
+ }
2777
+ .rastro-forms__grip,
2778
+ .rastro-forms__rule-arrow {
2779
+ display: none;
2780
+ }
2781
+ .rastro-forms__rule-body {
2782
+ grid-column: 1;
2783
+ grid-row: 1;
2784
+ }
2785
+ .rastro-forms__cnt {
2786
+ grid-column: 2;
2787
+ grid-row: 1;
2788
+ align-self: start;
2789
+ }
2790
+ .rastro-forms__rule-dest {
2791
+ grid-column: 1 / -1;
2792
+ grid-row: 2;
2793
+ display: flex;
2794
+ gap: 6px;
2795
+ align-items: center;
2796
+ }
2797
+ .rastro-forms__rule-dest .rastro-forms__select {
2798
+ flex: 1;
2799
+ }
2800
+ .rastro-forms__rule-trash {
2801
+ grid-column: 2;
2802
+ grid-row: 2;
2803
+ display: none;
2804
+ }
2805
+ .rastro-forms__motivo {
2806
+ grid-column: 1 / -1;
2807
+ }
2808
+ .rastro-forms__motivo input {
2809
+ flex: 1 1 auto;
2810
+ }
2811
+ .rastro-forms__motivo-tail {
2812
+ display: none;
2813
+ }
2814
+ .rastro-forms__rule-problem {
2815
+ grid-column: 1 / -1;
2816
+ }
2817
+ .rastro-forms__fc-ico {
2818
+ display: none;
2819
+ }
2820
+ .rastro-forms__fc-title {
2821
+ font-size: 12.5px;
2822
+ }
2823
+ .rastro-forms__fc-h {
2824
+ align-items: center;
2825
+ }
2826
+ .rastro-forms__fc .rastro-forms__pill,
2827
+ .rastro-forms__confirm {
2828
+ margin-left: auto;
2829
+ height: 22px;
2830
+ font-size: 11px;
2831
+ }
2832
+ .rastro-forms__auto,
2833
+ .rastro-forms__fc-f,
2834
+ .rastro-forms__fc-text {
2835
+ margin-left: 0;
2836
+ }
2837
+ .rastro-forms__brakes {
2838
+ grid-template-columns: 1fr;
2839
+ }
2840
+ .rastro-forms__drawer-foot {
2841
+ padding: 12px 16px 18px;
2842
+ }
2843
+ .rastro-forms__foot-actions {
2844
+ margin-left: 0;
2845
+ width: 100%;
2846
+ gap: 10px;
2847
+ }
2848
+ .rastro-forms__foot-actions .rastro-forms__btn {
2849
+ flex: 1;
2850
+ height: 44px;
2851
+ font-size: 15px;
2852
+ }
2853
+ .rastro-forms__foot-actions .rastro-forms__btn:last-child {
2854
+ flex: 1.4;
2855
+ }
2856
+ }
2857
+ @container rastro-forms-drawer (max-width: 639px) {
2858
+ .rastro-forms__drawer .rastro-forms__drawer-bar .rastro-forms__pill {
2859
+ margin-left: auto;
2860
+ }
2861
+ }
2862
+
2863
+ /* WhatsAppButtonGuide (D3) */
2864
+ .rastro-forms__guide {
2865
+ container: rastro-forms-guide / inline-size;
2866
+ width: min(1180px, 100%);
2867
+ height: min(870px, calc(100dvh - 32px));
2868
+ background: var(--rastro-card);
2869
+ border-radius: 20px;
2870
+ box-shadow: 0 40px 90px -20px rgb(0 0 0 / 45%);
2871
+ display: grid;
2872
+ grid-template-columns: minmax(0, 400px) minmax(0, 1fr);
2873
+ overflow: hidden;
2874
+ outline: none;
2875
+ }
2876
+ .rastro-forms__guide-l {
2877
+ padding: 24px 24px 20px;
2878
+ border-right: 1px solid var(--rastro-border);
2879
+ display: flex;
2880
+ flex-direction: column;
2881
+ min-height: 0;
2882
+ overflow-y: auto;
2883
+ }
2884
+ .rastro-forms__guide-head {
2885
+ display: flex;
2886
+ align-items: flex-start;
2887
+ gap: 10px;
2888
+ }
2889
+ .rastro-forms__close[data-inline] {
2890
+ width: 32px;
2891
+ height: 32px;
2892
+ flex: none;
2893
+ }
2894
+ .rastro-forms__guide-title {
2895
+ margin-top: 6px;
2896
+ font-size: 21px;
2897
+ font-weight: 800;
2898
+ letter-spacing: -0.02em;
2899
+ line-height: 1.2;
2900
+ }
2901
+ .rastro-forms__guide-desc {
2902
+ margin-top: 8px;
2903
+ font-size: 13px;
2904
+ color: var(--rastro-muted-fg);
2905
+ line-height: 1.5;
2906
+ }
2907
+ .rastro-forms__steps {
2908
+ list-style: none;
2909
+ margin-top: 16px;
2910
+ padding: 0;
2911
+ display: flex;
2912
+ flex-direction: column;
2913
+ gap: 12px;
2914
+ }
2915
+ .rastro-forms__steps li {
2916
+ display: flex;
2917
+ gap: 12px;
2918
+ font-size: 13px;
2919
+ line-height: 1.5;
2920
+ }
2921
+ .rastro-forms__steps li > b {
2922
+ flex: none;
2923
+ width: 26px;
2924
+ height: 26px;
2925
+ border-radius: 9px;
2926
+ display: grid;
2927
+ place-items: center;
2928
+ font-size: 12px;
2929
+ font-weight: 800;
2930
+ background: var(--rastro-forms-tint);
2931
+ box-shadow: inset 0 0 0 1px var(--rastro-forms-tint-line);
2932
+ }
2933
+ .rastro-forms__steps li[data-on] > b {
2934
+ background: var(--rastro-accent);
2935
+ color: var(--rastro-accent-fg);
2936
+ box-shadow: none;
2937
+ }
2938
+ .rastro-forms__steps em {
2939
+ font-style: normal;
2940
+ font-weight: 700;
2941
+ }
2942
+ .rastro-forms__guide-checks {
2943
+ margin-top: 18px;
2944
+ padding-top: 14px;
2945
+ border-top: 1px solid var(--rastro-border);
2946
+ }
2947
+ .rastro-forms__guide-sub {
2948
+ font-size: 12px;
2949
+ font-weight: 800;
2950
+ }
2951
+ .rastro-forms__checks {
2952
+ list-style: none;
2953
+ margin-top: 10px;
2954
+ padding: 0;
2955
+ display: flex;
2956
+ flex-direction: column;
2957
+ gap: 8px;
2958
+ }
2959
+ .rastro-forms__checks li {
2960
+ display: flex;
2961
+ gap: 9px;
2962
+ align-items: flex-start;
2963
+ font-size: 12.5px;
2964
+ line-height: 1.4;
2965
+ }
2966
+ .rastro-forms__checks li[data-state="optional"] {
2967
+ color: var(--rastro-muted-fg);
2968
+ }
2969
+ .rastro-forms__chk {
2970
+ width: 18px;
2971
+ height: 18px;
2972
+ border-radius: 999px;
2973
+ display: grid;
2974
+ place-items: center;
2975
+ flex: none;
2976
+ }
2977
+ .rastro-forms__chk[data-state="ok"] {
2978
+ background: var(--rastro-strong);
2979
+ color: var(--rastro-card);
2980
+ }
2981
+ .rastro-forms__chk[data-state="waiting"] {
2982
+ border: 2px solid var(--rastro-accent);
2983
+ }
2984
+ .rastro-forms__chk[data-state="waiting"]::after {
2985
+ content: "";
2986
+ width: 6px;
2987
+ height: 6px;
2988
+ border-radius: 999px;
2989
+ background: var(--rastro-accent);
2990
+ }
2991
+ .rastro-forms__chk[data-state="todo"] {
2992
+ border: 2px solid var(--rastro-muted-fg);
2993
+ }
2994
+ .rastro-forms__chk[data-state="optional"] {
2995
+ border: 2px dashed var(--rastro-border);
2996
+ }
2997
+ .rastro-forms__guide-actions {
2998
+ margin-top: auto;
2999
+ padding-top: 18px;
3000
+ display: flex;
3001
+ flex-direction: column;
3002
+ gap: 8px;
3003
+ }
3004
+ .rastro-forms__guide-r {
3005
+ position: relative;
3006
+ padding: 18px;
3007
+ min-height: 0;
3008
+ background: color-mix(in oklab, var(--rastro-muted) 80%, var(--rastro-fg) 4%);
3009
+ }
3010
+ .rastro-forms__ilus {
3011
+ position: absolute;
3012
+ right: 28px;
3013
+ top: 26px;
3014
+ z-index: 3;
3015
+ padding: 3px 8px;
3016
+ border-radius: 6px;
3017
+ background: rgb(28 43 51 / 80%);
3018
+ color: #fff;
3019
+ font-size: 10px;
3020
+ font-weight: 800;
3021
+ letter-spacing: 0.08em;
3022
+ text-transform: uppercase;
3023
+ }
3024
+ /* The drawing of Meta's editor keeps Meta's own colors, whatever the theme. */
3025
+ .rastro-forms__mwin {
3026
+ height: 100%;
3027
+ display: flex;
3028
+ flex-direction: column;
3029
+ overflow: hidden;
3030
+ border-radius: 10px;
3031
+ background: #fff;
3032
+ box-shadow:
3033
+ 0 0 0 1px rgb(0 0 0 / 8%),
3034
+ 0 12px 30px -12px rgb(0 0 0 / 30%);
3035
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
3036
+ color: #1c2b33;
3037
+ }
3038
+ .rastro-forms__chrome {
3039
+ height: 34px;
3040
+ flex: none;
3041
+ display: flex;
3042
+ align-items: center;
3043
+ gap: 7px;
3044
+ padding: 0 12px;
3045
+ background: #eceef1;
3046
+ border-bottom: 1px solid #d9dce1;
3047
+ }
3048
+ .rastro-forms__chrome > i {
3049
+ width: 9px;
3050
+ height: 9px;
3051
+ border-radius: 999px;
3052
+ background: #c9ccd1;
3053
+ }
3054
+ .rastro-forms__url {
3055
+ flex: 1;
3056
+ min-width: 0;
3057
+ margin-left: 8px;
3058
+ height: 22px;
3059
+ border-radius: 6px;
3060
+ background: #fff;
3061
+ display: flex;
3062
+ align-items: center;
3063
+ gap: 6px;
3064
+ padding: 0 10px;
3065
+ font-size: 11.5px;
3066
+ color: #4b5563;
3067
+ white-space: nowrap;
3068
+ overflow: hidden;
3069
+ }
3070
+ .rastro-forms__mtop {
3071
+ height: 48px;
3072
+ flex: none;
3073
+ display: flex;
3074
+ align-items: center;
3075
+ gap: 10px;
3076
+ padding: 0 16px;
3077
+ border-bottom: 1px solid #dadde1;
3078
+ font-size: 15px;
3079
+ font-weight: 700;
3080
+ white-space: nowrap;
3081
+ }
3082
+ .rastro-forms__mtop .rastro-forms__grow {
3083
+ overflow: hidden;
3084
+ text-overflow: ellipsis;
3085
+ }
3086
+ .rastro-forms__mb {
3087
+ display: flex;
3088
+ gap: 8px;
3089
+ }
3090
+ .rastro-forms__mb span {
3091
+ height: 32px;
3092
+ padding: 0 14px;
3093
+ border-radius: 6px;
3094
+ display: inline-flex;
3095
+ align-items: center;
3096
+ font-size: 13px;
3097
+ font-weight: 600;
3098
+ background: #e4e6eb;
3099
+ }
3100
+ .rastro-forms__mb span[data-primary] {
3101
+ background: #0866ff;
3102
+ color: #fff;
3103
+ }
3104
+ .rastro-forms__mbody {
3105
+ flex: 1;
3106
+ min-height: 0;
3107
+ display: grid;
3108
+ grid-template-columns: minmax(0, 340px) minmax(0, 1fr);
3109
+ }
3110
+ .rastro-forms__mleft {
3111
+ padding: 12px 14px;
3112
+ border-right: 1px solid #dadde1;
3113
+ overflow: hidden;
3114
+ }
3115
+ .rastro-forms__msec {
3116
+ margin-bottom: 8px;
3117
+ border-radius: 8px;
3118
+ box-shadow: inset 0 0 0 1px #dadde1;
3119
+ font-size: 13px;
3120
+ }
3121
+ .rastro-forms__msec[data-open] {
3122
+ box-shadow: inset 0 0 0 2px #0866ff;
3123
+ }
3124
+ .rastro-forms__msec-hd {
3125
+ display: flex;
3126
+ align-items: center;
3127
+ justify-content: space-between;
3128
+ gap: 8px;
3129
+ padding: 10px 12px;
3130
+ font-weight: 700;
3131
+ }
3132
+ .rastro-forms__mck {
3133
+ width: 16px;
3134
+ height: 16px;
3135
+ border-radius: 999px;
3136
+ display: grid;
3137
+ place-items: center;
3138
+ background: #31a24c;
3139
+ color: #fff;
3140
+ }
3141
+ .rastro-forms__msec-bd {
3142
+ padding: 0 12px 12px;
3143
+ display: flex;
3144
+ flex-direction: column;
3145
+ gap: 9px;
3146
+ }
3147
+ .rastro-forms__mf {
3148
+ position: relative;
3149
+ }
3150
+ .rastro-forms__mf > span {
3151
+ display: block;
3152
+ margin-bottom: 4px;
3153
+ font-size: 12px;
3154
+ font-weight: 700;
3155
+ }
3156
+ .rastro-forms__mf > div {
3157
+ height: 34px;
3158
+ display: flex;
3159
+ align-items: center;
3160
+ gap: 8px;
3161
+ padding: 0 10px;
3162
+ border-radius: 6px;
3163
+ box-shadow: inset 0 0 0 1px #cbd2d9;
3164
+ font-size: 13px;
3165
+ white-space: nowrap;
3166
+ overflow: hidden;
3167
+ }
3168
+ .rastro-forms__mf > div[data-dd] {
3169
+ justify-content: space-between;
3170
+ }
3171
+ /* An outline rings step 3 without growing the editor's scroll area. */
3172
+ .rastro-forms__mf[data-ring] {
3173
+ border-radius: 6px;
3174
+ outline: 2.5px solid var(--rastro-accent);
3175
+ outline-offset: 5px;
3176
+ }
3177
+ .rastro-forms__ring-n {
3178
+ position: absolute;
3179
+ left: -19px;
3180
+ top: -19px;
3181
+ z-index: 1;
3182
+ width: 24px;
3183
+ height: 24px;
3184
+ border-radius: 999px;
3185
+ display: grid;
3186
+ place-items: center;
3187
+ font-size: 12px;
3188
+ font-weight: 800;
3189
+ background: var(--rastro-accent);
3190
+ color: var(--rastro-accent-fg);
3191
+ }
3192
+ .rastro-forms__mright {
3193
+ display: flex;
3194
+ flex-direction: column;
3195
+ align-items: center;
3196
+ justify-content: center;
3197
+ gap: 8px;
3198
+ background: #f0f2f5;
3199
+ min-width: 0;
3200
+ overflow: hidden;
3201
+ }
3202
+ .rastro-forms__mlbl {
3203
+ font-size: 12px;
3204
+ font-weight: 600;
3205
+ color: #65676b;
3206
+ }
3207
+ .rastro-forms__mphone {
3208
+ width: 238px;
3209
+ height: 470px;
3210
+ max-height: calc(100% - 40px);
3211
+ border-radius: 30px;
3212
+ background: #fff;
3213
+ box-shadow:
3214
+ 0 0 0 8px #1c1e21,
3215
+ 0 20px 40px -12px rgb(0 0 0 / 40%);
3216
+ overflow: hidden;
3217
+ display: flex;
3218
+ flex-direction: column;
3219
+ }
3220
+ .rastro-forms__mph {
3221
+ height: 44px;
3222
+ flex: none;
3223
+ display: flex;
3224
+ align-items: center;
3225
+ gap: 8px;
3226
+ padding: 0 12px;
3227
+ border-bottom: 1px solid #e4e6eb;
3228
+ font-size: 12px;
3229
+ font-weight: 700;
3230
+ }
3231
+ .rastro-forms__mpg {
3232
+ width: 24px;
3233
+ height: 24px;
3234
+ border-radius: 999px;
3235
+ display: grid;
3236
+ place-items: center;
3237
+ font-size: 9px;
3238
+ font-weight: 800;
3239
+ background: #fef1e9;
3240
+ color: #a53f0e;
3241
+ }
3242
+ .rastro-forms__mpb {
3243
+ flex: 1;
3244
+ display: flex;
3245
+ flex-direction: column;
3246
+ align-items: center;
3247
+ text-align: center;
3248
+ gap: 10px;
3249
+ padding: 40px 18px 18px;
3250
+ }
3251
+ .rastro-forms__mpb strong {
3252
+ font-size: 16px;
3253
+ }
3254
+ .rastro-forms__mpb p {
3255
+ font-size: 12.5px;
3256
+ line-height: 1.45;
3257
+ color: #65676b;
3258
+ }
3259
+ .rastro-forms__mok {
3260
+ width: 52px;
3261
+ height: 52px;
3262
+ border-radius: 999px;
3263
+ display: grid;
3264
+ place-items: center;
3265
+ background: #e7f3ff;
3266
+ color: #0866ff;
3267
+ }
3268
+ .rastro-forms__mcta {
3269
+ margin-top: auto;
3270
+ width: 100%;
3271
+ height: 38px;
3272
+ border-radius: 6px;
3273
+ display: flex;
3274
+ align-items: center;
3275
+ justify-content: center;
3276
+ gap: 7px;
3277
+ background: #0866ff;
3278
+ color: #fff;
3279
+ font-size: 13px;
3280
+ font-weight: 700;
3281
+ }
3282
+ @container rastro-forms-guide (max-width: 899px) {
3283
+ .rastro-forms__guide-r {
3284
+ display: none;
3285
+ }
3286
+ .rastro-forms__guide-l {
3287
+ border-right: 0;
3288
+ grid-column: 1 / -1;
3289
+ }
3290
+ }
3291
+ @container rastro-forms-guide (max-width: 1099px) {
3292
+ .rastro-forms__mbody {
3293
+ grid-template-columns: minmax(0, 1fr);
3294
+ }
3295
+ .rastro-forms__mright {
3296
+ display: none;
3297
+ }
3298
+ }
3299
+
3300
+ /* The lead's pieces for the host (D4–D6, D9) */
3301
+ .rastro-forms__seal {
3302
+ display: inline-flex;
3303
+ align-items: center;
3304
+ gap: 5px;
3305
+ height: 20px;
3306
+ padding: 0 7px 0 5px;
3307
+ border-radius: 999px;
3308
+ background: var(--rastro-forms-meta-bg, #dbeafe);
3309
+ color: var(--rastro-forms-meta-fg, #1d4ed8);
3310
+ font-size: 10.5px;
3311
+ font-weight: 700;
3312
+ white-space: nowrap;
3313
+ max-width: 100%;
3314
+ overflow: hidden;
3315
+ /* The chip stands alone in a host's card: its own colors, no scope. */
3316
+ --rastro-forms-meta-bg: color-mix(in oklab, #0866ff 13%, var(--rastro-card));
3317
+ --rastro-forms-meta-fg: color-mix(in oklab, #0866ff 70%, var(--rastro-fg));
3318
+ }
3319
+ .rastro-forms__seal[data-size="md"] {
3320
+ height: 24px;
3321
+ padding: 0 9px 0 7px;
3322
+ font-size: 12px;
3323
+ }
3324
+ .rastro-forms__seal[data-variant="wrote"] {
3325
+ background: color-mix(in oklab, var(--rastro-accent) 8%, var(--rastro-card));
3326
+ color: var(--rastro-fg);
3327
+ }
3328
+ .rastro-forms__seal-text {
3329
+ min-width: 0;
3330
+ overflow: hidden;
3331
+ text-overflow: ellipsis;
3332
+ }
3333
+ .rastro-forms__lead {
3334
+ display: flex;
3335
+ flex-direction: column;
3336
+ gap: 12px;
3337
+ min-width: 0;
3338
+ }
3339
+ .rastro-forms__box {
3340
+ padding: 13px 14px;
3341
+ border-radius: 16px;
3342
+ background: var(--rastro-card);
3343
+ box-shadow: inset 0 0 0 1px var(--rastro-border);
3344
+ min-width: 0;
3345
+ }
3346
+ .rastro-forms__box[data-highlight] {
3347
+ box-shadow:
3348
+ inset 0 0 0 1px
3349
+ color-mix(in oklab, var(--rastro-forms-meta) 30%, var(--rastro-card)),
3350
+ 0 0 0 3px color-mix(in oklab, var(--rastro-forms-meta) 8%, transparent);
3351
+ }
3352
+ .rastro-forms__box-title {
3353
+ display: flex;
3354
+ align-items: center;
3355
+ gap: 8px;
3356
+ font-size: 13px;
3357
+ font-weight: 800;
3358
+ }
3359
+ .rastro-forms__sub {
3360
+ margin-top: 3px;
3361
+ font-size: 11.5px;
3362
+ color: var(--rastro-muted-fg);
3363
+ }
3364
+ .rastro-forms__qa {
3365
+ list-style: none;
3366
+ padding: 0;
3367
+ margin-top: 8px;
3368
+ display: flex;
3369
+ flex-direction: column;
3370
+ gap: 8px;
3371
+ }
3372
+ .rastro-forms__qa li {
3373
+ font-size: 12px;
3374
+ line-height: 1.4;
3375
+ }
3376
+ .rastro-forms__qa li span {
3377
+ display: block;
3378
+ font-size: 11px;
3379
+ color: var(--rastro-muted-fg);
3380
+ }
3381
+ .rastro-forms__qa li b {
3382
+ font-weight: 700;
3383
+ overflow-wrap: anywhere;
3384
+ }
3385
+ .rastro-forms__divider {
3386
+ height: 1px;
3387
+ margin: 12px 0 0;
3388
+ border: 0;
3389
+ background: var(--rastro-border);
3390
+ }
3391
+ .rastro-forms__kv {
3392
+ margin-top: 10px;
3393
+ display: grid;
3394
+ gap: 6px;
3395
+ font-size: 12px;
3396
+ }
3397
+ .rastro-forms__kv > div {
3398
+ display: grid;
3399
+ grid-template-columns: 76px minmax(0, 1fr);
3400
+ gap: 10px;
3401
+ }
3402
+ .rastro-forms__kv dt {
3403
+ color: var(--rastro-muted-fg);
3404
+ }
3405
+ .rastro-forms__kv dd {
3406
+ font-weight: 600;
3407
+ min-width: 0;
3408
+ overflow-wrap: anywhere;
3409
+ }
3410
+ .rastro-forms__ruleline {
3411
+ margin-top: 10px;
3412
+ display: flex;
3413
+ align-items: center;
3414
+ flex-wrap: wrap;
3415
+ gap: 6px;
3416
+ padding: 7px 10px;
3417
+ border-radius: 10px;
3418
+ background: var(--rastro-muted);
3419
+ font-size: 11.5px;
3420
+ color: var(--rastro-muted-fg);
3421
+ }
3422
+ .rastro-forms__ruleline b {
3423
+ color: var(--rastro-fg);
3424
+ }
3425
+ .rastro-forms__ruleline[data-tone="discard"] {
3426
+ background: var(--rastro-weak-bg);
3427
+ color: var(--rastro-weak);
3428
+ }
3429
+ .rastro-forms__path {
3430
+ list-style: none;
3431
+ margin-top: 10px;
3432
+ padding: 0;
3433
+ }
3434
+ .rastro-forms__path li {
3435
+ position: relative;
3436
+ padding: 0 0 11px 22px;
3437
+ font-size: 12px;
3438
+ line-height: 1.4;
3439
+ overflow-wrap: anywhere;
3440
+ }
3441
+ .rastro-forms__path li::before {
3442
+ content: "";
3443
+ position: absolute;
3444
+ left: 5px;
3445
+ top: 13px;
3446
+ bottom: -2px;
3447
+ width: 2px;
3448
+ background: var(--rastro-border);
3449
+ }
3450
+ .rastro-forms__path li:last-child {
3451
+ padding-bottom: 0;
3452
+ }
3453
+ .rastro-forms__path li:last-child::before {
3454
+ display: none;
3455
+ }
3456
+ .rastro-forms__path li > i {
3457
+ position: absolute;
3458
+ left: 0;
3459
+ top: 3px;
3460
+ width: 12px;
3461
+ height: 12px;
3462
+ border-radius: 999px;
3463
+ background: var(--rastro-card);
3464
+ border: 2px solid var(--rastro-border);
3465
+ }
3466
+ .rastro-forms__path li[data-tone="meta"] > i {
3467
+ border-color: var(--rastro-forms-meta);
3468
+ }
3469
+ .rastro-forms__path li[data-tone="rule"] > i {
3470
+ border-color: oklch(0.45 0.15 320);
3471
+ }
3472
+ .rastro-forms__path li[data-tone="discard"] > i {
3473
+ border-color: var(--rastro-weak);
3474
+ }
3475
+ .rastro-forms__path li[data-tone="wrote"] > i {
3476
+ border-color: var(--rastro-fg);
3477
+ background: var(--rastro-fg);
3478
+ }
3479
+ .rastro-forms__path li[data-tone="waiting"] > i {
3480
+ border-color: var(--rastro-accent);
3481
+ background: var(--rastro-accent);
3482
+ box-shadow: 0 0 0 3px var(--rastro-forms-tint-line);
3483
+ }
3484
+ .rastro-forms__path b {
3485
+ font-weight: 700;
3486
+ }
3487
+ .rastro-forms__path-time {
3488
+ margin-right: 6px;
3489
+ font-size: 11px;
3490
+ color: var(--rastro-muted-fg);
3491
+ }
3492
+ .rastro-forms__lead[data-layout="compact"] .rastro-forms__box {
3493
+ padding: 12px;
3494
+ }
3495
+
1195
3496
  /* src/ui/integrations/integrations.css */
1196
3497
  /*
1197
3498
  * IntegrationsView (Integrações). Desktop is the B artboards; under 640px of