@mastorscdn/core 1.0.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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +475 -0
  3. package/dist/mastors-core.css +4566 -0
  4. package/dist/mastors-core.css.map +1 -0
  5. package/dist/mastors-core.min.css +1 -0
  6. package/package.json +82 -0
  7. package/scss/_index.scss +109 -0
  8. package/scss/abstracts/_index.scss +5 -0
  9. package/scss/abstracts/_placeholders.scss +90 -0
  10. package/scss/accessibility/_a11y.scss +97 -0
  11. package/scss/accessibility/_index.scss +12 -0
  12. package/scss/base/_index.scss +16 -0
  13. package/scss/base/_motion.scss +19 -0
  14. package/scss/base/_reset.scss +178 -0
  15. package/scss/config/_index.scss +5 -0
  16. package/scss/config/_settings.scss +29 -0
  17. package/scss/functions/_index.scss +7 -0
  18. package/scss/functions/_map-helpers.scss +30 -0
  19. package/scss/functions/_math.scss +35 -0
  20. package/scss/functions/_token-accessors.scss +85 -0
  21. package/scss/generators/_colors.scss +30 -0
  22. package/scss/generators/_display.scss +78 -0
  23. package/scss/generators/_index.scss +18 -0
  24. package/scss/generators/_opacity.scss +13 -0
  25. package/scss/generators/_radius.scss +33 -0
  26. package/scss/generators/_shadows.scss +13 -0
  27. package/scss/generators/_transitions.scss +13 -0
  28. package/scss/generators/_zindex.scss +13 -0
  29. package/scss/helpers/_container.scss +34 -0
  30. package/scss/helpers/_index.scss +6 -0
  31. package/scss/helpers/_states.scss +120 -0
  32. package/scss/mastors-core.scss +35 -0
  33. package/scss/mixins/_css-vars.scss +77 -0
  34. package/scss/mixins/_helpers.scss +208 -0
  35. package/scss/mixins/_index.scss +7 -0
  36. package/scss/mixins/_responsive.scss +112 -0
  37. package/scss/themes/_custom.scss +33 -0
  38. package/scss/themes/_dark.scss +53 -0
  39. package/scss/themes/_index.scss +7 -0
  40. package/scss/themes/_light.scss +49 -0
  41. package/scss/tokens/_borders.scss +26 -0
  42. package/scss/tokens/_breakpoints.scss +24 -0
  43. package/scss/tokens/_colors.scss +83 -0
  44. package/scss/tokens/_index.scss +13 -0
  45. package/scss/tokens/_motion.scss +46 -0
  46. package/scss/tokens/_opacity.scss +22 -0
  47. package/scss/tokens/_radius.scss +15 -0
  48. package/scss/tokens/_shadows.scss +27 -0
  49. package/scss/tokens/_zindex.scss +27 -0
  50. package/scss/utilities/_borders.scss +35 -0
  51. package/scss/utilities/_index.scss +14 -0
  52. package/scss/utilities/_sizing.scss +131 -0
  53. package/scss/utilities/_spacing.scss +68 -0
  54. package/scss/vendors/_index.scss +5 -0
  55. package/scss/vendors/_normalize.scss +69 -0
