/* Production (Enfold) loads only the Droid Sans 400 face; every 600/700
   heading on the live site is synthesised bold. Loading the real 700 face
   makes headings 4-6 % wider than production (measured: "Our Goal is Simple:"
   310.6 px vs 292.3 px at 34 px) and shifts every line break. Keep 400 only. */
@import url('https://fonts.googleapis.com/css?family=Droid+Sans:400');
/*
Theme Name: Primefin Blocks
Theme URI: https://primefin.tech
Author: ITFT (in-house)
Description: Block theme rebuilt from the Enfold 3.8 design system. GPL, agent-maintainable.
Version: 0.3.5
Requires at least: 6.7
Tested up to: 7.1.3
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: primefin-blocks
*/

/* ==========================================================================
   Primefin Blocks — layout layer.
   Geometry is copied from the measured live Enfold rendering (2026-10-23).
   Every value in this file is a production computed value, taken from the
   live page with the pinned-frame CDP harness (see
   deliverables/MSV-169/P1-css-parity/P1-css-parity-targets.csv).

   Measured production reference (viewport 1440, body width 1425):
     header 100 px = utility band 30 px (#06354b) + brand bar 70 px (#00243b)
     container 1310 px wide, padding 0 50 px, so inner column = 1210 px
     main nav link 12 px / 600 / line-height 70 px / padding 0 13 px
     footer #footer 291 px (#0a3e56, padding 15px 0 30px), socket 57.4 px
     advisory band min-height 75vh (measured 900 px at a 1200 px viewport)
   ========================================================================== */

body {
	margin: 0;
	font-family: 'Droid Sans', 'HelveticaNeue', 'Helvetica Neue', Helvetica, Arial, sans-serif;
	font-size: 16px;
	line-height: 1.65;
	color: #666666;
	background: #ffffff;
	-webkit-font-smoothing: antialiased;
}

img, video { max-width: 100%; height: auto; display: block; }

