/*
 * Global stylesheet.
 *
 * Import order matters: variables first, then reset, then everything that depends on
 * both. Per-block styles are NOT imported here — gulp compiles each
 * elements/<slug>/style.less separately and acf_register_block_type() enqueues it only
 * on pages where that block is used.
 */
/* ==============================================
   DESIGN SYSTEM - VARIABLES
   ============================================== */
:root {
  /* Colors */
  --brand-orange: #F39201;
  --brand-orange-dark: #D67E00;
  --brand-orange-light: #F9B74D;
  --brand-orange-tint: #FFF3E2;
  --brand-rust: #B84A00;
  --cream: #FCFAF7;
  --cream-dark: #F5F2ED;
  --white: #FFFFFF;
  --text: #20201E;
  --text-soft: #6A6965;
  --border: #E8E5E0;
  --dark: #242321;
  --dark-soft: #34322E;
  /* Gradients */
  --gradient-brand: linear-gradient(135deg, var(--brand-orange) 0%, var(--brand-rust) 100%);
  /* Typography */
  --font-primary: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-size-h1: clamp(1.7rem, 4vw, 3.1rem);
  --font-size-h2: clamp(1.45rem, 3.1vw, 2.2rem);
  --font-size-h3: clamp(1.1rem, 2vw, 1.45rem);
  --font-size-body: clamp(0.9375rem, 1vw, 1.0625rem);
  --font-size-small: clamp(0.8125rem, 0.85vw, 0.9375rem);
  /* Spacing */
  --container: 1320px;
  --section-spacing-desktop: clamp(60px, 6.3vw, 88px);
  --section-spacing-tablet: clamp(50px, 5.4vw, 70px);
  --section-spacing-mobile: clamp(40px, 6.3vw, 56px);
  /* Border Radius */
  --radius-sm: 9px;
  --radius-md: 14px;
  --radius-lg: 19px;
  /* Transitions */
  --transition: 220ms cubic-bezier(0.4, 0, 0.2, 1);
}
/* ==============================================
   RESET & BASE
   ============================================== */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
}
body {
  font-family: var(--font-primary);
  font-size: var(--font-size-body);
  color: var(--text);
  background-color: var(--white);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
/* Typography */
h1 {
  font-size: var(--font-size-h1);
  font-weight: 700;
  line-height: 1.1;
}
h2 {
  font-size: var(--font-size-h2);
  font-weight: 700;
  line-height: 1.15;
}
h3 {
  font-size: var(--font-size-h3);
  font-weight: 700;
}
h4 {
  font-size: 1.125rem;
  font-weight: 600;
}
p {
  color: var(--text-soft);
  line-height: 1.8;
}
a {
  color: var(--brand-orange);
  text-decoration: none;
  transition: color var(--transition);
}
a:hover {
  color: var(--brand-orange-dark);
}
/* The design's cards are static markup, so no heading is ever a link there. WordPress
   makes every card title a permalink, which would otherwise take the orange link colour
   and leave whole grids of headings orange. Headings keep their own colour; the link
   reveals itself on hover. */
h1 > a,
h2 > a,
h3 > a,
h4 > a,
h5 > a,
h6 > a {
  color: inherit;
}
h1 > a:hover,
h2 > a:hover,
h3 > a:hover,
h4 > a:hover,
h5 > a:hover,
h6 > a:hover {
  color: var(--brand-orange);
}
/* ==============================================
   WORDPRESS
   Core block CSS is dequeued (see src/remove_bloat.php), so the handful of core
   classes that still reach the front end are styled here.
   ============================================== */
.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.skip-link {
  position: absolute;
  left: -9999px;
  z-index: 999;
}
.skip-link:focus {
  left: 16px;
  top: 16px;
  width: auto;
  height: auto;
  padding: 12px 20px;
  background: var(--white);
  color: var(--text);
  border-radius: var(--radius-sm);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
  clip-path: none;
}
.alignleft {
  float: left;
  margin: 0 var(--spacing-md, 24px) var(--spacing-md, 24px) 0;
}
.alignright {
  float: right;
  margin: 0 0 var(--spacing-md, 24px) var(--spacing-md, 24px);
}
.aligncenter {
  display: block;
  margin-inline: auto;
}
.alignwide,
.alignfull {
  max-width: none;
}
.wp-caption {
  max-width: 100%;
}
.wp-caption-text,
figcaption {
  font-size: var(--font-size-small);
  color: var(--text-soft);
  margin-top: 8px;
}
img,
video {
  max-width: 100%;
  height: auto;
}
/* Editor previews render real block markup; keep them inside a sane column. */
.editor-styles-wrapper .block--placeholder {
  padding: 24px;
  border: 1px dashed var(--border);
  border-radius: var(--radius-md);
  color: var(--text-soft);
  text-align: center;
}
/* Migration placeholder: a form that still needs rebuilding in Fluent Forms. */
.ffm-form-placeholder {
  padding: 16px 20px;
  border: 1px dashed var(--brand-orange);
  border-radius: var(--radius-sm);
  background: var(--brand-orange-tint);
  color: var(--brand-rust);
  font-size: var(--font-size-small);
}
/* ==============================================
   ACCESSIBILITY
   ============================================== */
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
/* ==============================================
   UTILITIES
   ============================================== */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: var(--font-size-small);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--brand-orange);
  margin-bottom: 12px;
}
.eyebrow i {
  font-size: 0.9rem;
}
.link-arrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 500;
  transition: gap var(--transition);
}
.link-arrow:hover {
  gap: 12px;
}
.divider {
  width: 1px;
  height: 40px;
  background-color: var(--border);
}
/* ==============================================
   RESPONSIVE UTILITIES
   ============================================== */
@media (max-width: 768px) {
  .nav-desktop {
    gap: 16px;
  }
  .header-inner,
  .hero-wrapper,
  .key-stats-panel,
  .price-cta-inner,
  .trust-strip-inner,
  .about-intro-wrapper,
  .services-header,
  .services-grid,
  .services-footer,
  .visual-break-wrapper,
  .process-header,
  .process-steps,
  .moving-cleaning-wrapper,
  .areas-header,
  .areas-grid,
  .reviews-header,
  .reviews-grid,
  .rut-wrapper,
  .faq-wrapper,
  .final-cta-inner,
  .footer-inner,
  .footer-bottom,
  .page-hero-inner,
  .contact-main-wrapper,
  .area-search,
  .quote-section-inner,
  .price-tables-header,
  .price-tables-grid,
  .price-tables-footer,
  .price-feature,
  .tips-wrapper,
  .news-wrapper {
    width: calc(100% - 32px);
  }
}
img {
  max-width: 100%;
  height: auto;
}
/* Ensure no horizontal scroll */
body {
  overflow-x: hidden;
}
/* An eyebrow may carry a leading icon. */
.eyebrow i {
  margin-right: 7px;
  font-size: 0.92em;
  opacity: 0.9;
}
/* ==============================================
   SECTION RHYTHM
   Alternating tone assigned at render time by src/section_rhythm.php. Blocks with their
   own intrinsic background opt out there rather than fighting these rules.
   ============================================== */
/* Qualified by the element so these beat a block's own single-class rule; per-block
   stylesheets are enqueued after app.css, so equal specificity would lose. */
section.ffm-tone-light {
  background-color: var(--white);
}
section.ffm-tone-tint {
  background-color: var(--cream);
}
/* ==============================================
   SECTION INTROS
   ============================================== */
/*
   The macro renders <p class="section-intro"> whenever a block's intro field is filled.
   The design has no such class: it writes the spacing per section instead — `.news-wrapper
   > p { margin-bottom: 48px }` and its siblings — because a static page knows whether the
   paragraph is there. A block does not, so the distance has to move at render time. The
   heading hands its bottom margin to the intro, which then carries the full gap down to
   the content; without this the intro sits 48px below the heading and 16px above the grid,
   which reads as though it belongs to the wrong one.

   Selecting through the block root wins over the per-block heading rules, which are a
   class plus an element and live in stylesheets loaded after this one.
*/
.section-intro {
  color: var(--text-soft);
  max-width: 620px;
  margin: 0 0 48px;
  /* It wraps paragraphs now instead of being one. The outer margin stays on the box, so
       the distance to the content below is unchanged however many paragraphs it holds. */
}
.section-intro p {
  margin: 0;
}
.section-intro p + p {
  margin-top: 20px;
}
[class*="block--"] h2:has(+ .section-intro),
[class*="block--"] h3:has(+ .section-intro) {
  margin-bottom: 16px;
}
@media (max-width: 768px) {
  .section-intro {
    margin-bottom: 32px;
  }
}
/* ==============================================
   COMPANY SIGN-OFF
   ============================================== */
