/* fulbridge — header, footer and palette for every other page. Generated by scripts/build-theme.js from theme-src/; edit the sources, not this file. */
/* =========================================================
   fulbridge — tokens (fw_color palette.md)
   Register follows the reference: light canvas, one sans family,
   stacked ink→grey headings, object beside text.
   This part is not scoped: tokens, page frame, header, footer.
   It loads on every page: body.fb-site is every page, body.fb-home only the homepage template
   (other pages keep Kadence's layout, which has its own .wrap, so the header/footer .wrap is scoped).
   ========================================================= */
:root{
  --ink:#0F1B29;          /* Deep Majorelle Ink */
  --muted:#4B5563;        /* Slate Grey */
  --sand:#F8F6F2;         /* Warm Sand */
  --white:#FFFFFF;
  --slate:#1E3A5F;        /* Atlas Slate */
  --ochre:#C28857;        /* Ochre Gold */
  --ochre-hover:#A86F3D;
  --line:#E5E0D8;         /* Pale Sand */
  --grey-stack:#8A919C;   /* lighter Slate Grey for stacked heading lines */

  --font:"Noto Sans","Noto Sans Arabic","Noto Sans SC",system-ui,sans-serif;
  --wrap:1240px;
  --gutter:clamp(16px,5vw,72px);
  --header-h:84px;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body.fb-home{margin:0;background:var(--white);color:var(--muted);font:400 16px/1.65 var(--font);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.fb-home img{display:block;max-width:100%;height:auto}
.fb-home .wrap,.fb-site .site-header .wrap,.fb-site .site-footer .wrap{max-width:calc(var(--wrap) + 2*var(--gutter));margin:0 auto;padding:0 var(--gutter)}
/* the header row is fuller than the page column (logo, 6 menu items, search, language, quote): 120px wider on big screens */
.fb-home .site-header .wrap,.fb-site .site-header .wrap{max-width:calc(var(--wrap) + 120px + 2*var(--gutter))}
.fb-main{display:block}
/* anchors land below the sticky header */
.fb-site [id]{scroll-margin-top:calc(var(--header-h) + 16px)}

/* WordPress adds a 24px gap between blocks; the design sets its own spacing.
   Specificity (0,2,0) beats WordPress's (0,1,0); every component rule below is (0,2,1) or more, or comes later. */
.fb-page.fb-page :where(.wp-block-group,.wp-block-group__inner-container,.wp-block-column,.wp-block-columns,.wp-block-quote,.wp-block-buttons)>*{margin-block:0}

/* icon base rule for the homepage and for the header and footer of every page; .fb-home/.fb-site keep it above
   Google's own .material-symbols-outlined rule (24px). Icons in other pages' content: site.css */
.fb-home .material-symbols-outlined,.fb-site .site-header .material-symbols-outlined,.fb-site .site-footer .material-symbols-outlined{font-family:"Material Symbols Outlined";font-weight:400;font-style:normal;font-size:1.25em;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;direction:ltr;font-feature-settings:"liga";-webkit-font-smoothing:antialiased;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;vertical-align:middle;user-select:none}
/* icons drawn from data-icon, so the icon's code word never appears in the page text */
.material-symbols-outlined[data-icon]::before{content:attr(data-icon)}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.fb-skip{position:absolute;left:16px;top:-60px;z-index:100;background:var(--ink);color:var(--white);padding:10px 16px;border-radius:4px;font:600 14px var(--font);text-decoration:none}
.fb-skip:focus{top:12px;color:var(--white)}

/* header and footer text, the same on every page (Kadence pages set their own body size, line height and colour) */
.fb-site .site-header,.fb-site .site-footer{font-size:16px;line-height:1.65;color:var(--muted);font-family:var(--font)}

/* ---------- buttons in the header ---------- */
.site-header .btn{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:17px;line-height:1.25;padding:11px 24px 11px 18px;border-radius:4px;text-decoration:none;border:1px solid transparent;background:var(--ochre);color:var(--white);transition:background-color .2s ease-in-out}
.site-header .btn:hover,.site-header .btn:focus{background:var(--ochre-hover);color:var(--white)}
/* "Request a / quote" on two lines on purpose (owner, 13 Oct) */
.site-header .header-tools .btn{max-width:170px}
.site-header .btn .material-symbols-outlined{font-size:22px;font-variation-settings:"FILL" 0,"wght" 500,"GRAD" 0,"opsz" 24}

/* ---------- header ---------- */
.fb-site .site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid transparent;transition:border-color .2s}
.admin-bar .site-header{top:32px}
@media (max-width:782px){.admin-bar .site-header{top:46px}}
@media (max-width:600px){.admin-bar .site-header{top:0}}
.site-header.scrolled{border-color:var(--line)}
.header-inner{position:relative;display:flex;align-items:center;gap:32px;height:var(--header-h)}/* was 44px; room for the search field */
.fb-site .logo{display:inline-flex;align-items:center;gap:3px;font-weight:800;font-size:24px;letter-spacing:-.04em;color:var(--ink);text-decoration:none;line-height:1;font-family:var(--font)}
.fb-site .logo:hover{color:var(--ink)}
.fb-site .logo .logo-mark{width:40px;height:40px;margin-right:8px;flex:none}
/* header logo as tall as the two-line quote button, 67px (owner, 13 Oct; was 48px), wordmark scaled with it; footer stays 40px */
.fb-site .site-header .logo .logo-mark{width:67px;height:67px}
.fb-site .site-header .logo{font-size:30px}
.fb-site .site-header .logo-box{font-size:20px;padding:7px 7px 9px}
.logo-box{background:var(--ink);color:var(--white);font-size:16px;letter-spacing:0;padding:6px 6px 7px;line-height:1}
.main-nav{display:flex;align-items:center;gap:28px;font-size:16px;font-weight:500}/* 16px = body text (owner, 13 Oct; was 14px) */
.main-nav ul{list-style:none;margin:0;padding:0;display:contents}
.main-nav li{list-style:none}
.main-nav a{color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
.main-nav a:hover,.main-nav a:focus{color:var(--ochre)}
.site-header .main-nav .material-symbols-outlined{font-size:18px}
.has-sub{position:relative}
.main-nav .sub{position:absolute;top:100%;left:-20px;padding:16px 0 0;margin:0;opacity:0;visibility:hidden;transform:translateY(6px);transition:.18s;display:block;z-index:2}
.main-nav .sub::before{content:"";position:absolute;inset:16px 0 0;background:var(--white);border:1px solid var(--line);box-shadow:0 24px 50px -24px rgba(15,27,41,.3)}
.main-nav .sub a{position:relative;white-space:nowrap;padding:11px 20px;gap:12px;width:100%}
.main-nav .sub a .material-symbols-outlined{color:var(--ochre)}
.has-sub:hover .sub,.has-sub:focus-within .sub{opacity:1;visibility:visible;transform:none}
/* the same, for a menu assigned in Appearance → Menus */
.main-nav .menu-item-has-children{position:relative}
.main-nav .sub-menu{list-style:none;position:absolute;top:100%;left:-20px;padding:16px 0 0;margin:0;opacity:0;visibility:hidden;transform:translateY(6px);transition:.18s;display:block;z-index:2}
.main-nav .sub-menu::before{content:"";position:absolute;inset:16px 0 0;background:var(--white);border:1px solid var(--line);box-shadow:0 24px 50px -24px rgba(15,27,41,.3)}
.main-nav .sub-menu a{position:relative;white-space:nowrap;padding:11px 20px;gap:12px;width:100%}
.main-nav .sub-menu a .material-symbols-outlined{color:var(--ochre)}
.main-nav .menu-item-has-children:hover .sub-menu,.main-nav .menu-item-has-children:focus-within .sub-menu{opacity:1;visibility:visible;transform:none}
.main-nav .current-menu-item>a{color:var(--ochre)}
/* the tools fill the rest of the row, right-aligned, so the search field can grow into the free space */
.header-tools{margin-left:auto;display:flex;align-items:center;justify-content:flex-end;gap:14px;flex:1 1 auto;min-width:0}

/* ---------- header search (standard WordPress search, ?s=) ---------- */
/* header boxes (search, language) framed in the quote button's ochre (owner, 13 Oct) */
.site-search{position:relative;display:flex;align-items:center;height:40px;margin:0;border:1px solid var(--ochre);border-radius:4px;background:var(--white);transition:border-color .2s}
.site-search:focus-within{border-color:var(--ochre-hover)}
.search-icon{display:grid;place-items:center;flex:none;width:38px;height:38px;border:0;background:none;color:var(--ochre);cursor:pointer;padding:0}
.site-header .search-icon .material-symbols-outlined{font-size:20px}
/* the field takes the free space up to 300px (about 150px on a 1366px laptop) */
.site-search{flex:0 1 300px;min-width:0}
.site-search input{flex:1 1 auto;width:auto;min-width:0;height:100%;border:0;outline:0;background:none;font:400 14px var(--font);color:var(--ink);padding:0 12px 0 0;margin:0;box-shadow:none;border-radius:0;min-height:0}
.site-search input::placeholder{color:var(--grey-stack)}
/* below 1340px there is too little room to type: the field folds into its icon and opens across the header */
@media (max-width:1340px){
  .site-search{flex:none}
  .site-search input{flex:none;width:0;padding:0}
  .site-search.open{position:absolute;left:var(--gutter);right:var(--gutter);top:50%;transform:translateY(-50%);z-index:5;border-color:var(--ochre-hover);box-shadow:0 0 0 12px var(--white)}
  .site-search.open input{width:100%;padding-right:12px}
}

/* ---------- language switcher ---------- */
.lang-switch{position:relative}
.lang-btn{display:inline-flex;align-items:center;gap:6px;height:40px;background:none;border:1px solid var(--ochre);border-radius:4px;padding:0 12px;font:600 13px/1 var(--font);color:var(--ink);cursor:pointer;letter-spacing:.06em}
.site-header .lang-btn .material-symbols-outlined{font-size:18px;color:var(--ochre)}
.lang-btn:hover{border-color:var(--ochre-hover);background:none;color:var(--ink)}
/* closed menus carry the "hidden" attribute for text extractors; display:block keeps the fade-in behaviour */
.lang-menu{display:block;list-style:none;margin:0;padding:8px 0;position:absolute;right:0;top:calc(100% + 10px);min-width:210px;background:var(--white);border:1px solid var(--line);box-shadow:0 24px 50px -24px rgba(15,27,41,.3);opacity:0;visibility:hidden;transform:translateY(6px);transition:.18s}
.lang-switch.open .lang-menu{opacity:1;visibility:visible;transform:none}
.lang-menu a{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:9px 20px;color:var(--ink);text-decoration:none;font-size:15px}
.lang-menu .lm-en{font-size:12px;color:var(--grey-stack);font-weight:400}
.lang-menu a:hover{background:var(--sand);color:var(--ink)}
.lang-menu a[aria-current]{color:var(--ochre);font-weight:600}
.burger{display:none;background:none;border:0;color:var(--ink);cursor:pointer;padding:6px}
.burger:hover,.burger:focus{background:none;color:var(--ink)}
.site-header .burger .material-symbols-outlined{font-size:28px}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--line);padding:34px 0}
.footer-inner{display:flex;align-items:center;gap:40px;flex-wrap:wrap}
.footer-nav{display:flex;flex-wrap:wrap;gap:26px;font-size:14px}
.footer-nav ul{list-style:none;margin:0;padding:0;display:contents}
.footer-nav a{color:var(--ink);text-decoration:none}
.footer-nav a:hover{color:var(--ochre)}
.footer-copy{margin-left:auto;font-size:13px;color:var(--grey-stack)}