a { color: #197c8d; text-decoration: none; }
a:hover { text-decoration: underline; }

h1, h2, h3, h4 {
	margin: 0 0 10px;
	font-weight: 600;
	color: #222222;
	line-height: 1.25;
	letter-spacing: 1px;      /* production: measured letter-spacing 1px on every heading */
}
h1 { font-size: 34px; line-height: 1.1; text-transform: uppercase; }
h2 { font-size: 28px; line-height: 30.8px; color: #9ecc4f; margin: 0 0 10px; text-transform: uppercase; }
h3 { font-size: 20px; line-height: 22px; text-transform: uppercase; }
p { margin: 0 0 17px; font-size: 16px; line-height: 26.4px; }

/* Production paragraph/heading rhythm (measured, 1440):
     p  margin 0.85em 0  (17 px at 20 px, 13.6 px at 16 px)
     h1-h4 margin 0 0 10px
   WordPress emits a per-instance `.wp-container-core-group-is-layout-* > *`
   rule that zeroes child margins with a class-level specificity, so the
   plain `p`/`h2` rules below lose. Re-assert inside the band containers. */
.pf-section p, .pf-container p, .pf-band p, .entry-content p, .wp-block-post-content p {
	margin-block-start: 0.85em;
	margin-block-end: 0.85em;
}
.pf-section h1, .pf-section h2, .pf-section h3, .pf-section h4,
.pf-container h1, .pf-container h2, .pf-container h3, .pf-container h4,
.entry-content h1, .entry-content h2, .entry-content h3, .entry-content h4,
.wp-block-post-content h1, .wp-block-post-content h2,
.wp-block-post-content h3, .wp-block-post-content h4 {
	margin-block-start: 0;
	margin-block-end: 10px;
}

/* --- structure ----------------------------------------------------------- */
.pf-container,
.wp-block-group.pf-container {
	max-width: 1310px;   /* measured live container width (incl. its 2x50 px padding) */
	margin-left: auto;
	margin-right: auto;
	padding-left: 50px;
	padding-right: 50px;
	box-sizing: border-box;
}

/* Band rhythm. Measured production anatomy for a content band at 1440:
   section 433.6 px tall = 50 px above the row + the row (334 px) + ~50 px
   below. Production carries that 100 px on the inner container, not on the
   section wrapper, so the container is what has to be 433.6 px tall. */
.pf-section { padding: 0; }
.pf-section > .pf-container { padding-top: 50px; padding-bottom: 50px; }
.pf-section--dark { background-color: #06354b; color: #ffffff; }
.pf-section--dark h2 { color: #ffffff; }
.pf-section--dark p { color: #ffffff; }
.pf-section--white { background-color: #ffffff; }

/* Enfold grid, reproduced on flex containers */
.pf-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	box-sizing: border-box;
}
.pf-col { box-sizing: border-box; min-width: 0; padding-left: 0; }
.pf-row > .pf-col { margin-left: 6%; }
.pf-row > .pf-col:first-child { margin-left: 0; }
.pf-col--third     { width: 29.3333%; }
.pf-col--two-third { width: 64.6667%; }
.pf-col--half      { width: 47%; }
.pf-col--fourth    { width: 20.5%; }
.pf-col--full      { width: 100%; }

/* Production: 85 % container, no side padding, at the 390 breakpoint. */
@media (max-width: 989px) {
	.pf-row { display: block; width: auto; margin-left: 0; }
	.pf-row > .pf-col { width: 100%; margin-left: 0; }
	.pf-container,
	.wp-block-group.pf-container { max-width: 85%; padding-left: 0; padding-right: 0; }
}

/* --- header -------------------------------------------------------------- */
/* Specificity note: these band selectors are doubled with .wp-block-group
   because `.wp-block-group { margin: 0 }` is emitted later in this file and
   otherwise wins the tie and left-aligns the band (measured defect: the band
   sat at x=0 instead of x=57.5, shifting all header content 57.5 px left). */
.pf-header { background: #00243b; color: #ffffff; }

.wp-block-group.pf-header__bar {
	background: #06354b;
	color: #ffffff;
	font-size: 12px;
	line-height: 30px;
	height: 30px;
	max-width: 1310px;
	padding-left: 50px;
	padding-right: 50px;
	box-sizing: border-box;
	margin: 0 auto;
}
.pf-header__bar-inner {
	display: flex;
	justify-content: space-between;
	align-items: center;
	height: 30px;
	flex-wrap: nowrap;
}
.pf-header__bar p { margin: 0; }

/* left slot: phone (production: 11 px, #18a7bd, padding 5px 0, x = container left) */
.pf-header__bar .pf-header__phone {
	margin: 0;
	font-size: 11px;
	line-height: 20px;
	padding: 5px 0;
	color: #18a7bd;
}
.pf-header__bar-right { margin-left: auto; gap: 0; flex-wrap: nowrap; align-items: center; }

/* Contact Us (production: #avia2-menu a -> 11 px / 700 / line-height 10px / padding 7px 0) */
.pf-header__secondary { margin: 0; }
.pf-header__secondary .wp-block-navigation__container { gap: 0; }
.pf-header__secondary .wp-block-navigation-item__content {
	color: #18a7bd;
	font-size: 11px;
	font-weight: 700;
	line-height: 10px;
	padding: 7px 0;
	display: block;
}

/* language switcher (production: 3 flags, 20 px wide, ul padded 10 px left) */
.pf-langs {
	list-style: none;
	margin: 0;
	padding: 0 0 0 10px;
	display: flex;
	align-items: center;
	line-height: 30px;
}
.pf-langs .pf-lang { margin: 0; }
.pf-langs img { width: 20px; height: auto; display: block; margin: 7px 0; }
.pf-langs a { display: block; padding: 0; }

/* social icons (production: 4 icons, 30x30 box, 16 px glyph, #197c8d, ul padded 20 px left) */
.pf-social {
	list-style: none;
	margin: 0;
	padding: 0 0 0 20px;
	display: flex;
	align-items: center;
	gap: 0;
}
.pf-social li { margin: 0; }
.pf-social a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	line-height: 30px;
	color: #197c8d;
	text-decoration: none;
}
.pf-social a:hover { color: #ffffff; text-decoration: none; }
.pf-social svg { display: block; }

.wp-block-group.pf-header__brand {
	background: #00243b;
	max-width: 1310px;
	margin: 0 auto;
	padding: 0 50px;
	height: 70px;
	box-sizing: border-box;
}
.wp-block-group.pf-header__brand-inner {
	display: flex;
	justify-content: flex-end;   /* nav + search flush right, logo pushed left */
	align-items: center;
	gap: 0;
	flex-wrap: nowrap;
	height: 70px;
}
.pf-header__logo { margin: 0 auto 0 0 !important; flex: 0 0 auto; }
/* production .logo img: 152.6 x 70, natural 340x156, object-fit fill */
.pf-header__logo img { width: auto; height: 70px; object-fit: fill; }
.pf-header__nav { margin: 0; flex: 0 1 auto; }
.pf-header__nav .wp-block-navigation__container { gap: 0; flex-wrap: nowrap; }
.pf-header__nav .wp-block-navigation-submenu__toggle { display: none; }
.pf-header__nav { margin-right: 0; }
/* production's 11th nav item is the search icon: 22.5 px wide, white, 13 px after
   "Terms and Conditions" (measured #avia-menu li width 22.5 at x=1295) */
.pf-nav-search { display: flex; align-items: center; height: 70px; margin-left: 13px; color: #ffffff; }
.pf-nav-search svg { display: block; width: 22.5px; height: 22.5px; }
.pf-nav-search:hover { color: #ffffff; text-decoration: none; }
.pf-header__nav .wp-block-navigation-item__content {
	color: #ffffff;
	font-size: 12px;
	font-weight: 600;
	line-height: 70px;
	padding: 0 13px;
	display: block;
}

/* --- hero video ---------------------------------------------------------- */
.pf-hero-video {
	position: relative;
	margin-bottom: 9.4px;   /* measured: production band 2 starts 9.4 px after the plate */
	overflow: hidden;
	height: auto;
	aspect-ratio: 16 / 9;
	background: #00243b;
	display: flex;
	align-items: center;
	justify-content: center;
}
.pf-hero-video__media {
	position: absolute;
	top: 0; left: 0;
	width: 100%; height: 100%;
	object-fit: cover;
	z-index: 0;
	margin: 0;
}
/* production renders the slideshow video with object-fit: contain */
.pf-hero-video__media video {
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
}
.pf-hero-video__overlay {
	position: relative;
	margin-left: 10px;
	padding-top: 8px;
	z-index: 1;
	width: 100%;
	max-width: none;
	padding: 0;
	box-sizing: border-box;
	text-align: center;
	color: #ffffff;
	display: flex;
	justify-content: center;
}
.pf-hero-video__inner { max-width: none; margin: 0; text-align: center; }
.pf-hero-video__title {
	display: block;
	width: fit-content;
	font-size: 34px;
	line-height: 37.4px;
	color: #ffffff;
	background: rgba(0,0,0,0.56);
	padding: 10px 20px;
	margin: 0 auto;
	font-weight: 600;
}
.pf-hero-video__lead {
	display: block;
	width: fit-content;
	font-size: 16px;
	line-height: 26.4px;
	color: #ffffff;
	background: rgba(0,0,0,0.48);
	padding: 8px 31px;
	margin: 10px auto 0;
	max-width: 687px;
}

/* --- hero page intro ---------------------------------------------------- */
.pf-hero { padding: 60px 0 40px; }
.pf-hero__title { color: #ffffff; }
.pf-hero__lead { font-size: 20px; line-height: 1.4; color: #ffffff; }

/* --- content bits -------------------------------------------------------- */
.pf-lead { font-size: 20px; line-height: 1.65; color: #9ecc4f; }
.pf-figure { margin: 0; }
.pf-figure img { margin: 0 auto; }

.pf-buttons { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0 0; }
.wp-block-buttons.pf-buttons--center { justify-content: center; }
.wp-block-button.pf-btn { margin: 0; }
/* production banner-hero CTA is 197 x 45 (padding 15 30 13) */
.pf-section--hero .pf-btn .wp-block-button__link { padding: 15px 30px 13px; }
.pf-btn .wp-block-button__link {
	background-color: #4fc5df;
	color: #ffffff;
	border-radius: 3px;
	border: none;
	font-size: 13px;
	font-weight: 400;
	line-height: 1.2;
	padding: 12px 16px 11px;
	margin: 3px 0;
	text-transform: none;
}
.pf-btn .wp-block-button__link:hover { background-color: #3bb4ce; color: #ffffff; }
.pf-section--dark .pf-btn--light .wp-block-button__link { background-color: #ffffff; color: #06354b; }
.wp-block-buttons.pf-buttons--right { justify-content: flex-end; }

.pf-icon-list { list-style: none; padding: 0; margin: 0; }
.pf-icon-list li { padding-left: 26px; position: relative; margin: 0 0 8px; }
.pf-icon-list li::before { content: "\2713"; position: absolute; left: 0; color: #4fc5df; }

.pf-cards { display: flex; flex-wrap: wrap; }
.pf-card {
	box-sizing: border-box;
	background: #fafafa;
	border: 1px solid #e1e1e1;
	padding: 24px;
	margin: 0 0 24px 3%;
}
.pf-cards--third .pf-card { width: 30.3333%; }
.pf-cards--fourth .pf-card { width: 22%; }

.pf-gallery img { width: 100%; }

.pf-cta { padding: 50px 0; }

/* --- footer -------------------------------------------------------------- */
.pf-footer { background: #0a3e56; color: #ffffff; padding: 15px 0 30px; }
.pf-footer h2, .pf-footer h3 { color: #ffffff; }
.pf-footer .wp-block-columns { gap: 6%; }
.pf-footer .wp-block-column { margin-bottom: 0; }
.pf-footer__nav { margin: 0; }
/* production footer menu: a vertical block list, 16 px / 26.4 px / #677e8f,
   each row 39.4 px tall (padding 6px 7px 7px 0) */
.pf-footer__nav .wp-block-navigation__container { display: block; gap: 0; }
.pf-footer__nav .wp-block-navigation-item { display: block; }
.pf-footer__nav .wp-block-navigation-item__content {
	display: block;
	padding: 6px 7px 7px 0;
	font-size: 16px;
	line-height: 26.4px;
	color: #677e8f;
}
.pf-footer__nav .wp-block-navigation-item__content:hover { color: #ffffff; text-decoration: none; }
.pf-footer__nav .wp-block-navigation-submenu__toggle { display: none; }
.pf-footer__nav .wp-block-navigation__submenu-container {
	position: static;
	display: block;
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0 0 0 12px;
	min-width: 0;
}

.pf-footer__search .wp-block-search__inside-wrapper { border: 0; padding: 0; }
.pf-footer__search .wp-block-search__input {
	background: #ffffff;
	border: 0;
	padding: 6px 30px 6px 10px;
	font-size: 14px;
	line-height: 22px;
	color: #666666;
	box-sizing: border-box;
}
.pf-footer__search .wp-block-search__button {
	background: transparent;
	border: 0;
	color: #ffffff;
	padding: 6px;
	margin: 0;
	box-shadow: none;
}

.pf-footer .pf-container { padding-bottom: 18px; }
.pf-footer__cols { padding-top: 30px; box-sizing: border-box; }
/* production paints the copyright strip across the full viewport width while its
   content stays on the 1210 px inner column */
.wp-block-group.pf-socket {
	background: #00243b;
	color: #ffffff;
	max-width: none;
	width: 100%;
	margin: 0 auto;
	padding: 2px calc((100% - 1210px) / 2);
	box-sizing: border-box;
	height: 30px;
	font-size: 11px;
	line-height: 26.4px;
}
.pf-socket__inner { height: 26.4px; align-items: center; }
.pf-socket p { margin: 0; color: #ffffff; font-size: 11px; line-height: 26.4px; }
.pf-socket .pf-social { margin: -10px 0 0 30px; padding: 0; }
.pf-socket .pf-social a { color: #677e8f; }

/* --- wordpress block defaults that must not add spacing ------------------ */
.wp-block-buttons { margin: 0; }
.wp-block-image { margin: 0 0 16px; }
.wp-block-navigation { margin: 0; }
.footer, .pf-footer { margin-bottom: 0; }

/* --- financial advisory icon grid ---------------------------------------- */
/* Production #av_section_8 = avia-section-large + av-minimum-height-75:
   the band is 75 vh (measured 900 px at a 1200 px viewport) and its single
   heading sits 186 px below the band top (h1 y 3649 vs band y 3463). */
.pf-section--bgimage { min-height: 75vh; box-sizing: border-box; }
.pf-section--bgimage > .pf-container { min-height: 75vh; padding-top: 186px; box-sizing: border-box; }
.pf-heading--hero {
	font-size: 50px; line-height: 55px; font-weight: 300; letter-spacing: 1px;
	color: #ffffff; margin: 0 0 6px; text-align: center; text-transform: uppercase;
}
.pf-heading__sub {
	font-size: 18px; line-height: 23.4px; color: #ffffff; text-align: center;
	max-width: none; width: 100%; margin: 0 0 40px;
}
.pf-icon { text-align: center; }
.pf-icon__glyph {
	display: inline-block;
	width: 40px; height: 40px; line-height: 40px;
	border: 2px solid #ffffff; border-radius: 50%;
	color: #ffffff; font-size: 22px; margin: 0 0 12px;
}
.pf-icon__cap { font-size: 16px; line-height: 20px; margin: 0 0 8px; }
.pf-icon__cap a { color: #ffffff; }
.pf-icon__text { font-size: 12px; line-height: 19px; color: #ffffff; margin: 0; }

/* --- inner-page components (S14/S15) ------------------------------------- */
/* Two different production plates share the class name:
   538 (banner hero)   = container at y=100, 450 px tall, no side gap,
                         h1 at +175, caption, CTA button at +279.
   194 (shape hero)    = 630 px parallax plate, background bottom-centre with a
                         70 % white overlay, 3 image columns from +87. */
.pf-section--hero { background-color: #06354b; text-align: center; }
.pf-section--hero:has(.pf-shape-col) {
	position: relative;
	min-height: 630px;
	background-position: bottom center;
	background-size: cover;
	background-repeat: no-repeat;
	padding: 0;
}
.pf-section--hero:has(.pf-shape-col)::before {
	content: "";
	position: absolute; inset: 0;
	background: #ffffff; opacity: 0.7;
	pointer-events: none;
}
.pf-section--hero:has(.pf-shape-col) > .pf-container {
	position: relative; z-index: 1;
	min-height: 630px; padding-top: 87px; padding-bottom: 0; box-sizing: border-box;
}
.pf-section--hero:not(:has(.pf-shape-col)) { min-height: 450px; padding: 0; }
.pf-section--hero:not(:has(.pf-shape-col)) > .pf-container { min-height: 450px; padding-top: 175px; padding-bottom: 0; box-sizing: border-box; }
.pf-hero__title {
	display: block; width: fit-content; margin: 0 auto 1px;
	font-size: 30px; line-height: 33px; font-weight: 600; letter-spacing: 1px;
	color: #ffffff; background: rgba(0, 0, 0, 0.5); padding: 10px 15px;
}
.pf-hero__caption,
.pf-section--hero:not(:has(.pf-shape-col)) p {
	display: block; width: fit-content; max-width: 100%;
	font-size: 20px; line-height: 26px; color: #ffffff;
	background: rgba(0, 0, 0, 0.5); padding: 10px 15px; margin: 0 auto;
}
.pf-intro { padding: 0; }
.pf-intro__title { font-size: 34px; line-height: 40px; margin: 0 0 10px; }
.pf-size-20 { font-size: 20px; line-height: 1.4; }
.pf-band { background: #f4f4f4; padding: 30px; }
/* production renders this band's artwork 1365 px wide at x=30 (body width − 60),
   i.e. the container drops its 1310 max-width and its 50 px side padding. */
.pf-section--grey > .pf-container { max-width: none; padding-left: 30px; padding-right: 30px; }
.pf-section--grey .pf-band { padding: 0; }
.pf-section--grey .pf-band .wp-block-image img { width: 100%; height: auto; }
.pf-band .pf-figure { margin: 0 auto; }
.pf-section--grey { background: #f4f4f4; }
.pf-hr-invisible { border: 0; height: 30px; }
.pf-h3-band { font-size: 30px; line-height: 34px; color: #ffffff; margin: 10px 0; }
.pf-shape-col { position: relative; text-align: center; }
/* production centres the caption over the 330 px artwork: cap y 331 inside an
   image spanning 187-517, 28 px / 42 px, white, 271 px wide in a 355 px column */
.pf-shape__cap {
	position: absolute; top: 50%; left: 0; right: 0;
	transform: translateY(-50%);
	width: 271px; max-width: 100%; margin: 0 auto;
	font-size: 28px; line-height: 42px; color: #ffffff;
}
.pf-shape__cap a { color: #ffffff; }
.pf-note {
	background: rgba(255,255,255,0.4);
	border-radius: 5px;
	margin: 30px 0 0;
	padding: 0 30px;
}
.pf-note__text { font-size: 20px; line-height: 33px; margin: 20px 0; }
.pf-contact-page { padding: 0; }
/* production contact entries: h3 20 px / 22 px / #06354b with 2 px top padding,
   body 16 px / 26.4 px, 70 px between entries (measured pitch 136 px) */
.pf-iconbox { margin: 0 0 34px; padding-left: 0; position: relative; }
.pf-iconbox__glyph { position: absolute; left: -26px; top: 4px; color: #06354b; font-size: 16px; }
.pf-iconbox__title { font-size: 20px; line-height: 22px; padding: 2px 0 0; margin: 0 0 16px; color: #06354b; }
.pf-iconbox__text { font-size: 16px; line-height: 26.4px; margin: 0; }

/* production form field (Enfold avia_ajax_form, labels hidden): 47 px tall,
   #fafafa, 13 px padding, 16 px / #197c8d text, 569 px wide, 63 px pitch */
.wpcf7-form label { display: block; font-size: 16px; line-height: 26.4px; color: #666666; margin: 0 0 16px; }
.wpcf7-form input[type=text],
.wpcf7-form input[type=email],
.wpcf7-form input[type=tel],
.wpcf7-form textarea {
	display: block; width: 100%; box-sizing: border-box;
	background: #fafafa; border: 1px solid #e1e1e1; border-radius: 0;
	padding: 13px; margin: 0;
	font-family: inherit; font-size: 16px; line-height: 19px; color: #197c8d;
}
.wpcf7-form input[type=text], .wpcf7-form input[type=email], .wpcf7-form input[type=tel] { height: 47px; }
.wpcf7-form textarea { height: 196px; resize: none; line-height: 24px; }
/* production 306 message box is 196 px (rows=7); 538's is 90 px (rows=3) */
[id*="wpcf7-f6482"] .wpcf7-form textarea { height: 90px; }
/* production 538 form: two 269 px fields per row with a 30 px gutter */
[id*="wpcf7-f6482"] .wpcf7-form { display: flow-root; }
[id*="wpcf7-f6482"] .wpcf7-form label { display: inline-block; width: 269px; margin: 0 0 16px 0; vertical-align: top; }
[id*="wpcf7-f6482"] .wpcf7-form label:nth-of-type(odd) { margin-right: 31px; }
[id*="wpcf7-f6482"] .wpcf7-form label:last-of-type { display: block; width: 100%; margin-right: 0; }
.wpcf7-form input[type=submit] {
	background: #4fc5df; color: #ffffff; border: 0; border-radius: 3px;
	padding: 16px 20px; font-size: 14.72px; line-height: 18px; width: auto;
}

/* --- mobile chrome (production 390 breakpoint) --------------------------- */
/* production at 390: header 204.8 px = utility band 125.8 px (wraps to 4 rows)
   + brand bar 80 px with the logo at 174.3 x 80; container 85 %, no padding. */
@media (max-width: 767px) {
	.wp-block-group.pf-header__bar { height: auto; max-width: 85%; padding-left: 0; padding-right: 0; }
	.pf-header__bar-inner { height: auto; flex-wrap: wrap; padding: 0; }
	.pf-header__bar .pf-header__phone { width: 100%; }
	.pf-header__bar-right {
		width: 100%;
		margin-left: 0;
		flex-wrap: wrap;
		justify-content: flex-start;
	}
	.pf-langs { padding-left: 0; }
	.pf-social { padding-left: 0; }
	.wp-block-group.pf-header__brand { max-width: 85%; height: 80px; padding-left: 0; padding-right: 0; }
	.pf-header__brand-inner { height: 80px; }
	.pf-header__logo img { height: 80px; }
	.pf-header__nav .wp-block-navigation-submenu__toggle { display: none; }
.pf-header__nav { margin-right: 0; }
/* production's 11th nav item is the search icon: 22.5 px wide, white, 13 px after
   "Terms and Conditions" (measured #avia-menu li width 22.5 at x=1295) */
.pf-nav-search { display: flex; align-items: center; height: 70px; margin-left: 13px; color: #ffffff; }
.pf-nav-search svg { display: block; width: 22.5px; height: 22.5px; }
.pf-nav-search:hover { color: #ffffff; text-decoration: none; }
.pf-header__nav .wp-block-navigation-item__content { line-height: 80px; }

	.pf-section { padding: 0; }
	.wp-block-group.pf-socket { max-width: 85%; padding-left: 0; padding-right: 0; height: auto; }
	.pf-footer .wp-block-columns { display: block; }
	.pf-footer .wp-block-column { margin-bottom: 24px; }
}

/* ==========================================================================
   P1 CSS-parity pass 2 (2026-10-23) — every value below is a production
   computed value read from the live page (see
   deliverables/MSV-169/P1-css-parity/P1-css-parity-targets.csv).
   ========================================================================== */

/* --- front hero plate: production #myslider is 810 px for a 1425 px body
   (the slideshow video is an inline 16:9 element, 801.562 px, plus the line
   box descender). Content is vertically centred in the 810 px band. ------ */
.pf-hero-video { aspect-ratio: 1425 / 810; }
.pf-hero-video video, .pf-hero-video .wp-block-video video { object-fit: contain !important; object-position: top center; }
/* production a.scroll-down-link: 80x60 at the band bottom centre (y 850 of a
   band ending at 910), white entypo chevron on a black overlay plate. */
.pf-hero-video::after {
	content: "";
	position: absolute;
	left: 50%;
	margin-left: -40px;
	bottom: 0;
	width: 80px;
	height: 60px;
	z-index: 2;
	pointer-events: none;
	background-repeat: no-repeat;
	background-position: center 60%;
	background-size: 30px 30px;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='5 9 12 16 19 9'/%3E%3C/svg%3E");
}

/* --- 194 shape/parallax hero ---------------------------------------------
   Production: section 630 px, overflow hidden; the image lives on an
   .av-parallax-inner that is 930 px tall at a 1000 px viewport, offset
   -30 px from the section top, background-size cover,
   background-position 50% 100%. A separate overlay element paints #ffffff
   at opacity .7 over the whole section. The old background-on-the-section
   approximation boxed the same photograph at a different crop (the 99 %
   differing band with mean RGB matching to +/-3). */
.pf-section--hero:has(.pf-shape-col) { overflow: hidden; }
.pf-section--hero:has(.pf-shape-col)::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: -30px;
	height: calc(100% + 300px);
	z-index: 0;
	background-image: inherit;
	background-size: cover;
	background-position: 50% 100%;
	background-repeat: no-repeat;
}
.pf-section--hero:has(.pf-shape-col)::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	background: #ffffff;
	opacity: 0.7;
	pointer-events: none;
}
/* caption sits centred on the artwork: production caption y 330.5 inside an
   image spanning 186.8-516.3 (330 px tall), 28 px / 42 px */
.pf-shape-col { line-height: 0; }
.pf-shape__cap { line-height: 42px; top: 50%; transform: translateY(-50%); }

/* --- 538 bands ----------------------------------------------------------- */
/* image band: production image is 1365 x 1192 at x=30 inside a 1252.3 px band
   (30 px above and below the artwork) */
.pf-section--grey > .pf-container { padding-top: 30px; padding-bottom: 30px; }
/* cube band: production band 363 px for a 282 px artwork, 40 px above/below,
   cube-bg.png painted on an overlay element at opacity .5 */
/* the section's own inline background-image paints at full opacity, so an
   opaque white layer goes over it and the same image is re-painted at .5 on
   top of that (background-image: inherit) — production composite is
   0.5 * cube-bg over white */
.pf-section--cube { position: relative; }
.pf-section--cube::before {
	content: "";
	position: absolute;
	inset: 0;
	background: #ffffff;
	pointer-events: none;
}
.pf-section--cube::after {
	content: "";
	position: absolute;
	inset: 0;
	background-image: inherit;
	background-size: cover;
	background-position: center;
	opacity: 0.5;
	pointer-events: none;
}
.pf-section--cube > .pf-container { position: relative; z-index: 1; padding-top: 40px; padding-bottom: 40px; }
/* the 538 enquiry band paints #00243b (production), not the #06354b interior */
.pf-section--dark:has([id*="wpcf7-f6482"]) { background-color: #00243b; }
.pf-section--dark:has([id*="wpcf7-f6482"]) > .pf-container { padding-bottom: 30px; }
.pf-h3-band { font-size: 30px; line-height: 33px; color: #197c8d; }

/* --- footer -------------------------------------------------------------- */
/* production #socket: 57.4 px = 15 px + 26.4 px content + 15 px, full-width bg */
.wp-block-group.pf-socket { height: auto; padding: 15px calc((100% - 1210px) / 2); }
/* production footer menu rows are 35.4 px (26.4 px line + 9 px padding) */
.pf-footer__nav .wp-block-navigation-item__content { padding: 4px 7px 5px 0; }
/* the nested "Solutions" item must render as a normal row (it measured 0 px
   wide because the submenu container stayed position:absolute at width 0) */
.pf-footer__nav ul.wp-block-navigation__submenu-container {
	position: static !important;
	display: block !important;
	left: auto !important;
	top: auto !important;
	width: 100% !important;
	min-width: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
}
.pf-footer__nav ul.wp-block-navigation__submenu-container .wp-block-navigation-item { width: 100% !important; display: block !important; }
.pf-footer__nav ul.wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	display: block !important;
	width: 100% !important;
	padding: 4px 7px 5px 12px !important;
}
/* production footer search: 354.9 x 43 dark field (#00243b) with #9db8cc
   placeholder and a 40 x 43 #677e8f submit overlaid on the right edge */
.pf-footer__search .wp-block-search__inside-wrapper { position: relative; display: block; border: 0; padding: 0; }
.pf-footer__search .wp-block-search__input {
	width: 100%;
	height: 43px;
	box-sizing: border-box;
	background: #00243b;
	border: 0;
	padding: 11px 47px 11px 5px;
	font-size: 16px;
	line-height: 21px;
	color: #9db8cc;
}
.pf-footer__search .wp-block-search__input::placeholder { color: #9db8cc; opacity: 1; }
.pf-footer__search .wp-block-search__button {
	position: absolute;
	right: 0;
	top: 0;
	width: 40px;
	height: 43px;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #677e8f;
	border: 0;
	border-radius: 0;
	color: #ffffff;
	box-shadow: none;
}
.pf-footer__search .wp-block-search__button svg { fill: currentColor; width: 17px; height: 17px; }

/* --- header utility band ------------------------------------------------- */
/* production #avia2-menu a = 11 px / 700 with 5 px side padding (63.4 px row),
   WPML flag list = 85 px for 3 x 20 px flags (7.5 px gaps incl. the 10 px
   left padding the list already carries) */
.pf-header__secondary .wp-block-navigation-item__content { font-size: 11px; padding: 7px 10px; }
.pf-langs { gap: 7.5px; }

/* --- contact forms (Enfold avia_ajax_form / Fluent Form parity) ---------- */
.pf-field { margin: 0 0 16px; }
.pf-field label { display: block; margin: 0 0 6px; }
.pf-field .wpcf7-form-control-wrap { display: block; }
.pf-field input[type=text], .pf-field input[type=email], .pf-field input[type=tel] { height: 47px; }
.pf-field textarea { height: 196px; }
.pf-field--submit { margin: 16px 0 0; }
.pf-field--submit input[type=submit] { min-width: 142px; height: 50px; padding: 0 26px; font-size: 16px; }
/* 306 — production hides the labels (av-form-labels-hidden) and the label text
   lives in the placeholder */
[id*="wpcf7-f6489"] .pf-field label { display: none; }

/* 538 — production (Fluent form 16) renders two 269.3 px columns with a
   30 px gutter, label above input, 37 px fields, 90 px message box and a
   142 x 50 submit. CF7 emits one <p> per field, so the columns are built on
   those paragraphs. */
[id*="wpcf7-f6482"] .wpcf7-form { display: flex !important; flex-wrap: wrap; }
[id*="wpcf7-f6482"] .wpcf7-form > p {
	display: block !important;
	width: 269px !important;
	margin: 0 30px 20px 0 !important;
}
[id*="wpcf7-f6482"] .wpcf7-form > p:nth-of-type(even) { margin-right: 0 !important; }
[id*="wpcf7-f6482"] .wpcf7-form > p:nth-of-type(5),
[id*="wpcf7-f6482"] .wpcf7-form > p:nth-of-type(6) { display: block !important; width: 100% !important; margin-right: 0 !important; }
[id*="wpcf7-f6482"] .wpcf7-form label { display: block; font-size: 14.72px; line-height: 26.4px; margin: 0 0 5px; }
[id*="wpcf7-f6482"] .wpcf7-form input[type=text],
[id*="wpcf7-f6482"] .wpcf7-form input[type=email],
[id*="wpcf7-f6482"] .wpcf7-form input[type=tel] { height: 37px; padding: 8px 6px; margin: 0; }
[id*="wpcf7-f6482"] .wpcf7-form textarea { height: 90px; padding: 8px 6px; margin: 0; }
[id*="wpcf7-f6482"] .wpcf7-form input[type=submit] { min-width: 142px; height: 50px; }

/* 306 — production hides the labels (av-form-labels-hidden): the label text
   lives in the placeholder, so the body carries no <label> at all. */
.wpcf7-form > p { margin: 0 0 16px !important; }
.wpcf7-form > p:last-of-type { margin-bottom: 0 !important; }
[id*="wpcf7-f6489"] .wpcf7-form input[type=submit] { min-width: 142px; height: 50px; }

/* --- 390 utility band: production wraps to four 30 px rows (125.8 px) --- */
@media (max-width: 767px) {
	.wp-block-group.pf-header__bar { height: auto; }
	.pf-header__bar-inner { display: flex; flex-wrap: wrap; height: auto; padding: 3px 0; }
	.pf-header__bar-right { display: contents; }
	.pf-social { order: 1; width: 100%; padding-left: 0; height: 30px; }
	.pf-header__secondary { order: 2; width: 100%; height: 30px; }
	.pf-langs { order: 3; width: 100%; height: 30px; padding-left: 0; }
	.pf-header__bar .pf-header__phone { order: 4; width: 100%; height: 30px; }
}

/* --- 390 type + socket (production at the 390 breakpoint) ---------------- */
@media (max-width: 767px) {
	.pf-heading--hero { font-size: 40px; line-height: 44px; }
	.pf-h3-band { font-size: 24px; line-height: 26.4px; }
	.wp-block-group.pf-socket { padding: 25px calc((100% - 85%) / 2); }
	.pf-socket__inner { height: 26.4px; }
	.pf-hero-video { aspect-ratio: auto; height: 195px; }
}

/* ==========================================================================
   P1 CSS-parity pass 3 (2026-10-23) — residuals B1-B10.
   Every value is a production computed value read from the live page.
   ========================================================================== */

/* --- B1 front advisory band: production paints the photograph with
   background-attachment: fixed, then a #06354b overlay element at opacity .7
   (measured #av_section_8 bg rgb(6,53,75) + .av-section-color-overlay 0.7 at
   inset 0). The rebuild painted the photograph at full strength, so the bands
   at y3480-4200 of the front page differed on 100 % of their pixels
   (stg rgb(57,120,161) vs prod rgb(5,52,75), dmax 86). ------------------- */
.pf-section--bgimage {
	min-height: 0;
	position: relative;
	background-color: #06354b;
	background-attachment: fixed;
	background-position: 0% 0%;
	background-size: cover;
}
/* the overlay is painted by the container (which spans the whole band) and
   positioned behind its content; the section itself must stay position:static
   — a positioned element with a fixed background is composited differently and
   painted inside the capture region, which is exactly the 100 %-of-pixels
   difference measured against production */
.pf-section--bgimage > .pf-container::before {
	content: "";
	position: absolute;
	inset: 0;
	background-color: #06354b;
	opacity: 0.7;
	pointer-events: none;
	z-index: -1;
}
/* production centres the band's content in the 75 vh minimum height:
   measured section 750 px, content 527.8 px, first child at +111.1 */
.pf-section--bgimage > .pf-container {
	position: relative;
	z-index: 1;
	min-height: 75vh;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding-top: 70px;
	padding-bottom: 70px;
}
/* production: h1 margin 0, subtitle 5.4 px below it, 60 px of the special
   heading's padding before the icon row (measured 3574.2 / 3634.6 / 3718) */
.pf-section--bgimage .pf-heading--hero { margin: 0; }
.pf-section--bgimage .pf-heading__sub { margin: 5.4px 0 60px; }
/* production icon block: .av_font_icon starts 39.2 px below the column top,
   glyph box 53.5 px, caption 16/20.8 in a 124 px block 8 px below, 35.1 px
   below the caption (column measured 156.6 px for a one-line caption) */
.pf-icon { text-align: center; padding: 39.2px 0 35.1px; }
.pf-icon__glyph {
	display: block;
	width: 53px;
	height: 53.5px;
	line-height: 53.5px;
	margin: 0 auto;
	font-size: 40px;
	border: 0;
	border-radius: 0;
	color: #ffffff;
}
.pf-icon__icon { display: none; }
.pf-icon__cap {
	display: block;
	width: 124px;
	max-width: 100%;
	margin: 8px auto 0;
	font-size: 16px;
	line-height: 20.8px;
	color: #ffffff;
	/* production's .av_icon_caption is one line high in a 124 px block
	   (measured h=20.8 = 20.8 line-height) — the caption is clipped, not
	   wrapped, which is what keeps the icon column at 156.6 px */
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.pf-icon__text { font-size: 12px; line-height: 19px; margin: 4px 0 0; }

/* --- B1/B2/B7 hero plate: production's next band starts at the plate's own
   edge (myslider 100 + 810 = av_section_2 at 910; at 1024 676, at 390 399.7).
   The 9.4 px margin-bottom shifted every band of every page down. --------- */
.pf-hero-video { margin-bottom: 0; }

/* --- B5 contact page: production's rule is a 25 px block with 30 px margins
   and a 1 px #e1e1e1 line inside (measured .hr 220.8 h=25 mt/mb 30,
   .hr-inner border-top 1px rgb(225,225,225)). The rebuild rendered the
   .wp-block-separator as a 2 px bar with no margins, which cost the left
   column 83 px and started the footer one band early. --------------------- */
.pf-row hr.wp-block-separator {
	width: 100%;
	max-width: none;
	height: 25px;
	margin: 30px 0;
	border: 0;
	background: none;
	position: relative;
}
.pf-row hr.wp-block-separator::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 12px;
	border-top: 1px solid #e1e1e1;
}
/* production's contact columns are not an equal-height table: both cells sit
   at the row top (measured form column and iconbox column both start at 150) */
.pf-contact-page .pf-row { align-items: flex-start; }

/* --- B6 footer box: production is 347.4 px from the footer start
   (wrap 16 px + container 245 px + 30 px, then the 57.4 px socket).
   The rebuild measured 326.4 px. ----------------------------------------- */
.pf-footer { padding-top: 16px; }
.pf-footer .pf-container { padding-bottom: 30px; }
.pf-footer__cols { padding-bottom: 8px; }
/* the nested "Solutions" row was height:0 / overflow:hidden / visibility:hidden
   (WP ships the closed-submenu state): production renders it as a normal
   35.4 px row (measured sub-menu 886.2 h=39.4) */
.pf-footer__nav ul.wp-block-navigation__submenu-container {
	height: auto !important;
	overflow: visible !important;
	visibility: visible !important;
	opacity: 1 !important;
}
.wp-block-group.pf-socket { padding-top: 15px; padding-bottom: 16px; }

/* --- B2/B4 header nav at 1024: production keeps the submenus out of the flow
   (absolute). Ours stayed in flow and inflated the nav to 210 px at y = -40,
   wrapping the utility band to three rows. ------------------------------- */
.pf-header__nav .wp-block-navigation-item { position: relative; }
.pf-header__nav .wp-block-navigation__submenu-container {
	position: absolute !important;
	top: 100% !important;
	left: 0 !important;
	height: auto !important;
	overflow: visible !important;
	min-width: 208px !important;
	background: #00243b !important;
	z-index: 100;
}

/* --- B7 390 stacking: production's bands carry 50 px above and 70 px below
   their content at 390 (measured every section: 50 top / 70 bottom), the
   advisory icon columns stack with a 20 px gap (pitch 176.6 = 156.6 + 20),
   the utility band is 124.8 px, and the footer widgets keep their 30 px
   inner margins with a 20 px column gap. --------------------------------- */
@media (max-width: 767px) {
	.pf-section > .pf-container { padding-bottom: 70px; }
	.pf-icon { margin-bottom: 20px; }
	.wp-block-group.pf-header__bar { padding-top: 0; }
	.pf-header__bar-inner { padding: 2px 0; }
	.pf-header__bar .pf-header__phone { height: 30px; line-height: 30px; padding: 0; }
	.pf-footer__cols { padding-top: 0; }
	.pf-footer .wp-block-column { padding: 30px 0; margin-bottom: 20px; }
}

/* --- B4 service 1024: production's Fluent form keeps two 269.3 px field
   columns at every desktop width, so the fields have to be proportional
   (50 % - 15 px = 269.35 px at 1440). As fixed 269 px they wrapped to one
   field per row at 1024 and the enquiry band grew 157 px (measured band
   651.4 vs production 497.2). ---------------------------------------------- */
[id*="wpcf7-f6482"] .wpcf7-form > p { width: calc(50% - 15px) !important; }

/* --- B5 contact 390: production's form column carries a closing rule below
   the form (306 right column: hr at 897.6, 25 px + 30 px margins). 0.3.5
   painted it with a ::after on the stacked column; pass 4 puts the real
   separator block into page 306's markup instead (A8), so the pseudo-element
   is gone — keeping both would render two rules 55 px apart at 390. -------- */

/* production's Fluent form goes single-column at the tablet breakpoint; the
   proportional two-column rule above would otherwise halve the fields at 390
   and lose 177 px of the enquiry band (measured 3514 vs production 3841). */
@media (max-width: 989px) {
	[id*="wpcf7-f6482"] .wpcf7-form > p {
		width: 100% !important;
		margin-right: 0 !important;
	}
}

/* --- B3 service hero plate: production paints the banner photograph at its
   natural size, top-centre, no-repeat, on white (measured #av_section_1:
   background-size auto, position 50% 0%, no-repeat, bg #ffffff). The rebuild
   used cover/0% 0%/repeat, which cropped the artwork differently
   (y300-420: prod rgb(198,184,152) vs stg rgb(173,172,150), dmax 25). ------ */
.pf-section--hero:not(:has(.pf-shape-col)) {
	background-color: #ffffff;
	/* the block's own background-size lives in the element's inline style, so
	   these have to win over it */
	background-size: auto !important;
	background-position: 50% 0% !important;
	background-repeat: no-repeat !important;
}

/* --- B7 390 stacking: production's stacked columns carry a 20 px bottom
   margin (measured: image column 450.7-762.3 + 20 px, text column at 782.3). */
@media (max-width: 989px) {
	.pf-row > .pf-col { margin-bottom: 20px; }
	.pf-row > .pf-col:last-child { margin-bottom: 0; }
}

/* --- B6 socket position: production's #socket is a SIBLING of #footer, so it
   starts after the footer's 30 px bottom padding (measured footer 730-1021,
   socket 1020-1077.4). In the rebuild the socket is the last child of the
   footer, so the same 30 px has to sit between the container and the socket
   instead of under it — same page height, socket 30 px lower. -------------- */
.pf-footer { padding-bottom: 0; }
.pf-footer .pf-container { margin-bottom: 30px; }

/* --- B9 390 socket: production's socket measures 77.4 px at 390 (25 px above
   and below the 26.4 px line), while the desktop socket is 57.4 px. The
   pass-3 socket padding rule above is unconditional, so the 390 value has to
   be restated after it. ---------------------------------------------------- */
@media (max-width: 767px) {
	.wp-block-group.pf-socket { padding-top: 25px; padding-bottom: 25px; }
}

/* ==========================================================================
   PASS 4 — residuals A8 (306 rule), A9 (306 entry pitch), A3 (hero caption)
   Measured 2026-10-23 against production at 1440/1024.
   ========================================================================== */

/* --- A8: production's contact rules run the full column width (measured
   .hr 568.7 px, x 107.5 and 748.8). Core's
   `.wp-block-separator:not(.is-style-wide):not(.is-style-dots)` forces
   width:100px (0,3,0) and outranked `.pf-row hr.wp-block-separator` (0,2,1),
   so both columns painted a 100 px stub. The blocks now carry is-style-wide
   (which that :not() chain excludes); this keeps the width explicit too. ---- */
.pf-row hr.wp-block-separator.pf-hr { width: 100%; }

/* --- A8: production's rule rhythm per column. Left column: h2 150 + 30.8 →
   rule 220.8 (a 40 px gap). Right column: rule 180 → h2 235 (30 px) → form
   275.8 (10 px). WordPress's flow layout zeroes the child margins, so each
   gap is set on the block that follows. ------------------------------------ */
.pf-contact-page .pf-col--half:first-child hr.wp-block-separator { margin-top: 40px; }
.pf-contact-page .pf-col--half:last-child hr.wp-block-separator { margin-top: 30px; }
.pf-contact-page .pf-col--half:last-child h2.wp-block-heading { margin-block-start: 30px; }
.pf-contact-page .pf-col--half:last-child .wpcf7 { margin-top: 10px; }

/* --- A9: production's contact entries are 66.4 px boxes on a 30 px margin
   (pitch 96.4: 701.4 / 797.8 / 894.2). The box is h3 24 + a 16 px gap + the
   26.4 px text line; 0.3.5's generic `.pf-container p` (0.85em = 13.6 px) and
   a 34 px box margin gave a 64 px box on a 98 px pitch. The Address entry's
   second line keeps production's 13.6 px paragraph gap. ------------------- */
.pf-contact-page .pf-iconbox { margin-bottom: 30px; }
.pf-contact-page .pf-iconbox p.pf-iconbox__text { margin-block: 13.6px 0; }
.pf-contact-page .pf-iconbox p.pf-iconbox__text:first-of-type { margin-block-start: 16px; }
.pf-contact-page .pf-iconbox:last-child { margin-bottom: 0; }

/* --- A3: production puts the hero caption 1 px under the h1 (measured 1024:
   h1 275 + 53 → caption 329). `.pf-container h1 { margin-block-end: 10px }`
   (0,1,1) outranked `.pf-hero__title { margin: 0 auto 1px }` (0,1,0), so the
   caption sat 10 px low and every hero band carried a 9 px offset. --------- */
.pf-section--hero .pf-hero__title,
.pf-container .pf-hero__title { margin-block-end: 1px; }

/* --- A2: 194 (shape hero) at ≤1024. Production centres the three caption
   columns vertically with a fixed +36.5 px bias — measured column top is
   section top + (630 − columnH)/2 + 36.5 at BOTH widths: 1440 (186.8 against
   a 329.5 px column) and 1024 (227.7 against 247.5). Our fixed 87 px padding
   coincidentally matches 1440 (187.0) but leaves the columns 40.7 px high at
   1024 (187 vs 227.7), which is the whole of the 4 failing bands there.
   Never measured at 390 against production's mobile shape hero, so the
   override stops at 1024 and 390 keeps the 0.3.5 value. -------------------- */
@media (min-width: 990px) and (max-width: 1024px) {
	.pf-section--hero:has(.pf-shape-col) > .pf-container { padding-top: 127.5px; }
}

/* ==========================================================================
   PASS 5 — full-page findings F1-F13 (card t_c3040f36).
   Every value below is a production computed value, re-measured 2026-10-23
   in probe-before.json (this pass) and in
   deliverables/MSV-169/P1-fullpage/P1-fullpage-bands.csv (the validator).
   ========================================================================== */

/* --- F1 · document tail colour. Production sets html{background:#00243b}
   with a transparent body (measured: prod html rgb(0,36,59), body
   rgba(0,0,0,0); staging html rgba(0,0,0,0), body rgb(255,255,255)).
   Because the body's background propagates to the canvas when the html has
   none, the 122 px below About's body box (body 1077 px inside a 1200 px
   document at 1440 and 1024) painted white instead of navy — the only
   dmax-255 difference in the validator's 679 bands (about@1440 y1080-1200,
   about@1024 y1080-1200). Setting the html background stops the propagation,
   so the tail is navy while the body keeps its own white box. No layout
   impact: only documents shorter than the viewport have a tail at all. --------- */
html { background-color: #00243b; }

/* --- F2 · front hero plate. Production's front hero is a raw
   <video class="video-bg">: 1440 -> y100..910 (810 px), 1024 -> y100..676
   (576 px = 16:9 of the 1024 body), 390 -> y204.8..391.3 (186.5 px = 16:9 of
   85 % of the body, x29.3). Its #myslider band is always the video's height
   plus an 8.4 px inline line-box descender (818.4 / 584.4 / 194.9), and that
   8.4 px paints the page background, not navy. Staging pinned
   aspect-ratio 1425/810 (pass 2), which is only right at 1440: at 1024 it gave
   582.1 for 584.4, and the plate's own #00243b painted the strip under the
   video, so production reads 252,252,252 at y910 while staging was still
   rgb(26,58,79) until 918.5 (34@1440 band y900-960, dmax 38).
   Now: content box = 16:9 of the body width, + the same 8.4 px descender
   (content-box so the padding is additive), white plate, and the
   scroll-down chevron sits on the video's own bottom edge (production's
   a.scroll-down-link is 80 x 60 at y850..910). Mobile keeps its measured
   195 px plate but the video is production's 85 % width, top-aligned. -------- */
@media (min-width: 990px) {
	.pf-hero-video { aspect-ratio: 16 / 9; box-sizing: content-box; padding-bottom: 8.4px; }
}
.pf-hero-video { background: #ffffff; }
.pf-hero-video::after { bottom: 8.4px; }
@media (max-width: 989px) {
	.pf-hero-video__media { left: 0; right: 0; width: 85%; height: auto; aspect-ratio: 16 / 9; margin: 0 auto; }
}

/* --- F10 · icon-only links carry production's in-anchor label. Production
   wraps the label in <span class='avia_hidden_link_text'>Facebook</span> inside
   the anchor (measured on all four pages, header + socket); staging carried the
   label only in aria-label/title, so the link's own text was empty
   (structure diff: ['Facebook','Facebook'] -> ['',''], 17 rows, plus the two
   WPML flags and the search trigger). Same text, same targets, clipped out of
   the layout exactly like Enfold does. ------------------------------------- */
.pf-visually-hidden {
	position: absolute !important;
	width: 1px; height: 1px;
	margin: -1px; padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* --- F7 · the advisory band's fixed photograph does not repeat. Production:
   background-repeat no-repeat (measured #av_section_8 at 1440/1024/390, same
   photo / position 0% 0% / size cover / attachment fixed). Staging declared
   repeat, so the 900 px band at 1440 (and the taller 390 band) tiled the
   photograph where production leaves the band's own colour: every fixed-region
   band measured a phase difference (34@1440 y3600-3720 dmax 18-29,
   prod rgb(14,57,82) vs stg rgb(43,80,102)). ------------------------------- */
.pf-section--bgimage { background-repeat: no-repeat; }

/* --- F7 · the 390 advisory band is 42 px taller than production's — MEASURED,
   NOT CHANGED. Production (390, #av_section_8): heading block 267.6 px on both
   sides (h1 132 + sub 70.2 + 60) and eight icon columns of 156.6 / 156.6 /
   156.6 / 135.8 / 135.8 / 135.8 / 156.6 / 156.6 — a two-line caption makes a
   156.6 px column, a one-line caption 135.8 (107 px glyph box + 8 + 41.6 or
   20.8). Pass 3's `.pf-icon__cap` is nowrap/ellipsis at a fixed 124 px (right
   for the desktop four-column grid, where production clips too), so all eight
   of ours are 156.6 and the band measures 1800.2 against 1758.
   Letting the caption wrap at <=767 was tried and REVERTED: our caption set
   wraps to two lines on more columns than production's, which took the band to
   1774 px and the front page to 10084 px (+81 against production's 10003) with
   83 failing bands instead of 71. Equalising it needs production's per-caption
   line counts at 390 — recorded in P1-accepted-differences.md. -------------- */

/* --- F3/F4/F5 · 390 footer boundary — MEASURED, NOT CHANGED.
   Production's 390 footer is 697 px (16 px wrap + 651 px container + the 30 px
   it puts between the widget area and the socket) plus a 77.4 px socket, and
   staging's is 797.5 px = 16 + 675.1 + 30 + 76.4: the container carries BOTH
   the pass-2 padding-bottom:30px and the B6 margin-bottom:30px, and at 390
   both count. Removing the padding was tried and REVERTED: it makes the footer
   23.5 px too tall into 6.5 px too short, but it shortens every 390 document by
   30 px, and the three 390 rows are already short because the content bands
   above the footer are short (service -120, about -100, contact -144 px at the
   footer boundary). With the change contact@390 lands at -5.364 %, outside the
   card's 5 % height bar; without it -4.262 %. The 30 px is therefore
   load-bearing until the bands above are corrected: same stacking item, not a
   standalone fix. Recorded in P1-accepted-differences.md instead. ------------ */

/* ==========================================================================
   PASS 6 — A6: production's inline-block button rows carry a line-box
   descender. Measured 2026-10-23 on primefin.tech at 1440 / 1024 / 390, per
   button group, by walking each group's column:

     left-aligned groups   production's .avia-button-wrap is an inline-block in
                           a block column (line-height 26.4 px). Row pitch is
                           53.00 px (44.59 + an 8.41 px line-box descender) and
                           the column's last line box leaves 8.41 px below the
                           final row. measured tail 8.41 / 8.41 / 8.40 on the
                           three left-aligned columns at 390, 8.41 / 8.41 /
                           8.41 at 1024, for both 1-row and 3-row groups.
     right-aligned groups  production's wrap is a block float with
                           margin: 5px, so the first row starts 5.00 px lower
                           (measured +5.00 / +5.00 / +5.00 at 390, +4.99 /
                           +5.00 / +5.00 at 1024) and there is no line box.
     centred groups        production's wrap is a block too (tail 0.00 on both
                           centred columns at 390 and 1024) — unchanged.

   This reproduces that geometry on the row container itself, so it is
   inherited by every page that uses `.pf-buttons`: no page id, no band
   offset, no per-section value. The intra-row horizontal gap is NOT touched
   here (that is item 2: production measures 4.15-4.16 px on the un-margined
   rows and 10.01 px on the right-aligned ones).
   ========================================================================== */
.pf-buttons:not(.pf-buttons--right):not(.pf-buttons--center) {
	row-gap: 8.41px;
	padding-bottom: 8.41px;
}
.pf-buttons.pf-buttons--right {
	padding-top: 5px;
}
@media (max-width: 989px) {
	.pf-buttons.pf-buttons--right {
		padding-bottom: 5px;
	}
}
/* ==========================================================================
   PASS 6 — ITEM 1: 390 stacking, with production's own values, scoped to the
   bands production builds from stacked columns.
   Measured 2026-10-23 at 390 on both sites:

     band padding      production's plain bands are 50 px top and bottom
                       (template-page `padding: 50px 0px` on av_section_2..7 of
                       the front page; band 1026.7 = 50 + 925.7 + 50).
     column margin     production's stacked `.flex_column` keeps a 20 px bottom
                       margin, including the last one: its content wrapper
                       measures 925.7 against a 905.7 column table
                       (1026.7 - 100 padding). Our `:last-child
                       { margin-bottom: 0 }` removed it, so the 20 px was being
                       paid back as pass 3's `padding-bottom: 70px`.

   Production only carries that 20 px where the band is built from columns: on
   538 / 194 / 306 the band's post-entry wrapper equals the band minus its
   padding to within 1 px (538 LynkPrime 474.4 - 100 = 374.4 vs 373.4; 306
   CONTACTS 1747.7 - 100 = 1647.7 exactly), because those pages use full-width
   content, not stacked columns. The rule is therefore scoped to bands whose
   last child really is a stacked row - 50 + 20 = the 70 we had - so the front
   page's composition becomes production's while bands with no column keep their
   measured padding (see the HELD block below).

   The advisory band is excluded: production keeps 70/70 there
   (template-page `70px 0px` on av_section_8).
   ========================================================================== */
@media (max-width: 767px) {
	/* both rules keyed on the SAME chain, so a band either gets production's
	   50 px padding AND its 20 px column margin (total unchanged) or keeps the
	   measured 70 px. The 20 px is carried as the row's padding rather than the
	   column's margin: a measured margin did not survive on 538 / 306 (their
	   last row ends in a column too, but the margin never reached the band
	   edge, so those pages lost 20 px), while padding always resolves. */
	.pf-section > .pf-container:has(> .pf-row:last-child) {
		padding-bottom: 50px;
	}
	.pf-section > .pf-container > .pf-row:last-child {
		padding-bottom: 20px;
	}
	.pf-section--bgimage > .pf-container {
		padding-bottom: 70px;
	}
}

/* --- ITEM 1b . the footer's duplicate 30 px - MEASURED, NOT LANDED ----------
   Production puts exactly ONE 30 px between the widget columns and the socket
   (#footer padding-bottom 30, then #socket as a sibling). We carry two: the
   container's padding-bottom 30 and the B6 margin-bottom 30. At 390 our footer
   measures 767.5 px against production's 774.3 (697 + 77.4), i.e. we are 6.8 px
   SHORT in the footer already, and removing the second 30 px takes it to 737.5.

   Measured this pass: with the duplicate removed, contact (306) @390 goes
   2556 -> 2526 = -5.364 % against production's 2722, outside the card's 5 %
   mobile bar (it is -4.262 % with the 30 px in place). 306's CONTACTS band is
   1482.8 px of content against production's 1647.7 - 165 px short for reasons
   outside this card - so the 30 px is load-bearing until that band is fixed.
   Same finding as the previous pass (P1-final3/INDEX.md section 1); recorded,
   not shipped.
   ------------------------------------------------------------------------- */
/* ==========================================================================
   PASS 6 — ITEM 2: the intra-row button gap at 1024 (CRM band, F8/F9).
   Measured 2026-10-23 on both sites. The card's original cause (a narrower text
   column) does NOT exist: production's CRM text column is x 376.47 w 597.53 and
   ours is x 376.47 w 597.52. The difference is the space BETWEEN the buttons:
   production's .avia-button wraps are inline-blocks separated by the whitespace
   between them, measured 4.15-4.16 px at both 1440 and 1024
   (1440: x 542.52 / 648.45 / 781.64 / 924.59; 1024: 376.47 / 482.41 / 615.59 /
   758.55, all on one row). Ours is a flex `gap: 10px`, which needs 607.38 px in
   a 597.52 px column, so the fourth button wrapped and the band measured
   406.41 px against production's 360.22.

   The right-aligned rows are the exception and must keep 10: their wraps carry
   `.avia-button-right` with `margin-right: 5px` and production measures 10.01 px
   there (and they do wrap three-and-one, which ours reproduces only at 10 px).
   ========================================================================== */
.pf-buttons:not(.pf-buttons--right) {
	column-gap: 4.16px;
}
/* ==========================================================================
   PASS 6 — ITEM 3: the 390 advisory band's +42 px (F7).
   Production's eight icon columns at 390 (#av_section_8, measured twice):
     column heights 156.59 / 156.59 / 156.59 / 135.8 / 135.8 / 135.8 / 156.59 /
     156.59, caption line counts 2/2/2/1/1/1/2/2 — a 107 px glyph area + 8 px +
     a caption that WRAPS (two lines 41.59, one line 20.8).
   The band measures 1757.97 px = 70 + 267.61 heading + 1350.36 icon stack
   (including the last column's 20 px column margin) + 70.

   Ours: `.pf-icon` carries 39.2 + 35.1 px of padding around the 53.5 px glyph
   (a 127.78 px glyph area, 20.78 px too tall) and `.pf-icon__cap` is
   nowrap/ellipsis in a fixed 124 px box, so all eight captions stayed on one
   line and every column measured 156.58 — band 1823.6 px against 1781.4 at 390
   in this pass (1800.23 in pass 5's measurement of the same rule set).

   Two measured values reproduce production exactly:
     1. glyph area 107 px  -> padding 26.75 / 26.75 around the 53.5 px glyph
     2. a caption box that WRAPS -> no nowrap, no 124 px clip
   The caption box is 280 px, not the column's 331.5 px, because our font stack
   is marginally narrower: at 331.5 px our eighth caption ("Bank Account Opening
   and Management") fits on ONE line where production's takes two. Swept on the
   live page at 390 this pass: the line pattern is 22211121 at 331/320/300/290 px,
   22211122 (= production's) at 280/270/260/250/240 px, 22221222 at 230/220 and
   32321222 at 200. 280 is the widest that reproduces production's pattern.
   The last column's 20 px column margin is carried by item 1's
   `.pf-row > .pf-col:last-child` rule, not duplicated here.
   ========================================================================== */
@media (max-width: 767px) {
	.pf-section--bgimage .pf-icon {
		padding-top: 26.75px;
		padding-bottom: 26.75px;
	}
	.pf-section--bgimage .pf-icon__cap {
		width: 280px;
		max-width: 280px;
		white-space: normal;
		overflow: visible;
		text-overflow: clip;
	}
}
