@jjlmoya/utils-aquarium 1.68.0 → 1.70.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 (39) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +13 -4
  3. package/src/entries.ts +18 -10
  4. package/src/index.ts +2 -0
  5. package/src/tests/mfe_assets_contract.test.ts +50 -0
  6. package/src/tests/tool_validation.test.ts +10 -8
  7. package/src/tool/aquariumNitrateDilutionCalculator/aquarium-nitrate-dilution-calculator.css +887 -0
  8. package/src/tool/aquariumNitrateDilutionCalculator/bibliography.astro +6 -0
  9. package/src/tool/aquariumNitrateDilutionCalculator/bibliography.ts +12 -0
  10. package/src/tool/aquariumNitrateDilutionCalculator/component.astro +120 -0
  11. package/src/tool/aquariumNitrateDilutionCalculator/controller.ts +96 -0
  12. package/src/tool/aquariumNitrateDilutionCalculator/dom-views.ts +151 -0
  13. package/src/tool/aquariumNitrateDilutionCalculator/entry.ts +27 -0
  14. package/src/tool/aquariumNitrateDilutionCalculator/evaluator.ts +17 -0
  15. package/src/tool/aquariumNitrateDilutionCalculator/i18n/de.ts +30 -0
  16. package/src/tool/aquariumNitrateDilutionCalculator/i18n/en.ts +124 -0
  17. package/src/tool/aquariumNitrateDilutionCalculator/i18n/es.ts +30 -0
  18. package/src/tool/aquariumNitrateDilutionCalculator/i18n/fr.ts +30 -0
  19. package/src/tool/aquariumNitrateDilutionCalculator/i18n/id.ts +30 -0
  20. package/src/tool/aquariumNitrateDilutionCalculator/i18n/it.ts +30 -0
  21. package/src/tool/aquariumNitrateDilutionCalculator/i18n/ja.ts +30 -0
  22. package/src/tool/aquariumNitrateDilutionCalculator/i18n/ko.ts +30 -0
  23. package/src/tool/aquariumNitrateDilutionCalculator/i18n/nl.ts +30 -0
  24. package/src/tool/aquariumNitrateDilutionCalculator/i18n/pl.ts +30 -0
  25. package/src/tool/aquariumNitrateDilutionCalculator/i18n/pt.ts +30 -0
  26. package/src/tool/aquariumNitrateDilutionCalculator/i18n/ru.ts +30 -0
  27. package/src/tool/aquariumNitrateDilutionCalculator/i18n/sv.ts +30 -0
  28. package/src/tool/aquariumNitrateDilutionCalculator/i18n/tr.ts +30 -0
  29. package/src/tool/aquariumNitrateDilutionCalculator/i18n/zh.ts +30 -0
  30. package/src/tool/aquariumNitrateDilutionCalculator/index.ts +11 -0
  31. package/src/tool/aquariumNitrateDilutionCalculator/localized-content.ts +138 -0
  32. package/src/tool/aquariumNitrateDilutionCalculator/logic.test.ts +47 -0
  33. package/src/tool/aquariumNitrateDilutionCalculator/logic.ts +122 -0
  34. package/src/tool/aquariumNitrateDilutionCalculator/seo.astro +13 -0
  35. package/src/tool/aquariumNitrateDilutionCalculator/storage.ts +36 -0
  36. package/src/tool/aquariumNitrateDilutionCalculator/ui.ts +53 -0
  37. package/src/tool/aquariumNitrateDilutionCalculator/units.test.ts +17 -0
  38. package/src/tool/aquariumNitrateDilutionCalculator/units.ts +19 -0
  39. package/src/tools.ts +16 -37
