@bluecircuit/offer-calculator 2.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.
@@ -0,0 +1,385 @@
1
+ /**
2
+ * Offer Calculator Styles (CSS Module)
3
+ *
4
+ * This stylesheet provides base styles for the calculator component.
5
+ * All styles are scoped to the component via CSS Modules.
6
+ *
7
+ * Customization:
8
+ * - Override these styles by providing a className prop
9
+ * - Use CSS custom properties (variables) for theming
10
+ * - Import and extend in your own stylesheets
11
+ */
12
+
13
+ /* ============================================================================
14
+ CALCULATOR CONTAINER
15
+ ========================================================================= */
16
+
17
+ .calculator {
18
+ max-width: 800px;
19
+ margin: 0 auto;
20
+ padding: 2rem;
21
+ font-family: system-ui, -apple-system, sans-serif;
22
+ }
23
+
24
+ .calculator__header {
25
+ margin-bottom: 2rem;
26
+ text-align: center;
27
+ }
28
+
29
+ .calculator__title {
30
+ font-size: 1.75rem;
31
+ font-weight: 700;
32
+ margin: 0 0 0.5rem 0;
33
+ color: #1a1a1a;
34
+ }
35
+
36
+ .calculator__subtitle {
37
+ font-size: 1rem;
38
+ color: #666;
39
+ margin: 0;
40
+ }
41
+
42
+ .calculator__section {
43
+ margin-bottom: 2rem;
44
+ padding: 1.5rem;
45
+ background: #f9f9f9;
46
+ border-radius: 8px;
47
+ border: 1px solid #e0e0e0;
48
+ }
49
+
50
+ .calculator__sectionTitle {
51
+ font-size: 1.25rem;
52
+ font-weight: 600;
53
+ margin: 0 0 1rem 0;
54
+ color: #333;
55
+ }
56
+
57
+ .calculator__hint {
58
+ font-size: 0.875rem;
59
+ color: #666;
60
+ margin: 0 0 1rem 0;
61
+ font-style: italic;
62
+ }
63
+
64
+ /* ============================================================================
65
+ DEFECTS TOGGLE (Radio Buttons)
66
+ ========================================================================= */
67
+
68
+ .calculator__defectsToggle {
69
+ display: flex;
70
+ gap: 1.5rem;
71
+ }
72
+
73
+ .calculator__radioLabel {
74
+ display: flex;
75
+ align-items: center;
76
+ gap: 0.5rem;
77
+ font-size: 1rem;
78
+ cursor: pointer;
79
+ padding: 0.75rem 1.25rem;
80
+ border: 2px solid #ddd;
81
+ border-radius: 6px;
82
+ transition: all 0.2s ease;
83
+ }
84
+
85
+ .calculator__radioLabel:has(input:checked) {
86
+ border-color: #007bff;
87
+ background: #e7f3ff;
88
+ }
89
+
90
+ .calculator__radioLabel:hover {
91
+ border-color: #999;
92
+ }
93
+
94
+ .calculator__radioInput {
95
+ width: 1.25rem;
96
+ height: 1.25rem;
97
+ cursor: pointer;
98
+ }
99
+
100
+ /* ============================================================================
101
+ ERROR STATES
102
+ ========================================================================= */
103
+
104
+ .calculator__error {
105
+ padding: 2rem;
106
+ background: #fee;
107
+ border: 1px solid #fcc;
108
+ border-radius: 8px;
109
+ text-align: center;
110
+ }
111
+
112
+ .calculator__error h2 {
113
+ color: #c00;
114
+ margin: 0 0 1rem 0;
115
+ }
116
+
117
+ .calculator__error p {
118
+ color: #666;
119
+ margin: 0 0 1rem 0;
120
+ }
121
+
122
+ .calculator__errorButton {
123
+ padding: 0.75rem 1.5rem;
124
+ background: #007bff;
125
+ color: white;
126
+ border: none;
127
+ border-radius: 6px;
128
+ font-size: 1rem;
129
+ cursor: pointer;
130
+ transition: background 0.2s ease;
131
+ }
132
+
133
+ .calculator__errorButton:hover {
134
+ background: #0056b3;
135
+ }
136
+
137
+ .calculator__errorDetails {
138
+ margin-top: 1rem;
139
+ text-align: left;
140
+ background: #f5f5f5;
141
+ padding: 1rem;
142
+ border-radius: 4px;
143
+ font-size: 0.875rem;
144
+ }
145
+
146
+ .calculator__errorDetails pre {
147
+ margin: 0.5rem 0 0 0;
148
+ overflow-x: auto;
149
+ }
150
+
151
+ /* ============================================================================
152
+ RESPONSIVE DESIGN
153
+ ========================================================================= */
154
+
155
+ @media (max-width: 640px) {
156
+ .calculator {
157
+ padding: 1rem;
158
+ }
159
+
160
+ .calculator__title {
161
+ font-size: 1.5rem;
162
+ }
163
+
164
+ .calculator__section {
165
+ padding: 1rem;
166
+ }
167
+
168
+ .calculator__defectsToggle {
169
+ flex-direction: column;
170
+ gap: 0.75rem;
171
+ }
172
+ }
173
+
174
+ /* ============================================================================
175
+ GLOBAL COMPONENT STYLES (Non-scoped)
176
+ Note: These are fallback styles for sub-components
177
+ ========================================================================= */
178
+
179
+ /* Condition Tabs */
180
+ :global(.condition-tabs__list) {
181
+ display: flex;
182
+ gap: 0.5rem;
183
+ flex-wrap: wrap;
184
+ margin-bottom: 1rem;
185
+ }
186
+
187
+ :global(.condition-tabs__tab) {
188
+ flex: 1;
189
+ min-width: 120px;
190
+ padding: 1rem;
191
+ background: white;
192
+ border: 2px solid #ddd;
193
+ border-radius: 6px;
194
+ cursor: pointer;
195
+ transition: all 0.2s ease;
196
+ font-size: 1rem;
197
+ text-align: center;
198
+ }
199
+
200
+ :global(.condition-tabs__tab:hover) {
201
+ border-color: #999;
202
+ background: #f5f5f5;
203
+ }
204
+
205
+ :global(.condition-tabs__tab--active) {
206
+ border-color: #007bff;
207
+ background: #e7f3ff;
208
+ font-weight: 600;
209
+ }
210
+
211
+ :global(.condition-tabs__tab-label) {
212
+ display: block;
213
+ font-weight: 600;
214
+ margin-bottom: 0.25rem;
215
+ }
216
+
217
+ :global(.condition-tabs__tab-multiplier) {
218
+ display: block;
219
+ font-size: 0.875rem;
220
+ color: #666;
221
+ }
222
+
223
+ :global(.condition-tabs__panel) {
224
+ padding: 1rem;
225
+ background: #f0f8ff;
226
+ border-radius: 4px;
227
+ border-left: 4px solid #007bff;
228
+ }
229
+
230
+ :global(.condition-tabs__description) {
231
+ margin: 0;
232
+ color: #555;
233
+ font-size: 0.9375rem;
234
+ }
235
+
236
+ /* Defect Checkboxes */
237
+ :global(.defect-checkbox) {
238
+ position: relative;
239
+ margin-bottom: 0.75rem;
240
+ }
241
+
242
+ :global(.defect-checkbox__label) {
243
+ display: flex;
244
+ align-items: center;
245
+ gap: 0.75rem;
246
+ padding: 0.75rem;
247
+ background: white;
248
+ border: 1px solid #ddd;
249
+ border-radius: 4px;
250
+ cursor: pointer;
251
+ transition: all 0.2s ease;
252
+ }
253
+
254
+ :global(.defect-checkbox__label:hover) {
255
+ background: #f9f9f9;
256
+ border-color: #999;
257
+ }
258
+
259
+ :global(.defect-checkbox__input) {
260
+ width: 1.25rem;
261
+ height: 1.25rem;
262
+ cursor: pointer;
263
+ }
264
+
265
+ :global(.defect-checkbox__text) {
266
+ flex: 1;
267
+ font-size: 0.9375rem;
268
+ }
269
+
270
+ :global(.defect-checkbox__percent) {
271
+ color: #d9534f;
272
+ font-weight: 600;
273
+ }
274
+
275
+ :global(.defect-checkbox__info-icon) {
276
+ font-size: 1rem;
277
+ opacity: 0.6;
278
+ }
279
+
280
+ :global(.defect-checkbox__tooltip) {
281
+ position: absolute;
282
+ top: 100%;
283
+ left: 0;
284
+ right: 0;
285
+ margin-top: 0.5rem;
286
+ padding: 0.75rem;
287
+ background: #333;
288
+ color: white;
289
+ border-radius: 4px;
290
+ font-size: 0.875rem;
291
+ z-index: 10;
292
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
293
+ }
294
+
295
+ /* Price Display */
296
+ :global(.price-display) {
297
+ text-align: center;
298
+ }
299
+
300
+ :global(.price-display__main) {
301
+ padding: 2rem;
302
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
303
+ color: white;
304
+ border-radius: 8px;
305
+ margin-bottom: 1rem;
306
+ }
307
+
308
+ :global(.price-display__label) {
309
+ display: block;
310
+ font-size: 1rem;
311
+ text-transform: uppercase;
312
+ letter-spacing: 0.05em;
313
+ margin-bottom: 0.5rem;
314
+ opacity: 0.9;
315
+ }
316
+
317
+ :global(.price-display__value) {
318
+ display: block;
319
+ font-size: 3rem;
320
+ font-weight: 700;
321
+ }
322
+
323
+ :global(.price-display__warning) {
324
+ padding: 0.75rem;
325
+ background: #fff3cd;
326
+ border: 1px solid #ffc107;
327
+ border-radius: 4px;
328
+ color: #856404;
329
+ font-size: 0.875rem;
330
+ margin-bottom: 1rem;
331
+ }
332
+
333
+ :global(.price-display__breakdown) {
334
+ background: #f9f9f9;
335
+ border: 1px solid #ddd;
336
+ border-radius: 4px;
337
+ padding: 1rem;
338
+ text-align: left;
339
+ }
340
+
341
+ :global(.price-display__breakdown h4) {
342
+ margin: 0 0 1rem 0;
343
+ font-size: 1rem;
344
+ color: #333;
345
+ }
346
+
347
+ :global(.price-display__breakdown-list) {
348
+ display: grid;
349
+ grid-template-columns: auto 1fr;
350
+ gap: 0.5rem 1rem;
351
+ font-size: 0.875rem;
352
+ }
353
+
354
+ :global(.price-display__breakdown-list dt) {
355
+ font-weight: 600;
356
+ color: #555;
357
+ }
358
+
359
+ :global(.price-display__breakdown-list dd) {
360
+ margin: 0;
361
+ color: #333;
362
+ }
363
+
364
+ :global(.price-display__breakdown-list ul) {
365
+ margin: 0;
366
+ padding-left: 1.25rem;
367
+ }
368
+
369
+ :global(.price-display__breakdown-list li) {
370
+ margin-bottom: 0.25rem;
371
+ }
372
+
373
+ @media (max-width: 640px) {
374
+ :global(.price-display__value) {
375
+ font-size: 2rem;
376
+ }
377
+
378
+ :global(.condition-tabs__list) {
379
+ flex-direction: column;
380
+ }
381
+
382
+ :global(.condition-tabs__tab) {
383
+ min-width: 0;
384
+ }
385
+ }
package/dist/index.css ADDED
@@ -0,0 +1,305 @@
1
+ /* src/components/calculator/calculator.module.css */
2
+ .calculator {
3
+ max-width: 800px;
4
+ margin: 0 auto;
5
+ padding: 2rem;
6
+ font-family:
7
+ system-ui,
8
+ -apple-system,
9
+ sans-serif;
10
+ }
11
+ .calculator__header {
12
+ margin-bottom: 2rem;
13
+ text-align: center;
14
+ }
15
+ .calculator__title {
16
+ font-size: 1.75rem;
17
+ font-weight: 700;
18
+ margin: 0 0 0.5rem 0;
19
+ color: #1a1a1a;
20
+ }
21
+ .calculator__subtitle {
22
+ font-size: 1rem;
23
+ color: #666;
24
+ margin: 0;
25
+ }
26
+ .calculator__section {
27
+ margin-bottom: 2rem;
28
+ padding: 1.5rem;
29
+ background: #f9f9f9;
30
+ border-radius: 8px;
31
+ border: 1px solid #e0e0e0;
32
+ }
33
+ .calculator__sectionTitle {
34
+ font-size: 1.25rem;
35
+ font-weight: 600;
36
+ margin: 0 0 1rem 0;
37
+ color: #333;
38
+ }
39
+ .calculator__hint {
40
+ font-size: 0.875rem;
41
+ color: #666;
42
+ margin: 0 0 1rem 0;
43
+ font-style: italic;
44
+ }
45
+ .calculator__defectsToggle {
46
+ display: flex;
47
+ gap: 1.5rem;
48
+ }
49
+ .calculator__radioLabel {
50
+ display: flex;
51
+ align-items: center;
52
+ gap: 0.5rem;
53
+ font-size: 1rem;
54
+ cursor: pointer;
55
+ padding: 0.75rem 1.25rem;
56
+ border: 2px solid #ddd;
57
+ border-radius: 6px;
58
+ transition: all 0.2s ease;
59
+ }
60
+ .calculator__radioLabel:has(input:checked) {
61
+ border-color: #007bff;
62
+ background: #e7f3ff;
63
+ }
64
+ .calculator__radioLabel:hover {
65
+ border-color: #999;
66
+ }
67
+ .calculator__radioInput {
68
+ width: 1.25rem;
69
+ height: 1.25rem;
70
+ cursor: pointer;
71
+ }
72
+ .calculator__error {
73
+ padding: 2rem;
74
+ background: #fee;
75
+ border: 1px solid #fcc;
76
+ border-radius: 8px;
77
+ text-align: center;
78
+ }
79
+ .calculator__error h2 {
80
+ color: #c00;
81
+ margin: 0 0 1rem 0;
82
+ }
83
+ .calculator__error p {
84
+ color: #666;
85
+ margin: 0 0 1rem 0;
86
+ }
87
+ .calculator__errorButton {
88
+ padding: 0.75rem 1.5rem;
89
+ background: #007bff;
90
+ color: white;
91
+ border: none;
92
+ border-radius: 6px;
93
+ font-size: 1rem;
94
+ cursor: pointer;
95
+ transition: background 0.2s ease;
96
+ }
97
+ .calculator__errorButton:hover {
98
+ background: #0056b3;
99
+ }
100
+ .calculator__errorDetails {
101
+ margin-top: 1rem;
102
+ text-align: left;
103
+ background: #f5f5f5;
104
+ padding: 1rem;
105
+ border-radius: 4px;
106
+ font-size: 0.875rem;
107
+ }
108
+ .calculator__errorDetails pre {
109
+ margin: 0.5rem 0 0 0;
110
+ overflow-x: auto;
111
+ }
112
+ @media (max-width: 640px) {
113
+ .calculator {
114
+ padding: 1rem;
115
+ }
116
+ .calculator__title {
117
+ font-size: 1.5rem;
118
+ }
119
+ .calculator__section {
120
+ padding: 1rem;
121
+ }
122
+ .calculator__defectsToggle {
123
+ flex-direction: column;
124
+ gap: 0.75rem;
125
+ }
126
+ }
127
+ :global(.condition-tabs__list) {
128
+ display: flex;
129
+ gap: 0.5rem;
130
+ flex-wrap: wrap;
131
+ margin-bottom: 1rem;
132
+ }
133
+ :global(.condition-tabs__tab) {
134
+ flex: 1;
135
+ min-width: 120px;
136
+ padding: 1rem;
137
+ background: white;
138
+ border: 2px solid #ddd;
139
+ border-radius: 6px;
140
+ cursor: pointer;
141
+ transition: all 0.2s ease;
142
+ font-size: 1rem;
143
+ text-align: center;
144
+ }
145
+ :global(.condition-tabs__tab:hover) {
146
+ border-color: #999;
147
+ background: #f5f5f5;
148
+ }
149
+ :global(.condition-tabs__tab--active) {
150
+ border-color: #007bff;
151
+ background: #e7f3ff;
152
+ font-weight: 600;
153
+ }
154
+ :global(.condition-tabs__tab-label) {
155
+ display: block;
156
+ font-weight: 600;
157
+ margin-bottom: 0.25rem;
158
+ }
159
+ :global(.condition-tabs__tab-multiplier) {
160
+ display: block;
161
+ font-size: 0.875rem;
162
+ color: #666;
163
+ }
164
+ :global(.condition-tabs__panel) {
165
+ padding: 1rem;
166
+ background: #f0f8ff;
167
+ border-radius: 4px;
168
+ border-left: 4px solid #007bff;
169
+ }
170
+ :global(.condition-tabs__description) {
171
+ margin: 0;
172
+ color: #555;
173
+ font-size: 0.9375rem;
174
+ }
175
+ :global(.defect-checkbox) {
176
+ position: relative;
177
+ margin-bottom: 0.75rem;
178
+ }
179
+ :global(.defect-checkbox__label) {
180
+ display: flex;
181
+ align-items: center;
182
+ gap: 0.75rem;
183
+ padding: 0.75rem;
184
+ background: white;
185
+ border: 1px solid #ddd;
186
+ border-radius: 4px;
187
+ cursor: pointer;
188
+ transition: all 0.2s ease;
189
+ }
190
+ :global(.defect-checkbox__label:hover) {
191
+ background: #f9f9f9;
192
+ border-color: #999;
193
+ }
194
+ :global(.defect-checkbox__input) {
195
+ width: 1.25rem;
196
+ height: 1.25rem;
197
+ cursor: pointer;
198
+ }
199
+ :global(.defect-checkbox__text) {
200
+ flex: 1;
201
+ font-size: 0.9375rem;
202
+ }
203
+ :global(.defect-checkbox__percent) {
204
+ color: #d9534f;
205
+ font-weight: 600;
206
+ }
207
+ :global(.defect-checkbox__info-icon) {
208
+ font-size: 1rem;
209
+ opacity: 0.6;
210
+ }
211
+ :global(.defect-checkbox__tooltip) {
212
+ position: absolute;
213
+ top: 100%;
214
+ left: 0;
215
+ right: 0;
216
+ margin-top: 0.5rem;
217
+ padding: 0.75rem;
218
+ background: #333;
219
+ color: white;
220
+ border-radius: 4px;
221
+ font-size: 0.875rem;
222
+ z-index: 10;
223
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
224
+ }
225
+ :global(.price-display) {
226
+ text-align: center;
227
+ }
228
+ :global(.price-display__main) {
229
+ padding: 2rem;
230
+ background:
231
+ linear-gradient(
232
+ 135deg,
233
+ #667eea 0%,
234
+ #764ba2 100%);
235
+ color: white;
236
+ border-radius: 8px;
237
+ margin-bottom: 1rem;
238
+ }
239
+ :global(.price-display__label) {
240
+ display: block;
241
+ font-size: 1rem;
242
+ text-transform: uppercase;
243
+ letter-spacing: 0.05em;
244
+ margin-bottom: 0.5rem;
245
+ opacity: 0.9;
246
+ }
247
+ :global(.price-display__value) {
248
+ display: block;
249
+ font-size: 3rem;
250
+ font-weight: 700;
251
+ }
252
+ :global(.price-display__warning) {
253
+ padding: 0.75rem;
254
+ background: #fff3cd;
255
+ border: 1px solid #ffc107;
256
+ border-radius: 4px;
257
+ color: #856404;
258
+ font-size: 0.875rem;
259
+ margin-bottom: 1rem;
260
+ }
261
+ :global(.price-display__breakdown) {
262
+ background: #f9f9f9;
263
+ border: 1px solid #ddd;
264
+ border-radius: 4px;
265
+ padding: 1rem;
266
+ text-align: left;
267
+ }
268
+ :global(.price-display__breakdown h4) {
269
+ margin: 0 0 1rem 0;
270
+ font-size: 1rem;
271
+ color: #333;
272
+ }
273
+ :global(.price-display__breakdown-list) {
274
+ display: grid;
275
+ grid-template-columns: auto 1fr;
276
+ gap: 0.5rem 1rem;
277
+ font-size: 0.875rem;
278
+ }
279
+ :global(.price-display__breakdown-list dt) {
280
+ font-weight: 600;
281
+ color: #555;
282
+ }
283
+ :global(.price-display__breakdown-list dd) {
284
+ margin: 0;
285
+ color: #333;
286
+ }
287
+ :global(.price-display__breakdown-list ul) {
288
+ margin: 0;
289
+ padding-left: 1.25rem;
290
+ }
291
+ :global(.price-display__breakdown-list li) {
292
+ margin-bottom: 0.25rem;
293
+ }
294
+ @media (max-width: 640px) {
295
+ :global(.price-display__value) {
296
+ font-size: 2rem;
297
+ }
298
+ :global(.condition-tabs__list) {
299
+ flex-direction: column;
300
+ }
301
+ :global(.condition-tabs__tab) {
302
+ min-width: 0;
303
+ }
304
+ }
305
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/calculator/calculator.module.css"],"sourcesContent":["/**\n * Offer Calculator Styles (CSS Module)\n *\n * This stylesheet provides base styles for the calculator component.\n * All styles are scoped to the component via CSS Modules.\n *\n * Customization:\n * - Override these styles by providing a className prop\n * - Use CSS custom properties (variables) for theming\n * - Import and extend in your own stylesheets\n */\n\n/* ============================================================================\n CALCULATOR CONTAINER\n ========================================================================= */\n\n.calculator {\n max-width: 800px;\n margin: 0 auto;\n padding: 2rem;\n font-family: system-ui, -apple-system, sans-serif;\n}\n\n.calculator__header {\n margin-bottom: 2rem;\n text-align: center;\n}\n\n.calculator__title {\n font-size: 1.75rem;\n font-weight: 700;\n margin: 0 0 0.5rem 0;\n color: #1a1a1a;\n}\n\n.calculator__subtitle {\n font-size: 1rem;\n color: #666;\n margin: 0;\n}\n\n.calculator__section {\n margin-bottom: 2rem;\n padding: 1.5rem;\n background: #f9f9f9;\n border-radius: 8px;\n border: 1px solid #e0e0e0;\n}\n\n.calculator__sectionTitle {\n font-size: 1.25rem;\n font-weight: 600;\n margin: 0 0 1rem 0;\n color: #333;\n}\n\n.calculator__hint {\n font-size: 0.875rem;\n color: #666;\n margin: 0 0 1rem 0;\n font-style: italic;\n}\n\n/* ============================================================================\n DEFECTS TOGGLE (Radio Buttons)\n ========================================================================= */\n\n.calculator__defectsToggle {\n display: flex;\n gap: 1.5rem;\n}\n\n.calculator__radioLabel {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 1rem;\n cursor: pointer;\n padding: 0.75rem 1.25rem;\n border: 2px solid #ddd;\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.calculator__radioLabel:has(input:checked) {\n border-color: #007bff;\n background: #e7f3ff;\n}\n\n.calculator__radioLabel:hover {\n border-color: #999;\n}\n\n.calculator__radioInput {\n width: 1.25rem;\n height: 1.25rem;\n cursor: pointer;\n}\n\n/* ============================================================================\n ERROR STATES\n ========================================================================= */\n\n.calculator__error {\n padding: 2rem;\n background: #fee;\n border: 1px solid #fcc;\n border-radius: 8px;\n text-align: center;\n}\n\n.calculator__error h2 {\n color: #c00;\n margin: 0 0 1rem 0;\n}\n\n.calculator__error p {\n color: #666;\n margin: 0 0 1rem 0;\n}\n\n.calculator__errorButton {\n padding: 0.75rem 1.5rem;\n background: #007bff;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 1rem;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.calculator__errorButton:hover {\n background: #0056b3;\n}\n\n.calculator__errorDetails {\n margin-top: 1rem;\n text-align: left;\n background: #f5f5f5;\n padding: 1rem;\n border-radius: 4px;\n font-size: 0.875rem;\n}\n\n.calculator__errorDetails pre {\n margin: 0.5rem 0 0 0;\n overflow-x: auto;\n}\n\n/* ============================================================================\n RESPONSIVE DESIGN\n ========================================================================= */\n\n@media (max-width: 640px) {\n .calculator {\n padding: 1rem;\n }\n\n .calculator__title {\n font-size: 1.5rem;\n }\n\n .calculator__section {\n padding: 1rem;\n }\n\n .calculator__defectsToggle {\n flex-direction: column;\n gap: 0.75rem;\n }\n}\n\n/* ============================================================================\n GLOBAL COMPONENT STYLES (Non-scoped)\n Note: These are fallback styles for sub-components\n ========================================================================= */\n\n/* Condition Tabs */\n:global(.condition-tabs__list) {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n margin-bottom: 1rem;\n}\n\n:global(.condition-tabs__tab) {\n flex: 1;\n min-width: 120px;\n padding: 1rem;\n background: white;\n border: 2px solid #ddd;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 1rem;\n text-align: center;\n}\n\n:global(.condition-tabs__tab:hover) {\n border-color: #999;\n background: #f5f5f5;\n}\n\n:global(.condition-tabs__tab--active) {\n border-color: #007bff;\n background: #e7f3ff;\n font-weight: 600;\n}\n\n:global(.condition-tabs__tab-label) {\n display: block;\n font-weight: 600;\n margin-bottom: 0.25rem;\n}\n\n:global(.condition-tabs__tab-multiplier) {\n display: block;\n font-size: 0.875rem;\n color: #666;\n}\n\n:global(.condition-tabs__panel) {\n padding: 1rem;\n background: #f0f8ff;\n border-radius: 4px;\n border-left: 4px solid #007bff;\n}\n\n:global(.condition-tabs__description) {\n margin: 0;\n color: #555;\n font-size: 0.9375rem;\n}\n\n/* Defect Checkboxes */\n:global(.defect-checkbox) {\n position: relative;\n margin-bottom: 0.75rem;\n}\n\n:global(.defect-checkbox__label) {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.75rem;\n background: white;\n border: 1px solid #ddd;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n:global(.defect-checkbox__label:hover) {\n background: #f9f9f9;\n border-color: #999;\n}\n\n:global(.defect-checkbox__input) {\n width: 1.25rem;\n height: 1.25rem;\n cursor: pointer;\n}\n\n:global(.defect-checkbox__text) {\n flex: 1;\n font-size: 0.9375rem;\n}\n\n:global(.defect-checkbox__percent) {\n color: #d9534f;\n font-weight: 600;\n}\n\n:global(.defect-checkbox__info-icon) {\n font-size: 1rem;\n opacity: 0.6;\n}\n\n:global(.defect-checkbox__tooltip) {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n margin-top: 0.5rem;\n padding: 0.75rem;\n background: #333;\n color: white;\n border-radius: 4px;\n font-size: 0.875rem;\n z-index: 10;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);\n}\n\n/* Price Display */\n:global(.price-display) {\n text-align: center;\n}\n\n:global(.price-display__main) {\n padding: 2rem;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border-radius: 8px;\n margin-bottom: 1rem;\n}\n\n:global(.price-display__label) {\n display: block;\n font-size: 1rem;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-bottom: 0.5rem;\n opacity: 0.9;\n}\n\n:global(.price-display__value) {\n display: block;\n font-size: 3rem;\n font-weight: 700;\n}\n\n:global(.price-display__warning) {\n padding: 0.75rem;\n background: #fff3cd;\n border: 1px solid #ffc107;\n border-radius: 4px;\n color: #856404;\n font-size: 0.875rem;\n margin-bottom: 1rem;\n}\n\n:global(.price-display__breakdown) {\n background: #f9f9f9;\n border: 1px solid #ddd;\n border-radius: 4px;\n padding: 1rem;\n text-align: left;\n}\n\n:global(.price-display__breakdown h4) {\n margin: 0 0 1rem 0;\n font-size: 1rem;\n color: #333;\n}\n\n:global(.price-display__breakdown-list) {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: 0.5rem 1rem;\n font-size: 0.875rem;\n}\n\n:global(.price-display__breakdown-list dt) {\n font-weight: 600;\n color: #555;\n}\n\n:global(.price-display__breakdown-list dd) {\n margin: 0;\n color: #333;\n}\n\n:global(.price-display__breakdown-list ul) {\n margin: 0;\n padding-left: 1.25rem;\n}\n\n:global(.price-display__breakdown-list li) {\n margin-bottom: 0.25rem;\n}\n\n@media (max-width: 640px) {\n :global(.price-display__value) {\n font-size: 2rem;\n }\n\n :global(.condition-tabs__list) {\n flex-direction: column;\n }\n\n :global(.condition-tabs__tab) {\n min-width: 0;\n }\n}\n"],"mappings":"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","names":[]}