@tetjana/flowmakers-ds 0.1.6 → 0.1.8

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 (65) hide show
  1. package/dist/components/Button.figma.d.ts +1 -0
  2. package/dist/components/CardCareer.d.ts +18 -0
  3. package/dist/components/CardCareer.figma.d.ts +1 -0
  4. package/dist/components/CardTest.d.ts +19 -0
  5. package/dist/components/CardTest.figma.d.ts +1 -0
  6. package/dist/components/Checkbox.figma.d.ts +1 -0
  7. package/dist/components/DashboardTitle.d.ts +12 -0
  8. package/dist/components/DatePicker.d.ts +10 -0
  9. package/dist/components/Dropdown.d.ts +14 -0
  10. package/dist/components/Footer.figma.d.ts +1 -0
  11. package/dist/components/Header.figma.d.ts +1 -0
  12. package/dist/components/IconButton.d.ts +12 -0
  13. package/dist/components/IconButton.figma.d.ts +1 -0
  14. package/dist/components/Input.figma.d.ts +1 -0
  15. package/dist/components/ListItem.d.ts +8 -0
  16. package/dist/components/NavMenu.d.ts +18 -0
  17. package/dist/components/NavMenu.figma.d.ts +1 -0
  18. package/dist/components/Pagination.d.ts +15 -0
  19. package/dist/components/Pagination.figma.d.ts +1 -0
  20. package/dist/components/Price.d.ts +13 -0
  21. package/dist/components/PriceCard.d.ts +15 -0
  22. package/dist/components/ProcessStep.d.ts +12 -0
  23. package/dist/components/Question.d.ts +12 -0
  24. package/dist/components/RadioButton.d.ts +8 -0
  25. package/dist/components/Search.d.ts +7 -0
  26. package/dist/components/SectionTitle.d.ts +14 -0
  27. package/dist/components/SegmentedControl.d.ts +14 -0
  28. package/dist/components/SegmentedControl.figma.d.ts +1 -0
  29. package/dist/components/SignupForm.d.ts +10 -0
  30. package/dist/components/Stepper.d.ts +18 -0
  31. package/dist/components/StepperProgress.d.ts +13 -0
  32. package/dist/components/Tag.figma.d.ts +1 -0
  33. package/dist/components/TagBig.d.ts +9 -0
  34. package/dist/components/Tariffs.d.ts +12 -0
  35. package/dist/components/TasksWidget.d.ts +13 -0
  36. package/dist/components/TestimonialCard.d.ts +11 -0
  37. package/dist/components/TimePicker.d.ts +10 -0
  38. package/dist/components/Toggle.figma.d.ts +1 -0
  39. package/dist/components/WidgetCard.d.ts +65 -0
  40. package/dist/components/WidgetCard.figma.d.ts +1 -0
  41. package/dist/demo.d.ts +3 -0
  42. package/dist/index.cjs.js +1 -1
  43. package/dist/index.d.ts +52 -0
  44. package/dist/index.esm.js +816 -98
  45. package/dist/styles.css +1 -1
  46. package/guidelines/Guidelines.md +53 -0
  47. package/guidelines/components/button.md +50 -0
  48. package/guidelines/components/cardcareer.md +70 -0
  49. package/guidelines/components/cardtest.md +82 -0
  50. package/guidelines/components/checkbox.md +51 -0
  51. package/guidelines/components/footer.md +63 -0
  52. package/guidelines/components/header.md +57 -0
  53. package/guidelines/components/iconbutton.md +42 -0
  54. package/guidelines/components/input.md +39 -0
  55. package/guidelines/components/navmenu.md +48 -0
  56. package/guidelines/components/pagination.md +61 -0
  57. package/guidelines/components/segmentedcontrol.md +37 -0
  58. package/guidelines/components/tag.md +27 -0
  59. package/guidelines/components/toggle.md +41 -0
  60. package/guidelines/components/widgetcard.md +187 -0
  61. package/guidelines/design-tokens/colors.md +42 -0
  62. package/guidelines/design-tokens/spacing.md +41 -0
  63. package/guidelines/design-tokens/typography.md +23 -0
  64. package/guidelines/overview-components.md +58 -0
  65. package/package.json +21 -12
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- :root{--bw-fill-white: #ffffff;--bw-fill-black: #121212;--bw-fill-50: #f7f7f8;--bw-fill-100: #eeeef0;--bw-fill-200: #dcdcdc;--bw-fill-300: #b8b9c1;--bw-fill-400: #989898;--bw-fill-500: #7c7c7c;--bw-fill-600: #5d5e6c;--bw-fill-700: #4c4d58;--bw-fill-950: #18181b;--bw-transparent-white-5: rgba(255,255,255,.05);--bw-transparent-white-75: rgba(255,255,255,.75);--primary-fill-100: #eeecfb;--primary-fill-200: #d8d3f6;--primary-fill-300: #b9aff0;--primary-fill-400: #9b8ae9;--primary-fill-500: #7d65e1;--primary-fill-600: #6d45bc;--primary-fill-700: #6d45bc;--primary-fill-800: #4e2f8e;--primary-fill-900: #2f1a60;--pink-fill-100: #ffe7fc;--pink-fill-200: #ffcef9;--pink-fill-300: #ffa8f1;--pink-fill-400: #ff7de7;--pink-fill-500: #e040d0;--pink-fill-600: #c620b8;--pink-fill-700: #b51692;--green-fill-100: #d9f2e7;--green-fill-200: #b3e5cf;--green-fill-300: #7dd1ae;--green-fill-400: #47bc8d;--green-fill-500: #27a872;--green-fill-600: #1e8a5d;--green-fill-700: #1b6153;--yellow-fill-100: #fff0d4;--yellow-fill-200: #ffe0a8;--yellow-fill-300: #ffc96b;--yellow-fill-400: #ffb02e;--yellow-fill-500: #f59100;--yellow-fill-600: #d97400;--yellow-fill-700: #c54e09;--nature-fill-50: #f7f7f8;--nature-fill-100: #eeeef0;--nature-fill-200: #dcdcde;--nature-fill-300: #b8b9c1;--nature-fill-400: #989898;--nature-fill-500: #7c7c7c;--nature-fill-600: #5d5e6c;--nature-fill-700: #4c4d58;--nature-fill-800: #2e2f3a;--nature-fill-900: #1e1f28;--nature-fill-950: #18181b}:root{--font-family-headings: "Manrope", sans-serif;--font-family-body: "Nunito Sans", sans-serif;--font-size-10: 10px;--font-size-12: 12px;--font-size-14: 14px;--font-size-16: 16px;--font-size-18: 18px;--font-size-20: 20px;--font-size-24: 24px;--font-size-30: 30px;--font-size-36: 36px;--font-size-48: 48px;--weight-light: 300;--weight-regular: 400;--weight-medium: 400;--weight-semibold: 600;--weight-bold: 700;--line-height-tight: .9;--line-height-snug: 1;--line-height-normal: 1.2;--line-height-relaxed:1.4}.text-display{font-family:var(--font-family-headings);font-size:var(--font-size-48);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-h1{font-family:var(--font-family-headings);font-size:var(--font-size-36);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-h2{font-family:var(--font-family-headings);font-size:var(--font-size-30);font-weight:var(--weight-bold);line-height:.94}.text-h3{font-family:var(--font-family-headings);font-size:var(--font-size-24);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-h4{font-family:var(--font-family-headings);font-size:var(--font-size-18);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-body-lg{font-family:var(--font-family-body);font-size:var(--font-size-16);font-weight:var(--weight-medium);line-height:var(--line-height-relaxed)}.text-body-md{font-family:var(--font-family-body);font-size:var(--font-size-14);font-weight:var(--weight-medium);line-height:var(--line-height-relaxed)}.text-body-sm{font-family:var(--font-family-body);font-size:var(--font-size-12);font-weight:var(--weight-medium);line-height:var(--line-height-normal)}.text-subtitle{font-family:var(--font-family-body);font-size:var(--font-size-16);font-weight:var(--weight-semibold);line-height:1}.text-button{font-family:var(--font-family-body);font-size:var(--font-size-14);font-weight:var(--weight-bold);line-height:1}.text-tiny{font-family:var(--font-family-body);font-size:var(--font-size-12);font-weight:var(--weight-bold);line-height:var(--line-height-normal)}:root{--space-xxs: 4px;--space-xs: 8px;--space-s: 10px;--space-sm: 12px;--space-m: 16px;--space-l: 20px;--space-xl: 24px;--space-2xl: 32px;--space-3xl: 48px;--radius-xs: 8px;--radius-s: 10px;--radius-m: 12px;--radius-l: 16px;--radius-xl: 20px;--radius-full: 9999px}.fm-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:none;cursor:pointer;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1;white-space:nowrap;transition:background .15s,border-color .15s,border-width .15s,opacity .15s,box-shadow .15s;text-decoration:none;box-sizing:border-box;position:relative}.fm-btn--sm{height:32px;padding:0 12px;border-radius:10px;font-size:12px}.fm-btn--md{height:42px;padding:10px 16px;border-radius:12px}.fm-btn--lg{height:52px;padding:12px 24px;border-radius:12px;font-size:16px}.fm-btn--full{width:100%}.fm-btn--primary{background:#121212;color:#fff;border:none}.fm-btn--primary:hover:not(:disabled){background:#121212;box-shadow:inset 0 0 0 100px #ffffff0d}.fm-btn--primary:active:not(:disabled){background:#2a2a2a}.fm-btn--primary:focus-visible{outline:2px solid #ffa8f1;outline-offset:2px}.fm-btn--hero{background:#121212;color:#fff;border:1.5px solid transparent;padding:10px 16px;border-radius:12px;height:42px}.fm-btn--hero:hover:not(:disabled){border-color:#ffa8f1;background:#121212}.fm-btn--hero:active:not(:disabled){border-color:#ffa8f1;background:#121212}.fm-btn--hero:focus-visible{border-color:#ffa8f1;outline:none}.fm-btn--hero:disabled{background:#dcdcdc;color:#91939f;border-color:transparent}.fm-btn--secondary{background:#fff;color:#18181b;border:1px solid #d9d9de;border-radius:12px;height:42px;padding:10px 16px}.fm-btn--secondary:hover:not(:disabled){border-width:1.5px;border-color:#ffa8f1;background:#fff}.fm-btn--secondary:active:not(:disabled){border-width:1px;border-color:#ffa8f1;background:#f7f7f8}.fm-btn--secondary:focus-visible{border-width:1px;border-color:#ffa8f1;outline:none;background:#fff}.fm-btn--secondary:disabled{color:#91939f;border-color:#d9d9de;border-width:1px;background:#fff;cursor:not-allowed}.fm-btn--secondary-large{background:#fff;color:#18181b;border:1px solid #d9d9de;border-radius:12px;height:52px;padding:12px 24px;font-size:16px}.fm-btn--secondary-large:hover:not(:disabled){border-width:1.5px;border-color:#ffa8f1;background:#fff}.fm-btn--secondary-large:active:not(:disabled){border-width:1px;border-color:#ffa8f1;background:#f7f7f8}.fm-btn--secondary-large:focus-visible{border-width:1px;border-color:#ffa8f1;outline:none;background:#fff}.fm-btn--secondary-large:disabled{color:#91939f;border-color:#d9d9de;border-width:1px;background:#fff;cursor:not-allowed}.fm-btn--ghost{background:transparent;color:#18181b;border:none}.fm-btn--ghost:hover:not(:disabled){background:#f7f7f8}.fm-btn--ghost:active:not(:disabled){background:#eeeef0}.fm-btn--ghost-icon{background:transparent;color:#18181b;border:none;padding:8px;border-radius:10px;height:auto}.fm-btn--ghost-icon:hover:not(:disabled){background:#f7f7f8}.fm-btn--disabled,.fm-btn:disabled{cursor:not-allowed;opacity:1}.fm-btn__icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.fm-input-wrapper{display:flex;flex-direction:column;gap:12px;width:100%;box-sizing:border-box}.fm-input__label{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:400;color:#5d5e6c;line-height:1.4;white-space:nowrap}.fm-input__field{display:flex;align-items:center;gap:8px;height:42px;padding:10px 16px;border-radius:12px;border:1px solid #b8b9c1;background:#fff;box-sizing:border-box;transition:border-color .15s,box-shadow .15s;width:100%}.fm-input__el{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-input__el::placeholder{color:#b8b9c1}.fm-input-wrapper--hover .fm-input__field{border-color:#5d5e6c;box-shadow:0 4px 5.3px #d9d9de}.fm-input-wrapper--focused .fm-input__field{border-color:#ffa8f1}.fm-input-wrapper--filled .fm-input__field{border-color:#5d5e6c}.fm-input-wrapper--error .fm-input__field{border-color:#ff383c}.fm-input-wrapper--success .fm-input__field{border-color:#34c759}.fm-input-wrapper--disabled .fm-input__field{background:#f7f7f8;cursor:not-allowed;border-color:#b8b9c1}.fm-input-wrapper--disabled .fm-input__el{cursor:not-allowed;color:#91939f}.fm-input__el:focus{outline:none}.fm-input__field:focus-within{border-color:#ffa8f1}.fm-input-wrapper--error .fm-input__field:focus-within{border-color:#ff383c}.fm-input-wrapper--success .fm-input__field:focus-within{border-color:#34c759}.fm-input__icon{display:inline-flex;align-items:center;color:#b8b9c1;flex-shrink:0}.fm-input__message{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:400;line-height:1.2;margin:0}.fm-input__message--error{color:#ff383c}.fm-input__message--success{color:#34c759}.fm-tag{display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:9999px;font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;white-space:nowrap;box-sizing:border-box}.fm-tag--grey{background:#eeeef0;color:#4c4d58}.fm-tag--green{background:#d9f2e7;color:#1b6153}.fm-tag--yellow{background:#fff0d4;color:#c54e09}.fm-tag--purple{background:#eeecfb;color:#6d45bc}.fm-tag--pink{background:#ffe7fc;color:#b51692}.fm-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.fm-toggle__input{position:absolute;opacity:0;width:0;height:0}.fm-toggle__track{position:relative;width:64px;height:28px;border-radius:100px;background:#d9d9de;transition:background .25s;flex-shrink:0;overflow:hidden}.fm-toggle__input:checked~.fm-toggle__track{background:linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc)}.fm-toggle__thumb{position:absolute;top:50%;transform:translateY(-50%);left:2px;width:24px;height:24px;border-radius:100px;background:#fff;transition:left .25s;box-shadow:0 1px 3px #00000026}.fm-toggle__input:checked~.fm-toggle__track .fm-toggle__thumb{left:calc(100% - 26px)}.fm-toggle--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.fm-toggle__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-checkbox{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.fm-checkbox__input{position:absolute;opacity:0;width:0;height:0}.fm-checkbox__box{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;border:1.5px solid #b8b9c1;background:#fff;flex-shrink:0;overflow:hidden;transition:background .15s,border-color .15s;box-sizing:border-box}.fm-checkbox--large .fm-checkbox__box{width:22px;height:22px;border-radius:6px}.fm-checkbox__input:checked+.fm-checkbox__box{background:#0d6fff;border-color:#0d6fff}.fm-checkbox__input:indeterminate+.fm-checkbox__box{background:#0d6fff;border-color:#0d6fff}.fm-checkbox__minus{width:10px;height:2px;background:#fff;border-radius:1px}.fm-checkbox:not(.fm-checkbox--disabled):hover .fm-checkbox__box{border-color:#5d5e6c}.fm-checkbox--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.fm-checkbox__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-m, 16px);border-radius:var(--radius-xl, 20px) var(--radius-xl, 20px) 0 0;width:100%}.fm-header--purple{background:var(--primary-fill-100, #eeecfb)}.fm-header--grey{background:var(--nature-fill-50, #f7f7f8)}.fm-header__slot{display:flex;align-items:center}.fm-header__title-block{display:flex;flex-direction:column;gap:var(--space-xs, 8px);flex:1;padding:0 var(--space-xs, 8px)}.fm-header__title{font-family:var(--font-family-headings, "Manrope", sans-serif);font-size:var(--font-size-18, 18px);font-weight:var(--weight-bold, 700);color:var(--bw-fill-black, #121212);line-height:.9;margin:0}.fm-header__subtitle{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-medium, 400);color:var(--bw-fill-400, #989898);line-height:1.4;margin:0}.fm-footer{display:flex;flex-direction:column;width:100%}.fm-footer--light{background:var(--nature-fill-50, #f7f7f8);color:var(--bw-fill-black, #121212)}.fm-footer--dark{background:var(--nature-fill-950, #18181b);color:#ffffffbf}.fm-footer__top{display:flex;gap:var(--space-3xl, 48px);padding:var(--space-xl, 24px);align-items:flex-start}.fm-footer__cta-block{display:flex;flex-direction:column;gap:var(--space-xl, 24px);flex-shrink:0}.fm-footer__headline{font-family:var(--font-family-headings, "Manrope", sans-serif);font-size:var(--font-size-30, 30px);font-weight:var(--weight-bold, 700);line-height:.94;margin:0}.fm-footer__cta-btn{display:inline-flex;align-items:center;justify-content:center;height:42px;padding:0 var(--space-m, 16px);border-radius:var(--radius-m, 12px);font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-bold, 700);cursor:pointer;transition:background .15s}.fm-footer--light .fm-footer__cta-btn{background:var(--bw-fill-black, #121212);color:var(--bw-fill-white, #ffffff);border:none}.fm-footer--dark .fm-footer__cta-btn{background:transparent;color:#ffffffbf;border:1.5px solid var(--pink-fill-300, #ffa8f1)}.fm-footer__sections{display:flex;gap:var(--space-3xl, 48px);flex:1;justify-content:space-between;flex-wrap:wrap}.fm-footer__section{display:flex;flex-direction:column;gap:var(--space-xl, 24px)}.fm-footer__section-title{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-16, 16px);font-weight:var(--weight-semibold, 600);margin:0}.fm-footer__section-links{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-m, 16px)}.fm-footer__link{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-light, 300);text-decoration:none;line-height:1.4;color:inherit}.fm-footer__link:hover{text-decoration:underline}.fm-footer__bottom{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xl, 24px);border-top:1px solid rgba(255,255,255,.05)}.fm-footer__copyright{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-medium, 400);line-height:1.4;margin:0}
1
+ :root{--bw-fill-white: #ffffff;--bw-fill-black: #121212;--bw-fill-50: #f7f7f8;--bw-fill-100: #eeeef0;--bw-fill-200: #dcdcdc;--bw-fill-300: #b8b9c1;--bw-fill-400: #989898;--bw-fill-500: #7c7c7c;--bw-fill-600: #5d5e6c;--bw-fill-700: #4c4d58;--bw-fill-950: #18181b;--bw-transparent-white-5: rgba(255,255,255,.05);--bw-transparent-white-75: rgba(255,255,255,.75);--primary-fill-100: #eeecfb;--primary-fill-200: #e0ddf7;--primary-fill-300: #c9c1f1;--primary-fill-400: #ac9de8;--primary-fill-500: #9076dc;--primary-fill-600: #754ccc;--primary-fill-700: #6d45bc;--primary-fill-800: #5b3a9d;--primary-fill-900: #4c3181;--pink-fill-100: #ffe7fc;--pink-fill-200: #ffcef9;--pink-fill-300: #ffa8f1;--pink-fill-400: #fe66e3;--pink-fill-500: #f63fd5;--pink-fill-600: #da1fb5;--pink-fill-700: #b51692;--green-fill-100: #d9f2e7;--green-fill-200: #b6e4d3;--green-fill-300: #7dd1ae;--green-fill-400: #53b499;--green-fill-500: #31987f;--green-fill-600: #217a65;--green-fill-700: #1b6153;--yellow-fill-100: #fff0d4;--yellow-fill-200: #ffdda9;--yellow-fill-300: #ffbe62;--yellow-fill-400: #fea139;--yellow-fill-500: #fc8313;--yellow-fill-600: #ed6809;--yellow-fill-700: #c54e09;--nature-fill-50: #f7f7f8;--nature-fill-100: #eeeef0;--nature-fill-200: #d9d9de;--nature-fill-300: #b8b9c1;--nature-fill-400: #91939f;--nature-fill-500: #737584;--nature-fill-600: #5d5e6c;--nature-fill-700: #4c4d58;--nature-fill-800: #41414b;--nature-fill-900: #1e1f28;--nature-fill-950: #18181b}:root{--font-family-headings: "Manrope", sans-serif;--font-family-body: "Nunito Sans", sans-serif;--font-size-10: 10px;--font-size-12: 12px;--font-size-14: 14px;--font-size-16: 16px;--font-size-18: 18px;--font-size-20: 20px;--font-size-24: 24px;--font-size-30: 30px;--font-size-36: 36px;--font-size-48: 48px;--weight-light: 300;--weight-regular: 400;--weight-medium: 400;--weight-semibold: 600;--weight-bold: 700;--line-height-tight: .9;--line-height-snug: 1;--line-height-normal: 1.2;--line-height-relaxed:1.4}.text-display{font-family:var(--font-family-headings);font-size:var(--font-size-48);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-h1{font-family:var(--font-family-headings);font-size:var(--font-size-36);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-h2{font-family:var(--font-family-headings);font-size:var(--font-size-30);font-weight:var(--weight-bold);line-height:.94}.text-h3{font-family:var(--font-family-headings);font-size:var(--font-size-24);font-weight:var(--weight-bold);line-height:var(--line-height-normal)}.text-h4{font-family:var(--font-family-headings);font-size:var(--font-size-18);font-weight:var(--weight-bold);line-height:var(--line-height-tight)}.text-body-lg{font-family:var(--font-family-body);font-size:var(--font-size-16);font-weight:var(--weight-medium);line-height:var(--line-height-relaxed)}.text-body-md{font-family:var(--font-family-body);font-size:var(--font-size-14);font-weight:var(--weight-medium);line-height:var(--line-height-relaxed)}.text-body-sm{font-family:var(--font-family-body);font-size:var(--font-size-12);font-weight:var(--weight-medium);line-height:var(--line-height-normal)}.text-subtitle{font-family:var(--font-family-body);font-size:var(--font-size-16);font-weight:var(--weight-semibold);line-height:1}.text-button{font-family:var(--font-family-body);font-size:var(--font-size-14);font-weight:var(--weight-bold);line-height:1}.text-tiny{font-family:var(--font-family-body);font-size:var(--font-size-12);font-weight:var(--weight-bold);line-height:var(--line-height-normal)}:root{--space-xxs: 4px;--space-xs: 8px;--space-s: 10px;--space-sm: 12px;--space-m: 16px;--space-l: 20px;--space-xl: 24px;--space-2xl: 32px;--space-3xl: 48px;--radius-xs: 8px;--radius-s: 10px;--radius-m: 12px;--radius-l: 16px;--radius-xl: 20px;--radius-full: 9999px}.fm-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:none;cursor:pointer;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1;white-space:nowrap;transition:background .15s,border-color .15s,border-width .15s,opacity .15s,box-shadow .15s;text-decoration:none;box-sizing:border-box;position:relative}.fm-btn--sm{height:31.5px;padding:0 11.5px;border-radius:10px;font-size:11.5px}.fm-btn--md{height:41.5px;padding:10px 16px;border-radius:11.5px}.fm-btn--lg{height:51.5px;padding:11.5px 24px;border-radius:11.5px;font-size:16px}.fm-btn--full{width:100%}.fm-btn--primary{background:#121212;color:#fff;border:none}.fm-btn--primary:hover:not(:disabled){background:#121212;box-shadow:inset 0 0 0 100px #ffffff0d}.fm-btn--primary:active:not(:disabled){background:#2a2a2a}.fm-btn--primary:focus-visible{outline:1.5px solid #ffa8f1;outline-offset:1.5px}.fm-btn--hero{background:#121212;color:#fff;border:1.5px solid transparent;padding:10px 16px;border-radius:11.5px;height:41.5px}.fm-btn--hero:hover:not(:disabled),.fm-btn--hero:active:not(:disabled),.fm-btn--hero:focus-visible{outline:none;border:2px solid transparent;background:linear-gradient(#121212,#121212) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-btn--hero:disabled{background:#bdbdbd;color:#91939f;border-color:transparent}.fm-btn--secondary{background:#fff;color:#18181b;border:1.5px solid #d9d9de;border-radius:11.5px;height:41.5px;padding:10px 16px}.fm-btn--secondary:hover:not(:disabled),.fm-btn--secondary:focus-visible{outline:none;border:2px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-btn--secondary:active:not(:disabled){border:2px solid transparent;background:linear-gradient(#f7f7f8,#f7f7f8) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-btn--secondary:disabled{color:#91939f;border:1.5px solid #d9d9de;background:#fff;cursor:not-allowed}.fm-btn--secondary-large{background:#fff;color:#18181b;border:1.5px solid #d9d9de;border-radius:11.5px;height:51.5px;padding:11.5px 24px;font-size:16px}.fm-btn--secondary-large:hover:not(:disabled),.fm-btn--secondary-large:focus-visible{outline:none;border:2px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-btn--secondary-large:active:not(:disabled){border:2px solid transparent;background:linear-gradient(#f7f7f8,#f7f7f8) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-btn--secondary-large:disabled{color:#91939f;border:1.5px solid #d9d9de;background:#fff;cursor:not-allowed}.fm-btn--ghost{background:transparent;color:#18181b;border:none}.fm-btn--ghost:hover:not(:disabled){background:#f7f7f8}.fm-btn--ghost:active:not(:disabled){background:#eeeef0}.fm-btn--ghost-icon{background:transparent;color:#18181b;border:none;padding:8px;border-radius:10px;height:auto}.fm-btn--ghost-icon:hover:not(:disabled){background:#f7f7f8}.fm-btn--disabled,.fm-btn:disabled{cursor:not-allowed;opacity:1}.fm-btn__icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.fm-input-wrapper{display:flex;flex-direction:column;gap:12px;width:100%;box-sizing:border-box}.fm-input__label{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:400;color:#5d5e6c;line-height:1.4;white-space:nowrap}.fm-input__field{display:flex;align-items:center;gap:8px;height:42px;padding:10px 16px;border-radius:12px;border:1px solid #b8b9c1;background:#fff;box-sizing:border-box;transition:border-color .15s,box-shadow .15s;width:100%}.fm-input__el{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-input__el::placeholder{color:#b8b9c1}.fm-input-wrapper--hover .fm-input__field{border-color:#5d5e6c;box-shadow:0 4px 5.3px #d9d9de}.fm-input-wrapper--focused .fm-input__field{border-color:#ffa8f1}.fm-input-wrapper--filled .fm-input__field{border-color:#5d5e6c}.fm-input-wrapper--error .fm-input__field{border-color:#ff383c}.fm-input-wrapper--success .fm-input__field{border-color:#34c759}.fm-input-wrapper--disabled .fm-input__field{background:#f7f7f8;cursor:not-allowed;border-color:#b8b9c1}.fm-input-wrapper--disabled .fm-input__el{cursor:not-allowed;color:#91939f}.fm-input__el:focus{outline:none}.fm-input__field:focus-within{border-color:#ffa8f1}.fm-input-wrapper--error .fm-input__field:focus-within{border-color:#ff383c}.fm-input-wrapper--success .fm-input__field:focus-within{border-color:#34c759}.fm-input__icon{display:inline-flex;align-items:center;color:#b8b9c1;flex-shrink:0}.fm-input__message{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:400;line-height:1.2;margin:0}.fm-input__message--error{color:#ff383c}.fm-input__message--success{color:#34c759}.fm-tag{display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:9999px;font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;white-space:nowrap;box-sizing:border-box}.fm-tag--grey{background:#eeeef0;color:#4c4d58}.fm-tag--green{background:#d9f2e7;color:#1b6153}.fm-tag--yellow{background:#fff0d4;color:#c54e09}.fm-tag--purple{background:#eeecfb;color:#6d45bc}.fm-tag--pink{background:#ffe7fc;color:#b51692}.fm-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.fm-toggle__input{position:absolute;opacity:0;width:0;height:0}.fm-toggle__track{position:relative;width:64px;height:28px;border-radius:100px;background:#d9d9de;transition:background .25s;flex-shrink:0;overflow:hidden}.fm-toggle__input:checked~.fm-toggle__track{background:linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc)}.fm-toggle__thumb{position:absolute;top:50%;transform:translateY(-50%);left:2px;width:24px;height:24px;border-radius:100px;background:#fff;transition:left .25s;box-shadow:0 1px 3px #00000026}.fm-toggle__input:checked~.fm-toggle__track .fm-toggle__thumb{left:calc(100% - 26px)}.fm-toggle--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.fm-toggle__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-checkbox{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.fm-checkbox__input{position:absolute;opacity:0;width:0;height:0}.fm-checkbox__box{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;border:1.5px solid #b8b9c1;background:#fff;flex-shrink:0;overflow:hidden;transition:background .15s,border-color .15s;box-sizing:border-box}.fm-checkbox--large .fm-checkbox__box{width:22px;height:22px;border-radius:6px}.fm-checkbox__input:checked+.fm-checkbox__box{background:#9076dc;border-color:#9076dc}.fm-checkbox__input:indeterminate+.fm-checkbox__box{background:#9076dc;border-color:#9076dc}.fm-checkbox__minus{width:10px;height:2px;background:#fff;border-radius:1px}.fm-checkbox:not(.fm-checkbox--disabled):hover .fm-checkbox__box{border-color:#5d5e6c}.fm-checkbox--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.fm-checkbox__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-m, 16px);border-radius:var(--radius-xl, 20px) var(--radius-xl, 20px) 0 0;width:100%}.fm-header--purple{background:var(--primary-fill-100, #eeecfb)}.fm-header--grey{background:var(--nature-fill-50, #f7f7f8)}.fm-header__slot{display:flex;align-items:center}.fm-header__title-block{display:flex;flex-direction:column;gap:var(--space-xs, 8px);flex:1;padding:0 var(--space-xs, 8px)}.fm-header__title{font-family:var(--font-family-headings, "Manrope", sans-serif);font-size:var(--font-size-18, 18px);font-weight:var(--weight-bold, 700);color:var(--bw-fill-black, #121212);line-height:.9;margin:0}.fm-header__subtitle{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-medium, 400);color:var(--bw-fill-400, #989898);line-height:1.4;margin:0}.fm-footer{display:flex;flex-direction:column;width:100%}.fm-footer--light{background:var(--nature-fill-50, #f7f7f8);color:var(--bw-fill-black, #121212)}.fm-footer--dark{background:var(--nature-fill-950, #18181b);color:#ffffffbf}.fm-footer__top{display:flex;gap:var(--space-3xl, 48px);padding:var(--space-xl, 24px);align-items:flex-start}.fm-footer__cta-block{display:flex;flex-direction:column;gap:var(--space-xl, 24px);flex-shrink:0}.fm-footer__headline{font-family:var(--font-family-headings, "Manrope", sans-serif);font-size:var(--font-size-30, 30px);font-weight:var(--weight-bold, 700);line-height:.94;margin:0}.fm-footer__cta-btn{display:inline-flex;align-items:center;justify-content:center;height:42px;padding:0 var(--space-m, 16px);border-radius:var(--radius-m, 12px);font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-bold, 700);cursor:pointer;transition:background .15s}.fm-footer--light .fm-footer__cta-btn{background:var(--bw-fill-black, #121212);color:var(--bw-fill-white, #ffffff);border:none}.fm-footer--dark .fm-footer__cta-btn{background:transparent;color:#ffffffbf;border:1.5px solid var(--pink-fill-300, #ffa8f1)}.fm-footer__sections{display:flex;gap:var(--space-3xl, 48px);flex:1;justify-content:space-between;flex-wrap:wrap}.fm-footer__section{display:flex;flex-direction:column;gap:var(--space-xl, 24px)}.fm-footer__section-title{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-16, 16px);font-weight:var(--weight-semibold, 600);margin:0}.fm-footer__section-links{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-m, 16px)}.fm-footer__link{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-light, 300);text-decoration:none;line-height:1.4;color:inherit}.fm-footer__link:hover{text-decoration:underline}.fm-footer__bottom{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xl, 24px);border-top:1px solid rgba(255,255,255,.05)}.fm-footer__copyright{font-family:var(--font-family-body, "Nunito Sans", sans-serif);font-size:var(--font-size-14, 14px);font-weight:var(--weight-medium, 400);line-height:1.4;margin:0}.fm-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:80px;min-height:60px;padding:10px 12px;border-radius:12px;border:1.5px solid transparent;background:transparent;cursor:pointer;text-decoration:none;box-sizing:border-box;transition:background .15s,border-color .15s}.fm-nav-item__icon{width:24px;height:24px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#91939f}.fm-nav-item__label{font-family:Nunito Sans,sans-serif;font-weight:700;font-size:12px;line-height:1.2;color:#91939f;text-align:center;white-space:nowrap}.fm-nav-item:hover:not(.fm-nav-item--active):not(.fm-nav-item--pressed){border-color:#ffa8f1;background:transparent}.fm-nav-item:hover:not(.fm-nav-item--active):not(.fm-nav-item--pressed) .fm-nav-item__icon{color:#91939f}.fm-nav-item:hover:not(.fm-nav-item--active):not(.fm-nav-item--pressed) .fm-nav-item__label{color:#91939f}.fm-nav-item--pressed,.fm-nav-item:active:not(.fm-nav-item--active){background:#6d45bc;border-color:transparent}.fm-nav-item--pressed .fm-nav-item__icon,.fm-nav-item:active:not(.fm-nav-item--active) .fm-nav-item__icon{color:#fff}.fm-nav-item--pressed .fm-nav-item__label,.fm-nav-item:active:not(.fm-nav-item--active) .fm-nav-item__label{color:#fff}.fm-nav-item--active{background:#9076dc;border-color:transparent}.fm-nav-item--active .fm-nav-item__icon,.fm-nav-item--active .fm-nav-item__label{color:#fff}.fm-nav-bar{display:flex;flex-direction:column;gap:4px;padding:8px;background:#fff;border-right:1px solid #eeeef0}.fm-nav-bar--horizontal{flex-direction:row;border-right:none;border-bottom:1px solid #eeeef0;padding:8px 16px}.fm-card-test{display:flex;flex-direction:column;justify-content:space-between;width:420px;min-height:448px;padding:16px;background:#fff;border:1px solid #eeeef0;border-radius:20px;box-sizing:border-box;gap:12px}.fm-card-test__image{position:relative;height:160px;border-radius:12px;overflow:hidden;flex-shrink:0;display:flex;align-items:flex-start;justify-content:flex-end}.fm-card-test__image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;border-radius:12px}.fm-card-test__image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#18181b40;border-radius:12px}.fm-card-test__status-tag{position:absolute;top:12px;right:12px;display:flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:9999px;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:12px;line-height:1.2;z-index:1}.fm-card-test__status-tag--available{background:#d9f2e7;color:#1b6153}.fm-card-test__status-tag--in-progress{background:#fff0d4;color:#c54e09}.fm-card-test__status-tag--completed{background:#eeecfb;color:#6d45bc}.fm-card-test__status-tag--unavailable{background:#eeeef0;color:#91939f}.fm-card-test__content{display:flex;flex-direction:column;gap:12px}.fm-card-test__title{font-family:Manrope,sans-serif;font-weight:700;font-size:24px;line-height:1.2;color:#18181b;margin:0}.fm-card-test__description{font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1.4;color:#91939f;margin:0}.fm-card-test__tags{display:flex;flex-wrap:wrap;gap:8px}.fm-card-test__meta{display:flex;gap:12px;align-items:center}.fm-card-test__meta-item{display:flex;gap:4px;align-items:center;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:12px;line-height:1.2;color:#91939f}.fm-card-test__meta-icon{width:20px;height:20px;flex-shrink:0}.fm-card-test--unavailable{opacity:.5}.fm-card-career{width:100%;background:#fff;border:1px solid #eeeef0;border-radius:20px;overflow:hidden;box-sizing:border-box}.fm-card-career__header{display:flex;align-items:center;gap:16px;padding:24px;cursor:pointer;-webkit-user-select:none;user-select:none}.fm-card-career__header-content{flex:1;display:flex;flex-direction:column;gap:10px}.fm-card-career__title-row{display:flex;gap:10px;align-items:center}.fm-card-career__title{font-family:Manrope,sans-serif;font-weight:700;font-size:18px;line-height:.9;color:#18181b;margin:0}.fm-card-career__subtitle{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#989898;margin:0}.fm-card-career__chevron{width:20px;height:20px;flex-shrink:0;color:#91939f;transition:transform .2s}.fm-card-career--open .fm-card-career__chevron{transform:rotate(180deg)}.fm-card-career__tasks{display:none}.fm-card-career--open .fm-card-career__tasks{display:block}.fm-card-career__task{display:flex;gap:10px;align-items:center;justify-content:center;padding:24px;border-top:1px solid #eeeef0}.fm-card-career__task-info{flex:1;display:flex;gap:16px;align-items:center}.fm-card-career__task-text{flex:1;display:flex;flex-direction:column;gap:12px}.fm-card-career__task-title{font-family:Nunito Sans,sans-serif;font-weight:600;font-size:16px;line-height:1;color:#18181b;margin:0}.fm-card-career__task-subtitle{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#989898;margin:0}.fm-card-career__progress{position:relative;width:50px;height:50px;flex-shrink:0}.fm-card-career__progress svg{width:50px;height:50px;transform:rotate(-90deg)}.fm-card-career__progress-track{fill:none;stroke:#eeeef0;stroke-width:4}.fm-card-career__progress-fill{fill:none;stroke:#9076dc;stroke-width:4;stroke-linecap:round;transition:stroke-dashoffset .4s}.fm-card-career__progress-fill--complete{stroke:#31987f}.fm-card-career__progress-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:12px;color:#18181b}.fm-icon-btn{display:inline-flex;align-items:center;justify-content:center;border:1.5px solid transparent;cursor:pointer;border-radius:9999px;flex-shrink:0;transition:background .15s,border-color .15s;box-sizing:border-box;padding:0}.fm-icon-btn--regular{width:33px;height:33px}.fm-icon-btn--small{width:27px;height:27px}.fm-icon-btn svg{width:15px;height:15px;flex-shrink:0}.fm-icon-btn--filled{background:#18181b;color:#fff}.fm-icon-btn--filled:hover:not(:disabled){background:linear-gradient(#18181b,#18181b) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-icon-btn--filled:active:not(:disabled){background:#2a2a2a}.fm-icon-btn--outlined{background:#fff;color:#18181b;border:1.5px solid #d9d9de}.fm-icon-btn--outlined:hover:not(:disabled){border:1.5px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#ffa8f1,#ffb3aa 18.51%,#ffb986,#ffbe62 37.02%,#c8c991,#91d4bf 65.87%,#91a5ce,#9076dc) border-box}.fm-icon-btn:focus-visible{outline:2px solid #ffa8f1;outline-offset:2px}.fm-icon-btn:disabled{background:#d9d9de;color:#91939f;cursor:not-allowed;border-color:transparent}.fm-segmented-control{display:inline-flex;gap:4px;padding:4px;background:#f7f7f8;border-radius:14px;box-sizing:border-box}.fm-segmented-control__item{display:inline-flex;align-items:center;justify-content:center;height:42px;padding:10px 20px;border:none;border-radius:12px;background:transparent;color:#18181b;font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap;box-sizing:border-box}.fm-segmented-control__item--active{background:#9076dc;color:#f6f5fd}.fm-segmented-control__item:not(.fm-segmented-control__item--active):hover{background:#eeeef0}.fm-pagination{display:flex;align-items:center;gap:8px;box-sizing:border-box}.fm-pagination--dots{width:336px;justify-content:space-between}.fm-pagination__dots{display:flex;align-items:center;gap:0;padding:4px 8px;border-radius:12px}.fm-pagination__dot{display:inline-block;width:16px;height:16px;border-radius:9999px;display:flex;align-items:center;justify-content:center}.fm-pagination__dot:after{content:"";display:block;width:4px;height:4px;border-radius:9999px;background:#d9d9de;transition:width .15s,height .15s,background .15s}.fm-pagination__dot--active:after{width:8px;height:8px;background:#9076dc}.fm-pagination--numbers{justify-content:center;gap:8px}.fm-pagination__numbers{background:#fff;border-radius:12px;padding:4px 8px;min-width:48px;display:flex;align-items:center;justify-content:center}.fm-pagination__numbers-text{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#18181b;white-space:nowrap}.fm-pagination--hidden{gap:16px}.fm-widget-card{display:flex;flex-direction:column;background:#fff;border:1px solid #eeeef0;border-radius:20px;overflow:hidden;box-sizing:border-box;width:408px}.fm-widget-card__body{display:flex;flex-direction:column}.fm-widget-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-radius:20px 20px 0 0;gap:8px;box-sizing:border-box}.fm-widget-header--purple{background:#eeecfb}.fm-widget-header--grey{background:#f7f7f8}.fm-widget-header__title-group{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.fm-widget-header__title{font-family:Manrope,sans-serif;font-weight:700;font-size:18px;line-height:.9;color:#121212;margin:0}.fm-widget-header__subtitle{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#989898;margin:0}.fm-widget-header__action{flex-shrink:0;display:flex;align-items:center}.fm-widget-news{display:flex;flex-direction:column;gap:12px;align-items:flex-start;justify-content:center;padding:16px;box-sizing:border-box}.fm-widget-news__tag{flex-shrink:0}.fm-widget-news__content{display:flex;flex-direction:column;gap:8px;width:100%}.fm-widget-news__title{font-family:Nunito Sans,sans-serif;font-weight:600;font-size:16px;line-height:normal;color:#121212;margin:0}.fm-widget-news__text{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#525252;margin:0}.fm-widget-general-news{display:flex;flex-direction:column;gap:12px;align-items:flex-start;box-sizing:border-box;overflow:hidden}.fm-widget-general-news__image{width:100%;height:100px;background:#d9d9de;overflow:hidden;flex-shrink:0}.fm-widget-general-news__image img{width:100%;height:100%;object-fit:cover}.fm-widget-general-news__content{display:flex;flex-direction:column;gap:8px;padding:0 16px 16px}.fm-widget-general-news__tag{flex-shrink:0}.fm-widget-general-news__title{font-family:Nunito Sans,sans-serif;font-weight:600;font-size:16px;line-height:normal;color:#121212;margin:0}.fm-widget-notes{display:flex;flex-direction:column;gap:12px;align-items:flex-start;padding:16px;box-sizing:border-box}.fm-widget-notes__title{font-family:Nunito Sans,sans-serif;font-weight:600;font-size:16px;line-height:normal;color:#121212;margin:0;width:100%}.fm-widget-notes__text{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#121212;margin:0;width:100%;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}.fm-widget-notes__footer{display:flex;align-items:center;justify-content:space-between;width:100%}.fm-widget-notes__date{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:12px;line-height:1.2;color:#4c4d58}.fm-widget-advice{display:flex;flex-direction:column;gap:12px;align-items:flex-start;padding:16px;box-sizing:border-box}.fm-widget-advice__tag{flex-shrink:0}.fm-widget-advice__text{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:14px;line-height:1.4;color:#121212;margin:0;width:100%}.fm-widget-advice__action{width:100%}.fm-widget-calendar{display:flex;flex-direction:column;box-sizing:border-box}.fm-widget-calendar__days{display:flex;gap:4px;padding:16px;flex-wrap:nowrap}.fm-widget-calendar__day{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:9999px;background:#f7f7f8;gap:4px;padding-top:4px;padding-bottom:4px;position:relative}.fm-widget-calendar__day--active{background:#9076dc}.fm-widget-calendar__day-label{font-family:Nunito Sans,sans-serif;font-weight:300;font-size:14px;line-height:1.4;color:#4c4d58;width:36px;height:36px;display:flex;align-items:center;justify-content:center}.fm-widget-calendar__day--active .fm-widget-calendar__day-label{color:#ffffffbf}.fm-widget-calendar__day-num{font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1.4;color:#121212;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:9999px}.fm-widget-calendar__day--active .fm-widget-calendar__day-num{color:#fff}.fm-widget-calendar__day-dot{display:block;width:4px;height:4px;border-radius:9999px;background:#9076dc;position:absolute;bottom:4px}.fm-widget-calendar__day--active .fm-widget-calendar__day-dot{background:#ffffffbf}.fm-widget-calendar__events{display:flex;flex-direction:column;gap:8px;padding:0 16px 16px}.fm-widget-calendar__event{display:flex;gap:8px;align-items:stretch;opacity:.8}.fm-widget-calendar__event-bar{width:2px;border-radius:9999px;flex-shrink:0;background:#9076dc}.fm-widget-calendar__event-body{flex:1;background:#f7f7f8;border-radius:12px;padding:12px 16px;display:flex;flex-direction:column;gap:10px}.fm-widget-calendar__event-title{font-family:Nunito Sans,sans-serif;font-weight:700;font-size:14px;line-height:1.4;color:#121212}.fm-widget-calendar__event-time{font-family:Nunito Sans,sans-serif;font-weight:400;font-size:12px;line-height:1.2;color:#656565}.fm-search{display:flex;align-items:center;gap:8px;height:42px;padding:12px 16px;background:#f7f7f8;border-radius:12px;box-sizing:border-box;width:100%}.fm-search__icon{flex-shrink:0}.fm-search__input{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-search__input::placeholder{color:#91939f}.fm-dropdown{display:flex;flex-direction:column;background:#ffffff80;border:1px solid #eeeef0;border-radius:12px;box-shadow:4px 8px 15.1px #c9c1f1;padding:8px 0;width:280px;box-sizing:border-box;overflow:hidden}.fm-dropdown__item{display:flex;align-items:center;height:32px;padding:8px 16px;border:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:700;color:#18181b;text-align:left;cursor:pointer;width:100%;transition:background .1s;border-radius:8px}.fm-dropdown__item:hover{background:#f7f7f8}.fm-datepicker{display:flex;flex-direction:column;gap:8px;width:192px;box-sizing:border-box}.fm-datepicker__label{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;color:#5d5e6c;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fm-datepicker__field{display:flex;align-items:center;gap:6px;height:36px;padding:0 10px;background:#f7f7f8;border-radius:8px;border:0px solid transparent;box-sizing:border-box;transition:border .15s;position:relative}.fm-datepicker__input{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-datepicker__icon{display:inline-flex;align-items:center;color:#18181b;flex-shrink:0}.fm-datepicker__helper{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:400;color:#91939f;line-height:1.2;margin:0}.fm-datepicker--hover .fm-datepicker__field{border:1.5px solid #ffa8f1}.fm-datepicker--hover .fm-datepicker__label{color:#754ccc}.fm-datepicker--focused .fm-datepicker__field{border:1px solid #ffa8f1}.fm-datepicker--disabled .fm-datepicker__label{color:#d9d9de}.fm-datepicker--disabled .fm-datepicker__field{opacity:.5;cursor:not-allowed}.fm-datepicker--disabled .fm-datepicker__input{cursor:not-allowed;color:#d9d9de}.fm-datepicker--disabled .fm-datepicker__helper,.fm-datepicker--disabled .fm-datepicker__icon{color:#d9d9de}.fm-timepicker{display:flex;flex-direction:column;gap:8px;width:192px;box-sizing:border-box}.fm-timepicker__label{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;color:#41414b;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fm-timepicker__field{display:flex;align-items:center;gap:6px;height:36px;padding:0 10px;background:#f7f7f8;border-radius:8px;border:0px solid transparent;box-sizing:border-box;transition:border .15s}.fm-timepicker__input{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-timepicker__icon{display:inline-flex;align-items:center;color:#18181b;flex-shrink:0}.fm-timepicker__helper{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:400;color:#91939f;line-height:1.2;margin:0}.fm-timepicker--hover .fm-timepicker__field{border:1.5px solid #ffa8f1}.fm-timepicker--hover .fm-timepicker__label{color:#754ccc}.fm-timepicker--focused .fm-timepicker__field{border:1px solid #ffa8f1}.fm-timepicker--disabled .fm-timepicker__label{color:#d9d9de}.fm-timepicker--disabled .fm-timepicker__field{opacity:.5;cursor:not-allowed}.fm-timepicker--disabled .fm-timepicker__input{cursor:not-allowed;color:#d9d9de}.fm-timepicker--disabled .fm-timepicker__helper,.fm-timepicker--disabled .fm-timepicker__icon{color:#d9d9de}.fm-radio{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.fm-radio__input{display:none}.fm-radio__circle{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:1px solid #b8b9c1;background:#ffffff0d;box-sizing:border-box;flex-shrink:0;transition:border-color .15s}.fm-radio__circle--checked{border-color:#9076dc;border-width:1px;padding:5px}.fm-radio__dot{display:block;width:10px;height:10px;border-radius:50%;background:#9076dc;flex-shrink:0}.fm-radio:hover .fm-radio__circle:not(.fm-radio__circle--checked){border-color:#737584}.fm-radio__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-radio--disabled{cursor:not-allowed;opacity:.5}.fm-stepper{display:flex;align-items:flex-start;gap:0}.fm-stepper__step{display:flex;flex-direction:column;align-items:center;gap:10px;position:relative;width:85px}.fm-stepper__circle{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;box-sizing:border-box;flex-shrink:0}.fm-stepper__circle--done{background:#9076dc;padding:9px 7px}.fm-stepper__circle--in-process{background:#fff;border:1px solid rgba(144,118,220,.3)}.fm-stepper__circle--inactive{background:#fff;border:1px solid #eeeef0}.fm-stepper__num{font-family:Manrope,sans-serif;font-size:14px;font-weight:700;color:#18181b;line-height:.9}.fm-stepper__num--inactive{color:#b8b9c1}.fm-stepper__line{position:absolute;top:15px;left:calc(50% + 15px);width:60px;height:1px}.fm-stepper__line--done,.fm-stepper__line--in-process{background:#9076dc}.fm-stepper__line--inactive{background:#eeeef0}.fm-stepper__label{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;text-align:center;margin:0}.fm-stepper__label--done,.fm-stepper__label--in-process{color:#5d5e6c}.fm-stepper__label--inactive{color:#b8b9c1}.fm-stepper-progress{display:flex;align-items:flex-start}.fm-stepper-progress__step{display:flex;flex-direction:column;align-items:center;gap:10px;width:85px;position:relative}.fm-stepper-progress__circle{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9999px;background:#9076dc;flex-shrink:0}.fm-stepper-progress__line{position:absolute;top:14px;left:calc(50% + 16px);width:60px;height:1px;background:#eeeef0}.fm-stepper-progress__step--in-process .fm-stepper-progress__line,.fm-stepper-progress__step--done .fm-stepper-progress__line{background:#9076dc}.fm-stepper-progress__label{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;text-align:center;margin:0}.fm-stepper-progress__step--in-process .fm-stepper-progress__label{color:#5d5e6c}.fm-stepper-progress__step--inactive .fm-stepper-progress__label{color:#b8b9c1}.fm-stepper-progress__step--done .fm-stepper-progress__label{color:#9076dc}.fm-testimonial{display:flex;flex-direction:column;gap:24px;padding:32px 24px;border:1px solid #eeeef0;border-radius:20px;width:351px;box-sizing:border-box}.fm-testimonial__author{display:flex;align-items:center;gap:17px}.fm-testimonial__avatar{width:30px;height:30px;border-radius:50%;object-fit:cover;flex-shrink:0}.fm-testimonial__avatar--placeholder{display:flex;align-items:center;justify-content:center;background:#e0ddf7;color:#9076dc;font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700}.fm-testimonial__meta{display:flex;flex-direction:column;gap:10px}.fm-testimonial__name{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;color:#18181b;line-height:1.2;margin:0}.fm-testimonial__role{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:300;color:#18181b;line-height:1.2;margin:0}.fm-testimonial__quote{font-family:Nunito Sans,sans-serif;font-size:18px;font-weight:300;color:#18181b;line-height:1.12;margin:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.fm-pricecard{display:flex;flex-direction:column;gap:32px;padding:24px;border-radius:20px;width:285px;box-sizing:border-box;position:relative;background:#fff;border:1px solid #eeeef0}.fm-pricecard--highlighted{background:#f7f7f8;border:none}.fm-pricecard__badge{position:absolute;top:21px;right:24px;background:#fff0d4;color:#c54e09;font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;padding:8px 12px;border-radius:9999px}.fm-pricecard__icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#e0ddf7;border-radius:4px;flex-shrink:0;color:#9076dc;font-size:20px}.fm-pricecard__info{display:flex;flex-direction:column;gap:16px}.fm-pricecard__title{font-family:Manrope,sans-serif;font-size:20px;font-weight:600;color:#18181b;line-height:.9;margin:0}.fm-pricecard__desc{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:400;color:#4c4d58;line-height:1.4;margin:0;height:77px;overflow:hidden}.fm-pricecard__footer{display:flex;flex-direction:column;gap:16px}.fm-pricecard__price{display:flex;align-items:baseline;gap:4px}.fm-pricecard__amount{font-family:Manrope,sans-serif;font-size:40px;font-weight:700;color:#18181b;line-height:1.1}.fm-pricecard__period{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:600;color:#5d5e6c;line-height:normal}.fm-pricecard__action{width:100%}.fm-pricecard__action>*{width:100%}.fm-price{display:flex;flex-direction:column;gap:32px;padding:40px 32px;background:#f7f7f8;border:1px solid #eeeef0;border-radius:24px;width:351px;box-sizing:border-box}.fm-price__title{font-family:Manrope,sans-serif;font-size:18px;font-weight:700;color:#5d5e6c;line-height:.9;margin:0}.fm-price__amount-row{display:flex;align-items:baseline;gap:4px}.fm-price__amount{font-family:Manrope,sans-serif;font-size:40px;font-weight:700;color:#18181b;line-height:1.1}.fm-price__period{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:600;color:#5d5e6c;line-height:normal}.fm-price__cta{width:100%;height:42px;background:#121212;color:#fff;border:none;border-radius:12px;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:700;cursor:pointer;transition:background .15s}.fm-price__cta:hover{background:#2c2c2c}.fm-price__features{display:flex;flex-direction:column;gap:10px;list-style:none;padding:0;margin:0}.fm-price__feature{display:flex;align-items:center;gap:16px}.fm-price__check{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:#9076dc;border-radius:4px;flex-shrink:0;padding:3px;box-sizing:border-box}.fm-price__feature span{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-list-item{display:flex;align-items:center;gap:16px}.fm-list-item__check{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:#9076dc;border-radius:4px;flex-shrink:0;padding:3px;box-sizing:border-box}.fm-list-item__text{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4}.fm-tag-big{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid rgba(144,118,220,.3);border-radius:48px;background:#ffffff0d;white-space:nowrap}.fm-tag-big__icon{display:flex;align-items:center;flex-shrink:0}.fm-tag-big__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;line-height:1.4;background:linear-gradient(90deg,#9076dc,#c87bf5,#ffa8f1);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.fm-section-title{display:flex}.fm-section-title--centered{flex-direction:column;align-items:center;gap:30px;text-align:center}.fm-section-title--left{flex-direction:column;align-items:flex-start;gap:24px}.fm-section-title--split{flex-direction:row;align-items:flex-end;justify-content:space-between;gap:24px}.fm-section-title--split .fm-section-title__left{display:flex;flex-direction:column;gap:20px;align-items:flex-start}.fm-section-title__heading{font-family:Manrope,sans-serif;font-size:45px;font-weight:700;color:#18181b;line-height:1.1;margin:0}.fm-section-title__subtitle{font-family:Nunito Sans,sans-serif;font-size:18px;font-weight:400;color:#4c4d58;line-height:1.4;margin:0}.fm-section-title--split .fm-section-title__subtitle{max-width:285px}.fm-dashboard-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;width:100%}.fm-dashboard-title__text{display:flex;flex-direction:column;gap:12px}.fm-dashboard-title__heading{font-family:Manrope,sans-serif;font-size:30px;font-weight:800;color:#121212;line-height:1.3;margin:0}.fm-dashboard-title__subtitle{font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:600;color:#989898;line-height:normal;margin:0}.fm-dashboard-title__action{display:flex;align-items:center;gap:10px;height:42px;padding:10px 16px;background:#121212;color:#fff;border:none;border-radius:12px;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:700;cursor:pointer;flex-shrink:0;white-space:nowrap}.fm-dashboard-title__action:hover{background:#2c2c2c}.fm-process-step{display:flex;gap:24px;align-items:flex-start;max-width:100%;box-sizing:border-box}.fm-process-step__number{display:flex;align-items:center;justify-content:center;width:35px;height:35px;border-radius:100px;flex-shrink:0;font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:600;line-height:normal}.fm-process-step--select .fm-process-step__number{background:#9076dc;color:#fff}.fm-process-step--normal .fm-process-step__number{background:#f7f7f8;color:#91939f}.fm-process-step__body{display:flex;flex-direction:column;gap:12px;flex:1}.fm-process-step__title{font-family:Manrope,sans-serif;font-size:24px;font-weight:700;color:#18181b;line-height:.9;margin:0}.fm-process-step__content{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;margin:0}.fm-tasks-widget{display:flex;flex-direction:column;gap:8px;padding:16px;box-sizing:border-box}.fm-tasks-widget__row{display:flex;align-items:center;gap:10px;width:100%}.fm-tasks-widget__checkbox{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;background:#eeeef0;flex-shrink:0}.fm-tasks-widget__checkbox--done{background:#9076dc}.fm-tasks-widget__label{flex:1;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#18181b;line-height:1.4;min-width:0}.fm-tasks-widget__label--done{text-decoration:line-through;color:#bdbdbd}.fm-tasks-widget__tag{flex-shrink:0;background:#eeeef0;color:#4c4d58;font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:700;line-height:1.2;padding:8px 12px;border-radius:9999px;white-space:nowrap}.fm-signup-form{display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:20px;padding:10px 20px;max-width:100%;box-sizing:border-box;gap:12px}.fm-signup-form__input{flex:1;border:none;outline:none;background:transparent;font-family:Nunito Sans,sans-serif;font-size:16px;font-weight:300;color:#18181b;line-height:1.4;min-width:0}.fm-signup-form__input::placeholder{color:#5d5e6c;font-weight:300}.fm-signup-form__btn{flex-shrink:0;height:42px;padding:10px 16px;background:#121212;color:#fff;border:none;border-radius:12px;font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap}.fm-signup-form__btn:hover{background:#2c2c2c}.fm-tariffs{display:flex;align-items:center;gap:20px;padding:20px;background:#fff;border:1px solid #eeeef0;border-radius:12px;max-width:100%;box-sizing:border-box;transition:border-color .15s}.fm-tariffs--hover{border-color:#ffa8f1}.fm-tariffs__icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#e0ddf7;border-radius:4px;flex-shrink:0}.fm-tariffs__body{display:flex;flex-direction:column;gap:16px;flex:1}.fm-tariffs__title{font-family:Manrope,sans-serif;font-size:20px;font-weight:600;color:#18181b;line-height:.9;margin:0}.fm-tariffs__desc{font-family:Nunito Sans,sans-serif;font-size:12px;font-weight:300;color:#4c4d58;line-height:1.2;margin:0}.fm-question{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:#fff;border:1px solid #eeeef0;border-radius:12px;max-width:100%;box-sizing:border-box;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.fm-question--hover{border-color:transparent}.fm-question--hover:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:13px;background:linear-gradient(90deg,#ffcb70,#ff9b5e 25%,#ff7ac4 75%,#c087f5);z-index:0}.fm-question--hover:after{content:"";position:absolute;top:1px;right:1px;bottom:1px;left:1px;border-radius:11px;background:#fff;z-index:1}.fm-question__label,.fm-question__radio{position:relative;z-index:2}.fm-question__label{font-family:Nunito Sans,sans-serif;font-size:14px;font-weight:400;color:#121212;line-height:1.4}.fm-question__radio{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:9999px;border:1px solid #b8b9c1;flex-shrink:0}.fm-question__radio--checked{border-color:#9076dc;padding:4px}.fm-question__dot{display:block;width:10px;height:10px;border-radius:9999px;background:#9076dc}
@@ -0,0 +1,53 @@
1
+ # FlowMakers Design System Guidelines
2
+
3
+ This project uses the **FlowMakers Design System** installed via `@tetjana/flowmakers-ds`.
4
+
5
+ ## IMPORTANT — Always read first:
6
+ - All files starting with `overview-` in this folder
7
+ - All files in the `design-tokens/` folder:
8
+ - `design-tokens/colors.md`
9
+ - `design-tokens/typography.md`
10
+ - `design-tokens/spacing.md`
11
+
12
+ ## Read before using a component:
13
+ Open `guidelines/components/{ComponentName}.md` BEFORE writing any code with that component.
14
+
15
+ ## Available components
16
+
17
+ ### Primitives
18
+ - `Button` → `guidelines/components/button.md`
19
+ - `Input` → `guidelines/components/input.md`
20
+ - `Tag` → `guidelines/components/tag.md`
21
+ - `Toggle` → `guidelines/components/toggle.md`
22
+ - `Checkbox` → `guidelines/components/checkbox.md`
23
+ - `IconButton` → `guidelines/components/iconbutton.md`
24
+
25
+ ### Navigation
26
+ - `NavItem`, `NavBar` → `guidelines/components/navmenu.md`
27
+ - `SegmentedControl` → `guidelines/components/segmentedcontrol.md`
28
+ - `Pagination` → `guidelines/components/pagination.md`
29
+
30
+ ### Layout
31
+ - `Header` → `guidelines/components/header.md`
32
+ - `Footer` → `guidelines/components/footer.md`
33
+
34
+ ### Cards
35
+ - `CardTest` → `guidelines/components/cardtest.md`
36
+ - `CardCareer` → `guidelines/components/cardcareer.md`
37
+
38
+ ### Dashboard widgets
39
+ - `WidgetCard`, `WidgetHeader`, `PlatformNewsWidget`, `GeneralNewsWidget`, `NotesWidget`, `PersonalAdviceWidget`, `CalendarWidget` → `guidelines/components/widgetcard.md`
40
+
41
+ ## Rules
42
+ 1. **Always prefer FlowMakers components** over native HTML elements (e.g. use `<Button>` not `<button>`)
43
+ 2. **Never override component styles** with inline styles or className unless strictly necessary
44
+ 3. **Always use CSS variables** from the design tokens for colors, spacing, and typography
45
+ 4. **Fonts**: Manrope (headings) and Nunito Sans (body/UI) — import from Google Fonts
46
+ 5. **Always import styles**: `import '@tetjana/flowmakers-ds/styles'` must be in the entry file
47
+
48
+ ## Steps before writing code
49
+ 1. Read `overview-components.md`
50
+ 2. Read all files in `design-tokens/`
51
+ 3. Identify which components you need
52
+ 4. Read each component's `.md` file in `guidelines/components/`
53
+ 5. Write the code using only FlowMakers components and tokens
@@ -0,0 +1,50 @@
1
+ # Button
2
+
3
+ **Import**: `import { Button } from '@tetjana/flowmakers-ds'`
4
+
5
+ ## Variants
6
+ | Variant | Appearance | Use for |
7
+ |------------------|-------------------------------------|----------------------------------|
8
+ | `primary` | Black bg, white text | Main CTA actions |
9
+ | `hero` | Black bg, pink border on hover | Landing page main CTA |
10
+ | `secondary` | Transparent, black border | Secondary actions |
11
+ | `secondary-large`| Same but taller (52px) | Prominent secondary actions |
12
+ | `ghost` | No border, no bg | Tertiary, low-emphasis actions |
13
+ | `ghost-icon` | Icon-only ghost button | Toolbar icons, small actions |
14
+
15
+ ## Sizes
16
+ | Size | Height | Use for |
17
+ |-------|--------|----------------------|
18
+ | `sm` | 32px | Compact UI, tables |
19
+ | `md` | 42px | Default (most cases) |
20
+ | `lg` | 52px | Landing pages |
21
+
22
+ ## Props
23
+ | Prop | Type | Default | Description |
24
+ |-------------|-----------------|-------------|---------------------------|
25
+ | `variant` | ButtonVariant | `'primary'` | Visual style |
26
+ | `size` | ButtonSize | `'md'` | Height/padding |
27
+ | `leftIcon` | ReactNode | — | Icon before text |
28
+ | `rightIcon` | ReactNode | — | Icon after text |
29
+ | `fullWidth` | boolean | `false` | Stretch to container |
30
+ | `disabled` | boolean | `false` | Disabled state |
31
+
32
+ ## Examples
33
+ ```tsx
34
+ // Primary
35
+ <Button>Почати тренування</Button>
36
+
37
+ // Secondary with icon
38
+ <Button variant="secondary" leftIcon={<PlusIcon />}>Додати</Button>
39
+
40
+ // Disabled
41
+ <Button disabled>Недоступно</Button>
42
+
43
+ // Full width
44
+ <Button fullWidth>Зареєструватись</Button>
45
+ ```
46
+
47
+ ## Do NOT
48
+ - Do not use native `<button>` — always use `<Button>`
49
+ - Do not add className to change colors
50
+ - Do not use `primary` for destructive actions — use a red-tinted secondary instead
@@ -0,0 +1,70 @@
1
+ # CardCareer — Career progression accordion card
2
+
3
+ ## Import
4
+ ```tsx
5
+ import { CardCareer } from '@tetjana/flowmakers-ds';
6
+ import { Tag } from '@tetjana/flowmakers-ds';
7
+ import { Button } from '@tetjana/flowmakers-ds';
8
+ import '@tetjana/flowmakers-ds/styles';
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Collapsed (default)
14
+ ```tsx
15
+ <CardCareer
16
+ title="Junior Frontend Developer"
17
+ subtitle="Рівень 1 — Початківець"
18
+ statusTag={<Tag color="green">Поточний</Tag>}
19
+ tasks={[
20
+ { title: 'Основи HTML/CSS', progress: 100 },
21
+ { title: 'JavaScript основи', progress: 72 },
22
+ { title: 'React основи', progress: 24 },
23
+ ]}
24
+ />
25
+ ```
26
+
27
+ ### Expanded (open by default)
28
+ ```tsx
29
+ <CardCareer
30
+ title="Middle Frontend Developer"
31
+ subtitle="Рівень 2"
32
+ defaultOpen={true}
33
+ tasks={[
34
+ {
35
+ title: 'TypeScript поглиблено',
36
+ subtitle: 'Типи, generics, utility types',
37
+ progress: 44,
38
+ action: <Button variant="ghost">Розпочати</Button>,
39
+ },
40
+ {
41
+ title: 'State management',
42
+ progress: 0,
43
+ },
44
+ ]}
45
+ />
46
+ ```
47
+
48
+ ## CardCareer props
49
+ | Prop | Type | Default | Description |
50
+ |------|------|---------|-------------|
51
+ | `title` | `string` | required | Career level name |
52
+ | `subtitle` | `string` | — | Additional description |
53
+ | `statusTag` | `ReactNode` | — | `<Tag>` showing current level status |
54
+ | `tasks` | `CardCareerTask[]` | `[]` | List of tasks with progress |
55
+ | `defaultOpen` | `boolean` | `false` | Expanded by default |
56
+
57
+ ## CardCareerTask shape
58
+ | Field | Type | Description |
59
+ |-------|------|-------------|
60
+ | `title` | `string` | Task name |
61
+ | `subtitle` | `string` | Optional sub-description |
62
+ | `progress` | `number` | 0–100, shown as a circular progress indicator |
63
+ | `action` | `ReactNode` | Optional `<Button>` for task action |
64
+
65
+ ## When to use
66
+ - Career roadmap page showing all levels
67
+ - Current level should have `statusTag` with `<Tag color="green">Поточний</Tag>`
68
+ - Completed tasks have `progress={100}`
69
+ - Use `defaultOpen={true}` only for the user's active level
70
+ - Tasks at `progress={0}` show as locked/not started
@@ -0,0 +1,82 @@
1
+ # CardTest — Test/quiz card
2
+
3
+ ## Import
4
+ ```tsx
5
+ import { CardTest } from '@tetjana/flowmakers-ds';
6
+ import { Tag } from '@tetjana/flowmakers-ds';
7
+ import { Button } from '@tetjana/flowmakers-ds';
8
+ import '@tetjana/flowmakers-ds/styles';
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Available test
14
+ ```tsx
15
+ <CardTest
16
+ title="Типи особистості"
17
+ description="Визначте свій тип особистості за методологією MBTI"
18
+ image="/images/mbti-cover.jpg"
19
+ state="available"
20
+ tags={
21
+ <>
22
+ <Tag color="purple">Когнітивний</Tag>
23
+ <Tag color="grey">Складний</Tag>
24
+ </>
25
+ }
26
+ meta={[
27
+ { icon: <QuestionIcon />, label: '28 Запитань' },
28
+ { icon: <ClockIcon />, label: '20 хвилин' },
29
+ ]}
30
+ action={<Button variant="hero">Почати тест</Button>}
31
+ />
32
+ ```
33
+
34
+ ### In-progress test
35
+ ```tsx
36
+ <CardTest
37
+ title="ATS-оптимізація резюме"
38
+ state="in-progress"
39
+ action={<Button variant="secondary">Продовжити</Button>}
40
+ />
41
+ ```
42
+
43
+ ### Completed test
44
+ ```tsx
45
+ <CardTest
46
+ title="Основи JavaScript"
47
+ state="completed"
48
+ action={<Button variant="ghost">Переглянути результати</Button>}
49
+ />
50
+ ```
51
+
52
+ ### Unavailable (locked)
53
+ ```tsx
54
+ <CardTest
55
+ title="Advanced React Patterns"
56
+ state="unavailable"
57
+ />
58
+ ```
59
+
60
+ ## Props
61
+ | Prop | Type | Default | Description |
62
+ |------|------|---------|-------------|
63
+ | `title` | `string` | required | Test name |
64
+ | `description` | `string` | — | Short description |
65
+ | `image` | `string` | — | Cover image URL |
66
+ | `state` | `CardTestState` | `'available'` | One of the 4 states |
67
+ | `tags` | `ReactNode` | — | `<Tag>` components |
68
+ | `meta` | `CardTestMetaItem[]` | — | Icon + label metadata rows |
69
+ | `action` | `ReactNode` | — | CTA button |
70
+
71
+ ## States
72
+ | Value | Label shown | Behaviour |
73
+ |-------|-------------|-----------|
74
+ | `'available'` | Доступно | Normal, full opacity |
75
+ | `'in-progress'` | В процесі | Normal, shows progress |
76
+ | `'completed'` | Завершено | Normal, success color |
77
+ | `'unavailable'` | Недоступно | Dimmed, no interaction |
78
+
79
+ ## When to use
80
+ - Grid of available tests in the Tests section
81
+ - Always provide `state` to reflect the user's progress
82
+ - Use `action` with a `<Button>` — do not add raw `<button>` elements inside
@@ -0,0 +1,51 @@
1
+ # Checkbox
2
+
3
+ **Import**: `import { Checkbox } from '@tetjana/flowmakers-ds'`
4
+
5
+ ## Description
6
+ Чекбокс для вибору одного або кількох варіантів. Підтримує indeterminate стан.
7
+
8
+ ## Props
9
+ | Prop | Type | Required | Default | Description |
10
+ |-----------------|----------------------------|----------|-----------|--------------------------------------|
11
+ | `checked` | boolean | no | `false` | Checked state |
12
+ | `indeterminate` | boolean | no | `false` | Mixed state (overrides checked icon) |
13
+ | `onChange` | (checked: boolean) => void | no | — | Called when user clicks |
14
+ | `label` | string | no | — | Text label next to checkbox |
15
+ | `size` | `'small'` \| `'large'` | no | `'small'` | Box size (16px vs 22px) |
16
+ | `disabled` | boolean | no | `false` | Prevents interaction |
17
+
18
+ ## Visual
19
+ - **Unchecked** → white box, grey border
20
+ - **Checked** → blue fill (`#0d6fff`), white checkmark SVG
21
+ - **Indeterminate** → blue fill, white minus bar
22
+ - **Disabled** → 50% opacity, no pointer events
23
+
24
+ ## Examples
25
+ ```tsx
26
+ // Simple checkbox with label
27
+ const [agreed, setAgreed] = useState(false);
28
+ <Checkbox
29
+ checked={agreed}
30
+ onChange={setAgreed}
31
+ label="Я погоджуюсь з умовами використання"
32
+ />
33
+
34
+ // Large size
35
+ <Checkbox size="large" checked={selected} onChange={setSelected} label="Вибрати всіх" />
36
+
37
+ // Indeterminate (partial selection)
38
+ <Checkbox
39
+ indeterminate={someSelected && !allSelected}
40
+ checked={allSelected}
41
+ onChange={toggleAll}
42
+ label="Вибрати всіх"
43
+ />
44
+
45
+ // Disabled
46
+ <Checkbox checked={true} disabled label="Незмінний параметр" />
47
+ ```
48
+
49
+ ## Do NOT
50
+ - Do NOT use for on/off single switches — use `Toggle` instead
51
+ - Do NOT rely on CSS classes for checked state — always use `checked` prop
@@ -0,0 +1,63 @@
1
+ # Footer
2
+
3
+ **Import**: `import { Footer } from '@tetjana/flowmakers-ds'`
4
+
5
+ ## Description
6
+ Footer сторінки з CTA-блоком та секціями посилань. Підтримує light і dark теми.
7
+
8
+ ## Props
9
+ | Prop | Type | Required | Default | Description |
10
+ |---------------|-------------------|----------|-------------------------------------------|------------------------------------------|
11
+ | `variant` | `'light'` \| `'dark'` | no | `'light'` | Light (white bg) or dark (black bg) |
12
+ | `headline` | string | no | `'Є ідеї чи пропозиції?'` | CTA heading on the left side |
13
+ | `ctaLabel` | string | no | `'Написати нам'` | CTA button text |
14
+ | `onCtaClick` | () => void | no | — | CTA button click handler |
15
+ | `sections` | FooterSection[] | no | `[]` | Link columns (title + links) |
16
+ | `copyright` | string | no | `'© 2024 Made by FlowMakers...'` | Bottom copyright line |
17
+
18
+ ## Types
19
+ ```tsx
20
+ interface FooterLink { label: string; href: string; }
21
+ interface FooterSection { title: string; links: FooterLink[]; }
22
+ ```
23
+
24
+ ## Visual
25
+ - **Light**: white/grey bg, black text, black CTA button
26
+ - **Dark**: `#18181b` bg, white text (75% opacity), outlined CTA with pink border
27
+
28
+ ## Examples
29
+ ```tsx
30
+ // Minimal light footer
31
+ <Footer />
32
+
33
+ // Dark footer with sections
34
+ <Footer
35
+ variant="dark"
36
+ headline="Долучайся до FlowMakers"
37
+ ctaLabel="Розпочати безкоштовно"
38
+ onCtaClick={() => navigate('/register')}
39
+ sections={[
40
+ {
41
+ title: 'Продукт',
42
+ links: [
43
+ { label: 'Про нас', href: '/about' },
44
+ { label: 'Функції', href: '/features' },
45
+ { label: 'Тарифи', href: '/pricing' },
46
+ ],
47
+ },
48
+ {
49
+ title: 'Підтримка',
50
+ links: [
51
+ { label: 'FAQ', href: '/faq' },
52
+ { label: 'Контакти', href: '/contact' },
53
+ ],
54
+ },
55
+ ]}
56
+ copyright="© 2025 FlowMakers. Всі права захищені."
57
+ />
58
+ ```
59
+
60
+ ## Do NOT
61
+ - Do NOT add more than 3–4 sections — it breaks the layout
62
+ - Do NOT use Footer inside a card or modal — it is a page-level component
63
+ - Do NOT put interactive forms inside Footer — keep it to links and CTA only
@@ -0,0 +1,57 @@
1
+ # Header
2
+
3
+ **Import**: `import { Header } from '@tetjana/flowmakers-ds'`
4
+
5
+ ## Description
6
+ Заголовок картки/віджета з title, необов'язковим subtitle і слотами для іконок/дій зліва і справа.
7
+ Використовується як верхня частина інформаційних блоків і дашборд-карток.
8
+
9
+ ## Props
10
+ | Prop | Type | Required | Default | Description |
11
+ |-------------|-------------------------|----------|------------|---------------------------------------|
12
+ | `title` | string | ✅ yes | — | Main heading text |
13
+ | `subtitle` | string | no | — | Secondary text below the title |
14
+ | `color` | `'purple'` \| `'grey'` | no | `'purple'` | Background color |
15
+ | `leftSlot` | ReactNode | no | — | Icon or element on the left |
16
+ | `rightSlot` | ReactNode | no | — | Action button or icon on the right |
17
+
18
+ ## Color backgrounds
19
+ | Color | Background token | Hex | Use for |
20
+ |----------|-------------------------|-----------|--------------------------------------|
21
+ | `purple` | `--primary-fill-100` | `#eeecfb` | Default, most widgets and cards |
22
+ | `grey` | `--nature-fill-50` | `#f7f7f8` | Secondary cards, settings sections |
23
+
24
+ ## Visual
25
+ - Rounded top corners (`border-radius: 20px 20px 0 0`)
26
+ - Uses **Manrope Bold 18px** for title
27
+ - Uses **Nunito Sans Regular 14px** for subtitle in muted grey
28
+
29
+ ## Examples
30
+ ```tsx
31
+ // Basic
32
+ <Header title="Мій профіль" />
33
+
34
+ // With subtitle
35
+ <Header title="Аналітика" subtitle="Ваш прогрес за останній місяць" />
36
+
37
+ // Grey background with icons
38
+ <Header
39
+ color="grey"
40
+ title="Налаштування"
41
+ leftSlot={<SettingsIcon />}
42
+ rightSlot={<Button variant="ghost-icon"><EditIcon /></Button>}
43
+ />
44
+
45
+ // Full widget pattern (Header + content inside a card)
46
+ <div style={{ borderRadius: '20px', border: '1px solid var(--bw-fill-100)' }}>
47
+ <Header title="Оцінки" subtitle="Останні результати" />
48
+ <div style={{ padding: '16px' }}>
49
+ {/* widget content */}
50
+ </div>
51
+ </div>
52
+ ```
53
+
54
+ ## Do NOT
55
+ - Do NOT use Header as a page `<h1>` — it is for widget/card headers only
56
+ - Do NOT put long text in subtitle — keep it to one short line
57
+ - Do NOT change background via className — use the `color` prop
@@ -0,0 +1,42 @@
1
+ # IconButton — Icon-only action button
2
+
3
+ ## Import
4
+ ```tsx
5
+ import { IconButton } from '@tetjana/flowmakers-ds';
6
+ import '@tetjana/flowmakers-ds/styles';
7
+ ```
8
+
9
+ ## Usage
10
+ ```tsx
11
+ // Arrow navigation (default)
12
+ <IconButton icon="arrow-right" onClick={handleNext} />
13
+ <IconButton icon="arrow-left" onClick={handlePrev} />
14
+
15
+ // Small size
16
+ <IconButton icon="plus" size="small" />
17
+
18
+ // Outlined variant
19
+ <IconButton icon="pen" variant="outlined" />
20
+
21
+ // Disabled
22
+ <IconButton icon="dots" disabled />
23
+ ```
24
+
25
+ ## Props
26
+ | Prop | Type | Default | Description |
27
+ |------|------|---------|-------------|
28
+ | `icon` | `IconButtonIcon` | `'arrow-right'` | Which icon to show |
29
+ | `size` | `'regular' \| 'small'` | `'regular'` | Button size (33px or 24px) |
30
+ | `variant` | `'filled' \| 'outlined'` | `'filled'` | Visual style |
31
+ | `disabled` | `boolean` | `false` | Disables the button |
32
+
33
+ ## Available icons
34
+ `'minus'` `'plus'` `'dots'` `'pen'` `'link'` `'arrow-left'` `'arrow-right'`
35
+
36
+ ## When to use
37
+ - **Pagination arrows** — use `arrow-left` / `arrow-right` with `Pagination` component
38
+ - **Add/remove actions** — use `plus` / `minus`
39
+ - **Edit action** — use `pen`
40
+ - **Context menu trigger** — use `dots`
41
+ - Use `size="small"` in compact spaces (cards, table rows)
42
+ - Use `variant="outlined"` on dark or colored backgrounds
@@ -0,0 +1,39 @@
1
+ # Input
2
+
3
+ **Import**: `import { Input } from '@tetjana/flowmakers-ds'`
4
+
5
+ ## States
6
+ `default` → `hover` → `focused` → `filled` → `error` / `success`
7
+
8
+ ## Props
9
+ | Prop | Type | Default | Description |
10
+ |------------------|-------------|-------------|-------------------------------|
11
+ | `label` | string | — | Label above the input |
12
+ | `placeholder` | string | — | Placeholder text |
13
+ | `state` | InputState | `'default'` | Visual state |
14
+ | `errorMessage` | string | — | Shown when state=error |
15
+ | `successMessage` | string | — | Shown when state=success |
16
+ | `leftIcon` | ReactNode | — | Icon inside left side |
17
+ | `rightIcon` | ReactNode | — | Icon inside right side |
18
+ | `disabled` | boolean | `false` | Disabled state |
19
+
20
+ ## Examples
21
+ ```tsx
22
+ // Email input
23
+ <Input label="Електронна пошта" placeholder="Введіть Вашу електронну пошту" type="email" />
24
+
25
+ // With error
26
+ <Input
27
+ label="Пароль"
28
+ type="password"
29
+ state="error"
30
+ errorMessage="Невірний пароль"
31
+ />
32
+
33
+ // With success
34
+ <Input label="Email" state="success" successMessage="Email підтверджено" />
35
+ ```
36
+
37
+ ## Do NOT
38
+ - Do not use native `<input>` for form fields — always use `<Input>`
39
+ - Do not manually change border color with CSS — use the `state` prop