/*
   141 pages close a section the way a letter does — the argument, then the company name
   and the service and town beneath it. The old editor typed it as the last two lines of a
   paragraph, where the newline collapsed to a space and the whole thing read as one more
   sentence. Set apart above a rule it reads as the signature it is.
*/
.prose-signoff {
  margin-top: 28px;
  padding-top: 20px;
  border-top: 1px solid var(--border);
  font-size: var(--font-size-small);
  line-height: 1.7;
  color: var(--text-soft);
}
.prose-signoff strong {
  display: block;
  color: var(--text);
  font-weight: 700;
}
/* The image/text pair draws its own rule above the buttons. Two hairlines a few lines
   apart read as a mistake, so the sign-off's rule is the one that stays. */
.prose-signoff + .visual-break-ctas {
  margin-top: 28px;
  padding-top: 0;
  border-top: 0;
}
/* On the RUT band's orange ground the neutral rule and body colour disappear. */
.rut-content .prose-signoff {
  border-top-color: rgba(255, 255, 255, 0.35);
  color: rgba(255, 255, 255, 0.85);
}
.rut-content .prose-signoff strong {
  color: var(--white);
}
/* ==============================================
   MIGRATED PROSE
   ============================================== */
/* The old editor stored a paragraph break as a blank line in a plain textarea, and the
   seeder now turns each of those into a real paragraph. The design never had more than
   one paragraph in a block, so several components set no gap between them at all and the
   copy stacked flush — six paragraphs reading as one wall of text.

   Two things keep this out of the design's way. It is scoped to the block class core puts
   on a core/paragraph, so the design's own markup — .rut-badge-sub, laid out 2px under its
   label — is never matched at all. And :where() drops it to zero specificity, so it acts
   as a default that any component rule outranks, .prose-signoff's 28px included, while
   still beating the * { margin: 0 } reset above by source order.

   Only the top margin is set, so a block that already spaces its migrated prose keeps its
   rhythm: adjacent margins collapse to the larger of the two. */
:where(.wp-block-paragraph + .wp-block-paragraph) {
  margin-top: 20px;
}
/* Migrated prose brings 217 lists with it, 1 010 items across 122 pages, and nothing
   styled them: the reset above takes the padding off every element, which leaves a <ul>
   with its markers outside the box it is drawn in. The avbokningspolicy's four rules ran
   together as four unmarked lines.

   They take the design's checklist mark — the orange circle-check the visual break and
   the moving/cleaning section both use — so a migrated list and an authored one read as
   the same thing. The seeder writes role="list" on the <ul>, because list-style: none
   otherwise stops VoiceOver announcing it as a list at all.

   Scoped to the class core puts on a core/list, so the design's own lists — the service
   cards' feature lists — are never matched; :where() then leaves it at zero specificity,
   so a block that does want to dress a migrated list outranks this without a fight. */
:where(.wp-block-list) {
  list-style: none;
  margin: 20px 0;
  padding-left: 0;
  color: var(--text-soft);
  line-height: 1.8;
}
:where(.wp-block-list) li {
  position: relative;
  padding-left: 30px;
  margin-bottom: 12px;
}
:where(.wp-block-list) li:last-child {
  margin-bottom: 0;
}
:where(.wp-block-list) li::before {
  content: "\f058";
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  font-size: 0.95em;
  line-height: 1.75;
  color: var(--brand-orange);
  position: absolute;
  left: 0;
  top: 0;
}
/* Most migrated items open with a bold label — "Giltig Avbokning:" — and then explain
   themselves. Giving the label the heading's colour is what makes the list scannable. */
:where(.wp-block-list) li > strong:first-child {
  color: var(--text);
}
/* A nested list steps in from its parent's text, not from the parent's mark. */
:where(.wp-block-list) :where(ul, ol) {
  margin: 12px 0 0;
}
/* text-align centres the lines inside the intro; it does not centre the 620px box they
   sit in, so under a centred heading the paragraph sat flush left with its text ranged
   about the middle of it. These are the headers the design centres. */
:is(
    .services-header,
    .process-header,
    .price-tables-header,
    .quote-header,
    .pris-direkt-header,
    .contact-header,
    .faq-wrapper,
    .block--section.align-center
) .section-intro {
  margin-inline: auto;
}
/* ==============================================
   BUTTONS
   ============================================== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 14px 28px;
  font-size: 0.95rem;
  font-weight: 600;
  border: none;
  border-radius: 100px;
  cursor: pointer;
  transition: all 0.2s ease;
  font-family: var(--font-primary);
  white-space: nowrap;
}
.btn:focus-visible {
  outline: 2px solid var(--brand-orange);
  outline-offset: 2px;
}
.btn-primary {
  background-color: var(--brand-orange);
  color: var(--white);
}
.btn-primary:hover {
  background-color: #D97E00;
  color: var(--white);
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(243, 146, 1, 0.3);
}
.btn-primary:active {
  color: var(--white);
  transform: translateY(0);
}
.btn-secondary {
  background-color: var(--white);
  color: var(--text);
  border: 2px solid #E2E8F0;
}
.btn-secondary:hover {
  border-color: var(--brand-orange);
  color: var(--brand-orange);
  background-color: var(--white);
}
.btn-secondary:active {
  transform: translateY(0);
}
.btn-lg {
  padding: 16px 36px;
  font-size: 1.0625rem;
}
.btn-lg i {
  font-size: 0.95rem;
}
.btn-sm {
  padding: 10px 20px;
  font-size: 0.9rem;
  border-radius: var(--radius-md);
}
.btn-sm i {
  font-size: 0.8rem;
}
/* ==============================================
   TOP BAR
   ============================================== */
.top-bar {
  background-color: var(--dark);
  padding: 8px 0;
  font-size: 0.8125rem;
}
.top-bar-inner {
  width: calc(100% - 48px);
  max-width: var(--container);
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
}
.top-bar-left {
  display: flex;
  align-items: center;
  gap: 8px;
  color: rgba(255, 255, 255, 0.75);
}
.top-bar-left i {
  color: var(--brand-orange);
  font-size: 0.85rem;
}
.top-bar-right {
  display: flex;
  align-items: center;
  gap: 16px;
  color: rgba(255, 255, 255, 0.75);
}
.top-bar-right div {
  display: flex;
  align-items: center;
  gap: 6px;
}
.top-bar-right i {
  color: var(--brand-orange);
  font-size: 0.85rem;
}
.top-bar-right a {
  color: var(--white);
  font-weight: 500;
  transition: color var(--transition);
}
.top-bar-right a:hover {
  color: var(--brand-orange-light);
}
.top-bar .divider {
  height: 16px;
  background-color: rgba(255, 255, 255, 0.2);
}
@media (max-width: 768px) {
  .top-bar {
    display: none;
  }
}
/* ==============================================
   HEADER / NAVIGATION
   ============================================== */
.header {
  background-color: var(--white);
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  z-index: 1000;
  transition: all var(--transition);
}
.header.scrolled {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}
.header-inner {
  width: calc(100% - 48px);
  max-width: var(--container);
  margin: 0 auto;
  padding: 16px 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 40px;
}
.logo {
  flex-shrink: 0;
}
.logo img {
  height: 50px;
  width: auto;
  display: block;
}
.nav-desktop {
  display: flex;
  gap: 40px;
  align-items: center;
  flex: 1;
  justify-content: center;
}
.nav-desktop a {
  font-size: var(--font-size-body);
  font-weight: 500;
  color: var(--text);
  position: relative;
}
.nav-desktop a::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 0;
  width: 0;
  height: 2px;
  background-color: var(--brand-orange);
  transition: width var(--transition);
}
.nav-desktop a:hover::after {
  width: 100%;
}
.nav-desktop > a:hover,
.nav-dropdown-trigger:hover {
  color: var(--brand-orange-dark);
}
.nav-dropdown {
  position: relative;
}
.nav-dropdown-trigger {
  display: flex;
  align-items: center;
  gap: 6px;
  background: none;
  border: none;
  cursor: pointer;
  font-family: var(--font-primary);
  font-size: var(--font-size-body);
  font-weight: 500;
  color: var(--text);
  padding: 0;
}
.nav-dropdown-trigger i {
  font-size: 0.65rem;
  color: var(--text-soft);
  transition: transform var(--transition);
}
.nav-dropdown:hover .nav-dropdown-trigger i,
.nav-dropdown:focus-within .nav-dropdown-trigger i {
  transform: rotate(180deg);
}
.nav-dropdown-menu {
  --nav-dropdown-gap: 18px;
  --nav-dropdown-hover-bridge: 26px;
  position: absolute;
  top: calc(100% + var(--nav-dropdown-gap));
  left: 50%;
  transform: translateX(-50%);
  background: var(--white);
  border-radius: var(--radius-md);
  box-shadow: 0 20px 44px rgba(32, 32, 30, 0.14);
  padding: 10px;
  display: grid;
  gap: 2px;
  min-width: 210px;
  opacity: 0;
  visibility: hidden;
  transform: translateX(-50%) translateY(6px);
  transition: all var(--transition);
  z-index: 30;
}
.nav-dropdown-menu::before {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: var(--nav-dropdown-hover-bridge);
  transform: translateY(-100%);
}
.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}
/* The services panel lists all eighteen of them, which is taller than most screens in one
   column. Multi-column rather than a grid, because a grid fills across and would put the
   moving services and the cleaning ones on the same row; columns fill downwards, so each
   one holds a family. The tenth child is the test: any shorter panel keeps its single
   column. */