@@ -0,0 +1,26 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Tokens: Borders & Aspect Ratios
3
+ // NOTE: Aspect ratio values use math.div() — the / operator for division
4
+ // is deprecated outside calc() in Dart Sass 2.0.0.
5
+ // =============================================================================
6
+
7
+ @use 'sass:math';
8
+
9
+ $mastors-border-widths: (
10
+ '0': 0,
11
+ '1': 1px,
12
+ '2': 2px,
13
+ '4': 4px,
14
+ '8': 8px,
15
+ ) !default;
16
+
17
+ $mastors-aspect-ratios: (
18
+ 'square': math.div(1, 1),
19
+ 'video': math.div(16, 9),
20
+ 'cinema': math.div(21, 9),
21
+ 'portrait': math.div(3, 4),
22
+ 'landscape': math.div(4, 3),
23
+ 'golden': math.div(1.618, 1),
24
+ 'wide': math.div(2, 1),
25
+ 'tall': math.div(1, 2),
26
+ ) !default;
@@ -0,0 +1,24 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Tokens: Breakpoints & Containers
3
+ // =============================================================================
4
+
5
+ $mastors-breakpoints: (
6
+ 'xs': 0,
7
+ 'sm': 576px,
8
+ 'md': 768px,
9
+ 'lg': 992px,
10
+ 'xl': 1200px,
11
+ '2xl': 1400px,
12
+ '3xl': 1600px,
13
+ ) !default;
14
+
15
+ $mastors-containers: (
16
+ 'xs': 100%,
17
+ 'sm': 540px,
18
+ 'md': 720px,
19
+ 'lg': 960px,
20
+ 'xl': 1140px,
21
+ '2xl': 1320px,
22
+ '3xl': 1520px,
23
+ 'fluid': 100%,
24
+ ) !default;
@@ -0,0 +1,83 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Tokens: Colors
3
+ // Complete color palette — primitive + extended
4
+ // =============================================================================
5
+
6
+ $mastors-colors: (
7
+ // --- Brand ---
8
+ 'primary': #2563eb,
9
+ 'primary-light': #60a5fa,
10
+ 'primary-dark': #1d4ed8,
11
+
12
+ 'secondary': #7c3aed,
13
+ 'secondary-light': #a78bfa,
14
+ 'secondary-dark': #5b21b6,
15
+
16
+ 'accent': #0ea5e9,
17
+ 'accent-light': #38bdf8,
18
+ 'accent-dark': #0284c7,
19
+
20
+ // --- Status ---
21
+ 'success': #16a34a,
22
+ 'success-light': #4ade80,
23
+ 'success-dark': #15803d,
24
+
25
+ 'warning': #d97706,
26
+ 'warning-light': #fbbf24,
27
+ 'warning-dark': #b45309,
28
+
29
+ 'danger': #dc2626,
30
+ 'danger-light': #f87171,
31
+ 'danger-dark': #b91c1c,
32
+
33
+ 'info': #0891b2,
34
+ 'info-light': #22d3ee,
35
+ 'info-dark': #0e7490,
36
+
37
+ // --- Neutrals ---
38
+ 'white': #ffffff,
39
+ 'black': #000000,
40
+
41
+ 'neutral-50': #f9fafb,
42
+ 'neutral-100': #f3f4f6,
43
+ 'neutral-200': #e5e7eb,
44
+ 'neutral-300': #d1d5db,
45
+ 'neutral-400': #9ca3af,
46
+ 'neutral-500': #6b7280,
47
+ 'neutral-600': #4b5563,
48
+ 'neutral-700': #374151,
49
+ 'neutral-800': #1f2937,
50
+ 'neutral-900': #111827,
51
+ 'neutral-950': #030712,
52
+
53
+ // --- Surface ---
54
+ 'surface': #ffffff,
55
+ 'surface-raised': #f9fafb,
56
+ 'surface-overlay': #f3f4f6,
57
+ 'surface-sunken': #e5e7eb,
58
+
59
+ // --- Transparent ---
60
+ 'transparent': transparent,
61
+ ) !default;
62
+
63
+ // --- Semantic Color Map ---
64
+ $mastors-semantic: (
65
+ 'text-primary': #111827,
66
+ 'text-secondary': #374151,
67
+ 'text-muted': #6b7280,
68
+ 'text-disabled': #9ca3af,
69
+ 'text-inverse': #ffffff,
70
+
71
+ 'bg-body': #ffffff,
72
+ 'bg-subtle': #f9fafb,
73
+ 'bg-muted': #f3f4f6,
74
+ 'bg-inverse': #111827,
75
+
76
+ 'border-default': #e5e7eb,
77
+ 'border-strong': #d1d5db,
78
+ 'border-focus': #2563eb,
79
+
80
+ 'link': #2563eb,
81
+ 'link-hover': #1d4ed8,
82
+ 'link-visited': #7c3aed,
83
+ ) !default;
@@ -0,0 +1,13 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Tokens: Index
3
+ // Forwards all token partials
4
+ // =============================================================================
5
+
6
+ @forward 'colors';
7
+ @forward 'shadows';
8
+ @forward 'radius';
9
+ @forward 'zindex';
10
+ @forward 'opacity';
11
+ @forward 'breakpoints';
12
+ @forward 'motion';
13
+ @forward 'borders';
@@ -0,0 +1,46 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Tokens: Motion (Durations, Easings, Transitions)
3
+ // NOTE: Any value containing a comma must be quoted so Sass does not
4
+ // interpret it as a map-entry separator.
5
+ // =============================================================================
6
+
7
+ $mastors-durations: (
8
+ 'instant': 0ms,
9
+ 'fast': 100ms,
10
+ 'normal': 200ms,
11
+ 'moderate': 300ms,
12
+ 'slow': 500ms,
13
+ 'slower': 700ms,
14
+ 'slowest': 1000ms,
15
+ ) !default;
16
+
17
+ $mastors-easings: (
18
+ 'linear': 'cubic-bezier(0, 0, 1, 1)',
19
+ 'ease': 'cubic-bezier(0.25, 0.1, 0.25, 1)',
20
+ 'ease-in': 'cubic-bezier(0.4, 0, 1, 1)',
21
+ 'ease-out': 'cubic-bezier(0, 0, 0.2, 1)',
22
+ 'ease-in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',
23
+ 'spring': 'cubic-bezier(0.34, 1.56, 0.64, 1)',
24
+ 'bounce': 'cubic-bezier(0.68, -0.55, 0.265, 1.55)',
25
+ 'smooth': 'cubic-bezier(0.23, 1, 0.32, 1)',
26
+ 'sharp': 'cubic-bezier(0.4, 0, 0.6, 1)',
27
+ ) !default;
28
+
29
+ $mastors-transitions: (
30
+ 'none': none,
31
+ 'all': 'all 200ms cubic-bezier(0.4, 0, 0.2, 1)',
32
+ 'fast': 'all 100ms cubic-bezier(0.4, 0, 0.2, 1)',
33
+ 'colors': 'color 200ms cubic-bezier(0.4, 0, 0.2, 1), background-color 200ms cubic-bezier(0.4, 0, 0.2, 1), border-color 200ms cubic-bezier(0.4, 0, 0.2, 1)',
34
+ 'opacity': 'opacity 200ms cubic-bezier(0.4, 0, 0.2, 1)',
35
+ 'shadow': 'box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1)',
36
+ 'transform': 'transform 200ms cubic-bezier(0.4, 0, 0.2, 1)',
37
+ ) !default;
38
+
39
+ // Motion tokens
40
+ $mastors-motion: (
41
+ 'scale-hover': scale(1.02),
42
+ 'scale-active': scale(0.98),
43
+ 'scale-press': scale(0.96),
44
+ 'translate-up': translateY(-4px),
45
+ 'translate-down': translateY(4px),
46
+ ) !default;
@@ -0,0 +1,22 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Tokens: Opacity
3
+ // =============================================================================
4
+
5
+ $mastors-opacity: (
6
+ '0': 0,
7
+ '5': 0.05,
8
+ '10': 0.10,
9
+ '15': 0.15,
10
+ '20': 0.20,
11
+ '25': 0.25,
12
+ '30': 0.30,
13
+ '40': 0.40,
14
+ '50': 0.50,
15
+ '60': 0.60,
16
+ '70': 0.70,
17
+ '75': 0.75,
18
+ '80': 0.80,
19
+ '90': 0.90,
20
+ '95': 0.95,
21
+ '100': 1,
22
+ ) !default;
@@ -0,0 +1,15 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Tokens: Radius
3
+ // =============================================================================
4
+
5
+ $mastors-radius: (
6
+ 'none': 0,
7
+ 'xs': 2px,
8
+ 'sm': 4px,
9
+ 'md': 8px,
10
+ 'lg': 12px,
11
+ 'xl': 16px,
12
+ '2xl': 24px,
13
+ '3xl': 32px,
14
+ 'full': 9999px,
15
+ ) !default;
@@ -0,0 +1,27 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Tokens: Shadows
3
+ // NOTE: Multi-layer shadow values must be quoted strings so Sass does not
4
+ // interpret the comma as a map-entry separator.
5
+ // =============================================================================
6
+
7
+ $mastors-shadows: (
8
+ 'none': none,
9
+ 'xs': '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
10
+ 'sm': '0 1px 3px 0 rgba(0, 0, 0, 0.10), 0 1px 2px -1px rgba(0, 0, 0, 0.10)',
11
+ 'md': '0 4px 6px -1px rgba(0, 0, 0, 0.10), 0 2px 4px -2px rgba(0, 0, 0, 0.10)',
12
+ 'lg': '0 10px 15px -3px rgba(0, 0, 0, 0.10), 0 4px 6px -4px rgba(0, 0, 0, 0.10)',
13
+ 'xl': '0 20px 25px -5px rgba(0, 0, 0, 0.10), 0 8px 10px -6px rgba(0, 0, 0, 0.10)',
14
+ '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',
15
+ 'inner': 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)',
16
+
17
+ // Colored shadows
18
+ 'primary': '0 4px 14px 0 rgba(37, 99, 235, 0.35)',
19
+ 'success': '0 4px 14px 0 rgba(22, 163, 74, 0.35)',
20
+ 'danger': '0 4px 14px 0 rgba(220, 38, 38, 0.35)',
21
+ 'warning': '0 4px 14px 0 rgba(217, 119, 6, 0.35)',
22
+
23
+ // Dark mode ready
24
+ 'dark-sm': '0 1px 3px 0 rgba(0, 0, 0, 0.40)',
25
+ 'dark-md': '0 4px 6px -1px rgba(0, 0, 0, 0.40)',
26
+ 'dark-lg': '0 10px 15px -3px rgba(0, 0, 0, 0.50)',
27
+ ) !default;
@@ -0,0 +1,27 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Tokens: Z-Index & Layers
3
+ // =============================================================================
4
+
5
+ $mastors-z-index: (
6
+ 'base': 0,
7
+ 'raised': 10,
8
+ 'dropdown': 100,
9
+ 'sticky': 200,
10
+ 'fixed': 300,
11
+ 'overlay': 400,
12
+ 'modal': 500,
13
+ 'popover': 600,
14
+ 'tooltip': 700,
15
+ 'toast': 800,
16
+ 'spinner': 900,
17
+ 'max': 9999,
18
+ ) !default;
19
+
20
+ $mastors-layers: (
21
+ 'page': 0,
22
+ 'ui': 1,
23
+ 'nav': 2,
24
+ 'panel': 3,
25
+ 'dialog': 4,
26
+ 'critical': 5,
27
+ ) !default;
@@ -0,0 +1,35 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Utilities: Borders
3
+ // =============================================================================
4
+
5
+ @use 'sass:map';
6
+ @use '../tokens/borders' as t;
7
+ @use '../config/settings' as cfg;
8
+
9
+ @if cfg.$enable-utilities {
10
+ // Border width
11
+ @each $key, $value in t.$mastors-border-widths {
12
+ .border-#{$key} { border-width: $value !important; }
13
+ .border-t-#{$key} { border-top-width: $value !important; }
14
+ .border-r-#{$key} { border-right-width: $value !important; }
15
+ .border-b-#{$key} { border-bottom-width: $value !important; }
16
+ .border-l-#{$key} { border-left-width: $value !important; }
17
+ }
18
+
19
+ // Border styles
20
+ .border-solid { border-style: solid !important; }
21
+ .border-dashed { border-style: dashed !important; }
22
+ .border-dotted { border-style: dotted !important; }
23
+ .border-none { border-style: none !important; }
24
+
25
+ // Shorthand
26
+ .border { border: 1px solid var(--mastors-border-default) !important; }
27
+ .border-t { border-top: 1px solid var(--mastors-border-default) !important; }
28
+ .border-r { border-right: 1px solid var(--mastors-border-default) !important; }
29
+ .border-b { border-bottom: 1px solid var(--mastors-border-default) !important; }
30
+ .border-l { border-left: 1px solid var(--mastors-border-default) !important; }
31
+
32
+ // Outline
33
+ .outline-none { outline: none !important; }
34
+ .outline { outline: 2px solid var(--mastors-border-focus) !important; }
35
+ }
@@ -0,0 +1,14 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Utilities: Index
3
+ // Conditionally outputs utility classes based on config flags.
4
+ // Guard lives here so mastors-core.scss can @use 'utilities' unconditionally.
5
+ // =============================================================================
6
+
7
+ @use '../config/settings' as cfg;
8
+ @use 'sass:meta';
9
+
10
+ @if cfg.$enable-utilities {
11
+ @include meta.load-css('spacing');
12
+ @include meta.load-css('sizing');
13
+ @include meta.load-css('borders');
14
+ }
@@ -0,0 +1,131 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Utilities: Sizing
3
+ // Width, height, min/max utilities
4
+ //
5
+ // NOTE: Fractional keys use '-' as separator (e.g. '1-2' → .w-1-2) because
6
+ // '/' is not valid unescaped in CSS selectors and sass:string has no
7
+ // replace() function. sass:selector escape is used for the class name.
8
+ // =============================================================================
9
+
10
+ @use 'sass:string';
11
+ @use '../config/settings' as cfg;
12
+
13
+ $size-scale: (
14
+ '0': 0,
15
+ 'px': 1px,
16
+ '1': 0.25rem,
17
+ '2': 0.5rem,
18
+ '3': 0.75rem,
19
+ '4': 1rem,
20
+ '5': 1.25rem,
21
+ '6': 1.5rem,
22
+ '8': 2rem,
23
+ '10': 2.5rem,
24
+ '12': 3rem,
25
+ '16': 4rem,
26
+ '20': 5rem,
27
+ '24': 6rem,
28
+ '32': 8rem,
29
+ '40': 10rem,
30
+ '48': 12rem,
31
+ '56': 14rem,
32
+ '64': 16rem,
33
+ '72': 18rem,
34
+ '80': 20rem,
35
+ '96': 24rem,
36
+ '1-2': 50%,
37
+ '1-3': 33.333333%,
38
+ '2-3': 66.666667%,
39
+ '1-4': 25%,
40
+ '3-4': 75%,
41
+ '1-5': 20%,
42
+ '4-5': 80%,
43
+ 'full': 100%,
44
+ 'screen': 100vw,
45
+ 'svw': 100svw,
46
+ 'dvw': 100dvw,
47
+ 'auto': auto,
48
+ 'fit': fit-content,
49
+ 'min': min-content,
50
+ 'max': max-content,
51
+ ) !default;
52
+
53
+ $height-scale: (
54
+ '0': 0,
55
+ 'px': 1px,
56
+ '1': 0.25rem,
57
+ '2': 0.5rem,
58
+ '3': 0.75rem,
59
+ '4': 1rem,
60
+ '5': 1.25rem,
61
+ '6': 1.5rem,
62
+ '8': 2rem,
63
+ '10': 2.5rem,
64
+ '12': 3rem,
65
+ '16': 4rem,
66
+ '20': 5rem,
67
+ '24': 6rem,
68
+ '32': 8rem,
69
+ '40': 10rem,
70
+ '48': 12rem,
71
+ '56': 14rem,
72
+ '64': 16rem,
73
+ '72': 18rem,
74
+ '80': 20rem,
75
+ '96': 24rem,
76
+ '1-2': 50%,
77
+ '1-3': 33.333333%,
78
+ '2-3': 66.666667%,
79
+ '1-4': 25%,
80
+ '3-4': 75%,
81
+ 'full': 100%,
82
+ 'screen': 100vh,
83
+ 'svh': 100svh,
84
+ 'dvh': 100dvh,
85
+ 'auto': auto,
86
+ 'fit': fit-content,
87
+ 'min': min-content,
88
+ 'max': max-content,
89
+ ) !default;
90
+
91
+ @if cfg.$enable-utilities {
92
+ // Width
93
+ @each $key, $value in $size-scale {
94
+ .w-#{$key} { width: $value !important; }
95
+ }
96
+
97
+ // Height
98
+ @each $key, $value in $height-scale {
99
+ .h-#{$key} { height: $value !important; }
100
+ }
101
+
102
+ // Min/Max Width
103
+ .min-w-0 { min-width: 0 !important; }
104
+ .min-w-full { min-width: 100% !important; }
105
+ .min-w-min { min-width: min-content !important; }
106
+ .min-w-max { min-width: max-content !important; }
107
+ .max-w-none { max-width: none !important; }
108
+ .max-w-xs { max-width: 20rem !important; }
109
+ .max-w-sm { max-width: 24rem !important; }
110
+ .max-w-md { max-width: 28rem !important; }
111
+ .max-w-lg { max-width: 32rem !important; }
112
+ .max-w-xl { max-width: 36rem !important; }
113
+ .max-w-2xl { max-width: 42rem !important; }
114
+ .max-w-3xl { max-width: 48rem !important; }
115
+ .max-w-4xl { max-width: 56rem !important; }
116
+ .max-w-5xl { max-width: 64rem !important; }
117
+ .max-w-6xl { max-width: 72rem !important; }
118
+ .max-w-7xl { max-width: 80rem !important; }
119
+ .max-w-full { max-width: 100% !important; }
120
+ .max-w-screen { max-width: 100vw !important; }
121
+
122
+ // Min/Max Height
123
+ .min-h-0 { min-height: 0 !important; }
124
+ .min-h-full { min-height: 100% !important; }
125
+ .min-h-screen { min-height: 100vh !important; }
126
+ .min-h-svh { min-height: 100svh !important; }
127
+ .min-h-dvh { min-height: 100dvh !important; }
128
+ .max-h-none { max-height: none !important; }
129
+ .max-h-full { max-height: 100% !important; }
130
+ .max-h-screen { max-height: 100vh !important; }
131
+ }
@@ -0,0 +1,68 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Utilities: Spacing
3
+ // Margin and padding utility classes (non-flex, non-grid)
4
+ // =============================================================================
5
+
6
+ @use '../config/settings' as cfg;
7
+
8
+ // Spacing scale (rem-based)
9
+ $spacing-scale: (
10
+ '0': 0,
11
+ 'px': 1px,
12
+ '0-5': 0.125rem,
13
+ '1': 0.25rem,
14
+ '1-5': 0.375rem,
15
+ '2': 0.5rem,
16
+ '2-5': 0.625rem,
17
+ '3': 0.75rem,
18
+ '3-5': 0.875rem,
19
+ '4': 1rem,
20
+ '5': 1.25rem,
21
+ '6': 1.5rem,
22
+ '7': 1.75rem,
23
+ '8': 2rem,
24
+ '9': 2.25rem,
25
+ '10': 2.5rem,
26
+ '11': 2.75rem,
27
+ '12': 3rem,
28
+ '14': 3.5rem,
29
+ '16': 4rem,
30
+ '20': 5rem,
31
+ '24': 6rem,
32
+ '28': 7rem,
33
+ '32': 8rem,
34
+ '36': 9rem,
35
+ '40': 10rem,
36
+ '44': 11rem,
37
+ '48': 12rem,
38
+ '52': 13rem,
39
+ '56': 14rem,
40
+ '60': 15rem,
41
+ '64': 16rem,
42
+ '72': 18rem,
43
+ '80': 20rem,
44
+ '96': 24rem,
45
+ 'auto': auto,
46
+ ) !default;
47
+
48
+ @if cfg.$enable-utilities {
49
+ @each $key, $value in $spacing-scale {
50
+ // Margin all
51
+ .m-#{$key} { margin: $value !important; }
52
+ .mt-#{$key} { margin-top: $value !important; }
53
+ .mr-#{$key} { margin-right: $value !important; }
54
+ .mb-#{$key} { margin-bottom: $value !important; }
55
+ .ml-#{$key} { margin-left: $value !important; }
56
+ .mx-#{$key} { margin-left: $value !important; margin-right: $value !important; }
57
+ .my-#{$key} { margin-top: $value !important; margin-bottom: $value !important; }
58
+
59
+ // Padding all
60
+ .p-#{$key} { padding: $value !important; }
61
+ .pt-#{$key} { padding-top: $value !important; }
62
+ .pr-#{$key} { padding-right: $value !important; }
63
+ .pb-#{$key} { padding-bottom: $value !important; }
64
+ .pl-#{$key} { padding-left: $value !important; }
65
+ .px-#{$key} { padding-left: $value !important; padding-right: $value !important; }
66
+ .py-#{$key} { padding-top: $value !important; padding-bottom: $value !important; }
67
+ }
68
+ }
@@ -0,0 +1,5 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Vendors: Index
3
+ // =============================================================================
4
+
5
+ @forward 'normalize';
@@ -0,0 +1,69 @@
1
+ // =============================================================================
2
+ // Mastors-Core | Vendors: Normalize Supplement
3
+ // Fills gaps between Mastors reset and browser quirks
4
+ // =============================================================================
5
+
6
+ // --- Firefox button quirks ---
7
+ button::-moz-focus-inner,
8
+ [type='button']::-moz-focus-inner,
9
+ [type='reset']::-moz-focus-inner,
10
+ [type='submit']::-moz-focus-inner {
11
+ border-style: none;
12
+ padding: 0;
13
+ }
14
+
15
+ // --- Number inputs: remove arrows ---
16
+ [type='number']::-webkit-inner-spin-button,
17
+ [type='number']::-webkit-outer-spin-button {
18
+ height: auto;
19
+ }
20
+
21
+ // --- Search inputs ---
22
+ [type='search'] {
23
+ -webkit-appearance: textfield;
24
+ outline-offset: -2px;
25
+ }
26
+
27
+ [type='search']::-webkit-search-decoration {
28
+ -webkit-appearance: none;
29
+ }
30
+
31
+ // --- File input ---
32
+ ::-webkit-file-upload-button {
33
+ -webkit-appearance: button;
34
+ font: inherit;
35
+ }
36
+
37
+ // --- Details / Summary ---
38
+ details { display: block; }
39
+ summary { display: list-item; }
40
+
41
+ // --- Template ---
42
+ template { display: none; }
43
+
44
+ // --- Sub / Sup ---
45
+ sub,
46
+ sup {
47
+ font-size: 75%;
48
+ line-height: 0;
49
+ position: relative;
50
+ vertical-align: baseline;
51
+ }
52
+ sub { bottom: -0.25em; }
53
+ sup { top: -0.5em; }
54
+
55
+ // --- Abbr ---
56
+ abbr[title] {
57
+ text-decoration: underline dotted;
58
+ cursor: help;
59
+ border-bottom: none;
60
+ }
61
+
62
+ // --- Address ---
63
+ address { font-style: normal; }
64
+
65
+ // --- Blockquote ---
66
+ blockquote,
67
+ figure {
68
+ margin: 0;
69
+ }