/* ---------- responsive (header and footer) ---------- */
@media (max-width:1180px) and (min-width:1151px){
  .main-nav{gap:18px;font-size:15px}
  .header-inner{gap:28px}
}
/* below 1150px the menu folds into the burger, so the header never wraps (owner decision, 3 Oct 2026; was 1100px
   before the logo mark took 48px of the row — "About Us" wrapped at 1105px) */
@media (max-width:1150px){
  .main-nav{display:none}
  .main-nav.open{display:flex;position:absolute;top:var(--header-h);left:0;right:0;flex-direction:column;align-items:flex-start;gap:0;background:var(--white);border-bottom:1px solid var(--line);padding:8px var(--gutter) 20px}
  .main-nav.open>a,.main-nav.open li>a,.main-nav.open .has-sub>a{padding:12px 0}
  .main-nav.open .sub,.main-nav.open .sub-menu{position:static;opacity:1;visibility:visible;transform:none;padding:0}
  .main-nav.open .sub::before,.main-nav.open .sub-menu::before{display:none}
  .main-nav.open ul{display:flex;flex-direction:column}
  .main-nav.open .sub-menu a{padding:8px 0 8px 16px}
  .main-nav.open .sub a{padding:8px 0 8px 16px}
  .burger{display:grid;place-items:center}
}
@media (max-width:600px){
  :root{--header-h:72px}
  .header-tools .btn{display:none}
  .fb-site .site-header .logo .logo-mark{width:48px;height:48px}
  .fb-site .site-header .logo{font-size:24px}
  .fb-site .site-header .logo-box{font-size:16px;padding:6px 6px 7px}
  .footer-copy{margin-left:0}
}
/* small phones: logo + tools need 398px at the sizes above, so the search box covered "bridge" at 320px (13 Oct).
   Smaller logo and gaps; the language button keeps only its globe (its aria-label still names the language) */