.nav-dropdown-menu:has( > a:nth-child(10)) {
  display: block;
  columns: 2;
  column-gap: 4px;
  min-width: 440px;
}
.nav-dropdown-menu:has( > a:nth-child(10)) > a {
  break-inside: avoid;
}
.nav-dropdown-menu a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 8px;
  font-size: var(--font-size-small);
  font-weight: 500;
  color: var(--text);
  white-space: nowrap;
}
.nav-dropdown-menu a::after {
  display: none;
}
.nav-dropdown-menu a i {
  color: var(--brand-orange);
  font-size: 0.85rem;
  width: 16px;
}
.nav-dropdown-menu a:hover {
  background-color: var(--cream);
  color: var(--brand-orange);
}
.header-actions {
  display: flex;
  gap: 10px;
  flex-shrink: 0;
}
.header-actions .btn {
  padding: 11px 20px;
  font-size: 0.9375rem;
}
.nav-mobile {
  display: flex;
  flex-direction: column;
  gap: 16px;
  height: 0;
  overflow: hidden;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  padding: 0 20px;
  background-color: var(--cream);
  border-top: 1px solid transparent;
  transition: height var(--transition), opacity var(--transition), padding-top var(--transition), padding-bottom var(--transition), border-color var(--transition), visibility 0s linear var(--transition);
}
/* The services group alone is eighteen links, so the open panel is taller than the screen
   and used to push the page down by well over a thousand pixels. It scrolls within itself
   instead, and the scroll stops at its own edge rather than carrying on into the page. */
.nav-mobile.active {
  max-height: calc(100vh - 140px);
  overflow-y: auto;
  overscroll-behavior: contain;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  padding-top: 20px;
  padding-bottom: 20px;
  border-top-color: var(--border);
  transition: height var(--transition), opacity var(--transition), padding-top var(--transition), padding-bottom var(--transition), border-color var(--transition), visibility 0s;
}
.nav-mobile[hidden] {
  display: none;
}
.nav-mobile a {
  font-weight: 500;
  color: var(--text);
  border-radius: 8px;
  transition: color var(--transition), background-color var(--transition);
}
.nav-mobile > a:not(.btn),
.nav-mobile-group-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  padding: 8px 0;
  border: 0;
  border-radius: 8px;
  background: none;
  color: var(--text);
  cursor: pointer;
  font-family: var(--font-primary);
  font-size: var(--font-size-body);
  font-weight: 600;
  text-align: left;
  transition: color var(--transition), background-color var(--transition);
}
.nav-mobile > a:not(.btn),
.nav-mobile-group {
  margin-bottom: 2px;
  border-bottom: 1px solid var(--border);
}
.nav-mobile > a:not(.btn):hover,
.nav-mobile-group-toggle:hover,
.nav-mobile > a:not(.btn):focus-visible,
.nav-mobile-group-toggle:focus-visible,
.nav-mobile-submenu a:hover {
  color: var(--brand-orange-dark);
  background-color: var(--brand-orange-tint);
}
.nav-mobile-group {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding-bottom: 0;
}
.nav-mobile-group-toggle {
  appearance: none;
}
.nav-mobile-group-toggle i {
  color: var(--text-soft);
  font-size: 0.75rem;
  transition: transform var(--transition);
}
.nav-mobile-group.open .nav-mobile-group-toggle i {
  transform: rotate(180deg);
}
.nav-mobile-submenu {
  display: flex;
  flex-direction: column;
  gap: 12px;
  height: 0;
  overflow: hidden;
  opacity: 0;
  padding-top: 0;
  transition: height var(--transition), opacity var(--transition), padding-top var(--transition);
}
.nav-mobile-group.open .nav-mobile-submenu {
  opacity: 1;
  padding-top: 10px;
}
.nav-mobile-submenu[hidden] {
  display: none;
}
.nav-mobile-submenu a {
  padding: 4px 0 4px 12px;
  font-size: var(--font-size-small);
}
.mobile-toggle {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 8px;
  margin-right: -8px;
  position: relative;
  z-index: 3;
}
.mobile-toggle span {
  width: 20px;
  height: 2px;
  background-color: var(--text);
  border-radius: 1px;
  transition: all var(--transition);
  transform-origin: center;
}
.mobile-toggle[aria-expanded="true"] span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}
.mobile-toggle[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
}
.mobile-toggle[aria-expanded="true"] span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}
/* The burger arrives at 1100, not 768. Six top-level items — two of them dropdown buttons
   with a chevron — plus the logo and two calls to action measure 1 038px, so anywhere below
   about 1 060 the header ran past the edge of the page and took the whole document with it.
   Measured, not guessed: at 1 025 the header was 13px wider than the window. */
@media (max-width: 1100px) {
  .nav-desktop {
    display: none;
  }
  .mobile-toggle {
    display: flex;
  }
  .header-actions {
    justify-content: flex-end;
    gap: 8px;
    margin-left: auto;
  }
}
/* At 320px the logo, the remaining button and the burger came to eight pixels more than
   the screen. The arrow goes and the button tightens; nothing else fits differently. */
@media (max-width: 360px) {
  .header-inner {
    gap: 10px;
  }
  .header-actions .btn {
    padding: 10px 14px;
  }
  .header-actions .btn i {
    display: none;
  }
}
@media (max-width: 768px) {
  .header-inner {
    gap: 16px;
  }
  .logo img {
    height: 40px;
  }
  .header-actions .btn {
    padding: 12px 20px;
    font-size: var(--font-size-small);
  }
  .header-actions .btn-secondary {
    display: none;
  }
}
/* ==============================================
   FOOTER
   ============================================== */
.footer {
  background-color: var(--dark);
  color: #A9A49E;
  padding: 60px 0 24px;
}
.footer-inner {
  width: calc(100% - 48px);
  max-width: var(--container);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 40px;
  margin-bottom: 40px;
}
.footer-logo {
  height: 50px;
  width: auto;
  align-self: flex-start;
  margin-bottom: 16px;
}
.footer-column {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.footer-column h2,
.footer-column h4 {
  color: var(--white);
  margin-bottom: 8px;
  /* The design set these as h4; the block renders h2 for the outline, so the size has
       to be stated rather than inherited from the global heading scale. */
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.35;
}
.footer-column p {
  font-size: var(--font-size-small);
  color: #A9A49E;
  line-height: 1.8;
  margin: 0;
}
.footer-column ul {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.footer-column a {
  color: #A9A49E;
  font-size: var(--font-size-small);
  transition: color var(--transition);
}
.footer-column li > span {
  color: #807C77;
  font-size: var(--font-size-small);
}
.footer-column a:hover {
  color: var(--brand-orange-light);
}
.footer-contact {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.footer-contact div {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--font-size-small);
}
.footer-contact i {
  color: var(--brand-orange);
  flex-shrink: 0;
  margin-top: 1px;
}
.footer-contact span {
  color: #A9A49E;
}
.footer-bottom {
  width: calc(100% - 48px);
  max-width: var(--container);
  margin: 0 auto;
  padding-top: 24px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  font-size: var(--font-size-small);
  color: #808078;
}
.footer-bottom p {
  margin: 0;
  color: inherit;
}
.footer-legal-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px 20px;
}
.footer-legal-links a {
  color: #A9A49E;
  white-space: nowrap;
}
.footer-legal-links a:hover {
  color: var(--brand-orange-light);
}
@media (max-width: 1024px) {
  .footer-inner {
    grid-template-columns: repeat(2, 1fr);
    gap: 32px;
  }
}
@media (max-width: 768px) {
  .footer {
    padding: 40px 0 20px;
  }
  .footer-inner {
    grid-template-columns: 1fr;
    gap: 32px;
    margin-bottom: 24px;
  }
  .footer-bottom {
    flex-direction: column;
    align-items: flex-start;
  }
  .footer-legal-links {
    justify-content: flex-start;
  }
}
/* Social buttons: circular outline, as the design's .social-link. */
.footer .social-links {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 18px;
}
.footer .social-links a {
  width: 42px;
  height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255, 255, 255, 0.25);
  border-radius: 50%;
  color: var(--brand-orange);
  transition: border-color var(--transition), background var(--transition), color var(--transition);
}
.footer .social-links a:hover {
  border-color: var(--brand-orange);
  background: var(--brand-orange);
  color: var(--white);
}
/* ==============================================
   BLOG SECTION
   ============================================== */
