@forwardimpact/pathway 0.22.0 → 0.23.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 (75) hide show
  1. package/package.json +3 -2
  2. package/src/commands/agent.js +7 -3
  3. package/src/commands/behaviour.js +11 -1
  4. package/src/commands/build.js +11 -2
  5. package/src/commands/command-factory.js +4 -2
  6. package/src/commands/dev.js +9 -2
  7. package/src/commands/discipline.js +19 -2
  8. package/src/commands/driver.js +11 -1
  9. package/src/commands/job.js +25 -12
  10. package/src/commands/level.js +19 -3
  11. package/src/commands/skill.js +11 -1
  12. package/src/commands/stage.js +11 -1
  13. package/src/commands/tool.js +4 -3
  14. package/src/commands/track.js +11 -1
  15. package/src/components/card.js +8 -104
  16. package/src/components/comparison-radar.js +1 -1
  17. package/src/components/detail.js +16 -118
  18. package/src/components/error-page.js +8 -68
  19. package/src/components/grid.js +12 -106
  20. package/src/components/list.js +7 -116
  21. package/src/components/nav.js +7 -60
  22. package/src/css/bundles/app.css +25 -21
  23. package/src/css/bundles/handout.css +33 -33
  24. package/src/css/bundles/slides.css +25 -25
  25. package/src/formatters/interview/shared.js +3 -3
  26. package/src/formatters/job/description.js +2 -2
  27. package/src/formatters/progress/shared.js +3 -3
  28. package/src/formatters/skill/shared.js +1 -1
  29. package/src/formatters/track/shared.js +1 -1
  30. package/src/handout.html +32 -13
  31. package/src/index.html +32 -13
  32. package/src/lib/error-boundary.js +3 -66
  33. package/src/lib/errors.js +7 -45
  34. package/src/lib/job-cache.js +1 -1
  35. package/src/lib/markdown.js +2 -109
  36. package/src/lib/reactive.js +7 -73
  37. package/src/lib/render.js +49 -197
  38. package/src/lib/router-core.js +2 -156
  39. package/src/lib/router-pages.js +2 -11
  40. package/src/lib/router-slides.js +2 -197
  41. package/src/lib/state.js +14 -63
  42. package/src/lib/utils.js +3 -10
  43. package/src/lib/yaml-loader.js +13 -71
  44. package/src/pages/agent-builder.js +1 -1
  45. package/src/pages/assessment-results.js +1 -1
  46. package/src/pages/job-builder.js +1 -1
  47. package/src/pages/job.js +1 -1
  48. package/src/pages/skill.js +1 -1
  49. package/src/slide-main.js +1 -1
  50. package/src/slides/index.js +1 -1
  51. package/src/slides/job.js +1 -1
  52. package/src/slides/overview.js +1 -1
  53. package/src/slides.html +32 -13
  54. package/src/css/base.css +0 -56
  55. package/src/css/components/badges.css +0 -232
  56. package/src/css/components/buttons.css +0 -101
  57. package/src/css/components/forms.css +0 -191
  58. package/src/css/components/layout.css +0 -218
  59. package/src/css/components/nav.css +0 -206
  60. package/src/css/components/progress.css +0 -166
  61. package/src/css/components/states.css +0 -82
  62. package/src/css/components/surfaces.css +0 -347
  63. package/src/css/components/tables.css +0 -362
  64. package/src/css/components/top-bar.css +0 -180
  65. package/src/css/components/typography.css +0 -121
  66. package/src/css/components/utilities.css +0 -41
  67. package/src/css/pages/detail.css +0 -119
  68. package/src/css/reset.css +0 -50
  69. package/src/css/tokens.css +0 -162
  70. package/src/css/views/handout.css +0 -30
  71. package/src/css/views/print.css +0 -634
  72. package/src/css/views/slide-animations.css +0 -113
  73. package/src/css/views/slide-base.css +0 -331
  74. package/src/css/views/slide-sections.css +0 -597
  75. package/src/css/views/slide-tables.css +0 -275
