@@ -245,6 +245,8 @@ span .nhsuk-u-visually-hidden {
245245.nhsuk-header__navigation-container {
246246 margin : 0 auto;
247247 position : relative;
248+ /* Default reserve for More button space (0 by default; can be overridden) */
249+ --nhs-header-more-reserve : 0px ;
248250 box-shadow : inset 0 0.25px 0 0 # d8dde0 ;
249251}
250252
@@ -262,6 +264,8 @@ span .nhsuk-u-visually-hidden {
262264
263265.nhsuk-header__navigation-container--initializing {
264266 transition : opacity 150ms ease-in-out;
267+ /* During init, conservatively reserve space for the More button to avoid shifts */
268+ --nhs-header-more-reserve : var (--fdp-header-more-reserve , 104px );
265269}
266270
267271.nhsuk-header__navigation-container : not (.nhsuk-header__navigation-container--initializing ) {
@@ -522,6 +526,14 @@ span .nhsuk-u-visually-hidden {
522526 margin : 0 -8px ;
523527 padding : 0 ;
524528 width : calc (100% + 24px );
529+ /* Flex spacer to reserve space for potential More button */
530+ }
531+
532+ .nhsuk-header__navigation-list ::after {
533+ content : "" ;
534+ flex : 0 0 var (--nhs-header-more-reserve , 0px );
535+ inline-size : var (--nhs-header-more-reserve , 0px );
536+ block-size : 1px ; /* minimal size to avoid affecting line-height */
525537}
526538
527539@media (min-width : 768px ) {
@@ -658,7 +670,7 @@ span .nhsuk-u-visually-hidden {
658670 width : 24px ;
659671 height : 24px ;
660672 margin-left : 4px ;
661- margin-top : -4 px ;
673+ margin-top : -6 px ;
662674 vertical-align : middle;
663675 transform : rotate (90deg );
664676 transition : transform 150ms cubic-bezier (0 , 0 , 0.2 , 1 );
@@ -1036,12 +1048,12 @@ span .nhsuk-u-visually-hidden {
10361048
10371049[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue {
10381050 background-color : var (--fdp-header-dark-blue-bg , # 003087 );
1039- color : var ( --fdp-header-dark-blue-text , # ffffff) ;
1051+ color : # ffffff ;
10401052}
10411053
10421054[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__navigation {
1043- background-color : var ( --fdp-header-dark-blue-nav-bg , # 003087 ) ;
1044- color : var ( --fdp-header-dark-blue-nav-text , # ffffff) ;
1055+ background-color : transparent ;
1056+ color : # ffffff ;
10451057}
10461058
10471059[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__navigation a {
@@ -1054,22 +1066,27 @@ span .nhsuk-u-visually-hidden {
10541066}
10551067
10561068[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__navigation__navigation-link , [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__navigation__navigation-button {
1057- color : var (--fdp-header-dark-blue-nav-text , # ffffff );
1058- }
1059-
1060- [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue__navigation-link , [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue__navigation-button {
1061- color : var (--fdp-header-dark-blue-nav-text , # ffffff );
1069+ color : # ffffff ;
10621070}
10631071
10641072[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__service-logo ,
10651073[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__service-name ,
10661074[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__service-name [href ],
1067- [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__organisation-name ,
1075+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__organisation-name {
1076+ color : # ffffff ;
1077+ }
1078+
10681079[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__navigation-link ,
10691080[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__navigation-button {
10701081 color : # ffffff ;
10711082}
10721083
1084+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__navigation-link : focus ,
1085+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue .nhsuk-header__navigation-button : focus {
1086+ background-color : # d6cce3 ;
1087+ color : # 003087 ;
1088+ }
1089+
10731090[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue__service-logo : hover , [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue__service-name : hover , [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-blue__service-name [href ]: hover {
10741091 color : # ffffff ;
10751092 text-decoration : none;
@@ -1151,10 +1168,19 @@ span .nhsuk-u-visually-hidden {
11511168[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey .nhsuk-header__service-logo ,
11521169[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey .nhsuk-header__service-name ,
11531170[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey .nhsuk-header__service-name [href ],
1154- [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey .nhsuk-header__organisation-name ,
1171+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey .nhsuk-header__organisation-name {
1172+ color : # ffffff ;
1173+ }
1174+
11551175[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey .nhsuk-header__navigation-link ,
11561176[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey .nhsuk-header__navigation-button {
1157- color : var (--fdp-header-dark-grey-text , # ffffff );
1177+ color : # ffffff ;
1178+ }
1179+
1180+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey .nhsuk-header__navigation-link : focus ,
1181+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey .nhsuk-header__navigation-button : focus {
1182+ background-color : # d6cce3 ;
1183+ color : # 212b32 ;
11581184}
11591185
11601186[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey__service-logo , [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey__service-name , [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey__service-name [href ] {
@@ -1193,10 +1219,19 @@ span .nhsuk-u-visually-hidden {
11931219[data-brand = fdp ] .nhsuk-header .nhsuk-header--mid-grey .nhsuk-header__service-logo ,
11941220[data-brand = fdp ] .nhsuk-header .nhsuk-header--mid-grey .nhsuk-header__service-name ,
11951221[data-brand = fdp ] .nhsuk-header .nhsuk-header--mid-grey .nhsuk-header__service-name [href ],
1196- [data-brand = fdp ] .nhsuk-header .nhsuk-header--mid-grey .nhsuk-header__organisation-name ,
1222+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--mid-grey .nhsuk-header__organisation-name {
1223+ color : # ffffff ;
1224+ }
1225+
11971226[data-brand = fdp ] .nhsuk-header .nhsuk-header--mid-grey .nhsuk-header__navigation-link ,
11981227[data-brand = fdp ] .nhsuk-header .nhsuk-header--mid-grey .nhsuk-header__navigation-button {
1199- color : var (--fdp-header-mid-grey-text , # ffffff );
1228+ color : # ffffff ;
1229+ }
1230+
1231+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--mid-grey .nhsuk-header__navigation-link : focus ,
1232+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--mid-grey .nhsuk-header__navigation-button : focus {
1233+ background-color : # d6cce3 ;
1234+ color : # 212b32 ;
12001235}
12011236
12021237[data-brand = fdp ] .nhsuk-header .nhsuk-header--mid-grey .nhsuk-header__navigation {
@@ -1239,10 +1274,19 @@ span .nhsuk-u-visually-hidden {
12391274[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey-gradient .nhsuk-header__service-logo ,
12401275[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey-gradient .nhsuk-header__service-name ,
12411276[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey-gradient .nhsuk-header__service-name [href ],
1242- [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey-gradient .nhsuk-header__organisation-name ,
1277+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey-gradient .nhsuk-header__organisation-name {
1278+ color : # ffffff ;
1279+ }
1280+
12431281[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-link ,
12441282[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-button {
1245- color : var (--fdp-header-dark-grey-gradient-text , # ffffff );
1283+ color : # ffffff ;
1284+ }
1285+
1286+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-link : focus ,
1287+ [data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-button : focus {
1288+ background-color : # d6cce3 ;
1289+ color : # 212b32 ;
12461290}
12471291
12481292[data-brand = fdp ] .nhsuk-header .nhsuk-header--dark-grey-gradient .nhsuk-header__navigation-container {
@@ -1329,6 +1373,8 @@ nav[data-ssr-hydrating=true] + .nhsuk-header__dropdown-menu {
13291373/* SSR Fallback Navigation Container */
13301374
13311375.nhsuk-header__navigation-container--ssr {
1376+ /* Reserve space for potential More button to avoid layout shift on hydration */
1377+ --nhs-header-more-reserve : var (--fdp-header-more-reserve , 104px );
13321378 /* Server-side: start as single line; overflow handled via progressive enhancement */
13331379}
13341380
@@ -1365,9 +1411,9 @@ nav[data-ssr-hydrating=true] + .nhsuk-header__dropdown-menu {
13651411/* Progressive Enhancement Indicator */
13661412
13671413.nhsuk-header__navigation-container--initializing {
1368- /* Subtle loading state while JavaScript calculates overflow */
1369- opacity : 0.95 ;
1370- transition : opacity 150 ms ease-in-out ;
1414+ /* Avoid visual change during hydration to prevent flash */
1415+ opacity : 1 ;
1416+ transition : none ;
13711417}
13721418
13731419/* No-JS Fallback Styles */
0 commit comments