@media (max-width:400px){
  .header-inner{gap:10px}
  .header-tools{gap:6px}
  .fb-site .site-header .logo .logo-mark{width:40px;height:40px;margin-right:6px}
  .fb-site .site-header .logo{font-size:20px}
  .fb-site .site-header .logo-box{font-size:14px;padding:5px 5px 6px}
  .lang-btn{width:40px;padding:0;gap:0;justify-content:center;font-size:0}
}

/* ====== Kadence pages ====== */
/* =========================================================
   fulbridge — every page that keeps the Kadence layout (all pages except the homepage template).
   Kadence colours everything (links, buttons, headings, text, borders) from its global palette,
   so the palette is mapped onto the fulbridge tokens here instead of changing the Customizer.
   html:root (0,1,1) beats Kadence's inline :root (0,1,0). Palette 7–15 (backgrounds, notices) stay as set.
   ========================================================= */
html:root{
  --global-palette1:var(--ochre);         /* accent: links, buttons */
  --global-palette2:var(--ochre-hover);   /* accent hover */
  --global-palette3:var(--ink);           /* strongest text: headings */
  --global-palette4:var(--muted);         /* body text */
  --global-palette5:var(--muted);         /* meta text */
  --global-palette6:var(--line);          /* subtle: borders */
  --global-body-font-family:var(--font);
  --global-heading-font-family:var(--font);
}