.blog-grid-section {
  padding: var(--section-spacing-desktop) 0;
  background: var(--white);
}
.blog-grid-header {
  text-align: center;
  margin-bottom: 48px;
}
.blog-grid-header h1 {
  font-size: 2.5rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 12px;
}
.blog-grid-header p {
  font-size: 1.1rem;
  color: var(--text-soft);
}
.blog-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 32px;
}
.blog-card {
  display: flex;
  flex-direction: column;
  background: var(--white);
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid #E8E8E8;
  transition: all 0.3s ease;
  text-decoration: none;
  color: inherit;
}
.blog-card:hover {
  border-color: var(--brand-orange);
  box-shadow: 0 12px 32px rgba(243, 146, 1, 0.12);
  transform: translateY(-4px);
}
.blog-card-image {
  position: relative;
  overflow: hidden;
  height: 200px;
}
.blog-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.3s ease;
}
.blog-card:hover .blog-card-image img {
  transform: scale(1.05);
}
.blog-card-tag {
  position: absolute;
  top: 12px;
  right: 12px;
  background: var(--brand-orange);
  color: white;
  padding: 6px 12px;
  border-radius: 20px;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
}
.blog-card-tag.case {
  background: #0e70b8;
}
.blog-card-content {
  padding: 24px;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.blog-card-content h3 {
  font-size: 1.2rem;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 12px;
  line-height: 1.4;
}
.blog-card-content p {
  color: var(--text-soft);
  font-size: 0.95rem;
  margin-bottom: auto;
  line-height: 1.6;
}
.blog-card-meta {
  display: flex;
  gap: 16px;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid #E8E8E8;
  font-size: 0.8rem;
  color: var(--text-soft);
}
.blog-card-meta span {
  display: flex;
  align-items: center;
  gap: 6px;
}
.blog-card-meta i {
  color: var(--brand-orange);
}
/* ==============================================
   ARCHIVE, SEARCH AND 404 HEADER
   These three templates borrow the page-hero markup, but that block's stylesheet is only
   enqueued when the block is actually on the page — so on /nyheter/ the eyebrow and the
   title sat flush against the left edge of the window with nothing holding them in. What
   follows is the part those templates need; the block keeps its own copy for itself.
   ============================================== */
.page-hero:not([class*="block--"]) {
  padding: 56px 0 4px;
}
.page-hero-inner {
  width: min(calc(100% - 48px), var(--container));
  margin-inline: auto;
}
.page-hero:not([class*="block--"]) > .page-hero-inner > .eyebrow {
  display: block;
  margin-bottom: 10px;
}
@media (max-width: 768px) {
  .page-hero:not([class*="block--"]) {
    padding: 36px 0 4px;
  }
  .page-hero-inner {
    width: calc(100% - 32px);
  }
}
/* ==============================================
   BLOG POST LAYOUT
   ============================================== */
.blog-post-hero {
  background: linear-gradient(135deg, #0d1b2a 0%, #1a2634 100%);
  color: var(--white);
  padding: 60px 0;
  text-align: center;
}
.blog-post-hero-content {
  width: calc(100% - 48px);
  max-width: var(--container);
  margin: 0 auto;
}
.blog-post-hero-tag {
  display: inline-block;
  background: rgba(243, 146, 1, 0.2);
  color: var(--brand-orange);
  padding: 6px 12px;
  border-radius: 20px;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  margin-bottom: 16px;
}
.blog-post-hero h1 {
  font-size: clamp(1.8rem, 4vw, 2.8rem);
  font-weight: 700;
  margin-bottom: 20px;
  line-height: 1.3;
}
.blog-post-meta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  flex-wrap: wrap;
  font-size: 0.9rem;
}
.blog-post-meta-item {
  display: flex;
  align-items: center;
  gap: 8px;
}
.blog-post-meta-item i {
  color: var(--brand-orange);
}
.blog-post-container {
  width: calc(100% - 48px);
  max-width: 1200px;
  margin: 60px auto;
  display: grid;
  grid-template-columns: 1fr 300px;
  gap: 40px;
}
.blog-post-content {
  font-size: 1rem;
  line-height: 1.8;
  color: var(--text);
}
.blog-post-content h2 {
  font-size: 1.6rem;
  font-weight: 700;
  margin-top: 40px;
  margin-bottom: 16px;
  color: var(--text);
}
.blog-post-content h3 {
  font-size: 1.2rem;
  font-weight: 600;
  margin-top: 28px;
  margin-bottom: 12px;
  color: var(--text);
}
.blog-post-content p {
  margin-bottom: 16px;
}
.blog-post-content ul,
.blog-post-content ol {
  margin-bottom: 16px;
  margin-left: 24px;
}
.blog-post-content li {
  margin-bottom: 8px;
}
.blog-post-content a {
  color: var(--brand-orange);
  text-decoration: none;
  font-weight: 500;
}
.blog-post-content a:hover {
  text-decoration: underline;
}
.blog-post-sidebar {
  position: sticky;
  top: 100px;
  height: fit-content;
}
.blog-toc {
  background: #F8F8F8;
  padding: 20px;
  border-radius: 12px;
  border: 1px solid #E8E8E8;
}
.blog-toc h3 {
  font-size: 0.9rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 16px;
  color: var(--text);
}
.blog-toc ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.blog-toc li {
  margin-bottom: 0;
}
.blog-toc a {
  display: block;
  padding: 8px 0;
  font-size: 0.85rem;
  color: var(--text-soft);
  text-decoration: none;
  border-left: 2px solid transparent;
  padding-left: 8px;
  transition: all 0.2s ease;
}
.blog-toc a:hover {
  color: var(--brand-orange);
  border-left-color: var(--brand-orange);
}
.blog-sidebar-cta {
  background: linear-gradient(135deg, var(--brand-orange) 0%, #E08700 100%);
  color: white;
  padding: 20px;
  border-radius: 12px;
  margin-top: 24px;
}
.blog-sidebar-cta h4 {
  font-size: 0.9rem;
  font-weight: 600;
  margin-bottom: 8px;
}
.blog-sidebar-cta p {
  font-size: 0.85rem;
  line-height: 1.5;
  margin-bottom: 12px;
}
.blog-sidebar-cta .btn {
  width: 100%;
  display: flex;
  justify-content: center;
}
@media (max-width: 1024px) {
  .blog-grid {
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 24px;
  }
  .blog-post-container {
    grid-template-columns: 1fr;
    gap: 32px;
    margin: 40px auto;
  }
  .blog-post-sidebar {
    position: static;
  }
}
@media (max-width: 768px) {
  .blog-grid-section {
    padding: var(--section-spacing-mobile) 0;
  }
  .blog-grid-header h1 {
    font-size: 1.8rem;
  }
  .blog-grid {
    grid-template-columns: 1fr;
  }
  .blog-post-hero {
    padding: 40px 0;
  }
  .blog-post-hero h1 {
    font-size: 1.6rem;
  }
  .blog-post-meta {
    gap: 16px;
    font-size: 0.85rem;
  }
  .blog-post-container {
    margin: 32px auto;
  }
  .blog-post-content h2 {
    font-size: 1.4rem;
  }
  .blog-post-content h3 {
    font-size: 1.1rem;
  }
  .blog-post-content {
    font-size: 0.95rem;
  }
}
/* ==============================================
   EDITORIAL HUB & ARTICLE SYSTEM
   ============================================== */
.editorial-hero {
  position: relative;
  overflow: hidden;
  padding: clamp(72px, 9vw, 128px) 0 clamp(64px, 8vw, 108px);
  color: var(--white);
  background: var(--dark);
}
.editorial-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 78% 20%, rgba(243, 146, 1, 0.28), transparent 34%), linear-gradient(125deg, rgba(255, 255, 255, 0.04), transparent 55%);
}
.editorial-hero-inner,
.editorial-shell,
.archive-section,
.related-section-inner {
  width: min(calc(100% - 48px), var(--container));
  margin-inline: auto;
}
.editorial-hero-inner {
  position: relative;
  z-index: 1;
  max-width: 920px;
}
.editorial-hero .eyebrow {
  color: var(--brand-orange-light);
}
.editorial-hero h1 {
  max-width: 820px;
  margin-bottom: 20px;
  font-size: clamp(2.5rem, 6vw, 5.2rem);
  letter-spacing: -0.055em;
}
.editorial-hero p {
  max-width: 680px;
  color: rgba(255, 255, 255, 0.76);
  font-size: clamp(1.05rem, 1.6vw, 1.25rem);
}
.archive-section {
  padding-block: clamp(56px, 7vw, 96px);
}
.archive-simple-heading {
  max-width: 680px;
  margin-bottom: 32px;
}
.archive-simple-heading h2 {
  margin-bottom: 10px;
}
.blog-category-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 30px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--border);
}
.blog-category-list a {
  padding: 9px 15px;
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--text-soft);
  background: var(--white);
  font-size: 0.84rem;
  font-weight: 650;
}
.blog-category-list a:hover,
.blog-category-list a.is-active {
  color: var(--white);
  border-color: var(--dark);
  background: var(--dark);
}
.archive-intro {
  max-width: 680px;
  margin-bottom: 30px;
}
.archive-intro h2 {
  margin-bottom: 12px;
}
.archive-category-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: clamp(58px, 8vw, 92px);
}
.archive-category-card {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 16px;
  min-height: 112px;
  padding: 20px;
  border: 1px solid #f0d7b3;
  border-radius: 18px;
  color: var(--text);
  background: #fff9f1;
  transition: transform var(--transition), border-color var(--transition), box-shadow var(--transition);
}
.archive-category-card:hover {
  color: var(--text);
  transform: translateY(-3px);
  border-color: var(--brand-orange);
  box-shadow: 0 14px 34px rgba(36, 35, 33, 0.08);
}
.archive-category-card--case {
  border-color: #cfe6df;
  background: #f1faf7;
}
.archive-category-card--story {
  border-color: #dbd7fa;
  background: #f7f6ff;
}
.archive-category-icon {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  color: var(--brand-orange);
  background: var(--white);
}
.archive-category-card--case .archive-category-icon {
  color: #247d6c;
}
.archive-category-card--story .archive-category-icon {
  color: #6257b8;
}
.archive-category-card strong,
.archive-category-card small {
  display: block;
}
.archive-category-card strong {
  margin-bottom: 3px;
  font-size: 1rem;
}
.archive-category-card small {
  color: var(--text-soft);
  font-size: 0.78rem;
  line-height: 1.35;
}
.archive-category-card > .fa-arrow-down {
  color: var(--text-soft);
  font-size: 0.8rem;
}
.archive-section-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  margin-bottom: 28px;
}
.archive-toolbar {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 34px;
}
.archive-toolbar h2 {
  max-width: 620px;
}
.archive-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.archive-filter {
  padding: 9px 15px;
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--text-soft);
  font-size: 0.88rem;
  font-weight: 650;
  background: var(--white);
}
.archive-filter.is-active,
.archive-filter:hover {
  color: var(--white);
  border-color: var(--dark);
  background: var(--dark);
}
.archive-feature {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(320px, 0.65fr);
  min-height: 510px;
  margin-bottom: 28px;
  overflow: hidden;
  border-radius: 26px;
  background: var(--cream);
}
.archive-feature-media {
  position: relative;
  min-height: 420px;
}
.archive-feature-media img,
.archive-card-media img,
.article-cover img,
.article-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.archive-feature-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(32px, 5vw, 62px);
}
.content-tag {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  width: fit-content;
  margin-bottom: 18px;
  padding: 7px 11px;
  border-radius: 999px;
  color: #8b4a00;
  background: var(--brand-orange-tint);
  font-size: 0.75rem;
  font-weight: 750;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.content-tag--case {
  color: #155e52;
  background: #e5f5f0;
}
.content-tag--story {
  color: #5147a8;
  background: #eeecff;
}
.archive-feature h2 {
  margin-bottom: 16px;
  font-size: clamp(2rem, 4vw, 3.3rem);
  letter-spacing: -0.045em;
}
.archive-feature p {
  margin-bottom: 26px;
}
.article-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 22px;
  color: var(--text-soft);
  font-size: 0.86rem;
}
.article-meta span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
.archive-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
.archive-grid--two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.archive-card {
  display: flex;
  min-width: 0;
  overflow: hidden;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: var(--white);
  transition: transform var(--transition), box-shadow var(--transition);
}
.archive-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 18px 42px rgba(36, 35, 33, 0.1);
}
.archive-card-media {
  display: block;
  width: 100%;
  height: 220px;
  max-height: 220px;
  overflow: hidden;
  flex: 0 0 220px;
  background: var(--cream-dark);
}
.archive-card-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}
.archive-card:hover .archive-card-media img {
  transform: scale(1.035);
}
/* The template calls it the body; the stylesheet was calling it the content, so the padding
   never reached it and the copy sat against the card's own edge. */