@@ -0,0 +1,887 @@
1
+ :root {
2
+ --n-ink: #162a31;
3
+ --n-ink-soft: #38515a;
4
+ --n-paper: #f0f3ee;
5
+ --n-surface: #fffdf8;
6
+ --n-line: #c9d6d1;
7
+ --n-water: #087f8d;
8
+ --n-water-light: #d3edef;
9
+ --n-coral: #e26543;
10
+ --n-coral-light: #f8ded1;
11
+ --n-lime: #b6c84d;
12
+ --n-danger: #a33d32;
13
+ --n-header-bg: #162a31;
14
+ --n-header-ink: #f3f1e8;
15
+ --n-header-copy: #f0f3ee;
16
+ --n-header-line: #38515a;
17
+ --n-selected-ink: #162a31;
18
+ }
19
+
20
+ .theme-dark {
21
+ --n-ink: #f3f1e8;
22
+ --n-ink-soft: #c3d0ca;
23
+ --n-paper: #161c1e;
24
+ --n-surface: #20292b;
25
+ --n-line: #4b5e60;
26
+ --n-water: #64d0d2;
27
+ --n-water-light: #21494d;
28
+ --n-coral: #ff9978;
29
+ --n-coral-light: #543329;
30
+ --n-lime: #d2df62;
31
+ --n-danger: #ff9d91;
32
+ --n-header-bg: #0b171b;
33
+ --n-header-ink: #f7fbf8;
34
+ --n-header-copy: #d9e7e3;
35
+ --n-header-line: #728a8d;
36
+ --n-selected-ink: #162a31;
37
+ }
38
+
39
+ .and-tool {
40
+ --n-ink: #162a31;
41
+ --n-ink-soft: #38515a;
42
+ --n-paper: #f0f3ee;
43
+ --n-surface: #fffdf8;
44
+ --n-line: #c9d6d1;
45
+ --n-water: #087f8d;
46
+ --n-water-light: #d3edef;
47
+ --n-coral: #e26543;
48
+ --n-coral-light: #f8ded1;
49
+ --n-lime: #b6c84d;
50
+ --n-danger: #a33d32;
51
+ --n-header-bg: #162a31;
52
+ --n-header-ink: #f3f1e8;
53
+ --n-header-copy: #f0f3ee;
54
+ --n-header-line: #38515a;
55
+ --n-selected-ink: #162a31;
56
+
57
+ color: var(--n-ink);
58
+ background: transparent;
59
+ }
60
+
61
+ .theme-dark .and-tool {
62
+ --n-ink: #f3f1e8;
63
+ --n-ink-soft: #c3d0ca;
64
+ --n-paper: #161c1e;
65
+ --n-surface: #20292b;
66
+ --n-line: #4b5e60;
67
+ --n-water: #64d0d2;
68
+ --n-water-light: #21494d;
69
+ --n-coral: #ff9978;
70
+ --n-coral-light: #543329;
71
+ --n-lime: #d2df62;
72
+ --n-danger: #ff9d91;
73
+ --n-header-bg: #0b171b;
74
+ --n-header-ink: #f7fbf8;
75
+ --n-header-copy: #d9e7e3;
76
+ --n-header-line: #728a8d;
77
+ --n-selected-ink: #162a31;
78
+ }
79
+
80
+ .and-surface {
81
+ width: 100%;
82
+ box-sizing: border-box;
83
+ max-width: 960px;
84
+ margin: 0 auto;
85
+ overflow: hidden;
86
+ border-radius: 2rem;
87
+ background: var(--n-surface);
88
+ }
89
+
90
+ .and-topline {
91
+ display: grid;
92
+ grid-template-columns: minmax(0, 1fr) auto;
93
+ gap: 2rem;
94
+ align-items: center;
95
+ padding: 1.2rem 1.4rem;
96
+ border-radius: 2rem 2rem 0 0;
97
+ color: var(--n-header-ink);
98
+ background: var(--n-header-bg);
99
+ }
100
+
101
+ .and-identity {
102
+ display: flex;
103
+ gap: 0.8rem;
104
+ align-items: center;
105
+ }
106
+
107
+ .and-no3-mark {
108
+ display: grid;
109
+ width: 3.1rem;
110
+ height: 3.1rem;
111
+ flex: 0 0 3.1rem;
112
+ place-items: center;
113
+ border: 2px solid var(--n-lime);
114
+ color: var(--n-lime);
115
+ font-size: 0.82rem;
116
+ font-weight: 900;
117
+ letter-spacing: 0.08em;
118
+ transform: rotate(-4deg);
119
+ }
120
+
121
+ .and-kicker,
122
+ .and-section-note,
123
+ .and-intro,
124
+ .and-reading-copy,
125
+ .and-reading-copy small,
126
+ .and-unit-switch legend,
127
+ .and-unit-options small,
128
+ .and-answer-label,
129
+ .and-answer-unit,
130
+ .and-answer-copy,
131
+ .and-metrics span,
132
+ .and-scenario-heading small,
133
+ .and-scenario-list span,
134
+ .and-scenario-list small,
135
+ .and-error {
136
+ margin: 0;
137
+ }
138
+
139
+ .and-kicker {
140
+ font-size: 0.72rem;
141
+ font-weight: 900;
142
+ letter-spacing: 0.14em;
143
+ text-transform: uppercase;
144
+ }
145
+
146
+ .and-intro {
147
+ max-width: 38rem;
148
+ margin-top: 0.35rem;
149
+ color: var(--n-ink-soft);
150
+ font-size: 0.92rem;
151
+ line-height: 1.4;
152
+ }
153
+
154
+ .and-topline .and-intro {
155
+ color: var(--n-header-copy);
156
+ }
157
+
158
+ .and-unit-switch {
159
+ min-width: 13rem;
160
+ margin: 0;
161
+ padding: 0;
162
+ border: 0;
163
+ }
164
+
165
+ .and-unit-switch legend {
166
+ margin-bottom: 0.45rem;
167
+ color: var(--n-lime);
168
+ font-size: 0.66rem;
169
+ font-weight: 900;
170
+ letter-spacing: 0.13em;
171
+ text-align: right;
172
+ text-transform: uppercase;
173
+ }
174
+
175
+ .and-unit-options {
176
+ display: grid;
177
+ grid-template-columns: repeat(2, minmax(0, 1fr));
178
+ border: 1px solid var(--n-header-line);
179
+ border-radius: 1rem;
180
+ overflow: hidden;
181
+ }
182
+
183
+ .and-unit-options button {
184
+ display: grid;
185
+ gap: 0.12rem;
186
+ min-width: 6rem;
187
+ border: 0;
188
+ border-right: 1px solid var(--n-header-line);
189
+ padding: 0.55rem 0.65rem;
190
+ color: var(--n-header-copy);
191
+ background: transparent;
192
+ font: inherit;
193
+ text-align: left;
194
+ cursor: pointer;
195
+ }
196
+
197
+ .and-unit-options button:last-child {
198
+ border-right: 0;
199
+ }
200
+
201
+ .and-unit-options button[aria-pressed='true'] {
202
+ color: var(--n-selected-ink);
203
+ background: var(--n-lime);
204
+ }
205
+
206
+ .and-unit-options strong {
207
+ font-size: 0.74rem;
208
+ font-weight: 900;
209
+ }
210
+
211
+ .and-unit-options small {
212
+ font-size: 0.64rem;
213
+ line-height: 1.2;
214
+ }
215
+
216
+ .and-workspace {
217
+ display: grid;
218
+ grid-template-columns: minmax(16rem, 0.78fr) minmax(0, 1.22fr);
219
+ }
220
+
221
+ .and-readings,
222
+ .and-decision {
223
+ padding: 1.35rem;
224
+ }
225
+
226
+ .and-readings {
227
+ border-right: 1px solid var(--n-line);
228
+ background: var(--n-paper);
229
+ }
230
+
231
+ .and-section-heading,
232
+ .and-decision-heading,
233
+ .and-scenario-heading {
234
+ display: flex;
235
+ gap: 0.75rem;
236
+ align-items: flex-start;
237
+ justify-content: space-between;
238
+ }
239
+
240
+ .and-section-heading,
241
+ .and-decision-heading {
242
+ justify-content: flex-start;
243
+ }
244
+
245
+ .and-section-index {
246
+ color: var(--n-coral);
247
+ font-size: 0.72rem;
248
+ font-weight: 900;
249
+ letter-spacing: 0.1em;
250
+ }
251
+
252
+ .and-section-note {
253
+ margin-top: 0.3rem;
254
+ color: var(--n-ink-soft);
255
+ font-size: 0.84rem;
256
+ line-height: 1.4;
257
+ }
258
+
259
+ .and-reading-list {
260
+ display: grid;
261
+ gap: 0.5rem;
262
+ margin-top: 1.35rem;
263
+ }
264
+
265
+ .and-reading-row {
266
+ display: grid;
267
+ grid-template-columns: 1.25rem minmax(0, 1fr) 5.3rem auto;
268
+ gap: 0.55rem;
269
+ align-items: center;
270
+ min-height: 3.4rem;
271
+ border-top: 1px solid var(--n-line);
272
+ padding: 0.55rem 0;
273
+ }
274
+
275
+ .and-reading-index {
276
+ color: var(--n-water);
277
+ font-size: 0.72rem;
278
+ font-weight: 900;
279
+ }
280
+
281
+ .and-reading-copy {
282
+ display: grid;
283
+ gap: 0.18rem;
284
+ min-width: 0;
285
+ }
286
+
287
+ .and-reading-copy strong {
288
+ font-size: 0.83rem;
289
+ line-height: 1.2;
290
+ }
291
+
292
+ .and-reading-copy small {
293
+ overflow: hidden;
294
+ color: var(--n-ink-soft);
295
+ font-size: 0.65rem;
296
+ line-height: 1.2;
297
+ text-overflow: ellipsis;
298
+ white-space: nowrap;
299
+ }
300
+
301
+ .and-reading-row input {
302
+ width: 100%;
303
+ box-sizing: border-box;
304
+ border: 2px solid var(--n-line);
305
+ border-radius: 0.85rem;
306
+ padding: 0.62rem 0.5rem;
307
+ color: var(--n-ink);
308
+ background: var(--n-surface);
309
+ font: inherit;
310
+ font-size: 1rem;
311
+ font-weight: 800;
312
+ }
313
+
314
+ .and-reading-row input:focus {
315
+ outline: 3px solid var(--n-coral-light);
316
+ border-color: var(--n-coral);
317
+ }
318
+
319
+ .and-reading-row em {
320
+ min-width: 3.3rem;
321
+ color: var(--n-water);
322
+ font-size: 0.64rem;
323
+ font-style: normal;
324
+ font-weight: 900;
325
+ line-height: 1.1;
326
+ text-align: right;
327
+ }
328
+
329
+ .and-reset {
330
+ margin-top: 1.1rem;
331
+ border: 0;
332
+ border-bottom: 2px solid var(--n-coral);
333
+ padding: 0 0 0.18rem;
334
+ color: var(--n-coral);
335
+ background: transparent;
336
+ font: inherit;
337
+ font-size: 0.72rem;
338
+ font-weight: 900;
339
+ cursor: pointer;
340
+ }
341
+
342
+ .and-decision {
343
+ background: var(--n-surface);
344
+ }
345
+
346
+ .and-decision-heading {
347
+ align-items: center;
348
+ }
349
+
350
+ .and-decision-heading > div {
351
+ display: flex;
352
+ gap: 0.75rem;
353
+ align-items: flex-start;
354
+ }
355
+
356
+ .and-status {
357
+ margin-left: auto;
358
+ border-left: 3px solid var(--n-lime);
359
+ padding-left: 0.55rem;
360
+ color: var(--n-ink-soft);
361
+ font-size: 0.68rem;
362
+ font-weight: 900;
363
+ letter-spacing: 0.08em;
364
+ text-align: right;
365
+ text-transform: uppercase;
366
+ }
367
+
368
+ .and-answer-block {
369
+ display: flex;
370
+ flex-wrap: wrap;
371
+ gap: 0.25rem 0.55rem;
372
+ align-items: baseline;
373
+ margin-top: 1.3rem;
374
+ }
375
+
376
+ .and-safety-note {
377
+ display: grid;
378
+ gap: 0.3rem;
379
+ margin-top: 1rem;
380
+ border: 1px solid #c98b00;
381
+ border-left-width: 0.35rem;
382
+ border-radius: 0.8rem;
383
+ padding: 0.8rem 0.95rem;
384
+ color: #4a3300;
385
+ background: #fff0bd;
386
+ font-size: 0.78rem;
387
+ line-height: 1.4;
388
+ }
389
+
390
+ .and-safety-note strong {
391
+ font-size: 0.72rem;
392
+ letter-spacing: 0.08em;
393
+ text-transform: uppercase;
394
+ }
395
+
396
+ .and-tool.is-critical-change .and-safety-note {
397
+ border-color: var(--n-danger);
398
+ color: #4f1c14;
399
+ background: #ffe0d8;
400
+ }
401
+
402
+ .and-tool.is-high-change .and-answer-number {
403
+ color: #b47500;
404
+ }
405
+
406
+ .and-tool.is-critical-change .and-answer-number {
407
+ color: var(--n-danger);
408
+ }
409
+
410
+ .and-answer-label {
411
+ width: 100%;
412
+ color: var(--n-coral);
413
+ font-size: 0.72rem;
414
+ font-weight: 900;
415
+ letter-spacing: 0.12em;
416
+ text-transform: uppercase;
417
+ }
418
+
419
+ .and-answer-number {
420
+ color: var(--n-water);
421
+ font-size: clamp(4rem, 9vw, 7rem);
422
+ line-height: 0.82;
423
+ letter-spacing: -0.08em;
424
+ }
425
+
426
+ .and-answer-unit {
427
+ max-width: 8rem;
428
+ color: var(--n-ink-soft);
429
+ font-size: 0.88rem;
430
+ font-weight: 800;
431
+ line-height: 1.15;
432
+ }
433
+
434
+ .and-flow-scene {
435
+ display: grid;
436
+ grid-template-columns: minmax(10rem, 1fr) minmax(5rem, 0.7fr) 4.5rem;
437
+ gap: 0.8rem;
438
+ align-items: center;
439
+ margin-top: 1.45rem;
440
+ }
441
+
442
+ .and-vessel {
443
+ position: relative;
444
+ padding: 0 0.55rem;
445
+ }
446
+
447
+ .and-vessel-lid,
448
+ .and-vessel-foot {
449
+ display: block;
450
+ height: 0.45rem;
451
+ border: 2px solid var(--n-ink);
452
+ background: var(--n-coral);
453
+ }
454
+
455
+ .and-vessel-lid {
456
+ width: 72%;
457
+ margin: 0 auto 0.35rem;
458
+ border-radius: 0.6rem;
459
+ }
460
+
461
+ .and-vessel-foot {
462
+ width: 82%;
463
+ margin: 0 auto;
464
+ border-radius: 0 0 0.5rem 0.5rem;
465
+ background: var(--n-ink);
466
+ }
467
+
468
+ .and-vessel-body {
469
+ position: relative;
470
+ height: 10rem;
471
+ overflow: hidden;
472
+ border: 2px solid var(--n-ink);
473
+ border-radius: 1.25rem 1.25rem 0.75rem 0.75rem;
474
+ background: var(--n-water-light);
475
+ }
476
+
477
+ .and-water-fill {
478
+ position: absolute;
479
+ right: 0;
480
+ bottom: 0;
481
+ left: 0;
482
+ height: var(--n-after-level, 40%);
483
+ background: var(--n-water);
484
+ opacity: 0.9;
485
+ transition: height 0.25s ease;
486
+ }
487
+
488
+ .and-marker {
489
+ position: absolute;
490
+ right: 0.35rem;
491
+ left: 0.35rem;
492
+ display: flex;
493
+ gap: 0.3rem;
494
+ align-items: center;
495
+ color: var(--n-ink);
496
+ font-size: 0.6rem;
497
+ font-weight: 900;
498
+ line-height: 1;
499
+ text-transform: uppercase;
500
+ }
501
+
502
+ .and-marker i {
503
+ display: block;
504
+ width: 0.5rem;
505
+ height: 0.5rem;
506
+ flex: 0 0 0.5rem;
507
+ border: 2px solid var(--n-surface);
508
+ background: var(--n-coral);
509
+ }
510
+
511
+ .and-marker-current {
512
+ bottom: var(--n-current-level, 40%);
513
+ }
514
+
515
+ .and-marker-target {
516
+ bottom: var(--n-target-level, 20%);
517
+ color: var(--n-coral);
518
+ }
519
+
520
+ .and-flow-arrow {
521
+ display: grid;
522
+ gap: 0.55rem;
523
+ justify-items: center;
524
+ color: var(--n-ink-soft);
525
+ font-size: 0.63rem;
526
+ font-weight: 900;
527
+ line-height: 1.2;
528
+ text-align: center;
529
+ text-transform: uppercase;
530
+ }
531
+
532
+ .and-flow-arrow i {
533
+ position: relative;
534
+ display: block;
535
+ width: 100%;
536
+ height: 0.15rem;
537
+ background: var(--n-coral);
538
+ }
539
+
540
+ .and-flow-arrow i::after {
541
+ position: absolute;
542
+ top: -0.28rem;
543
+ right: 0;
544
+ width: 0.55rem;
545
+ height: 0.55rem;
546
+ border-top: 0.15rem solid var(--n-coral);
547
+ border-right: 0.15rem solid var(--n-coral);
548
+ content: '';
549
+ transform: rotate(45deg);
550
+ }
551
+
552
+ .and-new-water {
553
+ display: grid;
554
+ justify-items: center;
555
+ }
556
+
557
+ .and-new-water-cap {
558
+ width: 2.2rem;
559
+ height: 0.55rem;
560
+ border: 2px solid var(--n-ink);
561
+ border-radius: 0.6rem;
562
+ background: var(--n-lime);
563
+ }
564
+
565
+ .and-new-water-body {
566
+ position: relative;
567
+ width: 3.6rem;
568
+ height: 6.4rem;
569
+ overflow: hidden;
570
+ border: 2px solid var(--n-ink);
571
+ border-top: 0;
572
+ border-radius: 0 0 1rem 1rem;
573
+ background: var(--n-water-light);
574
+ }
575
+
576
+ .and-new-water-fill {
577
+ position: absolute;
578
+ right: 0;
579
+ bottom: 0;
580
+ left: 0;
581
+ height: var(--n-source-level, 5%);
582
+ background: var(--n-lime);
583
+ }
584
+
585
+ .and-new-water small {
586
+ margin-top: 0.4rem;
587
+ color: var(--n-ink-soft);
588
+ font-size: 0.6rem;
589
+ font-weight: 900;
590
+ text-transform: uppercase;
591
+ }
592
+
593
+ .and-answer-copy {
594
+ max-width: 38rem;
595
+ margin-top: 1rem;
596
+ color: var(--n-ink-soft);
597
+ font-size: 0.78rem;
598
+ line-height: 1.45;
599
+ }
600
+
601
+ .and-metrics {
602
+ display: grid;
603
+ grid-template-columns: repeat(3, minmax(0, 1fr));
604
+ gap: 0.8rem;
605
+ margin: 1.2rem 0 0;
606
+ border-top: 1px solid var(--n-line);
607
+ padding-top: 0.9rem;
608
+ }
609
+
610
+ .and-metrics div {
611
+ display: grid;
612
+ gap: 0.25rem;
613
+ min-width: 0;
614
+ }
615
+
616
+ .and-metrics span {
617
+ color: var(--n-ink-soft);
618
+ font-size: 0.62rem;
619
+ line-height: 1.2;
620
+ }
621
+
622
+ .and-metrics strong {
623
+ overflow-wrap: anywhere;
624
+ font-size: 0.92rem;
625
+ line-height: 1.2;
626
+ }
627
+
628
+ .and-scenarios {
629
+ border-top: 2px solid var(--n-ink);
630
+ padding: 1.1rem 1.35rem 1.3rem;
631
+ background: var(--n-paper);
632
+ }
633
+
634
+ .and-scenario-heading {
635
+ align-items: baseline;
636
+ }
637
+
638
+ .and-scenario-heading > div {
639
+ display: flex;
640
+ gap: 0.75rem;
641
+ }
642
+
643
+ .and-scenario-heading small {
644
+ color: var(--n-ink-soft);
645
+ font-size: 0.72rem;
646
+ line-height: 1.35;
647
+ text-align: right;
648
+ }
649
+
650
+ .and-scenario-choices {
651
+ display: grid;
652
+ grid-template-columns: repeat(4, minmax(0, 1fr));
653
+ gap: 0.5rem;
654
+ margin-top: 1rem;
655
+ }
656
+
657
+ .and-scenario-choices button {
658
+ display: flex;
659
+ gap: 0.5rem;
660
+ align-items: center;
661
+ justify-content: center;
662
+ border: 1px solid var(--n-line);
663
+ border-radius: 999px;
664
+ padding: 0.7rem 0.5rem;
665
+ color: var(--n-ink);
666
+ background: var(--n-surface);
667
+ font: inherit;
668
+ font-size: 0.76rem;
669
+ font-weight: 900;
670
+ cursor: pointer;
671
+ }
672
+
673
+ .and-scenario-choices button i {
674
+ display: block;
675
+ width: 0.5rem;
676
+ height: 0.5rem;
677
+ border: 1px solid var(--n-coral);
678
+ background: var(--n-coral-light);
679
+ }
680
+
681
+ .and-scenario-choices button[aria-pressed='true'] {
682
+ border-color: var(--n-ink);
683
+ color: var(--n-surface);
684
+ background: var(--n-water);
685
+ }
686
+
687
+ .and-scenario-choices button[aria-pressed='true'] i {
688
+ border-color: var(--n-lime);
689
+ background: var(--n-lime);
690
+ }
691
+
692
+ .and-scenario-list {
693
+ display: grid;
694
+ grid-template-columns: repeat(4, minmax(0, 1fr));
695
+ margin: 0.9rem 0 0;
696
+ border-top: 1px solid var(--n-line);
697
+ padding: 0;
698
+ list-style: none;
699
+ }
700
+
701
+ .and-scenario-list li {
702
+ display: grid;
703
+ gap: 0.3rem;
704
+ min-width: 0;
705
+ border-right: 1px solid var(--n-line);
706
+ padding: 0.75rem 0.7rem 0.15rem;
707
+ }
708
+
709
+ .and-scenario-list li:last-child {
710
+ border-right: 0;
711
+ }
712
+
713
+ .and-scenario-list span,
714
+ .and-scenario-list small {
715
+ color: var(--n-ink-soft);
716
+ font-size: 0.64rem;
717
+ line-height: 1.25;
718
+ }
719
+
720
+ .and-scenario-list strong {
721
+ font-size: 0.86rem;
722
+ line-height: 1.2;
723
+ }
724
+
725
+ .and-plan {
726
+ margin-top: 1rem;
727
+ border-top: 1px solid var(--n-line);
728
+ border-bottom: 1px solid var(--n-line);
729
+ padding: 0.85rem 0;
730
+ }
731
+
732
+ .and-plan summary {
733
+ color: var(--n-ink);
734
+ font-size: 0.76rem;
735
+ font-weight: 900;
736
+ letter-spacing: 0.08em;
737
+ text-transform: uppercase;
738
+ cursor: pointer;
739
+ }
740
+
741
+ .and-plan > p {
742
+ max-width: 42rem;
743
+ margin: 0.7rem 0 0;
744
+ color: var(--n-ink-soft);
745
+ font-size: 0.72rem;
746
+ line-height: 1.4;
747
+ }
748
+
749
+ .and-plan-list {
750
+ display: grid;
751
+ grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr));
752
+ gap: 0.6rem;
753
+ margin: 0.8rem 0 0;
754
+ padding: 0;
755
+ list-style: none;
756
+ }
757
+
758
+ .and-plan-list li {
759
+ display: grid;
760
+ gap: 0.25rem;
761
+ border-left: 2px solid var(--n-water);
762
+ padding-left: 0.65rem;
763
+ }
764
+
765
+ .and-plan-list span {
766
+ color: var(--n-ink-soft);
767
+ font-size: 0.64rem;
768
+ }
769
+
770
+ .and-plan-list strong {
771
+ font-size: 0.82rem;
772
+ }
773
+
774
+ .and-biology-note {
775
+ margin: 0.9rem 0 0;
776
+ color: var(--n-ink-soft);
777
+ font-size: 0.7rem;
778
+ line-height: 1.4;
779
+ }
780
+
781
+ .and-error {
782
+ padding: 0 1.35rem 1.25rem;
783
+ color: var(--n-danger);
784
+ font-size: 0.8rem;
785
+ line-height: 1.4;
786
+ }
787
+
788
+ .and-error:empty {
789
+ display: none;
790
+ }
791
+
792
+ @media (max-width: 760px) {
793
+ .and-topline,
794
+ .and-workspace {
795
+ grid-template-columns: 1fr;
796
+ }
797
+
798
+ .and-topline {
799
+ gap: 1.2rem;
800
+ }
801
+
802
+ .and-unit-switch {
803
+ width: 100%;
804
+ }
805
+
806
+ .and-unit-switch legend {
807
+ text-align: left;
808
+ }
809
+
810
+ .and-readings {
811
+ border-right: 0;
812
+ border-bottom: 1px solid var(--n-line);
813
+ }
814
+
815
+ .and-flow-scene {
816
+ grid-template-columns: minmax(9rem, 1fr) minmax(4rem, 0.7fr) 4rem;
817
+ }
818
+ }
819
+
820
+ @media (max-width: 520px) {
821
+ .and-surface {
822
+ border-radius: 1.3rem;
823
+ }
824
+
825
+ .and-topline,
826
+ .and-readings,
827
+ .and-decision {
828
+ padding: 1rem;
829
+ }
830
+
831
+ .and-reading-row {
832
+ grid-template-columns: 1.1rem minmax(0, 1fr) 4.8rem;
833
+ }
834
+
835
+ .and-reading-row em {
836
+ grid-column: 3;
837
+ grid-row: 2;
838
+ text-align: left;
839
+ }
840
+
841
+ .and-reading-row input {
842
+ grid-column: 3;
843
+ grid-row: 1;
844
+ }
845
+
846
+ .and-reading-copy {
847
+ grid-column: 2;
848
+ grid-row: 1 / span 2;
849
+ }
850
+
851
+ .and-flow-scene {
852
+ grid-template-columns: minmax(7rem, 1fr) minmax(3.5rem, 0.55fr) 3.7rem;
853
+ gap: 0.45rem;
854
+ }
855
+
856
+ .and-vessel-body {
857
+ height: 8.5rem;
858
+ }
859
+
860
+ .and-new-water-body {
861
+ width: 3rem;
862
+ height: 5.3rem;
863
+ }
864
+
865
+ .and-scenario-heading {
866
+ display: block;
867
+ }
868
+
869
+ .and-scenario-heading small {
870
+ display: block;
871
+ margin: 0.5rem 0 0 1.5rem;
872
+ text-align: left;
873
+ }
874
+
875
+ .and-scenario-choices,
876
+ .and-scenario-list {
877
+ grid-template-columns: repeat(2, minmax(0, 1fr));
878
+ }
879
+
880
+ .and-scenario-list li:nth-child(2) {
881
+ border-right: 0;
882
+ }
883
+
884
+ .and-scenario-list li:nth-child(n + 3) {
885
+ border-top: 1px solid var(--n-line);
886
+ }
887
+ }