body.fb-site{font-family:var(--font);-webkit-font-smoothing:antialiased}
.fb-site :is(h1,h2,h3,h4,h5,h6){font-family:var(--font);color:var(--ink);letter-spacing:-.01em}

/* icons in page text, sized with the text and larger in headings (moved here from the Customizer's Additional CSS) */
.fb-site .material-symbols-outlined{font-family:"Material Symbols Outlined";display:inline-flex;vertical-align:middle;font-size:1em;line-height:1}
/* !important beats the inline "font-size:24px" the editor left on heading icons in the pages' content */
.fb-site :is(h1,h2,h3,h4):not(.fb-stack) .material-symbols-outlined{font-size:1.6em !important}
.fb-site .entry-content :is(h1,h2,h3,h4,h5,h6) .material-symbols-outlined{color:var(--ochre)}

/* lists: an icon instead of the bullet, "check" unless the list sets --icon (moved here from the Additional CSS) */
.fb-site .wp-block-list{list-style-position:inside;padding-left:0}
.fb-site .wp-block-list li{list-style-type:none;display:block;position:static;padding-left:0;margin-bottom:16px}
.fb-site .wp-block-list li::before{content:var(--icon,"check");font-family:"Material Symbols Outlined";position:static;display:inline-block;vertical-align:-3px;margin-right:8px;font-size:1.6em;line-height:1;color:var(--ochre);font-weight:normal;font-style:normal;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr}
/* an item that starts with its own icon span uses it as the bullet (same box as the tick) */
.fb-site .wp-block-list li:has(> .material-symbols-outlined:first-child)::before{content:none}
.fb-site .wp-block-list li > .material-symbols-outlined:first-child{display:inline-block;vertical-align:-3px;margin-right:8px;font-size:1.6em;line-height:1;color:var(--ochre)}