.archive-card-body {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: flex-start;
  padding: 24px;
}
.archive-card :is(h2, h3) {
  margin-bottom: 10px;
  font-size: 1.23rem;
  line-height: 1.3;
}
.archive-card :is(h2, h3) a {
  color: var(--text);
}
.archive-card :is(h2, h3) a:hover {
  color: var(--brand-orange-dark);
}
.archive-card p {
  margin-bottom: 18px;
  font-size: 0.92rem;
  line-height: 1.65;
}
/* The date follows the copy; the link goes to the floor. Held together they drifted with
   the length of the excerpt, so no two "Läs mer" in a row lined up. */
.archive-card .article-meta {
  margin-bottom: 16px;
  padding-top: 4px;
}
.archive-card .article-meta time {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.archive-card .article-meta time i {
  color: var(--brand-orange);
  font-size: 0.8em;
}
.archive-card .link-arrow {
  margin-top: auto;
  font-size: 0.9rem;
  font-weight: 700;
}
/*
   The whole card is the link.

   One anchor does it — the title's, stretched over the card by a pseudo-element — so the
   card still reads as a single link to a screen reader and to the keyboard rather than as
   three links to the same place. "Läs mer" sits above it so it keeps its own hover.
*/
.archive-card {
  position: relative;
}
.archive-card :is(h2, h3) a::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
}
.archive-card .link-arrow {
  position: relative;
  z-index: 2;
}
/* ==============================================
   PAGINATION
   ============================================== */
.pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 10px 16px;
  margin-top: 48px;
}
.pagination-list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.pagination-list a,
.pagination-list span,
.pagination-prev,
.pagination-next {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 42px;
  height: 42px;
  padding: 0 14px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--white);
  color: var(--text);
  font-size: 0.92rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  transition: border-color var(--transition), color var(--transition), background var(--transition);
}
.pagination-list a:hover,
.pagination-prev:hover,
.pagination-next:hover {
  border-color: var(--brand-orange);
  color: var(--brand-orange);
}
/* The page you are on is not a link, and should not look like one. */
.pagination-list .current,
.pagination-list span[aria-current="page"] {
  border-color: var(--brand-orange);
  background: var(--brand-orange);
  color: var(--white);
  cursor: default;
}
/* The gap Timber writes between distant page numbers. */
.pagination-list .dots {
  border-color: transparent;
  background: none;
  color: var(--text-soft);
}
.article-header {
  position: relative;
  padding: clamp(58px, 7vw, 92px) 0 clamp(48px, 6vw, 76px);
  background: var(--cream);
}
.article-header-inner {
  position: relative;
  z-index: 2;
  width: min(calc(100% - 48px), 920px);
  margin-inline: auto;
  text-align: center;
}
/*
   The picture is the header's ground, not a slab under it.

   The article used to open on a title, a lead and a date stacked on cream, with the
   photograph starting below all three — three edges before the reader reached the piece.
   As one band the title and the lead sit over the picture, which is how every other page on
   the site opens, and the gradient is what keeps the words legible over a photograph nobody
   chose for its contrast.
*/
.article-header--illustrated {
  padding-block: clamp(96px, 11vw, 168px);
  background: var(--dark);
}
.article-header-media {
  position: absolute;
  inset: 0;
  overflow: hidden;
}
.article-header-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.article-header-media::after {
  content: "";
  position: absolute;
  inset: 0;
  /* Darker where the words are, lighter across the middle so the photograph is still a
       photograph. A flat scrim heavy enough for the breadcrumbs turned the picture black. */
  background: linear-gradient(180deg, rgba(20, 19, 18, 0.66) 0%, rgba(20, 19, 18, 0.46) 42%, rgba(20, 19, 18, 0.78) 100%);
}
.article-header--illustrated :is(h1, .article-lead, .breadcrumbs, .breadcrumbs a, .article-meta, .article-meta a) {
  color: var(--white);
}
/* The last of the legibility comes from the letters themselves rather than from more
   scrim, so the picture keeps its detail. */
.article-header--illustrated :is(h1, .article-lead, .breadcrumbs, .article-meta) {
  text-shadow: 0 1px 12px rgba(20, 19, 18, 0.55);
}
.article-header--illustrated .article-lead {
  color: rgba(255, 255, 255, 0.92);
}
.article-header--illustrated .article-meta {
  color: rgba(255, 255, 255, 0.86);
}
.article-header--illustrated .article-meta i {
  color: var(--brand-orange-light);
}
/* Rank Math wraps the crumbs in its own <nav><p>, and the paragraph and the separators
   take the body's soft grey — which on a photograph is not there at all. */
