|
3 | 3 | /* All styles scoped to .hearts360-dashboard to prevent conflicts when embedding */ |
4 | 4 | .hearts360-dashboard { |
5 | 5 | --system-ui: system-ui, Roboto, Helvetica, Arial, sans-serif; |
6 | | - |
| 6 | + |
7 | 7 | font-family: var(--system-ui) !important; |
8 | 8 | background: #f8f8f8; |
9 | 9 | min-height: 100vh; |
10 | 10 | scroll-behavior: smooth; |
11 | 11 |
|
12 | 12 | /* Nested selectors - all scoped to .hearts360-dashboard */ |
13 | | - |
14 | | - a, select { |
| 13 | + |
| 14 | + a, |
| 15 | + select { |
15 | 16 | color: #0075eb; |
16 | 17 | &:hover { |
17 | 18 | color: #004f9f; |
|
280 | 281 | display: flex; |
281 | 282 | gap: 16px; |
282 | 283 | } |
283 | | - .navigation-title-image { |
284 | | - margin: -2px 8px 0 8px; |
285 | | - display: inline-block; |
286 | | - } |
287 | 284 | & .link-list { |
288 | 285 | display: flex; |
289 | 286 | justify-content: end; |
|
296 | 293 | content: " ↗"; |
297 | 294 | } |
298 | 295 | } |
299 | | - & a { |
300 | | - color: #fff; |
301 | | - display: inline-block; |
302 | | - padding: 4px 2px; |
303 | | - } |
304 | | - & span { |
305 | | - display: inline-block; |
306 | | - padding: 4px 2px; |
307 | | - } |
308 | 296 | } |
309 | | - |
310 | 297 | .link-dashboards { |
311 | 298 | font-size: 0.9rem; |
312 | 299 | margin: 0 0 1rem 0; |
|
968 | 955 | opacity: 1; |
969 | 956 | } |
970 | 957 |
|
| 958 | + /* Standard Nav Button Design System */ |
| 959 | + /* |
| 960 | + * Base class for all navigation buttons - provides consistent styling |
| 961 | + * Usage: Add 'nav-button-base' class to any button/link, or use specific variants |
| 962 | + * |
| 963 | + * Design Tokens: |
| 964 | + * - Color: White text on semi-transparent white background |
| 965 | + * - Padding: 8px 20px (standard), customizable per variant |
| 966 | + * - Border radius: 4px |
| 967 | + * - Font: 0.9em, weight 600 |
| 968 | + * - Hover: Slightly brighter background (0.3 opacity) |
| 969 | + * - Focus: White outline for accessibility |
| 970 | + */ |
| 971 | + .nav-button-base { |
| 972 | + /* Design tokens */ |
| 973 | + --nav-btn-color: #fff; |
| 974 | + --nav-btn-bg: rgba(255, 255, 255, 0.2); |
| 975 | + --nav-btn-bg-hover: rgba(255, 255, 255, 0.3); |
| 976 | + --nav-btn-bg-active: rgba(255, 255, 255, 0.25); |
| 977 | + --nav-btn-border-radius: 4px; |
| 978 | + --nav-btn-padding-x: 20px; |
| 979 | + --nav-btn-padding-y: 8px; |
| 980 | + --nav-btn-font-size: 0.9em; |
| 981 | + --nav-btn-font-weight: 600; |
| 982 | + --nav-btn-outline: 2px solid rgba(255, 255, 255, 0.5); |
| 983 | + |
| 984 | + /* Apply tokens */ |
| 985 | + color: var(--nav-btn-color); |
| 986 | + background: var(--nav-btn-bg); |
| 987 | + border-radius: var(--nav-btn-border-radius); |
| 988 | + font-weight: var(--nav-btn-font-weight); |
| 989 | + font-size: var(--nav-btn-font-size); |
| 990 | + border: none; |
| 991 | + cursor: pointer; |
| 992 | + text-decoration: none; |
| 993 | + display: inline-block; |
| 994 | + transition: background-color 0.2s ease; |
| 995 | + text-align: center; |
| 996 | + padding: var(--nav-btn-padding-y) var(--nav-btn-padding-x); |
| 997 | + |
| 998 | + @media screen and (min-width: 660px) { |
| 999 | + text-align: left; |
| 1000 | + } |
| 1001 | + |
| 1002 | + &:hover { |
| 1003 | + background-color: var(--nav-btn-bg-hover); |
| 1004 | + color: #fff; |
| 1005 | + } |
| 1006 | + |
| 1007 | + &:focus { |
| 1008 | + outline: var(--nav-btn-outline); |
| 1009 | + outline-offset: 2px; |
| 1010 | + } |
| 1011 | + |
| 1012 | + &:active { |
| 1013 | + background-color: var(--nav-btn-bg-active); |
| 1014 | + } |
| 1015 | + } |
| 1016 | + |
971 | 1017 | /* Selectors Container */ |
972 | 1018 | .selectors-container { |
973 | 1019 | display: flex; |
|
991 | 1037 | max-width: fit-content; |
992 | 1038 | display: inline-block; |
993 | 1039 | } |
| 1040 | + /* Region selector button - uses nav-button-base design */ |
994 | 1041 | .hover-button { |
995 | | - color: #fff; |
996 | | - background: rgba(255, 255, 255, 0.2); |
997 | | - padding: 8px 20px; |
998 | | - display: inline; |
999 | | - border-radius: 4px; |
1000 | | - font-weight: 600; |
1001 | 1042 | display: block; |
1002 | | - text-align: center; |
| 1043 | + width: 100%; |
| 1044 | + |
1003 | 1045 | @media screen and (min-width: 660px) { |
1004 | | - text-align: left; |
| 1046 | + width: auto; |
1005 | 1047 | } |
1006 | 1048 | } |
1007 | 1049 | .hover-button-hover-state { |
|
1134 | 1176 | } |
1135 | 1177 | } |
1136 | 1178 |
|
| 1179 | + /* Month selector - uses nav-button-base design with dropdown arrow */ |
1137 | 1180 | .month-select { |
1138 | | - color: #fff; |
1139 | | - background: rgba(255, 255, 255, 0.2); |
1140 | | - padding: 8px 20px; |
1141 | | - border-radius: 4px; |
1142 | | - font-weight: 600; |
1143 | | - border: none; |
1144 | | - display: block; |
1145 | | - width: 100%; |
1146 | | - text-align: center; |
1147 | | - cursor: pointer; |
1148 | | - font-size: 0.9em; |
1149 | | - @media screen and (min-width: 660px) { |
1150 | | - text-align: left; |
1151 | | - width: auto; |
1152 | | - } |
| 1181 | + --nav-btn-padding-x: 40px; /* Extra padding for dropdown arrow */ |
| 1182 | + padding-right: 40px; |
| 1183 | + padding-left: 20px; |
| 1184 | + |
1153 | 1185 | appearance: none; |
1154 | 1186 | background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="white"><path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" /></svg>'); |
1155 | 1187 | background-repeat: no-repeat; |
1156 | 1188 | background-position: right 8px center; |
1157 | 1189 | background-size: 16px; |
1158 | | - padding-right: 40px; |
1159 | 1190 |
|
| 1191 | + @media screen and (min-width: 660px) { |
| 1192 | + width: auto; |
| 1193 | + } |
| 1194 | + |
1160 | 1195 | option { |
1161 | 1196 | background: #fff; |
1162 | 1197 | color: #333; |
1163 | 1198 | } |
1164 | | - |
1165 | | - &:hover { |
1166 | | - background-color: rgba(255, 255, 255, 0.3); |
1167 | | - color: #fff; |
1168 | | - } |
1169 | | - |
1170 | | - &:focus { |
1171 | | - outline: 2px solid rgba(255, 255, 255, 0.5); |
1172 | | - outline-offset: 2px; |
1173 | | - } |
1174 | 1199 | } |
1175 | 1200 |
|
1176 | 1201 | .hidden { |
|
1187 | 1212 | } |
1188 | 1213 | } |
1189 | 1214 |
|
| 1215 | + /* Language selector button - uses nav-button-base design with flex layout */ |
1190 | 1216 | .language-select-button { |
1191 | | - color: #fff; |
1192 | | - background: rgba(255, 255, 255, 0.2); |
1193 | | - padding: 8px 20px; |
1194 | | - border-radius: 4px; |
1195 | | - font-weight: 600; |
1196 | | - border: none; |
1197 | 1217 | display: flex; |
1198 | 1218 | align-items: center; |
1199 | 1219 | justify-content: center; |
1200 | 1220 | gap: 0.5rem; |
1201 | 1221 | width: 100%; |
1202 | | - text-align: center; |
1203 | | - cursor: pointer; |
1204 | | - font-size: 0.9em; |
| 1222 | + |
1205 | 1223 | @media screen and (min-width: 660px) { |
1206 | | - text-align: left; |
1207 | 1224 | width: auto; |
1208 | 1225 | } |
1209 | | - |
1210 | | - &:hover { |
1211 | | - background-color: rgba(255, 255, 255, 0.3); |
1212 | | - } |
1213 | | - |
1214 | | - &:focus { |
1215 | | - outline: 2px solid rgba(255, 255, 255, 0.5); |
1216 | | - outline-offset: 2px; |
1217 | | - } |
1218 | 1226 | } |
1219 | 1227 |
|
1220 | 1228 | .language-select-arrow { |
|
1247 | 1255 | font-size: 0.875rem; |
1248 | 1256 | color: #333; |
1249 | 1257 | transition: background-color 0.2s ease; |
1250 | | - |
| 1258 | + |
1251 | 1259 | &:first-child { |
1252 | 1260 | border-radius: 4px 4px 0 0; |
1253 | 1261 | } |
1254 | | - |
| 1262 | + |
1255 | 1263 | &:last-child { |
1256 | 1264 | border-radius: 0 0 4px 4px; |
1257 | 1265 | } |
1258 | | - |
| 1266 | + |
1259 | 1267 | &:hover { |
1260 | 1268 | background-color: #f3f4f6; |
1261 | 1269 | } |
1262 | | - |
| 1270 | + |
1263 | 1271 | &.language-menu-item-active { |
1264 | 1272 | background-color: #eff6ff; |
1265 | 1273 | font-weight: 600; |
1266 | 1274 | } |
1267 | 1275 | } |
1268 | 1276 |
|
1269 | | - /* Upload Button */ |
1270 | | - .upload-button { |
1271 | | - color: #fff; |
1272 | | - background: rgba(255, 255, 255, 0.2); |
1273 | | - padding: 8px 20px; |
1274 | | - border-radius: 4px; |
1275 | | - font-weight: 600; |
| 1277 | + /* Upload Button - uses nav-button-base standard design */ |
| 1278 | + .upload-button & a:hover { |
1276 | 1279 | text-decoration: none; |
1277 | | - display: block; |
1278 | | - width: 100%; |
1279 | | - text-align: center; |
1280 | | - font-size: 0.9em; |
1281 | | - cursor: pointer; |
1282 | | - @media screen and (min-width: 660px) { |
1283 | | - text-align: left; |
1284 | | - width: auto; |
1285 | | - } |
1286 | | - |
1287 | | - &:hover { |
1288 | | - background-color: rgba(255, 255, 255, 0.3); |
1289 | | - } |
1290 | | - |
1291 | | - &:focus { |
1292 | | - outline: 2px solid rgba(255, 255, 255, 0.5); |
1293 | | - outline-offset: 2px; |
1294 | | - } |
1295 | 1280 | } |
1296 | 1281 |
|
1297 | 1282 | .search-results { |
|
0 commit comments