/* event scale (synced pattern "Event scale", same look as on the homepage): label + 2×2 grid, 4-bar meter by position */
.fb-site .entry-content h4.scale-title{margin:4px 0 0;padding:0 0 12px;font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;line-height:1.4;color:var(--muted)}
.fb-site .wp-block-list.scale{list-style:none;margin:0 0 28px;padding:0;display:grid;grid-template-columns:1fr 1fr;column-gap:24px;border-top:1px solid var(--line)}
.fb-site .wp-block-list.scale li{position:relative;margin:0;padding:14px 0 14px 42px;border-bottom:1px solid var(--line);font-size:14px;line-height:1.45;color:var(--muted)}
.fb-site .wp-block-list.scale li strong{font-size:15px;font-weight:600;color:var(--ink)}
.fb-site .wp-block-list.scale li::before{content:"";font-size:0;margin:0;position:absolute;left:0;top:17px;width:29px;height:21px;--b1:var(--line);--b2:var(--line);--b3:var(--line);--b4:var(--line);background:linear-gradient(var(--b1),var(--b1)) 0 100%/5px 6px no-repeat,linear-gradient(var(--b2),var(--b2)) 8px 100%/5px 11px no-repeat,linear-gradient(var(--b3),var(--b3)) 16px 100%/5px 16px no-repeat,linear-gradient(var(--b4),var(--b4)) 24px 100%/5px 21px no-repeat}
.fb-site .wp-block-list.scale li:nth-child(1)::before{--b1:var(--ochre)}
.fb-site .wp-block-list.scale li:nth-child(2)::before{--b1:var(--ochre);--b2:var(--ochre)}
.fb-site .wp-block-list.scale li:nth-child(3)::before{--b1:var(--ochre);--b2:var(--ochre);--b3:var(--ochre)}
.fb-site .wp-block-list.scale li:nth-child(4)::before{--b1:var(--ochre);--b2:var(--ochre);--b3:var(--ochre);--b4:var(--ochre)}
@media (max-width:480px){.fb-site .wp-block-list.scale{grid-template-columns:1fr}}
/* icon variants (list class): people for interpretation, Wi-Fi signal for equipment; without them the bars show */
.fb-site .wp-block-list.scale:is(.scale-people,.scale-signal) li::before{content:"person";top:15px;width:auto;height:auto;background:none;font-family:"Material Symbols Outlined";font-size:24px;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;color:var(--ochre);font-feature-settings:"liga";-webkit-font-smoothing:antialiased;font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24;user-select:none}
.fb-site .wp-block-list.scale.scale-people li:nth-child(1)::before{content:"person";content:"person" / ""}
.fb-site .wp-block-list.scale.scale-people li:nth-child(2)::before{content:"group";content:"group" / ""}
.fb-site .wp-block-list.scale.scale-people li:nth-child(3)::before{content:"groups";content:"groups" / ""}
.fb-site .wp-block-list.scale.scale-people li:nth-child(4)::before{content:"diversity_3";content:"diversity_3" / ""}
.fb-site .wp-block-list.scale.scale-signal li:nth-child(1)::before{content:"network_wifi_1_bar";content:"network_wifi_1_bar" / ""}
.fb-site .wp-block-list.scale.scale-signal li:nth-child(2)::before{content:"network_wifi_2_bar";content:"network_wifi_2_bar" / ""}
.fb-site .wp-block-list.scale.scale-signal li:nth-child(3)::before{content:"network_wifi_3_bar";content:"network_wifi_3_bar" / ""}
.fb-site .wp-block-list.scale.scale-signal li:nth-child(4)::before{content:"signal_wifi_4_bar";content:"signal_wifi_4_bar" / ""}

/* page title area: no background band or height limits (the Customizer squeezes it to 10px) */
body.fb-site .entry-hero .entry-hero-container-inner{background:none;border:0}
body.fb-site .entry-hero .hero-section-overlay{display:none}
/* side padding lines the title up with the text of the boxed content below */
body.fb-site .entry-hero .entry-header{min-height:0;max-height:none;margin:0;padding:clamp(40px,6vw,88px) var(--global-content-boxed-padding,2rem) 0}
/* on phones Kadence pulls the content box out by twice the edge padding */
@media (max-width:767px){body.fb-site .entry-hero .entry-header{padding-inline:calc(var(--global-content-boxed-padding,1.5rem) - 2*var(--global-content-edge-padding,.5rem))}}