.article-header--illustrated .breadcrumbs,
.article-header--illustrated .breadcrumbs :is(p, span) {
  color: rgba(255, 255, 255, 0.82);
}
.article-header--illustrated .breadcrumbs a {
  color: rgba(255, 255, 255, 0.88);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.article-header--illustrated .breadcrumbs a:hover {
  color: var(--brand-orange-light);
}
.article-header--illustrated .content-tag {
  color: var(--white);
  background: rgba(255, 255, 255, 0.18);
}
/* One row: the tag, the date, the author, the reading time. */
.article-header .article-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 10px 20px;
  margin-bottom: 18px;
}
.article-header .article-meta .content-tag {
  margin-bottom: 0;
}
.article-header .article-meta time,
.article-header .article-meta span {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.article-header .article-meta i {
  color: var(--brand-orange);
  font-size: 0.85em;
}
/* The crumbs are their own line above the row, centred with everything else. */
.article-header .breadcrumbs {
  display: block;
  margin-bottom: 20px;
  color: var(--text-soft);
  font-size: 0.84rem;
}
.article-breadcrumbs {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 26px;
  color: var(--text-soft);
  font-size: 0.84rem;
}
.article-header h1 {
  margin: 0 auto 20px;
  font-size: clamp(2.1rem, 4.6vw, 3.9rem);
  letter-spacing: -0.045em;
  text-wrap: balance;
}
.article-lead {
  max-width: 720px;
  margin: 0 auto;
  font-size: clamp(1.05rem, 1.5vw, 1.22rem);
}
.article-layout {
  display: grid;
  grid-template-columns: minmax(0, 780px) minmax(260px, 330px);
  justify-content: space-between;
  gap: clamp(44px, 7vw, 90px);
  padding-block: clamp(54px, 7vw, 92px);
}
.article-body {
  min-width: 0;
}
.article-body > p:first-child {
  font-size: 1.14rem;
  color: var(--text);
}
.article-body h2 {
  margin: 54px 0 18px;
  scroll-margin-top: 120px;
  letter-spacing: -0.035em;
}
.article-body h3 {
  margin: 30px 0 12px;
}
.article-body p,
.article-body ul,
.article-body ol {
  margin-bottom: 20px;
}
.article-body ol {
  padding-left: 22px;
  color: var(--text-soft);
}
.article-body ol li {
  margin-bottom: 10px;
  padding-left: 5px;
}
/*
   Bulleted lists get the mark the rest of the site uses — the same orange check as the
   block checklists — rather than the browser's disc. The marker is drawn rather than
   listed, so a row that wraps stays aligned under its own first line.
*/
.article-body ul {
  padding-left: 0;
  margin-bottom: 22px;
  list-style: none;
  color: var(--text-soft);
}
.article-body ul li {
  position: relative;
  margin-bottom: 10px;
  padding-left: 30px;
}
.article-body ul li::before {
  content: "\f058";
  position: absolute;
  left: 0;
  top: 0.1em;
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  font-size: 0.95em;
  color: var(--brand-orange);
}
.article-image {
  height: clamp(280px, 45vw, 470px);
  margin: 38px 0;
  overflow: hidden;
  border-radius: 20px;
}
.article-image-grid {
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  gap: 14px;
  margin: 38px 0;
}
.article-image-grid .article-image {
  height: 330px;
  margin: 0;
}
.article-image-grid .article-image:last-child {
  margin-top: 42px;
}
.article-note {
  position: relative;
  margin: 34px 0;
  padding: 26px 28px 26px 58px;
  border-radius: 16px;
  background: var(--brand-orange-tint);
}
.article-note i {
  position: absolute;
  top: 29px;
  left: 26px;
  color: var(--brand-orange);
}
.article-note strong {
  display: block;
  margin-bottom: 5px;
}
.article-quote {
  margin: 42px 0;
  padding: 34px;
  border-left: 4px solid var(--brand-orange);
  border-radius: 0 18px 18px 0;
  background: var(--cream);
  font-size: 1.22rem;
  font-weight: 600;
  line-height: 1.55;
}
.case-facts {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin: 34px 0;
}
.case-fact {
  padding: 20px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--white);
}
.case-fact strong {
  display: block;
  margin-bottom: 4px;
  font-size: 1.2rem;
}
.case-fact span {
  color: var(--text-soft);
  font-size: 0.84rem;
}
.article-checklist {
  margin: 30px 0;
  padding: 26px;
  border-radius: 18px;
  background: var(--cream);
  list-style: none;
}
.article-checklist li {
  position: relative;
  padding-left: 30px;
  color: var(--text);
}
.article-checklist li::before {
  content: "\2713";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--brand-orange);
  font-weight: 800;
}
.article-sidebar {
  min-width: 0;
}
.article-sidebar-inner {
  position: sticky;
  top: 105px;
  display: grid;
  gap: 16px;
}
.sidebar-card {
  padding: 24px;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: var(--white);
}
.sidebar-card :is(h2, h3) {
  margin-bottom: 14px;
  font-size: 1rem;
}
/* The index reads as a list of places to go, so its rows carry a mark like every other
   list on the site. Drawn rather than listed, so a heading that wraps stays aligned under
   its own first line. */
.sidebar-toc {
  padding-left: 0;
  list-style: none;
}
.sidebar-toc li {
  position: relative;
  padding-left: 20px;
}
.sidebar-toc li + li {
  margin-top: 10px;
}
.sidebar-toc li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 0.48em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--brand-orange);
}
.sidebar-toc a {
  color: var(--text-soft);
  font-size: 0.88rem;
  line-height: 1.4;
}
.sidebar-toc a:hover {
  color: var(--brand-orange);
}
.sidebar-note {
  background: var(--cream);
}
.sidebar-note .sidebar-icon {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  margin-bottom: 13px;
  border-radius: 50%;
  color: var(--brand-orange);
  background: var(--brand-orange-tint);
}
.sidebar-note p {
  font-size: 0.88rem;
}
.sidebar-cta {
  color: var(--white);
  border: 0;
  background: var(--dark);
}
.sidebar-cta :is(h2, h3) {
  color: var(--white);
  font-size: 1.25rem;
}
.sidebar-cta p {
  margin-bottom: 18px;
  color: rgba(255, 255, 255, 0.68);
  font-size: 0.88rem;
}
.sidebar-cta .btn {
  width: 100%;
}
.article-bottom-cta {
  margin-top: 54px;
  padding: clamp(28px, 5vw, 46px);
  border-radius: 22px;
  color: var(--white);
  background: var(--gradient-brand);
}
.article-bottom-cta h2 {
  margin: 0 0 10px;
  color: var(--white);
}
.article-bottom-cta p {
  color: rgba(255, 255, 255, 0.83);
}
.article-bottom-cta .btn {
  margin-top: 8px;
  color: var(--text);
  background: var(--white);
}
.related-section {
  padding-block: clamp(56px, 7vw, 88px);
  background: var(--cream);
}
/* The section had no measure at all — the template asked for a .container the stylesheet
   never defines, so two cards meant to sit under the article ran the full width of the
   window. Its own heading and its cards are centred: a row that does not fill the grid
   should sit in the middle of it rather than hanging off the left. */
