@govnepal/css 0.2.1 → 0.4.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.
- package/dist/civic-calm.css +645 -1
- package/package.json +1 -1
package/dist/civic-calm.css
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Civic Calm — @govnepal/css
|
|
3
3
|
* The framework-agnostic visual layer. Semantic HTML plus .gov-* classes; no JavaScript.
|
|
4
|
-
* Built against design-guidelines 0.2.0-dev (
|
|
4
|
+
* Built against design-guidelines 0.2.0-dev (43560eec).
|
|
5
5
|
*
|
|
6
6
|
* This stylesheet holds ALL of Civic Calm's visual decisions. @govnepal/ui adds only behavior
|
|
7
7
|
* (ARIA, keyboard, focus management) on top of these classes — so a plain-HTML site or a CMS
|
|
@@ -802,6 +802,144 @@ a:visited,
|
|
|
802
802
|
color: var(--gov-color-text-placeholder);
|
|
803
803
|
}
|
|
804
804
|
|
|
805
|
+
/* Toggle switch, textarea, character count (components/toggle.md, textarea.md, character-count.md). */
|
|
806
|
+
|
|
807
|
+
/* Toggle — on/off with immediate effect; the ON state is interactive, therefore blue (§5.2), and
|
|
808
|
+
* the state is shown by more than colour (position + label/word), never colour alone (§4.1). */
|
|
809
|
+
.gov-toggle {
|
|
810
|
+
display: inline-flex;
|
|
811
|
+
align-items: center;
|
|
812
|
+
gap: var(--gov-space-3);
|
|
813
|
+
cursor: pointer;
|
|
814
|
+
min-block-size: var(--gov-target-min-size);
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
.gov-toggle__track {
|
|
818
|
+
position: relative;
|
|
819
|
+
inline-size: 44px;
|
|
820
|
+
block-size: 24px;
|
|
821
|
+
flex-shrink: 0;
|
|
822
|
+
border-radius: var(--gov-radius-full);
|
|
823
|
+
background: var(--gov-color-control-track);
|
|
824
|
+
border: var(--gov-border-width-md) solid var(--gov-color-border-input);
|
|
825
|
+
transition: background-color var(--gov-motion-duration-fast) var(--gov-motion-easing-standard);
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
.gov-toggle__handle {
|
|
829
|
+
position: absolute;
|
|
830
|
+
inset-block-start: 1px;
|
|
831
|
+
inset-inline-start: 1px;
|
|
832
|
+
inline-size: 18px;
|
|
833
|
+
block-size: 18px;
|
|
834
|
+
border-radius: var(--gov-radius-full);
|
|
835
|
+
background: var(--gov-color-control-handle);
|
|
836
|
+
transition: transform var(--gov-motion-duration-fast) var(--gov-motion-easing-standard);
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
.gov-toggle[aria-checked="true"] .gov-toggle__track {
|
|
840
|
+
background: var(--gov-color-control-indicator);
|
|
841
|
+
border-color: var(--gov-color-control-indicator);
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
.gov-toggle[aria-checked="true"] .gov-toggle__handle {
|
|
845
|
+
transform: translateX(20px);
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
/* Textarea — multi-line free text; shares the input border/error treatment. */
|
|
849
|
+
.gov-textarea {
|
|
850
|
+
inline-size: 100%;
|
|
851
|
+
min-block-size: calc(var(--gov-type-body-line-height) * 3);
|
|
852
|
+
padding: var(--gov-space-3);
|
|
853
|
+
background: var(--gov-color-background-surface);
|
|
854
|
+
color: var(--gov-color-text-primary);
|
|
855
|
+
border: var(--gov-border-width-md) solid var(--gov-color-border-input);
|
|
856
|
+
border-radius: var(--gov-radius-sm);
|
|
857
|
+
resize: vertical;
|
|
858
|
+
font-family: var(--gov-font-family-ui);
|
|
859
|
+
font-size: var(--gov-type-body-font-size);
|
|
860
|
+
line-height: var(--gov-type-body-line-height);
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
.gov-textarea[aria-invalid="true"] {
|
|
864
|
+
border-color: var(--gov-color-status-error-border);
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
/* Character count — a polite remaining-characters message below a limited field. */
|
|
868
|
+
.gov-character-count {
|
|
869
|
+
color: var(--gov-color-text-secondary);
|
|
870
|
+
font-size: var(--gov-type-small-font-size);
|
|
871
|
+
line-height: var(--gov-type-small-line-height);
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
.gov-character-count--over {
|
|
875
|
+
color: var(--gov-color-status-error-text);
|
|
876
|
+
font-weight: var(--gov-font-weight-medium);
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
/* OTP, password, search, masked value (components/otp-input.md, password-input.md, search-box.md,
|
|
880
|
+
* masked-value.md). Password and amount reuse .gov-input; these add what's specific. */
|
|
881
|
+
|
|
882
|
+
/* OTP — segmented numeric boxes; a single accessible field underneath in the behavior layer. */
|
|
883
|
+
.gov-otp {
|
|
884
|
+
display: flex;
|
|
885
|
+
gap: var(--gov-space-2);
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
.gov-otp__box {
|
|
889
|
+
inline-size: 3ch;
|
|
890
|
+
min-block-size: var(--gov-target-min-size);
|
|
891
|
+
padding: var(--gov-space-2);
|
|
892
|
+
text-align: center;
|
|
893
|
+
font-family: var(--gov-font-family-mono);
|
|
894
|
+
font-size: var(--gov-type-body-large-font-size);
|
|
895
|
+
background: var(--gov-color-background-surface);
|
|
896
|
+
border: var(--gov-border-width-md) solid var(--gov-color-border-input);
|
|
897
|
+
border-radius: var(--gov-radius-sm);
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
/* Password — a field with a trailing show/hide toggle. */
|
|
901
|
+
.gov-password {
|
|
902
|
+
display: flex;
|
|
903
|
+
align-items: stretch;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
.gov-password .gov-input {
|
|
907
|
+
border-start-end-radius: 0;
|
|
908
|
+
border-end-end-radius: 0;
|
|
909
|
+
flex: 1;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
.gov-password__toggle {
|
|
913
|
+
display: inline-flex;
|
|
914
|
+
align-items: center;
|
|
915
|
+
padding-inline: var(--gov-space-3);
|
|
916
|
+
border: var(--gov-border-width-md) solid var(--gov-color-border-input);
|
|
917
|
+
border-inline-start: 0;
|
|
918
|
+
border-start-end-radius: var(--gov-radius-sm);
|
|
919
|
+
border-end-end-radius: var(--gov-radius-sm);
|
|
920
|
+
background: var(--gov-color-background-secondary);
|
|
921
|
+
color: var(--gov-color-action-secondary-text);
|
|
922
|
+
cursor: pointer;
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
/* Search — a field with a leading icon and a submit. */
|
|
926
|
+
.gov-search {
|
|
927
|
+
display: flex;
|
|
928
|
+
gap: var(--gov-space-2);
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
.gov-search .gov-input {
|
|
932
|
+
flex: 1;
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
/* Masked value — a monospace value plus a reveal control. */
|
|
936
|
+
.gov-masked {
|
|
937
|
+
display: inline-flex;
|
|
938
|
+
align-items: center;
|
|
939
|
+
gap: var(--gov-space-2);
|
|
940
|
+
font-family: var(--gov-font-family-mono);
|
|
941
|
+
}
|
|
942
|
+
|
|
805
943
|
/* Details (components/details.md) and warning text (components/warning-text.md).
|
|
806
944
|
*
|
|
807
945
|
* Details is native <details>/<summary> — the platform's own disclosure semantics, so a screen
|
|
@@ -1010,6 +1148,44 @@ a:visited,
|
|
|
1010
1148
|
color: var(--gov-color-text-on-action);
|
|
1011
1149
|
}
|
|
1012
1150
|
|
|
1151
|
+
/* Cookie banner and offline banner (components/cookie-banner.md, offline-banner.md). */
|
|
1152
|
+
|
|
1153
|
+
/* Cookie banner — non-blocking; Reject exactly as prominent as Accept (§9.1.2). */
|
|
1154
|
+
.gov-cookie-banner {
|
|
1155
|
+
position: fixed;
|
|
1156
|
+
inset-inline: 0;
|
|
1157
|
+
inset-block-end: 0;
|
|
1158
|
+
z-index: var(--gov-z-sticky);
|
|
1159
|
+
background: var(--gov-color-background-surface);
|
|
1160
|
+
border-block-start: var(--gov-border-width-md) solid var(--gov-color-border-strong);
|
|
1161
|
+
box-shadow: var(--gov-elevation-2);
|
|
1162
|
+
padding: var(--gov-space-4) 0;
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
.gov-cookie-banner__inner {
|
|
1166
|
+
display: flex;
|
|
1167
|
+
flex-wrap: wrap;
|
|
1168
|
+
align-items: center;
|
|
1169
|
+
gap: var(--gov-space-4);
|
|
1170
|
+
justify-content: space-between;
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
.gov-cookie-banner__actions {
|
|
1174
|
+
display: flex;
|
|
1175
|
+
gap: var(--gov-space-3);
|
|
1176
|
+
}
|
|
1177
|
+
|
|
1178
|
+
/* Offline banner — warning treatment, below the header, clears on reconnect. */
|
|
1179
|
+
.gov-offline-banner {
|
|
1180
|
+
display: flex;
|
|
1181
|
+
align-items: flex-start;
|
|
1182
|
+
gap: var(--gov-space-2);
|
|
1183
|
+
padding: var(--gov-space-3) var(--gov-space-4);
|
|
1184
|
+
background: var(--gov-color-status-warning-background);
|
|
1185
|
+
color: var(--gov-color-status-warning-text);
|
|
1186
|
+
border-block-end: var(--gov-border-width-lg) solid var(--gov-color-status-warning-border);
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1013
1189
|
/* Status badge (components/badge.md).
|
|
1014
1190
|
*
|
|
1015
1191
|
* Renders the official status taxonomy (data/status-taxonomy.yaml) — Draft, Submitted, Under
|
|
@@ -1072,6 +1248,358 @@ a:visited,
|
|
|
1072
1248
|
color: var(--gov-color-status-error-text);
|
|
1073
1249
|
}
|
|
1074
1250
|
|
|
1251
|
+
/* Card (components/card.md) — group everything about one subject into one bounded, opaque surface.
|
|
1252
|
+
* Low shadow, per Civic Calm's restraint (§2.1); surfaces are always fully opaque (§5.2). */
|
|
1253
|
+
.gov-card {
|
|
1254
|
+
background: var(--gov-color-background-surface);
|
|
1255
|
+
border: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1256
|
+
border-radius: var(--gov-radius-lg);
|
|
1257
|
+
padding: var(--gov-space-6);
|
|
1258
|
+
box-shadow: var(--gov-elevation-1);
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
.gov-card > * + * {
|
|
1262
|
+
margin-block-start: var(--gov-space-3);
|
|
1263
|
+
}
|
|
1264
|
+
|
|
1265
|
+
/* The interactive variant makes the WHOLE card one link/target — never nest independent links
|
|
1266
|
+
* inside it (a nested-interactive failure). */
|
|
1267
|
+
.gov-card--interactive {
|
|
1268
|
+
display: block;
|
|
1269
|
+
color: inherit;
|
|
1270
|
+
text-decoration: none;
|
|
1271
|
+
cursor: pointer;
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
.gov-card--interactive:hover {
|
|
1275
|
+
border-color: var(--gov-color-border-strong);
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
/* Icon button (components/icon-button.md) — an icon-only action with a required accessible name.
|
|
1279
|
+
* 44x44 minimum hit area even though the icon is smaller; never a primary action (§5.4). */
|
|
1280
|
+
.gov-icon-button {
|
|
1281
|
+
display: inline-flex;
|
|
1282
|
+
align-items: center;
|
|
1283
|
+
justify-content: center;
|
|
1284
|
+
min-inline-size: var(--gov-target-min-size);
|
|
1285
|
+
min-block-size: var(--gov-target-min-size);
|
|
1286
|
+
padding: var(--gov-space-2);
|
|
1287
|
+
border: 0;
|
|
1288
|
+
border-radius: var(--gov-radius-sm);
|
|
1289
|
+
background: transparent;
|
|
1290
|
+
color: var(--gov-color-text-primary);
|
|
1291
|
+
cursor: pointer;
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1294
|
+
.gov-icon-button:hover {
|
|
1295
|
+
background: var(--gov-color-interactive-hover-surface);
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
.gov-icon-button:active {
|
|
1299
|
+
background: var(--gov-color-interactive-pressed-surface);
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
.gov-icon-button[disabled],
|
|
1303
|
+
.gov-icon-button[aria-disabled="true"] {
|
|
1304
|
+
color: var(--gov-color-text-disabled);
|
|
1305
|
+
cursor: not-allowed;
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1308
|
+
.gov-icon-button__icon {
|
|
1309
|
+
inline-size: var(--gov-icon-size-md);
|
|
1310
|
+
block-size: var(--gov-icon-size-md);
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
[data-density="kiosk-counter"] .gov-icon-button {
|
|
1314
|
+
min-inline-size: var(--gov-target-recommended-size);
|
|
1315
|
+
min-block-size: var(--gov-target-recommended-size);
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1318
|
+
/* Modal, confirmation dialog, and toast (components/modal.md, confirmation-dialog.md, toast.md).
|
|
1319
|
+
* Overlays sit above content; surfaces stay fully opaque even over the scrim (§5.2). */
|
|
1320
|
+
|
|
1321
|
+
.gov-modal__scrim {
|
|
1322
|
+
position: fixed;
|
|
1323
|
+
inset: 0;
|
|
1324
|
+
z-index: var(--gov-z-overlay);
|
|
1325
|
+
background: var(--gov-color-overlay-scrim);
|
|
1326
|
+
display: flex;
|
|
1327
|
+
align-items: center;
|
|
1328
|
+
justify-content: center;
|
|
1329
|
+
padding: var(--gov-space-4);
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1332
|
+
.gov-modal {
|
|
1333
|
+
position: relative;
|
|
1334
|
+
z-index: var(--gov-z-modal);
|
|
1335
|
+
inline-size: 100%;
|
|
1336
|
+
max-inline-size: 32rem;
|
|
1337
|
+
max-block-size: calc(100vh - var(--gov-space-8));
|
|
1338
|
+
overflow: auto;
|
|
1339
|
+
background: var(--gov-color-background-surface);
|
|
1340
|
+
border-radius: var(--gov-radius-lg);
|
|
1341
|
+
padding: var(--gov-space-6);
|
|
1342
|
+
box-shadow: var(--gov-elevation-3);
|
|
1343
|
+
}
|
|
1344
|
+
|
|
1345
|
+
.gov-modal__title {
|
|
1346
|
+
font-size: var(--gov-type-h3-font-size);
|
|
1347
|
+
line-height: var(--gov-type-h3-line-height);
|
|
1348
|
+
font-weight: var(--gov-font-weight-semibold);
|
|
1349
|
+
margin-block-end: var(--gov-space-3);
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
.gov-modal__actions {
|
|
1353
|
+
display: flex;
|
|
1354
|
+
flex-wrap: wrap;
|
|
1355
|
+
gap: var(--gov-space-3);
|
|
1356
|
+
margin-block-start: var(--gov-space-6);
|
|
1357
|
+
}
|
|
1358
|
+
|
|
1359
|
+
/* Toast — a small floating confirmation that auto-dismisses. Success/info only, never errors. */
|
|
1360
|
+
.gov-toast-region {
|
|
1361
|
+
position: fixed;
|
|
1362
|
+
inset-block-end: var(--gov-space-6);
|
|
1363
|
+
inset-inline: 0;
|
|
1364
|
+
z-index: var(--gov-z-toast);
|
|
1365
|
+
display: flex;
|
|
1366
|
+
flex-direction: column;
|
|
1367
|
+
align-items: center;
|
|
1368
|
+
gap: var(--gov-space-2);
|
|
1369
|
+
pointer-events: none;
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
.gov-toast {
|
|
1373
|
+
display: inline-flex;
|
|
1374
|
+
align-items: center;
|
|
1375
|
+
gap: var(--gov-space-2);
|
|
1376
|
+
padding: var(--gov-space-3) var(--gov-space-4);
|
|
1377
|
+
border-radius: var(--gov-radius-md);
|
|
1378
|
+
box-shadow: var(--gov-elevation-2);
|
|
1379
|
+
pointer-events: auto;
|
|
1380
|
+
}
|
|
1381
|
+
|
|
1382
|
+
.gov-toast--success {
|
|
1383
|
+
background: var(--gov-color-status-success-background);
|
|
1384
|
+
color: var(--gov-color-status-success-text);
|
|
1385
|
+
border: var(--gov-border-width-sm) solid var(--gov-color-status-success-border);
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
.gov-toast--info {
|
|
1389
|
+
background: var(--gov-color-status-info-background);
|
|
1390
|
+
color: var(--gov-color-status-info-text);
|
|
1391
|
+
border: var(--gov-border-width-sm) solid var(--gov-color-status-info-border);
|
|
1392
|
+
}
|
|
1393
|
+
|
|
1394
|
+
/* Tag and summary list (components/tag.md, summary-list.md). */
|
|
1395
|
+
|
|
1396
|
+
/* Tag — a neutral categorical label, NEVER a status colour (that belongs to badge). */
|
|
1397
|
+
.gov-tag {
|
|
1398
|
+
display: inline-flex;
|
|
1399
|
+
align-items: center;
|
|
1400
|
+
gap: var(--gov-space-1);
|
|
1401
|
+
padding-inline: var(--gov-space-2);
|
|
1402
|
+
padding-block: var(--gov-space-1);
|
|
1403
|
+
border-radius: var(--gov-radius-full);
|
|
1404
|
+
background: var(--gov-color-background-secondary);
|
|
1405
|
+
color: var(--gov-color-text-secondary);
|
|
1406
|
+
border: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1407
|
+
font-size: var(--gov-type-small-font-size);
|
|
1408
|
+
font-weight: var(--gov-font-weight-medium);
|
|
1409
|
+
white-space: nowrap;
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
/* Summary list — review-your-answers rows (key / value / change). */
|
|
1413
|
+
.gov-summary-list {
|
|
1414
|
+
margin: 0;
|
|
1415
|
+
}
|
|
1416
|
+
|
|
1417
|
+
.gov-summary-list__row {
|
|
1418
|
+
display: grid;
|
|
1419
|
+
gap: var(--gov-space-2) var(--gov-space-4);
|
|
1420
|
+
grid-template-columns: 1fr;
|
|
1421
|
+
padding-block: var(--gov-space-3);
|
|
1422
|
+
border-block-end: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1423
|
+
break-inside: avoid;
|
|
1424
|
+
}
|
|
1425
|
+
|
|
1426
|
+
@media (min-width: 640px) {
|
|
1427
|
+
.gov-summary-list__row {
|
|
1428
|
+
grid-template-columns: 1fr 2fr auto;
|
|
1429
|
+
align-items: baseline;
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
|
|
1433
|
+
.gov-summary-list__key {
|
|
1434
|
+
font-weight: var(--gov-font-weight-medium);
|
|
1435
|
+
margin: 0;
|
|
1436
|
+
}
|
|
1437
|
+
|
|
1438
|
+
.gov-summary-list__value {
|
|
1439
|
+
margin: 0;
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
.gov-summary-list__action {
|
|
1443
|
+
justify-self: start;
|
|
1444
|
+
}
|
|
1445
|
+
|
|
1446
|
+
/* Table (components/table.md) — semantic rows/columns for comparison. */
|
|
1447
|
+
.gov-table {
|
|
1448
|
+
inline-size: 100%;
|
|
1449
|
+
border-collapse: collapse;
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1452
|
+
.gov-table caption {
|
|
1453
|
+
text-align: start;
|
|
1454
|
+
font-weight: var(--gov-font-weight-semibold);
|
|
1455
|
+
margin-block-end: var(--gov-space-2);
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
.gov-table th,
|
|
1459
|
+
.gov-table td {
|
|
1460
|
+
text-align: start;
|
|
1461
|
+
padding: var(--gov-space-2) var(--gov-space-3);
|
|
1462
|
+
border-block-end: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
.gov-table th {
|
|
1466
|
+
background: var(--gov-color-background-secondary);
|
|
1467
|
+
font-weight: var(--gov-font-weight-semibold);
|
|
1468
|
+
}
|
|
1469
|
+
|
|
1470
|
+
.gov-table__num {
|
|
1471
|
+
text-align: end;
|
|
1472
|
+
font-variant-numeric: tabular-nums;
|
|
1473
|
+
}
|
|
1474
|
+
|
|
1475
|
+
.gov-table--sticky thead th {
|
|
1476
|
+
position: sticky;
|
|
1477
|
+
inset-block-start: 0;
|
|
1478
|
+
z-index: var(--gov-z-sticky);
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
/* Empty state and loading state (components/empty-state.md, loading-state.md). */
|
|
1482
|
+
.gov-empty-state {
|
|
1483
|
+
text-align: center;
|
|
1484
|
+
padding-block: var(--gov-space-8);
|
|
1485
|
+
color: var(--gov-color-text-secondary);
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1488
|
+
.gov-empty-state__title {
|
|
1489
|
+
font-size: var(--gov-type-h3-font-size);
|
|
1490
|
+
line-height: var(--gov-type-h3-line-height);
|
|
1491
|
+
font-weight: var(--gov-font-weight-semibold);
|
|
1492
|
+
color: var(--gov-color-text-primary);
|
|
1493
|
+
margin-block-end: var(--gov-space-2);
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1496
|
+
.gov-empty-state__action {
|
|
1497
|
+
margin-block-start: var(--gov-space-4);
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
/* Spinner — the one sanctioned continuous loop (§5.5); stops under reduced-motion. */
|
|
1501
|
+
.gov-spinner {
|
|
1502
|
+
display: inline-block;
|
|
1503
|
+
inline-size: var(--gov-icon-size-lg, 24px);
|
|
1504
|
+
block-size: var(--gov-icon-size-lg, 24px);
|
|
1505
|
+
border: var(--gov-border-width-md) solid var(--gov-color-border-default);
|
|
1506
|
+
border-block-start-color: var(--gov-color-control-indicator);
|
|
1507
|
+
border-radius: var(--gov-radius-full);
|
|
1508
|
+
animation: gov-spin var(--gov-motion-duration-slow) linear infinite;
|
|
1509
|
+
}
|
|
1510
|
+
|
|
1511
|
+
@keyframes gov-spin {
|
|
1512
|
+
to { transform: rotate(360deg); }
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1516
|
+
.gov-spinner { animation: none; }
|
|
1517
|
+
}
|
|
1518
|
+
[data-reduced-motion="true"] .gov-spinner { animation: none; }
|
|
1519
|
+
|
|
1520
|
+
/* Skeleton — pulses no faster than slow (a fast pulse reads as error, §5.5). */
|
|
1521
|
+
.gov-skeleton {
|
|
1522
|
+
background: var(--gov-color-background-secondary);
|
|
1523
|
+
border-radius: var(--gov-radius-md);
|
|
1524
|
+
animation: gov-pulse var(--gov-motion-duration-slow) ease-in-out infinite alternate;
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
@keyframes gov-pulse {
|
|
1528
|
+
to { opacity: 0.5; }
|
|
1529
|
+
}
|
|
1530
|
+
|
|
1531
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1532
|
+
.gov-skeleton { animation: none; }
|
|
1533
|
+
}
|
|
1534
|
+
[data-reduced-motion="true"] .gov-skeleton { animation: none; }
|
|
1535
|
+
|
|
1536
|
+
/* Accordion (components/accordion.md) — several independent expandable sections. */
|
|
1537
|
+
.gov-accordion {
|
|
1538
|
+
border-block-start: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
.gov-accordion__section {
|
|
1542
|
+
border-block-end: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
.gov-accordion__header {
|
|
1546
|
+
inline-size: 100%;
|
|
1547
|
+
display: flex;
|
|
1548
|
+
align-items: center;
|
|
1549
|
+
gap: var(--gov-space-2);
|
|
1550
|
+
justify-content: space-between;
|
|
1551
|
+
min-block-size: var(--gov-target-min-size);
|
|
1552
|
+
padding: var(--gov-space-3) 0;
|
|
1553
|
+
background: transparent;
|
|
1554
|
+
border: 0;
|
|
1555
|
+
text-align: start;
|
|
1556
|
+
font-weight: var(--gov-font-weight-medium);
|
|
1557
|
+
color: var(--gov-color-text-primary);
|
|
1558
|
+
cursor: pointer;
|
|
1559
|
+
}
|
|
1560
|
+
|
|
1561
|
+
.gov-accordion__chevron {
|
|
1562
|
+
inline-size: var(--gov-icon-size-md);
|
|
1563
|
+
block-size: var(--gov-icon-size-md);
|
|
1564
|
+
flex-shrink: 0;
|
|
1565
|
+
transition: transform var(--gov-motion-duration-base) var(--gov-motion-easing-standard);
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
.gov-accordion__header[aria-expanded="true"] .gov-accordion__chevron {
|
|
1569
|
+
transform: rotate(180deg);
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1572
|
+
.gov-accordion__panel {
|
|
1573
|
+
padding-block-end: var(--gov-space-4);
|
|
1574
|
+
color: var(--gov-color-text-secondary);
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
/* Progress bar (components/progress-bar.md) — determinate, forward-only, with a text percentage. */
|
|
1578
|
+
.gov-progress {
|
|
1579
|
+
display: flex;
|
|
1580
|
+
flex-direction: column;
|
|
1581
|
+
gap: var(--gov-space-2);
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1584
|
+
.gov-progress__track {
|
|
1585
|
+
block-size: 8px;
|
|
1586
|
+
background: var(--gov-color-control-track);
|
|
1587
|
+
border-radius: var(--gov-radius-full);
|
|
1588
|
+
overflow: hidden;
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
.gov-progress__fill {
|
|
1592
|
+
block-size: 100%;
|
|
1593
|
+
background: var(--gov-color-control-indicator);
|
|
1594
|
+
border-radius: var(--gov-radius-full);
|
|
1595
|
+
transition: inline-size var(--gov-motion-duration-base) var(--gov-motion-easing-standard);
|
|
1596
|
+
}
|
|
1597
|
+
|
|
1598
|
+
.gov-progress__label {
|
|
1599
|
+
font-size: var(--gov-type-small-font-size);
|
|
1600
|
+
color: var(--gov-color-text-secondary);
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1075
1603
|
/* Phase banner (components/phase-banner.md), stepper (components/stepper.md), and language
|
|
1076
1604
|
* switcher (components/language-switcher.md) — the standalone navigation pieces. */
|
|
1077
1605
|
|
|
@@ -1186,6 +1714,122 @@ a:visited,
|
|
|
1186
1714
|
color: var(--gov-color-text-secondary);
|
|
1187
1715
|
}
|
|
1188
1716
|
|
|
1717
|
+
/* Breadcrumb, tabs, pagination, footer (components/breadcrumb.md, tabs.md, pagination.md, footer.md). */
|
|
1718
|
+
|
|
1719
|
+
/* Breadcrumb — hierarchy links, current page as plain text. */
|
|
1720
|
+
.gov-breadcrumb {
|
|
1721
|
+
display: flex;
|
|
1722
|
+
flex-wrap: wrap;
|
|
1723
|
+
align-items: center;
|
|
1724
|
+
gap: var(--gov-space-2);
|
|
1725
|
+
list-style: none;
|
|
1726
|
+
padding: 0;
|
|
1727
|
+
color: var(--gov-color-text-secondary);
|
|
1728
|
+
font-size: var(--gov-type-small-font-size);
|
|
1729
|
+
}
|
|
1730
|
+
|
|
1731
|
+
.gov-breadcrumb__sep {
|
|
1732
|
+
color: var(--gov-color-text-secondary);
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
.gov-breadcrumb [aria-current="page"] {
|
|
1736
|
+
color: var(--gov-color-text-primary);
|
|
1737
|
+
font-weight: var(--gov-font-weight-medium);
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1740
|
+
/* Tabs — the selected tab marked by weight + underline, never colour alone. */
|
|
1741
|
+
.gov-tabs__list {
|
|
1742
|
+
display: flex;
|
|
1743
|
+
flex-wrap: wrap;
|
|
1744
|
+
gap: var(--gov-space-2);
|
|
1745
|
+
border-block-end: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1746
|
+
}
|
|
1747
|
+
|
|
1748
|
+
.gov-tabs__tab {
|
|
1749
|
+
min-block-size: var(--gov-target-min-size);
|
|
1750
|
+
padding: var(--gov-space-3) var(--gov-space-4);
|
|
1751
|
+
border: 0;
|
|
1752
|
+
background: transparent;
|
|
1753
|
+
color: var(--gov-color-text-secondary);
|
|
1754
|
+
cursor: pointer;
|
|
1755
|
+
border-block-end: var(--gov-border-width-md) solid transparent;
|
|
1756
|
+
margin-block-end: calc(-1 * var(--gov-border-width-sm));
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
.gov-tabs__tab[aria-selected="true"] {
|
|
1760
|
+
color: var(--gov-color-text-primary);
|
|
1761
|
+
font-weight: var(--gov-font-weight-semibold);
|
|
1762
|
+
border-block-end-color: var(--gov-color-interactive-selected-indicator);
|
|
1763
|
+
}
|
|
1764
|
+
|
|
1765
|
+
.gov-tabs__panel {
|
|
1766
|
+
padding-block-start: var(--gov-space-4);
|
|
1767
|
+
}
|
|
1768
|
+
|
|
1769
|
+
/* Pagination — numbered links, current marked by more than colour. */
|
|
1770
|
+
.gov-pagination {
|
|
1771
|
+
display: flex;
|
|
1772
|
+
flex-wrap: wrap;
|
|
1773
|
+
align-items: center;
|
|
1774
|
+
gap: var(--gov-space-2);
|
|
1775
|
+
list-style: none;
|
|
1776
|
+
padding: 0;
|
|
1777
|
+
}
|
|
1778
|
+
|
|
1779
|
+
.gov-pagination__link {
|
|
1780
|
+
display: inline-flex;
|
|
1781
|
+
align-items: center;
|
|
1782
|
+
justify-content: center;
|
|
1783
|
+
min-inline-size: var(--gov-target-min-size);
|
|
1784
|
+
min-block-size: var(--gov-target-min-size);
|
|
1785
|
+
padding-inline: var(--gov-space-2);
|
|
1786
|
+
border-radius: var(--gov-radius-sm);
|
|
1787
|
+
text-decoration: none;
|
|
1788
|
+
color: var(--gov-color-link-default);
|
|
1789
|
+
}
|
|
1790
|
+
|
|
1791
|
+
.gov-pagination__link[aria-current="page"] {
|
|
1792
|
+
background: var(--gov-color-interactive-selected-background);
|
|
1793
|
+
color: var(--gov-color-text-primary);
|
|
1794
|
+
font-weight: var(--gov-font-weight-semibold);
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1797
|
+
.gov-pagination__link[aria-disabled="true"] {
|
|
1798
|
+
color: var(--gov-color-text-disabled);
|
|
1799
|
+
pointer-events: none;
|
|
1800
|
+
}
|
|
1801
|
+
|
|
1802
|
+
/* Footer — a two-column trust band, single column on mobile. */
|
|
1803
|
+
.gov-footer {
|
|
1804
|
+
background: var(--gov-color-background-secondary);
|
|
1805
|
+
border-block-start: var(--gov-border-width-sm) solid var(--gov-color-border-default);
|
|
1806
|
+
padding-block: var(--gov-space-8);
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1809
|
+
.gov-footer__grid {
|
|
1810
|
+
display: grid;
|
|
1811
|
+
gap: var(--gov-space-8);
|
|
1812
|
+
grid-template-columns: 1fr;
|
|
1813
|
+
}
|
|
1814
|
+
|
|
1815
|
+
@media (min-width: 768px) {
|
|
1816
|
+
.gov-footer__grid {
|
|
1817
|
+
grid-template-columns: 2fr 1fr;
|
|
1818
|
+
}
|
|
1819
|
+
}
|
|
1820
|
+
|
|
1821
|
+
.gov-footer__links {
|
|
1822
|
+
list-style: none;
|
|
1823
|
+
padding: 0;
|
|
1824
|
+
display: flex;
|
|
1825
|
+
flex-direction: column;
|
|
1826
|
+
gap: var(--gov-space-2);
|
|
1827
|
+
}
|
|
1828
|
+
|
|
1829
|
+
.gov-footer__office-en {
|
|
1830
|
+
color: var(--gov-color-text-secondary);
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1189
1833
|
/* National identity marks — the emblem and flag (identity/emblem, identity/flag).
|
|
1190
1834
|
*
|
|
1191
1835
|
* Base sizing only. Both are <img> of verified masters; neither is boxed, recoloured, or given a
|