/* "full width" and "wide" blocks stay in the text column: in Kadence's boxed layout they otherwise spill past the
   box and the screen edge (sections from the old page builder presets on Services, FAQ, Contact, Testimonials) */
body.fb-site .content-container .entry-content-wrap .entry-content :is(.alignwide,.alignfull){margin-left:0;margin-right:0;width:auto;max-width:none}
body.fb-site .content-container .entry-content-wrap .entry-content > .alignfull{padding-left:0;padding-right:0}

/* page title in the homepage's stacked style (template-parts/title/title.php): line 1 ink with an ochre icon, then grey */
body.fb-site .entry-title.fb-stack{margin:0;font-weight:700;letter-spacing:-.035em;line-height:1.08;font-size:clamp(34px,3.6vw,52px);color:var(--grey-stack)}
body.fb-site .entry-title.fb-stack::first-line{color:var(--ink)}
body.fb-site .entry-title.fb-stack .material-symbols-outlined{font-family:"Material Symbols Outlined";display:inline-block;font-size:.95em;line-height:1;color:var(--ochre);margin-right:.3158em;vertical-align:-.12em;font-variation-settings:"FILL" 0,"wght" 500,"GRAD" 0,"opsz" 48}

/* buttons: ochre, white bold text, 4px radius (Kadence buttons, block buttons, form buttons) */
.fb-site .wp-block-button__link,
.fb-site .entry-content .button,
.fb-site .entry-content button[type=submit],
.fb-site .entry-content input[type=submit],
.fb-site .wpforms-container .wpforms-submit{border-radius:4px;font-weight:700;font-family:var(--font)}
.fb-site .wp-block-button:not(.is-style-outline) .wp-block-button__link,
.fb-site .wpforms-container .wpforms-submit{background-color:var(--ochre);color:var(--white)}
.fb-site .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover,
.fb-site .wp-block-button:not(.is-style-outline) .wp-block-button__link:focus,
.fb-site .wpforms-container .wpforms-submit:hover{background-color:var(--ochre-hover);color:var(--white)}

/* form fields: light, like the header search, instead of Kadence's dark palette9 fields */
.fb-site .entry-content :is(input:not([type=submit]):not([type=button]):not([type=reset]):not([type=checkbox]):not([type=radio]):not([type=file]),select,textarea){background:var(--white);color:var(--ink);border:1px solid var(--line);border-radius:4px;box-shadow:none;font-family:var(--font)}
.fb-site .entry-content :is(input,select,textarea):focus{border-color:var(--slate);outline:0}
.fb-site .entry-content :is(input,textarea)::placeholder{color:var(--grey-stack)}
.fb-site .entry-content :is(label,.wpforms-field-label){color:var(--ink)}

/* tables and quotes in the homepage's register */
.fb-site .entry-content .wp-block-table :is(th,td){border-color:var(--line)}
.fb-site .entry-content .wp-block-table thead th{color:var(--ink)}
.fb-site .entry-content .wp-block-quote{border-left-color:var(--ochre)}

/* the header search keeps its own look against Kadence's form and button styles */
.fb-site .site-header .site-search input[type=search]{border:0;background:none;box-shadow:none;border-radius:0}
.fb-site .site-header :is(.search-icon,.lang-btn,.burger){box-shadow:none}
.fb-site .site-header .search-icon:is(:hover,:focus){background:none;color:var(--ochre-hover)}

/* in-page links (e.g. the Contact banner's "Request a quote" → #wpforms-12) stop below the sticky header (73px) */
html{scroll-padding-top:calc(var(--wp-admin--admin-bar--height, 0px) + 96px);scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* body text on phones: 16px like Contact's service text (Kadence's Customizer drops it to 13px below 768px; owner, 13 Oct) */
@media (max-width:767px){body.fb-site{font-size:16px}}
/* headings on phones: Kadence drops them to H2 16px, H3 14px, H4 13px; low specificity so headings with their own size
   (About carousel H3, Contact's inline 1.15rem H2s) keep it (owner, 13 Oct) */