.related-section > .related-section-inner > h2 {
  margin-bottom: 28px;
  text-align: center;
}
.related-section .archive-grid {
  grid-template-columns: repeat(auto-fit, minmax(280px, 400px));
  justify-content: center;
}
.related-heading {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 24px;
  margin-bottom: 28px;
}
@media (max-width: 980px) {
  .archive-feature,
  .article-layout {
    grid-template-columns: 1fr;
  }
  .archive-grid,
  .archive-category-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .pagination {
    margin-top: 36px;
  }
  .archive-category-card:last-child {
    grid-column: 1 / -1;
  }
  .article-sidebar {
    order: -1;
  }
  .article-sidebar-inner {
    position: static;
    grid-template-columns: 1fr 1fr;
  }
  .sidebar-card:first-child {
    grid-column: 1 / -1;
  }
}
@media (max-width: 680px) {
  .editorial-hero-inner,
  .editorial-shell,
  .archive-section,
  .related-section-inner,
  .article-header-inner,
  .article-cover {
    width: min(calc(100% - 32px), var(--container));
  }
  .archive-toolbar,
  .related-heading {
    align-items: flex-start;
    flex-direction: column;
  }
  .archive-feature {
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .archive-feature-media {
    min-height: 290px;
  }
  .archive-grid,
  .archive-category-grid,
  .article-sidebar-inner,
  .article-image-grid,
  .case-facts {
    grid-template-columns: 1fr;
  }
  .archive-category-card:last-child {
    grid-column: auto;
  }
  .article-image-grid .article-image:last-child {
    margin-top: 0;
  }
  .article-cover {
    height: 300px;
    border-radius: 18px;
  }
  .archive-card-media {
    height: 190px;
    max-height: 190px;
    flex-basis: 190px;
  }
  .article-layout {
    padding-top: 38px;
  }
}
/* ==============================================
   FLUENT FORMS
   The plugin ships deliberately neutral styling so it inherits from the theme. These
   rules give its controls the design's language — the step navigation in particular
   renders as a bare browser button otherwise.
   ============================================== */
.fluentform .ff-el-group {
  margin-bottom: 16px;
}
.fluentform .ff-el-input--label label {
  font-size: var(--font-size-small);
  font-weight: 600;
  color: var(--text);
  margin-bottom: 6px;
}
.fluentform .ff-el-form-control {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  font-family: var(--font-primary);
  font-size: var(--font-size-body);
  color: var(--text);
  background: var(--white);
  transition: border-color var(--transition), box-shadow var(--transition);
}
.fluentform .ff-el-form-control:focus {
  outline: none;
  border-color: var(--brand-orange);
  box-shadow: 0 0 0 3px var(--brand-orange-tint);
}
.fluentform textarea.ff-el-form-control {
  min-height: 110px;
  resize: vertical;
}
.fluentform .ff-el-is-error .ff-el-form-control {
  border-color: var(--brand-rust);
}
.fluentform .text-danger,
.fluentform .error-text {
  font-size: var(--font-size-small);
  color: var(--brand-rust);
}
/*
 * Step navigation and submit share the theme's button language.
 *
 * Fluent Forms styles these as `.ff-default .ff-btn-secondary:not(.ff_btn_no_style)`,
 * which is specificity 0,3,0 — a plain `.fluentform .ff-btn-next` loses to it and the
 * button stays the plugin's grey. Matching their shape and adding one class wins cleanly
 * without resorting to !important.
 */
.fluentform {
  /* The plugin floats these; a flex row keeps them on one line without clearfix games. */
  /* A first step has no Previous, so the Next button should still sit right. */
}
.fluentform .ff-btn.ff-btn-submit:not(.ff_btn_no_style),
.fluentform .ff-btn.ff-btn-next:not(.ff_btn_no_style),
.fluentform .ff-btn.ff-btn-prev:not(.ff_btn_no_style) {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 13px 26px;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  font-family: var(--font-primary);
  font-size: var(--font-size-body);
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  transition: background var(--transition), color var(--transition), border-color var(--transition);
}
.fluentform .ff-btn.ff-btn-submit:not(.ff_btn_no_style),
.fluentform .ff-btn.ff-btn-next:not(.ff_btn_no_style) {
  background: var(--brand-orange);
  color: var(--white);
}
.fluentform .ff-btn.ff-btn-submit:not(.ff_btn_no_style):focus,
.fluentform .ff-btn.ff-btn-next:not(.ff_btn_no_style):focus,
.fluentform .ff-btn.ff-btn-submit:not(.ff_btn_no_style):hover,
.fluentform .ff-btn.ff-btn-next:not(.ff_btn_no_style):hover {
  background: var(--brand-orange-dark);
  color: var(--white);
}
.fluentform .ff-btn.ff-btn-prev:not(.ff_btn_no_style) {
  background: transparent;
  color: var(--text-soft);
  border-color: var(--border);
}
.fluentform .ff-btn.ff-btn-prev:not(.ff_btn_no_style):focus,
.fluentform .ff-btn.ff-btn-prev:not(.ff_btn_no_style):hover {
  background: transparent;
  border-color: var(--text-soft);
  color: var(--text);
}
.fluentform .step-nav,
.fluentform .ff-step-t-container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 22px;
}
.fluentform .step-nav .ff-btn-prev,
.fluentform .ff-step-t-container .ff-btn-prev,
.fluentform .step-nav .ff-btn-next,
.fluentform .ff-step-t-container .ff-btn-next,
.fluentform .step-nav .ff-btn-submit,
.fluentform .ff-step-t-container .ff-btn-submit {
  float: none !important;
}
.fluentform .step-nav > .ff-btn-next:only-child {
  margin-left: auto;
}
/* Step progress indicator, restyled to match the design's numbered circles. */
.fluentform .ff-step-header {
  margin-bottom: 24px;
}
.fluentform .ff-step-header .ff-step-titles {
  display: flex;
  gap: 0;
  padding: 0;
  margin: 0;
  list-style: none;
}
.fluentform .ff-step-header .ff-step-titles li {
  flex: 1;
  position: relative;
  text-align: center;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-soft);
  padding-top: 30px;
  /* the numbered circle */
  /* Connector drawn from this circle to the next one. Anchored to the item's
               own box so it cannot escape the row the way a negative offset can. */
  /* Fluent Forms also draws a connector on the final step, pointing backwards
               and in black. It sits outside :not(:last-child), so suppress it explicitly
               rather than letting it paint over the last segment. */
}
.fluentform .ff-step-header .ff-step-titles li::before {
  content: counter(ff-step);
  counter-increment: ff-step;
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 1.5px solid var(--border);
  background: var(--white);
  color: var(--text-soft);
  font-size: 0.6875rem;
  line-height: 20px;
}
.fluentform .ff-step-header .ff-step-titles li:not(:last-child)::after {
  content: "";
  position: absolute;
  top: 11px;
  left: calc(50% + 15px);
  width: calc(100% - 30px);
  height: 1px;
  background: var(--border);
}
.fluentform .ff-step-header .ff-step-titles li:last-child::after {
  content: none;
}
.fluentform .ff-step-header .ff-step-titles li.ff_active {
  color: var(--brand-orange);
}
.fluentform .ff-step-header .ff-step-titles li.ff_active::before {
  border-color: var(--brand-orange);
  background: var(--brand-orange);
  color: var(--white);
}
.fluentform .ff-step-titles {
  counter-reset: ff-step;
}
/* The plugin sets each column's width inline as a flex-basis and never releases it, so a
   two-column form stayed two columns at 390px with 160px of room per field. Below the
   tablet breakpoint every column takes the whole row and the fields stack in reading
   order. !important because the basis is on the element itself. */
@media (max-width: 768px) {
  .fluentform .ff-t-container {
    flex-wrap: wrap;
  }
  .fluentform .ff-t-cell {
    flex: 0 0 100% !important;
    max-width: 100% !important;
  }
}
/* The address element draws its own row of sub-fields, and the plugin gives each an equal
   share — so a street, a town and a postcode came out as two-across with the postcode
   stranded on a line of its own. The street gets the full width it needs; the town and the
   postcode, both short, share the row under it. */
.fluent-address {
  /* The plugin splits the parts across several flex rows of its own, which left the town
       and the postcode each alone on a full-width line. `display: contents` on those rows
       lifts every part into one grid, so the street takes the width it needs and the two
       short fields share the line under it. */
  /* The element's own label sits over the parts as a caption, not as a field label. */
}
.fluent-address > .ff-el-input--content {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 24px;
}
.fluent-address .ff-t-container {
  display: contents;
}
.fluent-address .ff-t-cell {
  flex: none;
  max-width: none;
  margin: 0;
}
.fluent-address .ff-t-cell:has(input[name$="[address_line_1]"]) {
  grid-column: 1 / -1;
}
.fluent-address > .ff-el-input--label label {
  font-weight: 600;
  opacity: 0.75;
}
@media (max-width: 768px) {
  .fluent-address > .ff-el-input--content {
    grid-template-columns: minmax(0, 1fr);
  }
}
/* ==============================================
   THE THANK-YOU
   Fluent Forms drops a bare green-bordered box after the form. This is the last thing a
   reader sees before leaving, and on a quote page it is the whole point of the page, so it
   gets the brand's own panel: a check in an orange disc over the message, centred in the
   card the form was filling a moment ago.
   ============================================== */
.ff-message-success {
  display: grid;
  justify-items: center;
  gap: 18px;
  padding: 40px 32px;
  margin: 0;
  border: 1px solid var(--brand-orange-light);
  border-radius: var(--radius-lg);
  background: var(--brand-orange-tint);
  color: var(--text);
  font-size: clamp(1rem, 1.4vw, 1.15rem);
  line-height: 1.5;
  text-align: center;
  text-wrap: balance;
  animation: ffm-thanks 320ms cubic-bezier(0.4, 0, 0.2, 1) both;
  /* The quote forms run the full width of the page; one sentence should not. */
  max-width: 520px;
  margin-inline: auto;
}
/* The disc, drawn rather than marked up: the message stays plain text in the admin. */
.ff-message-success::before {
  content: "\f00c";
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  font-size: 1.35rem;
  line-height: 1;
  display: grid;
  place-items: center;
  width: 58px;
  height: 58px;
  border-radius: 50%;
  background: var(--gradient-brand);
  color: var(--white);
  box-shadow: 0 6px 18px rgba(243, 146, 1, 0.32);
}
.ff-message-success p {
  margin: 0;
  color: inherit;
}
.ff-message-success p + p {
  margin-top: 10px;
  font-size: var(--font-size-small);
  color: var(--text-soft);
}
@keyframes ffm-thanks {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .ff-message-success {
    animation: none;
  }
}
/* ==============================================
   BLOCK LIBRARY
   Chrome for the generated /block-showcase/ page. Never loads on a real page — the
   markup only exists behind the _ffm_generated meta.
   ============================================== */