@@ -1,180 +0,0 @@
1
- /**
2
- * Top Bar
3
- *
4
- * Fixed bar across the top of the viewport with sidebar toggle and
5
- * CLI command display. Inspired by Safari's URL bar + sidebar layout.
6
- */
7
-
8
- @layer components {
9
- /* --------------------------------------------------------------------------
10
- Bar container - fixed across top
11
- -------------------------------------------------------------------------- */
12
- .top-bar {
13
- position: fixed;
14
- top: 0;
15
- left: 0;
16
- right: 0;
17
- height: var(--top-bar-height);
18
- z-index: 200;
19
- display: flex;
20
- align-items: center;
21
- gap: var(--space-sm);
22
- padding: 0 var(--space-sm);
23
- background: var(--color-surface);
24
- border-bottom: 1px solid var(--color-border);
25
- }
26
-
27
- /* --------------------------------------------------------------------------
28
- Sidebar toggle button
29
- -------------------------------------------------------------------------- */
30
- .top-bar__toggle {
31
- flex-shrink: 0;
32
- display: flex;
33
- align-items: center;
34
- justify-content: center;
35
- width: 36px;
36
- height: 36px;
37
- border: none;
38
- border-radius: var(--radius-md);
39
- background: transparent;
40
- color: var(--color-text-muted);
41
- cursor: pointer;
42
- transition:
43
- background 0.15s,
44
- color 0.15s;
45
- }
46
-
47
- .top-bar__toggle:hover {
48
- background: var(--color-bg-secondary);
49
- color: var(--color-text);
50
- }
51
-
52
- .top-bar__toggle:active {
53
- background: var(--color-border);
54
- }
55
-
56
- /* Sidebar icon: simple sidebar SVG */
57
- .top-bar__toggle svg {
58
- width: 18px;
59
- height: 18px;
60
- fill: none;
61
- stroke: currentColor;
62
- stroke-width: 1.5;
63
- stroke-linecap: round;
64
- stroke-linejoin: round;
65
- }
66
-
67
- /* Highlight toggle when drawer is open */
68
- .drawer-open .top-bar__toggle {
69
- color: var(--color-primary);
70
- background: rgba(59, 130, 246, 0.08);
71
- }
72
-
73
- /* --------------------------------------------------------------------------
74
- Command bar (mimics Safari-style URL bar)
75
- -------------------------------------------------------------------------- */
76
- .top-bar__command {
77
- width: 100%;
78
- max-width: 800px;
79
- margin: 0 auto;
80
- display: flex;
81
- align-items: center;
82
- height: 36px;
83
- padding: 0 var(--space-sm) 0 var(--space-md);
84
- border: 1px solid var(--color-border);
85
- border-radius: var(--radius-lg);
86
- transition:
87
- border-color 0.15s,
88
- box-shadow 0.15s;
89
- gap: var(--space-xs);
90
- }
91
-
92
- .top-bar__command:hover {
93
- border-color: var(--color-text-light);
94
- }
95
-
96
- .top-bar__command:focus-within {
97
- border-color: var(--color-primary);
98
- box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);
99
- }
100
-
101
- /* Terminal prompt icon */
102
- .top-bar__prompt {
103
- flex-shrink: 0;
104
- font-size: var(--font-size-sm);
105
- color: var(--color-text-light);
106
- user-select: none;
107
- }
108
-
109
- /* CLI command text */
110
- .top-bar__command-text {
111
- flex: 1;
112
- min-width: 0;
113
- font-family: var(--font-family-mono);
114
- font-size: var(--font-size-xs);
115
- color: var(--color-text-secondary);
116
- white-space: nowrap;
117
- overflow: hidden;
118
- text-overflow: ellipsis;
119
- user-select: all;
120
- line-height: 36px;
121
- }
122
-
123
- /* Copy button inside the command bar */
124
- .top-bar__copy {
125
- flex-shrink: 0;
126
- display: flex;
127
- align-items: center;
128
- justify-content: center;
129
- width: 28px;
130
- height: 28px;
131
- border: none;
132
- border-radius: var(--radius-sm);
133
- background: transparent;
134
- color: var(--color-text-light);
135
- cursor: pointer;
136
- transition:
137
- background 0.15s,
138
- color 0.15s;
139
- }
140
-
141
- .top-bar__copy:hover {
142
- background: var(--color-border);
143
- color: var(--color-text);
144
- }
145
-
146
- .top-bar__copy svg {
147
- width: 14px;
148
- height: 14px;
149
- fill: none;
150
- stroke: currentColor;
151
- stroke-width: 2;
152
- stroke-linecap: round;
153
- stroke-linejoin: round;
154
- }
155
-
156
- /* Copied state */
157
- .top-bar__copy.copied {
158
- color: var(--color-success);
159
- }
160
-
161
- .top-bar__copy.copied svg {
162
- /* Swap from copy icon to checkmark via CSS — JS swaps the class */
163
- }
164
-
165
- /* --------------------------------------------------------------------------
166
- Layout adjustments - push content below the top bar
167
- -------------------------------------------------------------------------- */
168
- .app-body {
169
- padding-top: var(--top-bar-height);
170
- }
171
-
172
- /* --------------------------------------------------------------------------
173
- Mobile tweaks
174
- -------------------------------------------------------------------------- */
175
- @media (max-width: 768px) {
176
- .top-bar__prompt {
177
- display: none;
178
- }
179
- }
180
- }
@@ -1,121 +0,0 @@
1
- /**
2
- * Typography Utilities
3
- *
4
- * Text styles, labels, and typography utilities.
5
- */
6
-
7
- @layer components {
8
- /* Labels - small uppercase text (consolidated definition) */
9
- .label,
10
- .detail-item-label,
11
- .stat-label,
12
- .expectation-label,
13
- .filter-title {
14
- font-size: var(--font-size-sm);
15
- color: var(--color-text-muted);
16
- text-transform: uppercase;
17
- letter-spacing: 0.025em;
18
- }
19
-
20
- .label-xs {
21
- font-size: var(--font-size-xs);
22
- }
23
-
24
- /* Match score label uses smaller font */
25
- .score-label {
26
- font-size: var(--font-size-xs);
27
- color: var(--color-text-muted);
28
- text-transform: uppercase;
29
- }
30
-
31
- /* Labels with bottom margin */
32
- .detail-item-label,
33
- .expectation-label {
34
- margin-bottom: var(--space-xs);
35
- }
36
-
37
- /* Filter title has bold weight and wider letter-spacing */
38
- .filter-title {
39
- font-weight: 600;
40
- color: var(--color-text-secondary);
41
- letter-spacing: 0.05em;
42
- }
43
-
44
- /* Text colors */
45
- .text-muted {
46
- color: var(--color-text-muted);
47
- }
48
-
49
- .text-light {
50
- color: var(--color-text-light);
51
- }
52
-
53
- .text-primary {
54
- color: var(--color-primary);
55
- }
56
-
57
- .text-success {
58
- color: var(--color-success);
59
- }
60
-
61
- .text-warning {
62
- color: var(--color-warning);
63
- }
64
-
65
- .text-error {
66
- color: var(--color-error);
67
- }
68
-
69
- /* Text alignment */
70
- .text-center {
71
- text-align: center;
72
- }
73
-
74
- .text-right {
75
- text-align: right;
76
- }
77
-
78
- /* Font sizes */
79
- .text-xs {
80
- font-size: var(--font-size-xs);
81
- }
82
-
83
- .text-sm {
84
- font-size: var(--font-size-sm);
85
- }
86
-
87
- .text-lg {
88
- font-size: var(--font-size-lg);
89
- }
90
-
91
- .text-xl {
92
- font-size: var(--font-size-xl);
93
- }
94
-
95
- .text-2xl {
96
- font-size: var(--font-size-2xl);
97
- }
98
-
99
- /* Font weight */
100
- .font-medium {
101
- font-weight: 500;
102
- }
103
-
104
- .font-semibold {
105
- font-weight: 600;
106
- }
107
-
108
- .font-bold {
109
- font-weight: 700;
110
- }
111
-
112
- /* Code inline */
113
- .code-inline {
114
- font-family: var(--font-family-mono);
115
- font-size: 0.9em;
116
- background: var(--color-bg);
117
- padding: 0.1em 0.4em;
118
- border-radius: var(--radius-sm);
119
- border: 1px solid var(--color-border);
120
- }
121
- }
@@ -1,41 +0,0 @@
1
- /**
2
- * Utility Classes
3
- *
4
- * Spacing utilities and helper classes.
5
- */
6
-
7
- @layer utilities {
8
- /* Margin top */
9
- .mt-sm {
10
- margin-top: var(--space-sm);
11
- }
12
-
13
- .mt-md {
14
- margin-top: var(--space-md);
15
- }
16
-
17
- .mt-lg {
18
- margin-top: var(--space-lg);
19
- }
20
-
21
- .mt-xl {
22
- margin-top: var(--space-xl);
23
- }
24
-
25
- /* Margin bottom */
26
- .mb-sm {
27
- margin-bottom: var(--space-sm);
28
- }
29
-
30
- .mb-md {
31
- margin-bottom: var(--space-md);
32
- }
33
-
34
- .mb-lg {
35
- margin-bottom: var(--space-lg);
36
- }
37
-
38
- .mb-xl {
39
- margin-bottom: var(--space-xl);
40
- }
41
- }
@@ -1,119 +0,0 @@
1
- /**
2
- * Detail Page Styles
3
- *
4
- * Shared styles for entity detail pages.
5
- */
6
-
7
- @layer pages {
8
- /* Expectation items */
9
- .expectation-item {
10
- background: var(--color-bg);
11
- padding: var(--space-md);
12
- border-radius: var(--radius-md);
13
- border-left: 4px solid var(--color-primary);
14
- }
15
-
16
- .expectation-value {
17
- font-weight: 500;
18
- }
19
-
20
- /* Question groups */
21
- .question-group {
22
- margin-bottom: var(--space-lg);
23
- padding: var(--space-md);
24
- background: var(--color-surface);
25
- border-radius: var(--radius-md);
26
- border: 1px solid var(--color-border);
27
- }
28
-
29
- .question-group-title {
30
- font-weight: 600;
31
- margin-bottom: var(--space-sm);
32
- display: flex;
33
- align-items: center;
34
- gap: var(--space-sm);
35
- }
36
-
37
- .question-list {
38
- margin-top: var(--space-md);
39
- }
40
-
41
- .question-text {
42
- padding: var(--space-sm) 0;
43
- color: var(--color-text-secondary);
44
- margin: 0;
45
- }
46
-
47
- /* Links list */
48
- .links-list {
49
- display: flex;
50
- flex-direction: column;
51
- gap: var(--space-sm);
52
- }
53
-
54
- .links-list a {
55
- display: inline-flex;
56
- align-items: center;
57
- gap: var(--space-xs);
58
- }
59
-
60
- /* Tools table (for skill detail page) */
61
- .tools-table {
62
- width: 100%;
63
- border-collapse: separate;
64
- border-spacing: 0;
65
- margin-top: var(--space-md);
66
- border: 1px solid var(--color-border);
67
- border-radius: var(--radius-lg);
68
- overflow: hidden;
69
- background: var(--color-surface);
70
- }
71
-
72
- /*
73
- * Table cells: 60px row height = 16px padding-top + 28px content + 16px padding-bottom
74
- * Matches list-item height for visual consistency
75
- */
76
- .tools-table th,
77
- .tools-table td {
78
- padding: var(--space-md) var(--space-lg);
79
- text-align: left;
80
- border-bottom: 1px solid var(--color-border);
81
- height: 60px;
82
- }
83
-
84
- .tools-table th {
85
- font-weight: 600;
86
- font-size: var(--font-size-sm);
87
- color: var(--color-text-secondary);
88
- background: var(--color-bg);
89
- text-transform: uppercase;
90
- letter-spacing: 0.025em;
91
- }
92
-
93
- .tools-table th:first-child {
94
- width: 260px;
95
- white-space: nowrap;
96
- }
97
-
98
- .tools-table td:first-child {
99
- white-space: nowrap;
100
- }
101
-
102
- .tools-table tbody tr:last-child td {
103
- border-bottom: none;
104
- }
105
-
106
- .tools-table tbody tr:hover {
107
- background: var(--color-bg);
108
- }
109
-
110
- /* See all link */
111
- .see-all-link {
112
- margin-top: var(--space-md);
113
- }
114
-
115
- .see-all-link a {
116
- color: var(--color-primary);
117
- font-size: var(--font-size-sm);
118
- }
119
- }
package/src/css/reset.css DELETED
@@ -1,50 +0,0 @@
1
- /**
2
- * CSS Reset
3
- *
4
- * Browser normalization and box-sizing reset.
5
- * This layer provides a consistent baseline across browsers.
6
- */
7
-
8
- @layer reset {
9
- *,
10
- *::before,
11
- *::after {
12
- box-sizing: border-box;
13
- }
14
-
15
- html {
16
- font-size: 16px;
17
- scroll-behavior: smooth;
18
- }
19
-
20
- body {
21
- margin: 0;
22
- }
23
-
24
- h1,
25
- h2,
26
- h3,
27
- h4,
28
- h5,
29
- h6 {
30
- margin: 0;
31
- line-height: 1;
32
- font-weight: 600;
33
- }
34
-
35
- p {
36
- margin: 0;
37
- }
38
-
39
- ul,
40
- ol {
41
- margin: 0;
42
- padding: 0;
43
- list-style: none;
44
- }
45
-
46
- table {
47
- width: 100%;
48
- border-collapse: collapse;
49
- }
50
- }
@@ -1,162 +0,0 @@
1
- /**
2
- * Design Tokens
3
- *
4
- * Single source of truth for colors, spacing, typography, and other
5
- * design decisions.
6
- */
7
-
8
- @layer tokens {
9
- :root {
10
- /* --------------------------------------------------------------------------
11
- Colors - Primary
12
- -------------------------------------------------------------------------- */
13
- --color-primary: #3b82f6;
14
- --color-primary-dark: #2563eb;
15
- --color-primary-light: #93c5fd;
16
-
17
- /* --------------------------------------------------------------------------
18
- Colors - Skill Types
19
- -------------------------------------------------------------------------- */
20
- --color-primary-skill: #ef4444;
21
- --color-primary-skill-light: #fecaca;
22
- --color-secondary: #f59e0b;
23
- --color-secondary-light: #fde68a;
24
- --color-broad: #10b981;
25
- --color-broad-light: #a7f3d0;
26
-
27
- /* --------------------------------------------------------------------------
28
- Colors - Skill Levels (1-5)
29
- -------------------------------------------------------------------------- */
30
- --color-level-1: #fecaca;
31
- --color-level-2: #fde68a;
32
- --color-level-3: #bbf7d0;
33
- --color-level-4: #a5f3fc;
34
- --color-level-5: #c4b5fd;
35
-
36
- /* --------------------------------------------------------------------------
37
- Colors - Behaviour Maturities (1-5)
38
- -------------------------------------------------------------------------- */
39
- --color-maturity-1: #fecaca;
40
- --color-maturity-2: #fde68a;
41
- --color-maturity-3: #bbf7d0;
42
- --color-maturity-4: #a5f3fc;
43
- --color-maturity-5: #c4b5fd;
44
-
45
- /* --------------------------------------------------------------------------
46
- Colors - Capabilities (text) - matches data/capabilities/*.yaml IDs
47
- -------------------------------------------------------------------------- */
48
- --color-cap-ai: #7c3aed; /* violet */
49
- --color-cap-business: #b45309; /* amber */
50
- --color-cap-data: #0f766e; /* teal */
51
- --color-cap-delivery: #dc2626; /* red */
52
- --color-cap-documentation: #15803d; /* green */
53
- --color-cap-ml: #9333ea; /* purple */
54
- --color-cap-people: #be185d; /* pink */
55
- --color-cap-process: #c2410c; /* orange */
56
- --color-cap-product: #4f46e5; /* indigo */
57
- --color-cap-reliability: #0891b2; /* cyan */
58
- --color-cap-scale: #1d4ed8; /* blue */
59
-
60
- /* --------------------------------------------------------------------------
61
- Colors - Capabilities (backgrounds)
62
- -------------------------------------------------------------------------- */
63
- --color-cap-ai-light: #ede9fe; /* violet */
64
- --color-cap-business-light: #fef3c7; /* amber */
65
- --color-cap-data-light: #ccfbf1; /* teal */
66
- --color-cap-delivery-light: #fecaca; /* red */
67
- --color-cap-documentation-light: #dcfce7; /* green */
68
- --color-cap-ml-light: #f3e8ff; /* purple */
69
- --color-cap-people-light: #fce7f3; /* pink */
70
- --color-cap-process-light: #ffedd5; /* orange */
71
- --color-cap-product-light: #e0e7ff; /* indigo */
72
- --color-cap-reliability-light: #cffafe; /* cyan */
73
- --color-cap-scale-light: #dbeafe; /* blue */
74
-
75
- /* --------------------------------------------------------------------------
76
- Colors - Neutrals
77
- -------------------------------------------------------------------------- */
78
- --color-bg: #f8fafc;
79
- --color-bg-secondary: #f1f5f9;
80
- --color-surface: #ffffff;
81
- --color-border: #e2e8f0;
82
- --color-text: #1e293b;
83
- --color-text-muted: #64748b;
84
- --color-text-secondary: #475569;
85
- --color-text-light: #94a3b8;
86
-
87
- /* --------------------------------------------------------------------------
88
- Colors - Status
89
- -------------------------------------------------------------------------- */
90
- --color-success: #10b981;
91
- --color-warning: #f59e0b;
92
- --color-error: #ef4444;
93
- --color-info: #3b82f6;
94
-
95
- /* --------------------------------------------------------------------------
96
- Colors - Graph Nodes (entity types)
97
- -------------------------------------------------------------------------- */
98
- --color-node-driver: #4caf50;
99
- --color-node-skill: #2196f3;
100
- --color-node-behaviour: #9c27b0;
101
- --color-node-discipline: #ff9800;
102
- --color-node-track: #00bcd4;
103
-
104
- /* --------------------------------------------------------------------------
105
- Spacing
106
- -------------------------------------------------------------------------- */
107
- --space-xs: 0.25rem;
108
- --space-sm: 0.5rem;
109
- --space-md: 1rem;
110
- --space-lg: 1.5rem;
111
- --space-xl: 2rem;
112
- --space-2xl: 3rem;
113
-
114
- /* --------------------------------------------------------------------------
115
- Border Radius
116
- -------------------------------------------------------------------------- */
117
- --radius-sm: 0.25rem;
118
- --radius-md: 0.5rem;
119
- --radius-lg: 0.75rem;
120
- --radius-xl: 1rem;
121
-
122
- /* --------------------------------------------------------------------------
123
- Shadows
124
- -------------------------------------------------------------------------- */
125
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
126
- --shadow-md:
127
- 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
128
- --shadow-lg:
129
- 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
130
-
131
- /* --------------------------------------------------------------------------
132
- Typography
133
- -------------------------------------------------------------------------- */
134
- --font-family:
135
- system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
136
- sans-serif;
137
- --font-family-mono:
138
- "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo,
139
- Consolas, monospace;
140
- --font-size-xs: 0.75rem;
141
- --font-size-sm: 0.875rem;
142
- --font-size-base: 1rem;
143
- --font-size-lg: 1.125rem;
144
- --font-size-xl: 1.25rem;
145
- --font-size-2xl: 1.5rem;
146
- --font-size-3xl: 2rem;
147
-
148
- /* --------------------------------------------------------------------------
149
- Layout
150
- -------------------------------------------------------------------------- */
151
- --max-width: 1400px;
152
- --drawer-width: 240px;
153
- --top-bar-height: 48px;
154
-
155
- /*
156
- * Responsive breakpoints (used in @media queries):
157
- * - 1280px: Tablet/laptop - layout stacking
158
- * - 768px: Mobile - drawer overlays instead of pushing content
159
- * - 640px: Mobile - full-width buttons, simplified layouts
160
- */
161
- }
162
- }
@@ -1,30 +0,0 @@
1
- /**
2
- * Handout View Styles
3
- *
4
- * Handout-specific styles that override slide view.
5
- */
6
-
7
- @layer handout {
8
- .handout-view {
9
- padding: var(--space-lg);
10
- }
11
-
12
- .handout-view .detail-page {
13
- margin-bottom: var(--space-xl);
14
- padding-bottom: var(--space-xl);
15
- border-bottom: 3px solid var(--color-border);
16
- }
17
-
18
- .handout-view .detail-page:last-child {
19
- border-bottom: none;
20
- margin-bottom: 0;
21
- padding-bottom: 0;
22
- }
23
-
24
- .handout-section-title {
25
- font-size: var(--font-size-xl);
26
- margin-bottom: var(--space-lg);
27
- padding-bottom: var(--space-sm);
28
- border-bottom: 2px solid var(--color-primary);
29
- }
30
- }