@media (max-width:767px){
  body.fb-site .entry-content h2{font-size:26px;font-weight:600;line-height:1.2}/* larger & heavier than desktop's 24px/400 (owner, 13 Oct) */
  body.fb-site .entry-content h3{font-size:19px;line-height:1.3}
  body.fb-site .entry-content h4{font-size:17px;line-height:1.35}
}
/* About "Meet the team" names (columns class `team`): lighter than the section H2, icons at their own 24px (owner, 13 Oct) */
.fb-site .entry-content .team h3{font-size:18px;font-weight:700}
.fb-site .entry-content .team h3 .material-symbols-outlined{font-size:24px !important}
/* role (H4) on the name's line, in grey; 15px on phones and 14px ≤400px so "Lead Portuguese interpreter" fits beside
   "Fernando" from 360px up (it drops to its own line below that) */
.fb-site .entry-content .team h3{display:inline-block;margin:0 8px 0 0}
.fb-site .entry-content .team h3+h4{display:inline-block;margin:0;font-size:16px;font-weight:600;line-height:1.3;color:var(--muted)}
.fb-site .entry-content .team h4+p{margin-top:12px}
@media (max-width:767px){.fb-site .entry-content .team h3+h4{font-size:15px}}
@media (max-width:400px){.fb-site .entry-content .team h3+h4{font-size:14px}}

/* space between the page title and the content: 48px on every page (Kadence adds an 80px margin + 32px padding, and the
   old page-builder sections a 54px top padding meant for stacked sections; the first one under the title loses it) */
body.fb-site:not(.fb-home) .content-area{margin-top:48px}
body.fb-site:not(.fb-home) .entry-content-wrap{padding-top:0}
body.fb-site:not(.fb-home) .entry-content>.wp-block-group.alignfull:first-child{padding-top:0!important}

/* phones: an animated object in a media-text block (Contact's envelope) moves up just after the page title, 90px wide and
   centred on the title line, so the form starts right under the title (owner, 13 Oct). The title line is 37px tall and
   48px above the content, so its centre is 66px above it; the 80px-tall image starts 40px higher. "Contact" (icon + word
   at 34px) ends 167px into the content column; the image starts 14px after it.
   SpeedyCache may hold the real src in data-speedycache-original-src. */
@media (max-width:600px){
  .fb-site .entry-content:has(.wp-block-media-text__media img:is([src*="/obj-"],[data-speedycache-original-src*="/obj-"])){position:relative}
  .fb-site .entry-content .wp-block-media-text__media:has(img:is([src*="/obj-"],[data-speedycache-original-src*="/obj-"])){position:absolute;left:181px;top:-106px;width:90px;margin:0;padding:0;z-index:1}
  .fb-site .entry-content .wp-block-media-text__media img:is([src*="/obj-"],[data-speedycache-original-src*="/obj-"]){display:block;width:90px;height:auto;margin:0}
}

/* cover block overlay at 65% (WordPress rounds the dim classes to steps of 10): class "fb-dim-65" on the cover */
.fb-site .wp-block-cover.fb-dim-65 .wp-block-cover__background.has-background-dim{opacity:.65}

/* text beside an animated object, as in the homepage services: a columns block "feature" whose object column is
   "feature-object" (an image of an animated SVG); "flip" puts the object on the right */
.fb-site .entry-content .wp-block-columns.feature{display:grid;grid-template-columns:5fr 6fr;align-items:center;gap:56px;margin:64px 0}
.fb-site .entry-content .wp-block-columns.feature.flip{grid-template-columns:6fr 5fr}
.fb-site .entry-content .feature>.wp-block-column{align-self:center;min-width:0}
.fb-site .entry-content .feature.flip>.feature-object{order:2}
.fb-site .entry-content .feature-object .wp-block-image{margin:0}
.fb-site .entry-content .feature-object img{display:block;width:100%;max-width:520px;height:auto;margin:0 auto;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.fb-site .entry-content .feature:hover .feature-object img{transform:translateY(-8px) scale(1.02)}
/* no trailing margin under the text, so the columns end on its last line */
.fb-site .entry-content .feature>.wp-block-column>:last-child,
.fb-site .entry-content .feature>.wp-block-column>.wp-block-list:last-child>li:last-child{margin-bottom:0}
/* an object column that also holds a button runs from the heading to the last line of text beside it: the image
   shrinks to the room left above the button, so the button never sits lower than the text */
@media (min-width:901px){
  .fb-site .entry-content .feature-object:has(.wp-block-buttons){align-self:stretch;display:flex;flex-direction:column;gap:16px}
  .fb-site .entry-content .feature-object:has(.wp-block-buttons)>*{margin:0}
  .fb-site .entry-content .feature-object:has(.wp-block-buttons) .wp-block-image{flex:1 1 auto;min-height:220px;position:relative}
  .fb-site .entry-content .feature-object:has(.wp-block-buttons) .wp-block-image img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:contain}
}
@media (max-width:900px){
  .fb-site .entry-content .wp-block-columns.feature,.fb-site .entry-content .wp-block-columns.feature.flip{grid-template-columns:1fr;gap:20px;margin:40px 0}
  .fb-site .entry-content .feature.flip>.feature-object{order:0}
  .fb-site .entry-content .feature-object img{max-width:360px}
}