.ffm-showcase {
  /* Each block sits in a labelled frame so it can be named and pointed at. */
  /* The library is for comparing blocks, so trim the vertical drama between them. */
  /* Two heroes stacked in a library would otherwise fill the screen twice over. */
}
.ffm-showcase .showcase-index {
  position: sticky;
  top: 0;
  z-index: 40;
  background: var(--white);
  border-bottom: 1px solid var(--border);
  padding: 16px 24px;
}
.ffm-showcase .showcase-index-title {
  max-width: var(--container);
  margin: 0 auto 10px;
  font-size: var(--font-size-small);
  font-weight: 700;
  color: var(--text);
}
.ffm-showcase .showcase-index-title span {
  font-weight: 400;
  color: var(--text-soft);
  margin-left: 10px;
}
.ffm-showcase .showcase-index-links {
  max-width: var(--container);
  margin-inline: auto;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.ffm-showcase .showcase-index-links a {
  font-size: 0.8125rem;
  line-height: 1;
  padding: 6px 10px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
  color: var(--text-soft);
  text-decoration: none;
  white-space: nowrap;
}
.ffm-showcase .showcase-index-links a:hover {
  border-color: var(--text-soft);
  color: var(--text);
}
.ffm-showcase .showcase-index-links a.is-unused {
  border-color: var(--brand-orange-light);
  color: var(--brand-rust);
  background: var(--brand-orange-tint);
}
.ffm-showcase .showcase-item {
  position: relative;
  border-top: 1px dashed var(--border);
  scroll-margin-top: 96px;
}
.ffm-showcase .showcase-label {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  max-width: var(--container);
  margin-inline: auto;
  padding: 22px 24px 10px;
}
.ffm-showcase .showcase-name {
  font-size: var(--font-size-small);
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text);
}
.ffm-showcase .showcase-slug {
  font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size: 0.75rem;
  color: var(--text-soft);
  background: var(--cream-dark);
  padding: 3px 8px;
  border-radius: 4px;
}
.ffm-showcase .showcase-uses {
  font-size: 0.75rem;
  color: var(--text-soft);
  margin-left: auto;
}
.ffm-showcase .showcase-uses.is-unused {
  color: var(--brand-rust);
  background: var(--brand-orange-tint);
  padding: 3px 10px;
  border-radius: 999px;
  font-weight: 600;
}
.ffm-showcase .showcase-item > section {
  padding-top: 24px;
  padding-bottom: 40px;
}
.ffm-showcase .showcase-item .hero,
.ffm-showcase .showcase-item .page-hero {
  min-height: 0;
  padding-block: 64px;
}
@media (max-width: 768px) {
  .ffm-showcase .showcase-uses {
    margin-left: 0;
  }
}
/*# sourceMappingURL=app.css.map */
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3BhcnRpYWxzL3ZhcmlhYmxlcy5sZXNzIiwiLi4vcGFydGlhbHMvYmFzZS5sZXNzIiwiLi4vcGFydGlhbHMvd29yZHByZXNzLmxlc3MiLCIuLi9wYXJ0aWFscy9hY2Nlc3NpYmlsaXR5Lmxlc3MiLCIuLi9wYXJ0aWFscy91dGlsaXRpZXMubGVzcyIsIi4uL3BhcnRpYWxzL2J1dHRvbnMubGVzcyIsIi4uL3BhcnRpYWxzL2hlYWRlci5sZXNzIiwiLi4vcGFydGlhbHMvZm9vdGVyLmxlc3MiLCIuLi9wYXJ0aWFscy9hcmNoaXZlLmxlc3MiLCIuLi9wYXJ0aWFscy9hcnRpY2xlLmxlc3MiLCIuLi9wYXJ0aWFscy9mb3Jtcy5sZXNzIiwiLi4vcGFydGlhbHMvc2hvd2Nhc2UubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUlBOztFQUVJLHVCQUFBO0VBQ0EsNEJBQUE7RUFDQSw2QkFBQTtFQUNBLDRCQUFBO0VBQ0EscUJBQUE7RUFFQSxnQkFBQTtFQUNBLHFCQUFBO0VBRUEsZ0JBQUE7RUFDQSxlQUFBO0VBQ0Esb0JBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxvQkFBQTs7RUFHQSxrQkFBa0Isd0JBQXdCLHdCQUF3Qix1QkFBbEU7O0VBR0EsZ0JBQWdCLDhDQUE4QyxzQkFBOUQ7RUFDQSxnQkFBZ0IsMEJBQWhCO0VBQ0EsZ0JBQWdCLDZCQUFoQjtFQUNBLGdCQUFnQiwyQkFBaEI7RUFDQSxrQkFBa0IsZ0NBQWxCO0VBQ0EsbUJBQW1CLG1DQUFuQjs7RUFHQSxtQkFBQTtFQUNBLDJCQUEyQix3QkFBM0I7RUFDQSwwQkFBMEIsd0JBQTFCO0VBQ0EsMEJBQTBCLHdCQUExQjs7RUFHQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7O0VBR0Esb0JBQW9CLDRCQUFwQjs7Ozs7QUN6Q0o7RUFDSSxTQUFBO0VBQ0EsVUFBQTtFQUNBLHNCQUFBOztBQUdKO0VBQ0ksdUJBQUE7O0FBR0o7RUFDSSxhQUFhLG1CQUFiO0VBQ0Es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QUdKO0VBQ0k7SUFBTyxVQUFBO0lBQVksV0FBVyxnQkFBWDs7RUFDbkI7SUFBSyxVQUFBO0lBQVksZUFBQTs7O0FBR3JCLFFBQXdDO0VBQ3BDO0lBQXNCLGVBQUE7Ozs7Ozs7O0FDOVIxQjs7Ozs7QUFBQSxhQUNJO0VBQ0ksZ0JBQUE7RUFDQSxNQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQVksWUFBWjtFQUNBLHlCQUF5QixhQUF6QjtFQUNBLGtCQUFBOztBQVBSLGFBVUk7RUFDSSxXQUFXLGdCQUFYO0VBQ0EsbUJBQUE7RUFDQSxXQUFXLHNCQUFYO0VBQ0EsZ0JBQUE7RUFDQSxPQUFPLFdBQVA7O0FBZlIsYUFVSSxzQkFPSTtFQUNJLGdCQUFBO0VBQ0EsT0FBTyxnQkFBUDtFQUNBLGlCQUFBOztBQXBCWixhQXdCSTtFQUNJLFdBQVcsZ0JBQVg7RUFDQSxtQkFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0VBQ0EsUUFBQTs7QUE3QlIsYUF3Qkksc0JBT0k7RUFDSSxvQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQWUsZ0JBQWY7RUFDQSxrQkFBa0IsYUFBbEI7RUFDQSxPQUFPLGdCQUFQO0VBQ0EscUJBQUE7RUFDQSxtQkFBQTs7QUFFQSxhQWpCUixzQkFPSSxFQVVLO0VBQVMsY0FBYyxnQkFBZDtFQUFnQyxPQUFPLFdBQVA7O0FBRTFDLGFBbkJSLHNCQU9JLEVBWUs7RUFDRyxjQUFjLHlCQUFkO0VBQ0EsT0FBTyxpQkFBUDtFQUNBLFlBQVksd0JBQVo7O0FBOUNoQixhQW9ESTtFQUNJLGtCQUFBO0VBQ0EsdUJBQXVCLGFBQXZCO0VBQ0EsdUJBQUE7O0FBdkRSLGFBMERJO0VBQ0ksYUFBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtFQUNBLFNBQUE7RUFDQSxXQUFXLGdCQUFYO0VBQ0EsbUJBQUE7RUFDQSx1QkFBQTs7QUFqRVIsYUFvRUk7RUFDSSxXQUFXLHNCQUFYO0VBQ0EsZ0JBQUE7RUFDQSxzQkFBQTtFQUNBLHlCQUFBO0VBQ0EsT0FBTyxXQUFQOztBQXpFUixhQTRFSTtFQUNJLDJCQUEyQixrQ0FBM0I7RUFDQSxrQkFBQTtFQUNBLE9BQU8sZ0JBQVA7RUFDQSxZQUFZLGlCQUFaO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTs7QUFsRlIsYUFxRkk7RUFDSSxrQkFBQTtFQUNBLE9BQU8sZ0JBQVA7RUFDQSxpQkFBQTs7QUFFQSxhQUxKLGVBS0s7RUFDRyxPQUFPLGlCQUFQO0VBQ0EsWUFBWSx3QkFBWjtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7RUFDQSxnQkFBQTs7QUEvRlosYUFvR0ksZUFBZTtFQUNYLGlCQUFBO0VBQ0Esb0JBQUE7O0FBdEdSLGFBMEdJLGVBQWU7QUExR25CLGFBMkdJLGVBQWU7RUFDWCxhQUFBO0VBQ0EsbUJBQUE7O0FBSVIsUUFBMEI7RUFDdEIsYUFBYztJQUFpQixjQUFBIiwiZmlsZSI6ImFwcC5jc3MiLCJzb3VyY2VzQ29udGVudCI6W119 */