/* carousel of cards, as the homepage testimonials (app.js adds the buttons, dots and the 6 s rotation):
   group "carousel" > group "slides" > groups "slide" (icon paragraph "slide-icon", then heading and text) */
.fb-site .entry-content :is(.carousel,.slides,.slide)>.wp-block-group__inner-container{display:contents}
.fb-site .entry-content .carousel{margin:28px 0 8px}
.fb-site .entry-content .slides{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;outline:none}
.fb-site .entry-content .slides::-webkit-scrollbar{display:none}
.fb-site .entry-content .slide{flex:0 0 100%;box-sizing:border-box;scroll-snap-align:start;margin:0;display:grid;grid-template-columns:88px 1fr;column-gap:36px;align-items:center;background:var(--white);border:1px solid var(--line);border-radius:4px;padding:40px 48px}
.fb-site .entry-content .slide>*{margin:0}
.fb-site .entry-content .slide-icon{grid-row:1/span 2;width:88px;height:88px;border-radius:50%;background:var(--sand);display:grid;place-items:center;line-height:1}
.fb-site .entry-content .slide-icon .material-symbols-outlined{font-size:44px;color:var(--ochre)}
.fb-site .entry-content .slide h3{margin:0 0 10px;font-size:clamp(21px,2vw,26px);line-height:1.2;color:var(--ink)}
.fb-site .entry-content .slide p:not(.slide-icon){color:var(--muted)}
.fb-site .carousel-controls{display:flex;align-items:center;justify-content:center;gap:22px;margin-top:24px}
.fb-site .carousel-btn{width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:var(--white);color:var(--ink);display:grid;place-items:center;cursor:pointer;padding:0;box-shadow:none;transition:border-color .2s,color .2s}
.fb-site .carousel-btn:is(:hover,:focus-visible){border-color:var(--ochre);color:var(--ochre);background:var(--white)}
.fb-site .carousel-btn .material-symbols-outlined{font-size:22px}
.fb-site .carousel-btn.toggle{width:36px;height:36px;margin-left:-6px;color:var(--muted)}
.fb-site .carousel-btn.toggle .material-symbols-outlined{font-size:20px}
.fb-site .carousel .dots{display:flex;gap:10px}
.fb-site .carousel .dots button{width:10px;height:10px;border-radius:50%;border:0;padding:0;background:var(--line);cursor:pointer;box-shadow:none;transition:background .2s,transform .2s}
.fb-site .carousel .dots button[aria-selected=true]{background:var(--ochre);transform:scale(1.25)}
@media (max-width:600px){
  .fb-site .entry-content .slide{grid-template-columns:1fr;padding:28px 24px;row-gap:16px}
  .fb-site .entry-content .slide-icon{grid-row:auto;width:64px;height:64px}
  .fb-site .entry-content .slide-icon .material-symbols-outlined{font-size:34px}
}

/* scroll reveal, as on the homepage (app.js adds "reveal", then "in" when the block comes into view) */
.fb-site .entry-content .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}
.fb-site .entry-content .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .fb-site .entry-content .reveal{opacity:1;transform:none;transition:none}
  .fb-site .entry-content .slides{scroll-behavior:auto}
  .fb-site .entry-content .feature-object img{transition:none}
}

/* ====== layout-shift fix ====== */
.material-symbols-outlined{width:1em;height:1em;overflow:hidden;flex:none}
