/* forecheez: /wp-content/themes/forefrontweb/build/main.c95bb033299f4c692591.css */
/* Mobile first layout SmartMenus Core CSS (it's not recommended editing these rules)
   You need this once per page no matter how many menu trees or different themes you use.
-------------------------------------------------------------------------------------------*/

.sm{box-sizing:border-box;position:relative;z-index:9999;-webkit-tap-highlight-color:rgba(0,0,0,0);}
.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;}
.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right;}
.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0;}
.sm ul{display:none;}
.sm li,.sm a{position:relative;}
.sm a{display:block;}
.sm a.disabled{cursor:default;}
.sm::after{content:"";display:block;height:0;font:0px/0 serif;clear:both;overflow:hidden;}
.sm *,.sm *::before,.sm *::after{box-sizing:inherit;}
.sm-simple {
  border: 1px solid #bbbbbb;
  background: #fff;
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }
  .sm-simple a, .sm-simple a:hover, .sm-simple a:focus, .sm-simple a:active {
    padding: 13px 20px;
    /* make room for the toggle button (sub indicator) */
    padding-right: 58px;
    color: #555555;
    font-family: "Lucida Sans Unicode", "Lucida Sans", "Lucida Grande", Arial, sans-serif;
    font-size: 16px;
    font-weight: normal;
    line-height: 17px;
    text-decoration: none; }
  .sm-simple a.current {
    background: #555555;
    color: #fff; }
  .sm-simple a.disabled {
    color: #cccccc; }
  .sm-simple a .sub-arrow {
    position: absolute;
    top: 50%;
    margin-top: -17px;
    left: auto;
    right: 4px;
    width: 34px;
    height: 34px;
    overflow: hidden;
    font: bold 14px/34px monospace !important;
    text-align: center;
    text-shadow: none;
    background: rgba(0, 0, 0, 0.08); }
  .sm-simple a .sub-arrow::before {
    content: '+'; }
  .sm-simple a.highlighted .sub-arrow::before {
    content: '-'; }
  .sm-simple li {
    border-top: 1px solid rgba(0, 0, 0, 0.05); }
  .sm-simple > li:first-child {
    border-top: 0; }
  .sm-simple ul {
    background: rgba(179, 179, 179, 0.1); }
    .sm-simple ul a, .sm-simple ul a:hover, .sm-simple ul a:focus, .sm-simple ul a:active {
      font-size: 14px;
      border-left: 8px solid transparent; }
    .sm-simple ul ul a,
    .sm-simple ul ul a:hover,
    .sm-simple ul ul a:focus,
    .sm-simple ul ul a:active {
      border-left: 16px solid transparent; }
    .sm-simple ul ul ul a,
    .sm-simple ul ul ul a:hover,
    .sm-simple ul ul ul a:focus,
    .sm-simple ul ul ul a:active {
      border-left: 24px solid transparent; }
    .sm-simple ul ul ul ul a,
    .sm-simple ul ul ul ul a:hover,
    .sm-simple ul ul ul ul a:focus,
    .sm-simple ul ul ul ul a:active {
      border-left: 32px solid transparent; }
    .sm-simple ul ul ul ul ul a,
    .sm-simple ul ul ul ul ul a:hover,
    .sm-simple ul ul ul ul ul a:focus,
    .sm-simple ul ul ul ul ul a:active {
      border-left: 40px solid transparent; }

@media (min-width: 1080px) {
  /* Switch to desktop layout
	-----------------------------------------------
	   These transform the menu tree from
	   collapsible to desktop (navbar + dropdowns)
	-----------------------------------------------*/
  /* start... (it's not recommended editing these rules) */
  .sm-simple ul {
    position: absolute;
    width: 12em; }
  .sm-simple li {
    float: left; }
  .sm-simple.sm-rtl li {
    float: right; }
  .sm-simple ul li, .sm-simple.sm-rtl ul li, .sm-simple.sm-vertical li {
    float: none; }
  .sm-simple a {
    white-space: nowrap; }
  .sm-simple ul a, .sm-simple.sm-vertical a {
    white-space: normal; }
  .sm-simple .sm-nowrap > li > a, .sm-simple .sm-nowrap > li > :not(ul) a {
    white-space: nowrap; }
  /* ...end */
  .sm-simple {
    background: #fff; }
    .sm-simple a, .sm-simple a:hover, .sm-simple a:focus, .sm-simple a:active, .sm-simple a.highlighted {
      padding: 11px 20px;
      color: #555555; }
    .sm-simple a:hover, .sm-simple a:focus, .sm-simple a:active, .sm-simple a.highlighted {
      background: #eeeeee; }
    .sm-simple a.current {
      background: #555555;
      color: #fff; }
    .sm-simple a.disabled {
      background: #fff;
      color: #cccccc; }
    .sm-simple a.has-submenu {
      padding-right: 32px; }
    .sm-simple a .sub-arrow {
      top: 50%;
      margin-top: -8px;
      right: 20px;
      width: 8px;
      height: 16px;
      font: 14px/16px monospace !important;
      background: transparent; }
    .sm-simple a.highlighted .sub-arrow::before {
      content: '+'; }
    .sm-simple > li {
      border-top: 0;
      border-left: 1px solid #eeeeee; }
      .sm-simple > li:first-child {
        border-left: 0; }
    .sm-simple ul {
      border: 1px solid #bbbbbb;
      background: #fff;
      box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }
      .sm-simple ul a {
        border: 0 !important; }
        .sm-simple ul a.has-submenu {
          padding-right: 20px; }
        .sm-simple ul a .sub-arrow {
          left: 8px;
          right: auto; }
      .sm-simple ul > li {
        border-left: 0;
        border-top: 1px solid #eeeeee; }
        .sm-simple ul > li:first-child {
          border-top: 0; }
    .sm-simple .scroll-up,
    .sm-simple .scroll-down {
      position: absolute;
      display: none;
      visibility: hidden;
      overflow: hidden;
      background: #fff;
      height: 20px; }
    .sm-simple .scroll-up-arrow,
    .sm-simple .scroll-down-arrow {
      position: absolute;
      top: -2px;
      left: 50%;
      margin-left: -8px;
      width: 0;
      height: 0;
      overflow: hidden;
      border-width: 8px;
      border-style: dashed dashed solid dashed;
      border-color: transparent transparent #555555 transparent; }
    .sm-simple .scroll-down-arrow {
      top: 6px;
      border-style: solid dashed dashed dashed;
      border-color: #555555 transparent transparent transparent; }
    .sm-simple.sm-rtl a.has-submenu {
      padding-right: 20px;
      padding-left: 32px; }
    .sm-simple.sm-rtl a .sub-arrow {
      left: 20px;
      right: auto; }
    .sm-simple.sm-rtl.sm-vertical a.has-submenu {
      padding: 11px 20px; }
    .sm-simple.sm-rtl.sm-vertical a .sub-arrow {
      left: auto;
      right: 8px; }
    .sm-simple.sm-rtl > li:first-child {
      border-left: 1px solid #eeeeee; }
    .sm-simple.sm-rtl > li:last-child {
      border-left: 0; }
    .sm-simple.sm-rtl ul a.has-submenu {
      padding: 11px 20px; }
    .sm-simple.sm-rtl ul a .sub-arrow {
      left: auto;
      right: 8px; }
    .sm-simple.sm-vertical a .sub-arrow {
      left: 8px;
      right: auto; }
    .sm-simple.sm-vertical li {
      border-left: 0;
      border-top: 1px solid #eeeeee; }
    .sm-simple.sm-vertical > li:first-child {
      border-top: 0; } }

/* Slider */
.slick-slider
{
    position: relative;

    display: block;
    box-sizing: border-box;

    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;

    -webkit-touch-callout: none;
    -khtml-user-select: none;
    -ms-touch-action: pan-y;
        touch-action: pan-y;
    -webkit-tap-highlight-color: transparent;
}

.slick-list
{
    position: relative;

    display: block;
    overflow: hidden;

    margin: 0;
    padding: 0;
}
.slick-list:focus
{
    outline: none;
}
.slick-list.dragging
{
    cursor: pointer;
    cursor: hand;
}

.slick-slider .slick-track,
.slick-slider .slick-list
{
    -webkit-transform: translate3d(0, 0, 0);
       -moz-transform: translate3d(0, 0, 0);
        -ms-transform: translate3d(0, 0, 0);
         -o-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
}

.slick-track
{
    position: relative;
    top: 0;
    left: 0;

    display: block;
    margin-left: auto;
    margin-right: auto;
}
.slick-track:before,
.slick-track:after
{
    display: table;

    content: '';
}
.slick-track:after
{
    clear: both;
}
.slick-loading .slick-track
{
    visibility: hidden;
}

.slick-slide
{
    display: none;
    float: left;

    height: 100%;
    min-height: 1px;
}
[dir='rtl'] .slick-slide
{
    float: right;
}
.slick-slide img
{
    display: block;
}
.slick-slide.slick-loading img
{
    display: none;
}
.slick-slide.dragging img
{
    pointer-events: none;
}
.slick-initialized .slick-slide
{
    display: block;
}
.slick-loading .slick-slide
{
    visibility: hidden;
}
.slick-vertical .slick-slide
{
    display: block;

    height: auto;

    border: 1px solid transparent;
}
.slick-arrow.slick-hidden {
    display: none;
}


/* Slider */
.slick-loading .slick-list
{
    background: #fff url("/wp-content/themes/forefrontweb/build/fb6f3c230cb846e25247dfaa1da94d8f.gif") center center no-repeat;
}

/* Icons */
@font-face
{
    font-family: 'slick';
    font-weight: normal;
    font-style: normal;

    src: url("/wp-content/themes/forefrontweb/build/a4e97f5a2a64f0ab132323fbeb33ae29.eot");
    src: url("/wp-content/themes/forefrontweb/build/a4e97f5a2a64f0ab132323fbeb33ae29.eot?#iefix") format('embedded-opentype'), url("/wp-content/themes/forefrontweb/build/295183786cd8a138986521d9f388a286.woff") format('woff'), url("/wp-content/themes/forefrontweb/build/c94f7671dcc99dce43e22a89f486f7c2.ttf") format('truetype'), url("/wp-content/themes/forefrontweb/build/2630a3e3eab21c607e21576571b95b9d.svg#slick") format('svg');
}
/* Arrows */
.slick-prev,
.slick-next
{
    font-size: 0;
    line-height: 0;

    position: absolute;
    top: 50%;

    display: block;

    width: 20px;
    height: 20px;
    padding: 0;
    -webkit-transform: translate(0, -50%);
    -ms-transform: translate(0, -50%);
    transform: translate(0, -50%);

    cursor: pointer;

    color: transparent;
    border: none;
    outline: none;
    background: transparent;
}
.slick-prev:hover,
.slick-prev:focus,
.slick-next:hover,
.slick-next:focus
{
    color: transparent;
    outline: none;
    background: transparent;
}
.slick-prev:hover:before,
.slick-prev:focus:before,
.slick-next:hover:before,
.slick-next:focus:before
{
    opacity: 1;
}
.slick-prev.slick-disabled:before,
.slick-next.slick-disabled:before
{
    opacity: .25;
}

.slick-prev:before,
.slick-next:before
{
    font-family: 'slick';
    font-size: 20px;
    line-height: 1;

    opacity: .75;
    color: white;

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.slick-prev
{
    left: -25px;
}
[dir='rtl'] .slick-prev
{
    right: -25px;
    left: auto;
}
.slick-prev:before
{
    content: '←';
}
[dir='rtl'] .slick-prev:before
{
    content: '→';
}

.slick-next
{
    right: -25px;
}
[dir='rtl'] .slick-next
{
    right: auto;
    left: -25px;
}
.slick-next:before
{
    content: '→';
}
[dir='rtl'] .slick-next:before
{
    content: '←';
}

/* Dots */
.slick-dotted.slick-slider
{
    margin-bottom: 30px;
}

.slick-dots
{
    position: absolute;
    bottom: -25px;

    display: block;

    width: 100%;
    padding: 0;
    margin: 0;

    list-style: none;

    text-align: center;
}
.slick-dots li
{
    position: relative;

    display: inline-block;

    width: 20px;
    height: 20px;
    margin: 0 5px;
    padding: 0;

    cursor: pointer;
}
.slick-dots li button
{
    font-size: 0;
    line-height: 0;

    display: block;

    width: 20px;
    height: 20px;
    padding: 5px;

    cursor: pointer;

    color: transparent;
    border: 0;
    outline: none;
    background: transparent;
}
.slick-dots li button:hover,
.slick-dots li button:focus
{
    outline: none;
}
.slick-dots li button:hover:before,
.slick-dots li button:focus:before
{
    opacity: 1;
}
.slick-dots li button:before
{
    font-family: 'slick';
    font-size: 6px;
    line-height: 20px;

    position: absolute;
    top: 0;
    left: 0;

    width: 20px;
    height: 20px;

    content: '•';
    text-align: center;

    opacity: .25;
    color: black;

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.slick-dots li.slick-active button:before
{
    opacity: .75;
    color: black;
}

/*! Lity - v2.4.1 - 2020-04-26
* http://sorgalla.com/lity/
* Copyright (c) 2015-2020 Jan Sorgalla; Licensed MIT */.lity{z-index:9990;position:fixed;top:0;right:0;bottom:0;left:0;white-space:nowrap;background:#0b0b0b;background:rgba(0,0,0,0.9);outline:none !important;opacity:0;-webkit-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease}.lity.lity-opened{opacity:1}.lity.lity-closed{opacity:0}.lity *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.lity-wrap{z-index:9990;position:fixed;top:0;right:0;bottom:0;left:0;text-align:center;outline:none !important}.lity-wrap:before{content:'';display:inline-block;height:100%;vertical-align:middle;margin-right:-0.25em}.lity-loader{z-index:9991;color:#fff;position:absolute;top:50%;margin-top:-0.8em;width:100%;text-align:center;font-size:14px;font-family:Arial,Helvetica,sans-serif;opacity:0;-webkit-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease}.lity-loading .lity-loader{opacity:1}.lity-container{z-index:9992;position:relative;text-align:left;vertical-align:middle;display:inline-block;white-space:normal;max-width:100%;max-height:100%;outline:none !important}.lity-content{z-index:9993;width:100%;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;-o-transition:-o-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease, -webkit-transform .3s ease, -o-transform .3s ease}.lity-loading .lity-content,.lity-closed .lity-content{-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.lity-content:after{content:'';position:absolute;left:0;top:0;bottom:0;display:block;right:0;width:auto;height:auto;z-index:-1;-webkit-box-shadow:0 0 8px rgba(0,0,0,0.6);box-shadow:0 0 8px rgba(0,0,0,0.6)}.lity-close{z-index:9994;width:35px;height:35px;position:fixed;right:0;top:0;-webkit-appearance:none;cursor:pointer;text-decoration:none;text-align:center;padding:0;color:#fff;font-style:normal;font-size:35px;font-family:Arial,Baskerville,monospace;line-height:35px;text-shadow:0 1px 2px rgba(0,0,0,0.6);border:0;background:none;outline:none;-webkit-box-shadow:none;box-shadow:none}.lity-close::-moz-focus-inner{border:0;padding:0}.lity-close:hover,.lity-close:focus,.lity-close:active,.lity-close:visited{text-decoration:none;text-align:center;padding:0;color:#fff;font-style:normal;font-size:35px;font-family:Arial,Baskerville,monospace;line-height:35px;text-shadow:0 1px 2px rgba(0,0,0,0.6);border:0;background:none;outline:none;-webkit-box-shadow:none;box-shadow:none}.lity-close:active{top:1px}.lity-image img{max-width:100%;display:block;line-height:0;border:0}.lity-iframe .lity-container,.lity-youtube .lity-container,.lity-vimeo .lity-container,.lity-facebookvideo .lity-container,.lity-googlemaps .lity-container{width:100%;max-width:964px}.lity-iframe-container{width:100%;height:0;padding-top:56.25%;overflow:auto;pointer-events:auto;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-overflow-scrolling:touch}.lity-iframe-container iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;-webkit-box-shadow:0 0 8px rgba(0,0,0,0.6);box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}.lity-hide{display:none}

@font-face {
  font-family: 'Avenir';
  src: url("/wp-content/themes/forefrontweb/build/6ced7088e3ea0b5550678a90919cacf0.woff2") format("woff2"), url("/wp-content/themes/forefrontweb/build/6473fc84d7dbc01dc66126259dc5c52f.woff") format("woff");
  font-weight: 100;
  font-style: normal;
  font-display: swap; }

@font-face {
  font-family: 'Avenir';
  src: url("/wp-content/themes/forefrontweb/build/08eb147194123185238b00744ba4e159.woff2") format("woff2"), url("/wp-content/themes/forefrontweb/build/2fae00a75b01dcd42f2cb6a329f8256e.woff") format("woff");
  font-weight: 100;
  font-style: italic;
  font-display: swap; }

@font-face {
  font-family: 'Avenir';
  src: url("/wp-content/themes/forefrontweb/build/b1076d3a3f8456d33b0c953a461ae0cc.woff2") format("woff2"), url("/wp-content/themes/forefrontweb/build/81fc855ad144d142f00f785fcd3d69df.woff") format("woff");
  font-weight: normal;
  font-style: normal;
  font-display: swap; }

@font-face {
  font-family: 'Avenir';
  src: url("/wp-content/themes/forefrontweb/build/3dcd3196022036ef24010c3968ae91c6.woff2") format("woff2"), url("/wp-content/themes/forefrontweb/build/ce1b7c97b2f75b168c00357dafc10b4c.woff") format("woff");
  font-weight: normal;
  font-style: italic;
  font-display: swap; }

@font-face {
  font-family: 'Avenir';
  src: url("/wp-content/themes/forefrontweb/build/0c2fdf5fdf4134f6c4a852576ff222b1.woff2") format("woff2"), url("/wp-content/themes/forefrontweb/build/ebc70b36bfffb838ca8619771d8749f7.woff") format("woff");
  font-weight: 500;
  font-style: normal;
  font-display: swap; }

@font-face {
  font-family: 'Avenir';
  src: url("/wp-content/themes/forefrontweb/build/b2c12c8fa027669c10dc8133b4f3758b.woff2") format("woff2"), url("/wp-content/themes/forefrontweb/build/c1f5d0b2d8f2ba09f50e4daa66168792.woff") format("woff");
  font-weight: 500;
  font-style: italic;
  font-display: swap; }

@font-face {
  font-family: 'Avenir';
  src: url("/wp-content/themes/forefrontweb/build/3b665598bfa0731a43e13eef63208f0d.woff2") format("woff2"), url("/wp-content/themes/forefrontweb/build/ec24b0e11f5cde5e1d2d3533ad841ac1.woff") format("woff");
  font-weight: 900;
  font-style: normal;
  font-display: swap; }

@font-face {
  font-family: 'Avenir';
  src: url("/wp-content/themes/forefrontweb/build/5e372e308084fb0aa18427b39cecf9fa.woff2") format("woff2"), url("/wp-content/themes/forefrontweb/build/4e30e16c134361394fcc1e8e6bb491f3.woff") format("woff");
  font-weight: 900;
  font-style: italic;
  font-display: swap; }

@font-face {
  font-family: 'My Handwriting';
  src: url("/wp-content/themes/forefrontweb/build/ae47fd98db300ff089e0403fd8690c5c.woff2") format("woff2"), url("/wp-content/themes/forefrontweb/build/5490a0b4263e2ad506a336656415563d.woff") format("woff");
  font-weight: 500;
  font-style: normal;
  font-display: swap; }

/*!
 * Bootstrap Reboot v4.6.2 (https://getbootstrap.com/)
 * Copyright 2011-2022 The Bootstrap Authors
 * Copyright 2011-2022 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
 */
*,
*::before,
*::after {
  box-sizing: border-box; }

html {
  font-family: sans-serif;
  line-height: 1.15;
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }

article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
  display: block; }

body {
  margin: 0;
  font-family: "Avenir", sans-serif;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.61;
  color: #5b5b5b;
  text-align: left;
  background-color: #FFFFFF; }

[tabindex="-1"]:focus:not(:focus-visible) {
  outline: 0 !important; }

hr {
  box-sizing: content-box;
  height: 0;
  overflow: visible; }

h1, h2, h3, h4, h5, h6 {
  margin-top: 0;
  margin-bottom: 0.5rem; }

p {
  margin-top: 0;
  margin-bottom: 1rem; }

abbr[title],
abbr[data-original-title] {
  text-decoration: underline;
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
  cursor: help;
  border-bottom: 0;
  -webkit-text-decoration-skip-ink: none;
          text-decoration-skip-ink: none; }

address {
  margin-bottom: 1rem;
  font-style: normal;
  line-height: inherit; }

ol,
ul,
dl {
  margin-top: 0;
  margin-bottom: 1rem; }

ol ol,
ul ul,
ol ul,
ul ol {
  margin-bottom: 0; }

dt {
  font-weight: 700; }

dd {
  margin-bottom: .5rem;
  margin-left: 0; }

blockquote {
  margin: 0 0 1rem; }

b,
strong {
  font-weight: bolder; }

small {
  font-size: 80%; }

sub,
sup {
  position: relative;
  font-size: 75%;
  line-height: 0;
  vertical-align: baseline; }

sub {
  bottom: -.25em; }

sup {
  top: -.5em; }

a {
  color: #007bff;
  text-decoration: none;
  background-color: transparent; }
  a:hover {
    color: #0056b3;
    text-decoration: underline; }

a:not([href]):not([class]) {
  color: inherit;
  text-decoration: none; }
  a:not([href]):not([class]):hover {
    color: inherit;
    text-decoration: none; }

pre,
code,
kbd,
samp {
  font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 1em; }

pre {
  margin-top: 0;
  margin-bottom: 1rem;
  overflow: auto;
  -ms-overflow-style: scrollbar; }

figure {
  margin: 0 0 1rem; }

img {
  vertical-align: middle;
  border-style: none; }

svg {
  overflow: hidden;
  vertical-align: middle; }

table {
  border-collapse: collapse; }

caption {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  color: #6c757d;
  text-align: left;
  caption-side: bottom; }

th {
  text-align: inherit;
  text-align: -webkit-match-parent; }

label {
  display: inline-block;
  margin-bottom: 0.5rem; }

button {
  border-radius: 0; }

button:focus:not(:focus-visible) {
  outline: 0; }

input,
button,
select,
optgroup,
textarea {
  margin: 0;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit; }

button,
input {
  overflow: visible; }

button,
select {
  text-transform: none; }

[role="button"] {
  cursor: pointer; }

select {
  word-wrap: normal; }

button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button; }

button:not(:disabled),
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled) {
  cursor: pointer; }

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  padding: 0;
  border-style: none; }

input[type="radio"],
input[type="checkbox"] {
  box-sizing: border-box;
  padding: 0; }

textarea {
  overflow: auto;
  resize: vertical; }

fieldset {
  min-width: 0;
  padding: 0;
  margin: 0;
  border: 0; }

legend {
  display: block;
  width: 100%;
  max-width: 100%;
  padding: 0;
  margin-bottom: .5rem;
  font-size: 1.5rem;
  line-height: inherit;
  color: inherit;
  white-space: normal; }

progress {
  vertical-align: baseline; }

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; }

[type="search"] {
  outline-offset: -2px;
  -webkit-appearance: none; }

[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

::-webkit-file-upload-button {
  font: inherit;
  -webkit-appearance: button; }

output {
  display: inline-block; }

summary {
  display: list-item;
  cursor: pointer; }

template {
  display: none; }

[hidden] {
  display: none !important; }

/*!
 * Bootstrap Grid v4.6.2 (https://getbootstrap.com/)
 * Copyright 2011-2022 The Bootstrap Authors
 * Copyright 2011-2022 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
html {
  box-sizing: border-box;
  -ms-overflow-style: scrollbar; }

*,
*::before,
*::after {
  box-sizing: inherit; }

.container,
.container-fluid,
.container-sm,
.container-md,
.container-lg,
.container-xl {
  width: 100%;
  padding-right: 20px;
  padding-left: 20px;
  margin-right: auto;
  margin-left: auto; }

@media (min-width: 576px) {
  .container, .container-sm {
    max-width: 767px; } }

@media (min-width: 768px) {
  .container, .container-sm, .container-md {
    max-width: 991px; } }

@media (min-width: 992px) {
  .container, .container-sm, .container-md, .container-lg {
    max-width: 1299px; } }

@media (min-width: 1300px) {
  .container, .container-sm, .container-md, .container-lg, .container-xl {
    max-width: 1300px; } }

.row {
  display: flex;
  flex-wrap: wrap;
  margin-right: -20px;
  margin-left: -20px; }

.no-gutters {
  margin-right: 0;
  margin-left: 0; }
  .no-gutters > .col,
  .no-gutters > [class*="col-"] {
    padding-right: 0;
    padding-left: 0; }

.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,
.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,
.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,
.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,
.col-xl-auto {
  position: relative;
  width: 100%;
  padding-right: 20px;
  padding-left: 20px; }

.col {
  flex-basis: 0;
  flex-grow: 1;
  max-width: 100%; }

.row-cols-1 > * {
  flex: 0 0 100%;
  max-width: 100%; }

.row-cols-2 > * {
  flex: 0 0 50%;
  max-width: 50%; }

.row-cols-3 > * {
  flex: 0 0 33.33333%;
  max-width: 33.33333%; }

.row-cols-4 > * {
  flex: 0 0 25%;
  max-width: 25%; }

.row-cols-5 > * {
  flex: 0 0 20%;
  max-width: 20%; }

.row-cols-6 > * {
  flex: 0 0 16.66667%;
  max-width: 16.66667%; }

.col-auto {
  flex: 0 0 auto;
  width: auto;
  max-width: 100%; }

.col-1 {
  flex: 0 0 8.33333%;
  max-width: 8.33333%; }

.col-2 {
  flex: 0 0 16.66667%;
  max-width: 16.66667%; }

.col-3 {
  flex: 0 0 25%;
  max-width: 25%; }

.col-4 {
  flex: 0 0 33.33333%;
  max-width: 33.33333%; }

.col-5 {
  flex: 0 0 41.66667%;
  max-width: 41.66667%; }

.col-6 {
  flex: 0 0 50%;
  max-width: 50%; }

.col-7 {
  flex: 0 0 58.33333%;
  max-width: 58.33333%; }

.col-8 {
  flex: 0 0 66.66667%;
  max-width: 66.66667%; }

.col-9 {
  flex: 0 0 75%;
  max-width: 75%; }

.col-10 {
  flex: 0 0 83.33333%;
  max-width: 83.33333%; }

.col-11 {
  flex: 0 0 91.66667%;
  max-width: 91.66667%; }

.col-12 {
  flex: 0 0 100%;
  max-width: 100%; }

.order-first {
  order: -1; }

.order-last {
  order: 13; }

.order-0 {
  order: 0; }

.order-1 {
  order: 1; }

.order-2 {
  order: 2; }

.order-3 {
  order: 3; }

.order-4 {
  order: 4; }

.order-5 {
  order: 5; }

.order-6 {
  order: 6; }

.order-7 {
  order: 7; }

.order-8 {
  order: 8; }

.order-9 {
  order: 9; }

.order-10 {
  order: 10; }

.order-11 {
  order: 11; }

.order-12 {
  order: 12; }

.offset-1 {
  margin-left: 8.33333%; }

.offset-2 {
  margin-left: 16.66667%; }

.offset-3 {
  margin-left: 25%; }

.offset-4 {
  margin-left: 33.33333%; }

.offset-5 {
  margin-left: 41.66667%; }

.offset-6 {
  margin-left: 50%; }

.offset-7 {
  margin-left: 58.33333%; }

.offset-8 {
  margin-left: 66.66667%; }

.offset-9 {
  margin-left: 75%; }

.offset-10 {
  margin-left: 83.33333%; }

.offset-11 {
  margin-left: 91.66667%; }

@media (min-width: 576px) {
  .col-sm {
    flex-basis: 0;
    flex-grow: 1;
    max-width: 100%; }
  .row-cols-sm-1 > * {
    flex: 0 0 100%;
    max-width: 100%; }
  .row-cols-sm-2 > * {
    flex: 0 0 50%;
    max-width: 50%; }
  .row-cols-sm-3 > * {
    flex: 0 0 33.33333%;
    max-width: 33.33333%; }
  .row-cols-sm-4 > * {
    flex: 0 0 25%;
    max-width: 25%; }
  .row-cols-sm-5 > * {
    flex: 0 0 20%;
    max-width: 20%; }
  .row-cols-sm-6 > * {
    flex: 0 0 16.66667%;
    max-width: 16.66667%; }
  .col-sm-auto {
    flex: 0 0 auto;
    width: auto;
    max-width: 100%; }
  .col-sm-1 {
    flex: 0 0 8.33333%;
    max-width: 8.33333%; }
  .col-sm-2 {
    flex: 0 0 16.66667%;
    max-width: 16.66667%; }
  .col-sm-3 {
    flex: 0 0 25%;
    max-width: 25%; }
  .col-sm-4 {
    flex: 0 0 33.33333%;
    max-width: 33.33333%; }
  .col-sm-5 {
    flex: 0 0 41.66667%;
    max-width: 41.66667%; }
  .col-sm-6 {
    flex: 0 0 50%;
    max-width: 50%; }
  .col-sm-7 {
    flex: 0 0 58.33333%;
    max-width: 58.33333%; }
  .col-sm-8 {
    flex: 0 0 66.66667%;
    max-width: 66.66667%; }
  .col-sm-9 {
    flex: 0 0 75%;
    max-width: 75%; }
  .col-sm-10 {
    flex: 0 0 83.33333%;
    max-width: 83.33333%; }
  .col-sm-11 {
    flex: 0 0 91.66667%;
    max-width: 91.66667%; }
  .col-sm-12 {
    flex: 0 0 100%;
    max-width: 100%; }
  .order-sm-first {
    order: -1; }
  .order-sm-last {
    order: 13; }
  .order-sm-0 {
    order: 0; }
  .order-sm-1 {
    order: 1; }
  .order-sm-2 {
    order: 2; }
  .order-sm-3 {
    order: 3; }
  .order-sm-4 {
    order: 4; }
  .order-sm-5 {
    order: 5; }
  .order-sm-6 {
    order: 6; }
  .order-sm-7 {
    order: 7; }
  .order-sm-8 {
    order: 8; }
  .order-sm-9 {
    order: 9; }
  .order-sm-10 {
    order: 10; }
  .order-sm-11 {
    order: 11; }
  .order-sm-12 {
    order: 12; }
  .offset-sm-0 {
    margin-left: 0; }
  .offset-sm-1 {
    margin-left: 8.33333%; }
  .offset-sm-2 {
    margin-left: 16.66667%; }
  .offset-sm-3 {
    margin-left: 25%; }
  .offset-sm-4 {
    margin-left: 33.33333%; }
  .offset-sm-5 {
    margin-left: 41.66667%; }
  .offset-sm-6 {
    margin-left: 50%; }
  .offset-sm-7 {
    margin-left: 58.33333%; }
  .offset-sm-8 {
    margin-left: 66.66667%; }
  .offset-sm-9 {
    margin-left: 75%; }
  .offset-sm-10 {
    margin-left: 83.33333%; }
  .offset-sm-11 {
    margin-left: 91.66667%; } }

@media (min-width: 768px) {
  .col-md {
    flex-basis: 0;
    flex-grow: 1;
    max-width: 100%; }
  .row-cols-md-1 > * {
    flex: 0 0 100%;
    max-width: 100%; }
  .row-cols-md-2 > * {
    flex: 0 0 50%;
    max-width: 50%; }
  .row-cols-md-3 > * {
    flex: 0 0 33.33333%;
    max-width: 33.33333%; }
  .row-cols-md-4 > * {
    flex: 0 0 25%;
    max-width: 25%; }
  .row-cols-md-5 > * {
    flex: 0 0 20%;
    max-width: 20%; }
  .row-cols-md-6 > * {
    flex: 0 0 16.66667%;
    max-width: 16.66667%; }
  .col-md-auto {
    flex: 0 0 auto;
    width: auto;
    max-width: 100%; }
  .col-md-1 {
    flex: 0 0 8.33333%;
    max-width: 8.33333%; }
  .col-md-2 {
    flex: 0 0 16.66667%;
    max-width: 16.66667%; }
  .col-md-3 {
    flex: 0 0 25%;
    max-width: 25%; }
  .col-md-4 {
    flex: 0 0 33.33333%;
    max-width: 33.33333%; }
  .col-md-5 {
    flex: 0 0 41.66667%;
    max-width: 41.66667%; }
  .col-md-6 {
    flex: 0 0 50%;
    max-width: 50%; }
  .col-md-7 {
    flex: 0 0 58.33333%;
    max-width: 58.33333%; }
  .col-md-8 {
    flex: 0 0 66.66667%;
    max-width: 66.66667%; }
  .col-md-9 {
    flex: 0 0 75%;
    max-width: 75%; }
  .col-md-10 {
    flex: 0 0 83.33333%;
    max-width: 83.33333%; }
  .col-md-11 {
    flex: 0 0 91.66667%;
    max-width: 91.66667%; }
  .col-md-12 {
    flex: 0 0 100%;
    max-width: 100%; }
  .order-md-first {
    order: -1; }
  .order-md-last {
    order: 13; }
  .order-md-0 {
    order: 0; }
  .order-md-1 {
    order: 1; }
  .order-md-2 {
    order: 2; }
  .order-md-3 {
    order: 3; }
  .order-md-4 {
    order: 4; }
  .order-md-5 {
    order: 5; }
  .order-md-6 {
    order: 6; }
  .order-md-7 {
    order: 7; }
  .order-md-8 {
    order: 8; }
  .order-md-9 {
    order: 9; }
  .order-md-10 {
    order: 10; }
  .order-md-11 {
    order: 11; }
  .order-md-12 {
    order: 12; }
  .offset-md-0 {
    margin-left: 0; }
  .offset-md-1 {
    margin-left: 8.33333%; }
  .offset-md-2 {
    margin-left: 16.66667%; }
  .offset-md-3 {
    margin-left: 25%; }
  .offset-md-4 {
    margin-left: 33.33333%; }
  .offset-md-5 {
    margin-left: 41.66667%; }
  .offset-md-6 {
    margin-left: 50%; }
  .offset-md-7 {
    margin-left: 58.33333%; }
  .offset-md-8 {
    margin-left: 66.66667%; }
  .offset-md-9 {
    margin-left: 75%; }
  .offset-md-10 {
    margin-left: 83.33333%; }
  .offset-md-11 {
    margin-left: 91.66667%; } }

@media (min-width: 992px) {
  .col-lg {
    flex-basis: 0;
    flex-grow: 1;
    max-width: 100%; }
  .row-cols-lg-1 > * {
    flex: 0 0 100%;
    max-width: 100%; }
  .row-cols-lg-2 > * {
    flex: 0 0 50%;
    max-width: 50%; }
  .row-cols-lg-3 > * {
    flex: 0 0 33.33333%;
    max-width: 33.33333%; }
  .row-cols-lg-4 > * {
    flex: 0 0 25%;
    max-width: 25%; }
  .row-cols-lg-5 > * {
    flex: 0 0 20%;
    max-width: 20%; }
  .row-cols-lg-6 > * {
    flex: 0 0 16.66667%;
    max-width: 16.66667%; }
  .col-lg-auto {
    flex: 0 0 auto;
    width: auto;
    max-width: 100%; }
  .col-lg-1 {
    flex: 0 0 8.33333%;
    max-width: 8.33333%; }
  .col-lg-2 {
    flex: 0 0 16.66667%;
    max-width: 16.66667%; }
  .col-lg-3 {
    flex: 0 0 25%;
    max-width: 25%; }
  .col-lg-4 {
    flex: 0 0 33.33333%;
    max-width: 33.33333%; }
  .col-lg-5 {
    flex: 0 0 41.66667%;
    max-width: 41.66667%; }
  .col-lg-6 {
    flex: 0 0 50%;
    max-width: 50%; }
  .col-lg-7 {
    flex: 0 0 58.33333%;
    max-width: 58.33333%; }
  .col-lg-8 {
    flex: 0 0 66.66667%;
    max-width: 66.66667%; }
  .col-lg-9 {
    flex: 0 0 75%;
    max-width: 75%; }
  .col-lg-10 {
    flex: 0 0 83.33333%;
    max-width: 83.33333%; }
  .col-lg-11 {
    flex: 0 0 91.66667%;
    max-width: 91.66667%; }
  .col-lg-12 {
    flex: 0 0 100%;
    max-width: 100%; }
  .order-lg-first {
    order: -1; }
  .order-lg-last {
    order: 13; }
  .order-lg-0 {
    order: 0; }
  .order-lg-1 {
    order: 1; }
  .order-lg-2 {
    order: 2; }
  .order-lg-3 {
    order: 3; }
  .order-lg-4 {
    order: 4; }
  .order-lg-5 {
    order: 5; }
  .order-lg-6 {
    order: 6; }
  .order-lg-7 {
    order: 7; }
  .order-lg-8 {
    order: 8; }
  .order-lg-9 {
    order: 9; }
  .order-lg-10 {
    order: 10; }
  .order-lg-11 {
    order: 11; }
  .order-lg-12 {
    order: 12; }
  .offset-lg-0 {
    margin-left: 0; }
  .offset-lg-1 {
    margin-left: 8.33333%; }
  .offset-lg-2 {
    margin-left: 16.66667%; }
  .offset-lg-3 {
    margin-left: 25%; }
  .offset-lg-4 {
    margin-left: 33.33333%; }
  .offset-lg-5 {
    margin-left: 41.66667%; }
  .offset-lg-6 {
    margin-left: 50%; }
  .offset-lg-7 {
    margin-left: 58.33333%; }
  .offset-lg-8 {
    margin-left: 66.66667%; }
  .offset-lg-9 {
    margin-left: 75%; }
  .offset-lg-10 {
    margin-left: 83.33333%; }
  .offset-lg-11 {
    margin-left: 91.66667%; } }

@media (min-width: 1300px) {
  .col-xl {
    flex-basis: 0;
    flex-grow: 1;
    max-width: 100%; }
  .row-cols-xl-1 > * {
    flex: 0 0 100%;
    max-width: 100%; }
  .row-cols-xl-2 > * {
    flex: 0 0 50%;
    max-width: 50%; }
  .row-cols-xl-3 > * {
    flex: 0 0 33.33333%;
    max-width: 33.33333%; }
  .row-cols-xl-4 > * {
    flex: 0 0 25%;
    max-width: 25%; }
  .row-cols-xl-5 > * {
    flex: 0 0 20%;
    max-width: 20%; }
  .row-cols-xl-6 > * {
    flex: 0 0 16.66667%;
    max-width: 16.66667%; }
  .col-xl-auto {
    flex: 0 0 auto;
    width: auto;
    max-width: 100%; }
  .col-xl-1 {
    flex: 0 0 8.33333%;
    max-width: 8.33333%; }
  .col-xl-2 {
    flex: 0 0 16.66667%;
    max-width: 16.66667%; }
  .col-xl-3 {
    flex: 0 0 25%;
    max-width: 25%; }
  .col-xl-4 {
    flex: 0 0 33.33333%;
    max-width: 33.33333%; }
  .col-xl-5 {
    flex: 0 0 41.66667%;
    max-width: 41.66667%; }
  .col-xl-6 {
    flex: 0 0 50%;
    max-width: 50%; }
  .col-xl-7 {
    flex: 0 0 58.33333%;
    max-width: 58.33333%; }
  .col-xl-8 {
    flex: 0 0 66.66667%;
    max-width: 66.66667%; }
  .col-xl-9 {
    flex: 0 0 75%;
    max-width: 75%; }
  .col-xl-10 {
    flex: 0 0 83.33333%;
    max-width: 83.33333%; }
  .col-xl-11 {
    flex: 0 0 91.66667%;
    max-width: 91.66667%; }
  .col-xl-12 {
    flex: 0 0 100%;
    max-width: 100%; }
  .order-xl-first {
    order: -1; }
  .order-xl-last {
    order: 13; }
  .order-xl-0 {
    order: 0; }
  .order-xl-1 {
    order: 1; }
  .order-xl-2 {
    order: 2; }
  .order-xl-3 {
    order: 3; }
  .order-xl-4 {
    order: 4; }
  .order-xl-5 {
    order: 5; }
  .order-xl-6 {
    order: 6; }
  .order-xl-7 {
    order: 7; }
  .order-xl-8 {
    order: 8; }
  .order-xl-9 {
    order: 9; }
  .order-xl-10 {
    order: 10; }
  .order-xl-11 {
    order: 11; }
  .order-xl-12 {
    order: 12; }
  .offset-xl-0 {
    margin-left: 0; }
  .offset-xl-1 {
    margin-left: 8.33333%; }
  .offset-xl-2 {
    margin-left: 16.66667%; }
  .offset-xl-3 {
    margin-left: 25%; }
  .offset-xl-4 {
    margin-left: 33.33333%; }
  .offset-xl-5 {
    margin-left: 41.66667%; }
  .offset-xl-6 {
    margin-left: 50%; }
  .offset-xl-7 {
    margin-left: 58.33333%; }
  .offset-xl-8 {
    margin-left: 66.66667%; }
  .offset-xl-9 {
    margin-left: 75%; }
  .offset-xl-10 {
    margin-left: 83.33333%; }
  .offset-xl-11 {
    margin-left: 91.66667%; } }

.d-none {
  display: none !important; }

.d-inline {
  display: inline !important; }

.d-inline-block {
  display: inline-block !important; }

.d-block {
  display: block !important; }

.d-table {
  display: table !important; }

.d-table-row {
  display: table-row !important; }

.d-table-cell {
  display: table-cell !important; }

.d-flex {
  display: flex !important; }

.d-inline-flex {
  display: inline-flex !important; }

@media (min-width: 576px) {
  .d-sm-none {
    display: none !important; }
  .d-sm-inline {
    display: inline !important; }
  .d-sm-inline-block {
    display: inline-block !important; }
  .d-sm-block {
    display: block !important; }
  .d-sm-table {
    display: table !important; }
  .d-sm-table-row {
    display: table-row !important; }
  .d-sm-table-cell {
    display: table-cell !important; }
  .d-sm-flex {
    display: flex !important; }
  .d-sm-inline-flex {
    display: inline-flex !important; } }

@media (min-width: 768px) {
  .d-md-none {
    display: none !important; }
  .d-md-inline {
    display: inline !important; }
  .d-md-inline-block {
    display: inline-block !important; }
  .d-md-block {
    display: block !important; }
  .d-md-table {
    display: table !important; }
  .d-md-table-row {
    display: table-row !important; }
  .d-md-table-cell {
    display: table-cell !important; }
  .d-md-flex {
    display: flex !important; }
  .d-md-inline-flex {
    display: inline-flex !important; } }

@media (min-width: 992px) {
  .d-lg-none {
    display: none !important; }
  .d-lg-inline {
    display: inline !important; }
  .d-lg-inline-block {
    display: inline-block !important; }
  .d-lg-block {
    display: block !important; }
  .d-lg-table {
    display: table !important; }
  .d-lg-table-row {
    display: table-row !important; }
  .d-lg-table-cell {
    display: table-cell !important; }
  .d-lg-flex {
    display: flex !important; }
  .d-lg-inline-flex {
    display: inline-flex !important; } }

@media (min-width: 1300px) {
  .d-xl-none {
    display: none !important; }
  .d-xl-inline {
    display: inline !important; }
  .d-xl-inline-block {
    display: inline-block !important; }
  .d-xl-block {
    display: block !important; }
  .d-xl-table {
    display: table !important; }
  .d-xl-table-row {
    display: table-row !important; }
  .d-xl-table-cell {
    display: table-cell !important; }
  .d-xl-flex {
    display: flex !important; }
  .d-xl-inline-flex {
    display: inline-flex !important; } }

@media print {
  .d-print-none {
    display: none !important; }
  .d-print-inline {
    display: inline !important; }
  .d-print-inline-block {
    display: inline-block !important; }
  .d-print-block {
    display: block !important; }
  .d-print-table {
    display: table !important; }
  .d-print-table-row {
    display: table-row !important; }
  .d-print-table-cell {
    display: table-cell !important; }
  .d-print-flex {
    display: flex !important; }
  .d-print-inline-flex {
    display: inline-flex !important; } }

.flex-row {
  flex-direction: row !important; }

.flex-column {
  flex-direction: column !important; }

.flex-row-reverse {
  flex-direction: row-reverse !important; }

.flex-column-reverse {
  flex-direction: column-reverse !important; }

.flex-wrap {
  flex-wrap: wrap !important; }

.flex-nowrap {
  flex-wrap: nowrap !important; }

.flex-wrap-reverse {
  flex-wrap: wrap-reverse !important; }

.flex-fill {
  flex: 1 1 auto !important; }

.flex-grow-0 {
  flex-grow: 0 !important; }

.flex-grow-1 {
  flex-grow: 1 !important; }

.flex-shrink-0 {
  flex-shrink: 0 !important; }

.flex-shrink-1 {
  flex-shrink: 1 !important; }

.justify-content-start {
  justify-content: flex-start !important; }

.justify-content-end {
  justify-content: flex-end !important; }

.justify-content-center {
  justify-content: center !important; }

.justify-content-between {
  justify-content: space-between !important; }

.justify-content-around {
  justify-content: space-around !important; }

.align-items-start {
  align-items: flex-start !important; }

.align-items-end {
  align-items: flex-end !important; }

.align-items-center {
  align-items: center !important; }

.align-items-baseline {
  align-items: baseline !important; }

.align-items-stretch {
  align-items: stretch !important; }

.align-content-start {
  align-content: flex-start !important; }

.align-content-end {
  align-content: flex-end !important; }

.align-content-center {
  align-content: center !important; }

.align-content-between {
  align-content: space-between !important; }

.align-content-around {
  align-content: space-around !important; }

.align-content-stretch {
  align-content: stretch !important; }

.align-self-auto {
  align-self: auto !important; }

.align-self-start {
  align-self: flex-start !important; }

.align-self-end {
  align-self: flex-end !important; }

.align-self-center {
  align-self: center !important; }

.align-self-baseline {
  align-self: baseline !important; }

.align-self-stretch {
  align-self: stretch !important; }

@media (min-width: 576px) {
  .flex-sm-row {
    flex-direction: row !important; }
  .flex-sm-column {
    flex-direction: column !important; }
  .flex-sm-row-reverse {
    flex-direction: row-reverse !important; }
  .flex-sm-column-reverse {
    flex-direction: column-reverse !important; }
  .flex-sm-wrap {
    flex-wrap: wrap !important; }
  .flex-sm-nowrap {
    flex-wrap: nowrap !important; }
  .flex-sm-wrap-reverse {
    flex-wrap: wrap-reverse !important; }
  .flex-sm-fill {
    flex: 1 1 auto !important; }
  .flex-sm-grow-0 {
    flex-grow: 0 !important; }
  .flex-sm-grow-1 {
    flex-grow: 1 !important; }
  .flex-sm-shrink-0 {
    flex-shrink: 0 !important; }
  .flex-sm-shrink-1 {
    flex-shrink: 1 !important; }
  .justify-content-sm-start {
    justify-content: flex-start !important; }
  .justify-content-sm-end {
    justify-content: flex-end !important; }
  .justify-content-sm-center {
    justify-content: center !important; }
  .justify-content-sm-between {
    justify-content: space-between !important; }
  .justify-content-sm-around {
    justify-content: space-around !important; }
  .align-items-sm-start {
    align-items: flex-start !important; }
  .align-items-sm-end {
    align-items: flex-end !important; }
  .align-items-sm-center {
    align-items: center !important; }
  .align-items-sm-baseline {
    align-items: baseline !important; }
  .align-items-sm-stretch {
    align-items: stretch !important; }
  .align-content-sm-start {
    align-content: flex-start !important; }
  .align-content-sm-end {
    align-content: flex-end !important; }
  .align-content-sm-center {
    align-content: center !important; }
  .align-content-sm-between {
    align-content: space-between !important; }
  .align-content-sm-around {
    align-content: space-around !important; }
  .align-content-sm-stretch {
    align-content: stretch !important; }
  .align-self-sm-auto {
    align-self: auto !important; }
  .align-self-sm-start {
    align-self: flex-start !important; }
  .align-self-sm-end {
    align-self: flex-end !important; }
  .align-self-sm-center {
    align-self: center !important; }
  .align-self-sm-baseline {
    align-self: baseline !important; }
  .align-self-sm-stretch {
    align-self: stretch !important; } }

@media (min-width: 768px) {
  .flex-md-row {
    flex-direction: row !important; }
  .flex-md-column {
    flex-direction: column !important; }
  .flex-md-row-reverse {
    flex-direction: row-reverse !important; }
  .flex-md-column-reverse {
    flex-direction: column-reverse !important; }
  .flex-md-wrap {
    flex-wrap: wrap !important; }
  .flex-md-nowrap {
    flex-wrap: nowrap !important; }
  .flex-md-wrap-reverse {
    flex-wrap: wrap-reverse !important; }
  .flex-md-fill {
    flex: 1 1 auto !important; }
  .flex-md-grow-0 {
    flex-grow: 0 !important; }
  .flex-md-grow-1 {
    flex-grow: 1 !important; }
  .flex-md-shrink-0 {
    flex-shrink: 0 !important; }
  .flex-md-shrink-1 {
    flex-shrink: 1 !important; }
  .justify-content-md-start {
    justify-content: flex-start !important; }
  .justify-content-md-end {
    justify-content: flex-end !important; }
  .justify-content-md-center {
    justify-content: center !important; }
  .justify-content-md-between {
    justify-content: space-between !important; }
  .justify-content-md-around {
    justify-content: space-around !important; }
  .align-items-md-start {
    align-items: flex-start !important; }
  .align-items-md-end {
    align-items: flex-end !important; }
  .align-items-md-center {
    align-items: center !important; }
  .align-items-md-baseline {
    align-items: baseline !important; }
  .align-items-md-stretch {
    align-items: stretch !important; }
  .align-content-md-start {
    align-content: flex-start !important; }
  .align-content-md-end {
    align-content: flex-end !important; }
  .align-content-md-center {
    align-content: center !important; }
  .align-content-md-between {
    align-content: space-between !important; }
  .align-content-md-around {
    align-content: space-around !important; }
  .align-content-md-stretch {
    align-content: stretch !important; }
  .align-self-md-auto {
    align-self: auto !important; }
  .align-self-md-start {
    align-self: flex-start !important; }
  .align-self-md-end {
    align-self: flex-end !important; }
  .align-self-md-center {
    align-self: center !important; }
  .align-self-md-baseline {
    align-self: baseline !important; }
  .align-self-md-stretch {
    align-self: stretch !important; } }

@media (min-width: 992px) {
  .flex-lg-row {
    flex-direction: row !important; }
  .flex-lg-column {
    flex-direction: column !important; }
  .flex-lg-row-reverse {
    flex-direction: row-reverse !important; }
  .flex-lg-column-reverse {
    flex-direction: column-reverse !important; }
  .flex-lg-wrap {
    flex-wrap: wrap !important; }
  .flex-lg-nowrap {
    flex-wrap: nowrap !important; }
  .flex-lg-wrap-reverse {
    flex-wrap: wrap-reverse !important; }
  .flex-lg-fill {
    flex: 1 1 auto !important; }
  .flex-lg-grow-0 {
    flex-grow: 0 !important; }
  .flex-lg-grow-1 {
    flex-grow: 1 !important; }
  .flex-lg-shrink-0 {
    flex-shrink: 0 !important; }
  .flex-lg-shrink-1 {
    flex-shrink: 1 !important; }
  .justify-content-lg-start {
    justify-content: flex-start !important; }
  .justify-content-lg-end {
    justify-content: flex-end !important; }
  .justify-content-lg-center {
    justify-content: center !important; }
  .justify-content-lg-between {
    justify-content: space-between !important; }
  .justify-content-lg-around {
    justify-content: space-around !important; }
  .align-items-lg-start {
    align-items: flex-start !important; }
  .align-items-lg-end {
    align-items: flex-end !important; }
  .align-items-lg-center {
    align-items: center !important; }
  .align-items-lg-baseline {
    align-items: baseline !important; }
  .align-items-lg-stretch {
    align-items: stretch !important; }
  .align-content-lg-start {
    align-content: flex-start !important; }
  .align-content-lg-end {
    align-content: flex-end !important; }
  .align-content-lg-center {
    align-content: center !important; }
  .align-content-lg-between {
    align-content: space-between !important; }
  .align-content-lg-around {
    align-content: space-around !important; }
  .align-content-lg-stretch {
    align-content: stretch !important; }
  .align-self-lg-auto {
    align-self: auto !important; }
  .align-self-lg-start {
    align-self: flex-start !important; }
  .align-self-lg-end {
    align-self: flex-end !important; }
  .align-self-lg-center {
    align-self: center !important; }
  .align-self-lg-baseline {
    align-self: baseline !important; }
  .align-self-lg-stretch {
    align-self: stretch !important; } }

@media (min-width: 1300px) {
  .flex-xl-row {
    flex-direction: row !important; }
  .flex-xl-column {
    flex-direction: column !important; }
  .flex-xl-row-reverse {
    flex-direction: row-reverse !important; }
  .flex-xl-column-reverse {
    flex-direction: column-reverse !important; }
  .flex-xl-wrap {
    flex-wrap: wrap !important; }
  .flex-xl-nowrap {
    flex-wrap: nowrap !important; }
  .flex-xl-wrap-reverse {
    flex-wrap: wrap-reverse !important; }
  .flex-xl-fill {
    flex: 1 1 auto !important; }
  .flex-xl-grow-0 {
    flex-grow: 0 !important; }
  .flex-xl-grow-1 {
    flex-grow: 1 !important; }
  .flex-xl-shrink-0 {
    flex-shrink: 0 !important; }
  .flex-xl-shrink-1 {
    flex-shrink: 1 !important; }
  .justify-content-xl-start {
    justify-content: flex-start !important; }
  .justify-content-xl-end {
    justify-content: flex-end !important; }
  .justify-content-xl-center {
    justify-content: center !important; }
  .justify-content-xl-between {
    justify-content: space-between !important; }
  .justify-content-xl-around {
    justify-content: space-around !important; }
  .align-items-xl-start {
    align-items: flex-start !important; }
  .align-items-xl-end {
    align-items: flex-end !important; }
  .align-items-xl-center {
    align-items: center !important; }
  .align-items-xl-baseline {
    align-items: baseline !important; }
  .align-items-xl-stretch {
    align-items: stretch !important; }
  .align-content-xl-start {
    align-content: flex-start !important; }
  .align-content-xl-end {
    align-content: flex-end !important; }
  .align-content-xl-center {
    align-content: center !important; }
  .align-content-xl-between {
    align-content: space-between !important; }
  .align-content-xl-around {
    align-content: space-around !important; }
  .align-content-xl-stretch {
    align-content: stretch !important; }
  .align-self-xl-auto {
    align-self: auto !important; }
  .align-self-xl-start {
    align-self: flex-start !important; }
  .align-self-xl-end {
    align-self: flex-end !important; }
  .align-self-xl-center {
    align-self: center !important; }
  .align-self-xl-baseline {
    align-self: baseline !important; }
  .align-self-xl-stretch {
    align-self: stretch !important; } }

.m-0 {
  margin: 0 !important; }

.mt-0,
.my-0 {
  margin-top: 0 !important; }

.mr-0,
.mx-0 {
  margin-right: 0 !important; }

.mb-0,
.my-0 {
  margin-bottom: 0 !important; }

.ml-0,
.mx-0 {
  margin-left: 0 !important; }

.m-1 {
  margin: 0.25rem !important; }

.mt-1,
.my-1 {
  margin-top: 0.25rem !important; }

.mr-1,
.mx-1 {
  margin-right: 0.25rem !important; }

.mb-1,
.my-1 {
  margin-bottom: 0.25rem !important; }

.ml-1,
.mx-1 {
  margin-left: 0.25rem !important; }

.m-2 {
  margin: 0.5rem !important; }

.mt-2,
.my-2 {
  margin-top: 0.5rem !important; }

.mr-2,
.mx-2 {
  margin-right: 0.5rem !important; }

.mb-2,
.my-2 {
  margin-bottom: 0.5rem !important; }

.ml-2,
.mx-2 {
  margin-left: 0.5rem !important; }

.m-3 {
  margin: 1rem !important; }

.mt-3,
.my-3 {
  margin-top: 1rem !important; }

.mr-3,
.mx-3 {
  margin-right: 1rem !important; }

.mb-3,
.my-3 {
  margin-bottom: 1rem !important; }

.ml-3,
.mx-3 {
  margin-left: 1rem !important; }

.m-4 {
  margin: 1.5rem !important; }

.mt-4,
.my-4 {
  margin-top: 1.5rem !important; }

.mr-4,
.mx-4 {
  margin-right: 1.5rem !important; }

.mb-4,
.my-4 {
  margin-bottom: 1.5rem !important; }

.ml-4,
.mx-4 {
  margin-left: 1.5rem !important; }

.m-5 {
  margin: 3rem !important; }

.mt-5,
.my-5 {
  margin-top: 3rem !important; }

.mr-5,
.mx-5 {
  margin-right: 3rem !important; }

.mb-5,
.my-5 {
  margin-bottom: 3rem !important; }

.ml-5,
.mx-5 {
  margin-left: 3rem !important; }

.p-0 {
  padding: 0 !important; }

.pt-0,
.py-0 {
  padding-top: 0 !important; }

.pr-0,
.px-0 {
  padding-right: 0 !important; }

.pb-0,
.py-0 {
  padding-bottom: 0 !important; }

.pl-0,
.px-0 {
  padding-left: 0 !important; }

.p-1 {
  padding: 0.25rem !important; }

.pt-1,
.py-1 {
  padding-top: 0.25rem !important; }

.pr-1,
.px-1 {
  padding-right: 0.25rem !important; }

.pb-1,
.py-1 {
  padding-bottom: 0.25rem !important; }

.pl-1,
.px-1 {
  padding-left: 0.25rem !important; }

.p-2 {
  padding: 0.5rem !important; }

.pt-2,
.py-2 {
  padding-top: 0.5rem !important; }

.pr-2,
.px-2 {
  padding-right: 0.5rem !important; }

.pb-2,
.py-2 {
  padding-bottom: 0.5rem !important; }

.pl-2,
.px-2 {
  padding-left: 0.5rem !important; }

.p-3 {
  padding: 1rem !important; }

.pt-3,
.py-3 {
  padding-top: 1rem !important; }

.pr-3,
.px-3 {
  padding-right: 1rem !important; }

.pb-3,
.py-3 {
  padding-bottom: 1rem !important; }

.pl-3,
.px-3 {
  padding-left: 1rem !important; }

.p-4 {
  padding: 1.5rem !important; }

.pt-4,
.py-4 {
  padding-top: 1.5rem !important; }

.pr-4,
.px-4 {
  padding-right: 1.5rem !important; }

.pb-4,
.py-4 {
  padding-bottom: 1.5rem !important; }

.pl-4,
.px-4 {
  padding-left: 1.5rem !important; }

.p-5 {
  padding: 3rem !important; }

.pt-5,
.py-5 {
  padding-top: 3rem !important; }

.pr-5,
.px-5 {
  padding-right: 3rem !important; }

.pb-5,
.py-5 {
  padding-bottom: 3rem !important; }

.pl-5,
.px-5 {
  padding-left: 3rem !important; }

.m-n1 {
  margin: -0.25rem !important; }

.mt-n1,
.my-n1 {
  margin-top: -0.25rem !important; }

.mr-n1,
.mx-n1 {
  margin-right: -0.25rem !important; }

.mb-n1,
.my-n1 {
  margin-bottom: -0.25rem !important; }

.ml-n1,
.mx-n1 {
  margin-left: -0.25rem !important; }

.m-n2 {
  margin: -0.5rem !important; }

.mt-n2,
.my-n2 {
  margin-top: -0.5rem !important; }

.mr-n2,
.mx-n2 {
  margin-right: -0.5rem !important; }

.mb-n2,
.my-n2 {
  margin-bottom: -0.5rem !important; }

.ml-n2,
.mx-n2 {
  margin-left: -0.5rem !important; }

.m-n3 {
  margin: -1rem !important; }

.mt-n3,
.my-n3 {
  margin-top: -1rem !important; }

.mr-n3,
.mx-n3 {
  margin-right: -1rem !important; }

.mb-n3,
.my-n3 {
  margin-bottom: -1rem !important; }

.ml-n3,
.mx-n3 {
  margin-left: -1rem !important; }

.m-n4 {
  margin: -1.5rem !important; }

.mt-n4,
.my-n4 {
  margin-top: -1.5rem !important; }

.mr-n4,
.mx-n4 {
  margin-right: -1.5rem !important; }

.mb-n4,
.my-n4 {
  margin-bottom: -1.5rem !important; }

.ml-n4,
.mx-n4 {
  margin-left: -1.5rem !important; }

.m-n5 {
  margin: -3rem !important; }

.mt-n5,
.my-n5 {
  margin-top: -3rem !important; }

.mr-n5,
.mx-n5 {
  margin-right: -3rem !important; }

.mb-n5,
.my-n5 {
  margin-bottom: -3rem !important; }

.ml-n5,
.mx-n5 {
  margin-left: -3rem !important; }

.m-auto {
  margin: auto !important; }

.mt-auto,
.my-auto {
  margin-top: auto !important; }

.mr-auto,
.mx-auto {
  margin-right: auto !important; }

.mb-auto,
.my-auto {
  margin-bottom: auto !important; }

.ml-auto,
.mx-auto {
  margin-left: auto !important; }

@media (min-width: 576px) {
  .m-sm-0 {
    margin: 0 !important; }
  .mt-sm-0,
  .my-sm-0 {
    margin-top: 0 !important; }
  .mr-sm-0,
  .mx-sm-0 {
    margin-right: 0 !important; }
  .mb-sm-0,
  .my-sm-0 {
    margin-bottom: 0 !important; }
  .ml-sm-0,
  .mx-sm-0 {
    margin-left: 0 !important; }
  .m-sm-1 {
    margin: 0.25rem !important; }
  .mt-sm-1,
  .my-sm-1 {
    margin-top: 0.25rem !important; }
  .mr-sm-1,
  .mx-sm-1 {
    margin-right: 0.25rem !important; }
  .mb-sm-1,
  .my-sm-1 {
    margin-bottom: 0.25rem !important; }
  .ml-sm-1,
  .mx-sm-1 {
    margin-left: 0.25rem !important; }
  .m-sm-2 {
    margin: 0.5rem !important; }
  .mt-sm-2,
  .my-sm-2 {
    margin-top: 0.5rem !important; }
  .mr-sm-2,
  .mx-sm-2 {
    margin-right: 0.5rem !important; }
  .mb-sm-2,
  .my-sm-2 {
    margin-bottom: 0.5rem !important; }
  .ml-sm-2,
  .mx-sm-2 {
    margin-left: 0.5rem !important; }
  .m-sm-3 {
    margin: 1rem !important; }
  .mt-sm-3,
  .my-sm-3 {
    margin-top: 1rem !important; }
  .mr-sm-3,
  .mx-sm-3 {
    margin-right: 1rem !important; }
  .mb-sm-3,
  .my-sm-3 {
    margin-bottom: 1rem !important; }
  .ml-sm-3,
  .mx-sm-3 {
    margin-left: 1rem !important; }
  .m-sm-4 {
    margin: 1.5rem !important; }
  .mt-sm-4,
  .my-sm-4 {
    margin-top: 1.5rem !important; }
  .mr-sm-4,
  .mx-sm-4 {
    margin-right: 1.5rem !important; }
  .mb-sm-4,
  .my-sm-4 {
    margin-bottom: 1.5rem !important; }
  .ml-sm-4,
  .mx-sm-4 {
    margin-left: 1.5rem !important; }
  .m-sm-5 {
    margin: 3rem !important; }
  .mt-sm-5,
  .my-sm-5 {
    margin-top: 3rem !important; }
  .mr-sm-5,
  .mx-sm-5 {
    margin-right: 3rem !important; }
  .mb-sm-5,
  .my-sm-5 {
    margin-bottom: 3rem !important; }
  .ml-sm-5,
  .mx-sm-5 {
    margin-left: 3rem !important; }
  .p-sm-0 {
    padding: 0 !important; }
  .pt-sm-0,
  .py-sm-0 {
    padding-top: 0 !important; }
  .pr-sm-0,
  .px-sm-0 {
    padding-right: 0 !important; }
  .pb-sm-0,
  .py-sm-0 {
    padding-bottom: 0 !important; }
  .pl-sm-0,
  .px-sm-0 {
    padding-left: 0 !important; }
  .p-sm-1 {
    padding: 0.25rem !important; }
  .pt-sm-1,
  .py-sm-1 {
    padding-top: 0.25rem !important; }
  .pr-sm-1,
  .px-sm-1 {
    padding-right: 0.25rem !important; }
  .pb-sm-1,
  .py-sm-1 {
    padding-bottom: 0.25rem !important; }
  .pl-sm-1,
  .px-sm-1 {
    padding-left: 0.25rem !important; }
  .p-sm-2 {
    padding: 0.5rem !important; }
  .pt-sm-2,
  .py-sm-2 {
    padding-top: 0.5rem !important; }
  .pr-sm-2,
  .px-sm-2 {
    padding-right: 0.5rem !important; }
  .pb-sm-2,
  .py-sm-2 {
    padding-bottom: 0.5rem !important; }
  .pl-sm-2,
  .px-sm-2 {
    padding-left: 0.5rem !important; }
  .p-sm-3 {
    padding: 1rem !important; }
  .pt-sm-3,
  .py-sm-3 {
    padding-top: 1rem !important; }
  .pr-sm-3,
  .px-sm-3 {
    padding-right: 1rem !important; }
  .pb-sm-3,
  .py-sm-3 {
    padding-bottom: 1rem !important; }
  .pl-sm-3,
  .px-sm-3 {
    padding-left: 1rem !important; }
  .p-sm-4 {
    padding: 1.5rem !important; }
  .pt-sm-4,
  .py-sm-4 {
    padding-top: 1.5rem !important; }
  .pr-sm-4,
  .px-sm-4 {
    padding-right: 1.5rem !important; }
  .pb-sm-4,
  .py-sm-4 {
    padding-bottom: 1.5rem !important; }
  .pl-sm-4,
  .px-sm-4 {
    padding-left: 1.5rem !important; }
  .p-sm-5 {
    padding: 3rem !important; }
  .pt-sm-5,
  .py-sm-5 {
    padding-top: 3rem !important; }
  .pr-sm-5,
  .px-sm-5 {
    padding-right: 3rem !important; }
  .pb-sm-5,
  .py-sm-5 {
    padding-bottom: 3rem !important; }
  .pl-sm-5,
  .px-sm-5 {
    padding-left: 3rem !important; }
  .m-sm-n1 {
    margin: -0.25rem !important; }
  .mt-sm-n1,
  .my-sm-n1 {
    margin-top: -0.25rem !important; }
  .mr-sm-n1,
  .mx-sm-n1 {
    margin-right: -0.25rem !important; }
  .mb-sm-n1,
  .my-sm-n1 {
    margin-bottom: -0.25rem !important; }
  .ml-sm-n1,
  .mx-sm-n1 {
    margin-left: -0.25rem !important; }
  .m-sm-n2 {
    margin: -0.5rem !important; }
  .mt-sm-n2,
  .my-sm-n2 {
    margin-top: -0.5rem !important; }
  .mr-sm-n2,
  .mx-sm-n2 {
    margin-right: -0.5rem !important; }
  .mb-sm-n2,
  .my-sm-n2 {
    margin-bottom: -0.5rem !important; }
  .ml-sm-n2,
  .mx-sm-n2 {
    margin-left: -0.5rem !important; }
  .m-sm-n3 {
    margin: -1rem !important; }
  .mt-sm-n3,
  .my-sm-n3 {
    margin-top: -1rem !important; }
  .mr-sm-n3,
  .mx-sm-n3 {
    margin-right: -1rem !important; }
  .mb-sm-n3,
  .my-sm-n3 {
    margin-bottom: -1rem !important; }
  .ml-sm-n3,
  .mx-sm-n3 {
    margin-left: -1rem !important; }
  .m-sm-n4 {
    margin: -1.5rem !important; }
  .mt-sm-n4,
  .my-sm-n4 {
    margin-top: -1.5rem !important; }
  .mr-sm-n4,
  .mx-sm-n4 {
    margin-right: -1.5rem !important; }
  .mb-sm-n4,
  .my-sm-n4 {
    margin-bottom: -1.5rem !important; }
  .ml-sm-n4,
  .mx-sm-n4 {
    margin-left: -1.5rem !important; }
  .m-sm-n5 {
    margin: -3rem !important; }
  .mt-sm-n5,
  .my-sm-n5 {
    margin-top: -3rem !important; }
  .mr-sm-n5,
  .mx-sm-n5 {
    margin-right: -3rem !important; }
  .mb-sm-n5,
  .my-sm-n5 {
    margin-bottom: -3rem !important; }
  .ml-sm-n5,
  .mx-sm-n5 {
    margin-left: -3rem !important; }
  .m-sm-auto {
    margin: auto !important; }
  .mt-sm-auto,
  .my-sm-auto {
    margin-top: auto !important; }
  .mr-sm-auto,
  .mx-sm-auto {
    margin-right: auto !important; }
  .mb-sm-auto,
  .my-sm-auto {
    margin-bottom: auto !important; }
  .ml-sm-auto,
  .mx-sm-auto {
    margin-left: auto !important; } }

@media (min-width: 768px) {
  .m-md-0 {
    margin: 0 !important; }
  .mt-md-0,
  .my-md-0 {
    margin-top: 0 !important; }
  .mr-md-0,
  .mx-md-0 {
    margin-right: 0 !important; }
  .mb-md-0,
  .my-md-0 {
    margin-bottom: 0 !important; }
  .ml-md-0,
  .mx-md-0 {
    margin-left: 0 !important; }
  .m-md-1 {
    margin: 0.25rem !important; }
  .mt-md-1,
  .my-md-1 {
    margin-top: 0.25rem !important; }
  .mr-md-1,
  .mx-md-1 {
    margin-right: 0.25rem !important; }
  .mb-md-1,
  .my-md-1 {
    margin-bottom: 0.25rem !important; }
  .ml-md-1,
  .mx-md-1 {
    margin-left: 0.25rem !important; }
  .m-md-2 {
    margin: 0.5rem !important; }
  .mt-md-2,
  .my-md-2 {
    margin-top: 0.5rem !important; }
  .mr-md-2,
  .mx-md-2 {
    margin-right: 0.5rem !important; }
  .mb-md-2,
  .my-md-2 {
    margin-bottom: 0.5rem !important; }
  .ml-md-2,
  .mx-md-2 {
    margin-left: 0.5rem !important; }
  .m-md-3 {
    margin: 1rem !important; }
  .mt-md-3,
  .my-md-3 {
    margin-top: 1rem !important; }
  .mr-md-3,
  .mx-md-3 {
    margin-right: 1rem !important; }
  .mb-md-3,
  .my-md-3 {
    margin-bottom: 1rem !important; }
  .ml-md-3,
  .mx-md-3 {
    margin-left: 1rem !important; }
  .m-md-4 {
    margin: 1.5rem !important; }
  .mt-md-4,
  .my-md-4 {
    margin-top: 1.5rem !important; }
  .mr-md-4,
  .mx-md-4 {
    margin-right: 1.5rem !important; }
  .mb-md-4,
  .my-md-4 {
    margin-bottom: 1.5rem !important; }
  .ml-md-4,
  .mx-md-4 {
    margin-left: 1.5rem !important; }
  .m-md-5 {
    margin: 3rem !important; }
  .mt-md-5,
  .my-md-5 {
    margin-top: 3rem !important; }
  .mr-md-5,
  .mx-md-5 {
    margin-right: 3rem !important; }
  .mb-md-5,
  .my-md-5 {
    margin-bottom: 3rem !important; }
  .ml-md-5,
  .mx-md-5 {
    margin-left: 3rem !important; }
  .p-md-0 {
    padding: 0 !important; }
  .pt-md-0,
  .py-md-0 {
    padding-top: 0 !important; }
  .pr-md-0,
  .px-md-0 {
    padding-right: 0 !important; }
  .pb-md-0,
  .py-md-0 {
    padding-bottom: 0 !important; }
  .pl-md-0,
  .px-md-0 {
    padding-left: 0 !important; }
  .p-md-1 {
    padding: 0.25rem !important; }
  .pt-md-1,
  .py-md-1 {
    padding-top: 0.25rem !important; }
  .pr-md-1,
  .px-md-1 {
    padding-right: 0.25rem !important; }
  .pb-md-1,
  .py-md-1 {
    padding-bottom: 0.25rem !important; }
  .pl-md-1,
  .px-md-1 {
    padding-left: 0.25rem !important; }
  .p-md-2 {
    padding: 0.5rem !important; }
  .pt-md-2,
  .py-md-2 {
    padding-top: 0.5rem !important; }
  .pr-md-2,
  .px-md-2 {
    padding-right: 0.5rem !important; }
  .pb-md-2,
  .py-md-2 {
    padding-bottom: 0.5rem !important; }
  .pl-md-2,
  .px-md-2 {
    padding-left: 0.5rem !important; }
  .p-md-3 {
    padding: 1rem !important; }
  .pt-md-3,
  .py-md-3 {
    padding-top: 1rem !important; }
  .pr-md-3,
  .px-md-3 {
    padding-right: 1rem !important; }
  .pb-md-3,
  .py-md-3 {
    padding-bottom: 1rem !important; }
  .pl-md-3,
  .px-md-3 {
    padding-left: 1rem !important; }
  .p-md-4 {
    padding: 1.5rem !important; }
  .pt-md-4,
  .py-md-4 {
    padding-top: 1.5rem !important; }
  .pr-md-4,
  .px-md-4 {
    padding-right: 1.5rem !important; }
  .pb-md-4,
  .py-md-4 {
    padding-bottom: 1.5rem !important; }
  .pl-md-4,
  .px-md-4 {
    padding-left: 1.5rem !important; }
  .p-md-5 {
    padding: 3rem !important; }
  .pt-md-5,
  .py-md-5 {
    padding-top: 3rem !important; }
  .pr-md-5,
  .px-md-5 {
    padding-right: 3rem !important; }
  .pb-md-5,
  .py-md-5 {
    padding-bottom: 3rem !important; }
  .pl-md-5,
  .px-md-5 {
    padding-left: 3rem !important; }
  .m-md-n1 {
    margin: -0.25rem !important; }
  .mt-md-n1,
  .my-md-n1 {
    margin-top: -0.25rem !important; }
  .mr-md-n1,
  .mx-md-n1 {
    margin-right: -0.25rem !important; }
  .mb-md-n1,
  .my-md-n1 {
    margin-bottom: -0.25rem !important; }
  .ml-md-n1,
  .mx-md-n1 {
    margin-left: -0.25rem !important; }
  .m-md-n2 {
    margin: -0.5rem !important; }
  .mt-md-n2,
  .my-md-n2 {
    margin-top: -0.5rem !important; }
  .mr-md-n2,
  .mx-md-n2 {
    margin-right: -0.5rem !important; }
  .mb-md-n2,
  .my-md-n2 {
    margin-bottom: -0.5rem !important; }
  .ml-md-n2,
  .mx-md-n2 {
    margin-left: -0.5rem !important; }
  .m-md-n3 {
    margin: -1rem !important; }
  .mt-md-n3,
  .my-md-n3 {
    margin-top: -1rem !important; }
  .mr-md-n3,
  .mx-md-n3 {
    margin-right: -1rem !important; }
  .mb-md-n3,
  .my-md-n3 {
    margin-bottom: -1rem !important; }
  .ml-md-n3,
  .mx-md-n3 {
    margin-left: -1rem !important; }
  .m-md-n4 {
    margin: -1.5rem !important; }
  .mt-md-n4,
  .my-md-n4 {
    margin-top: -1.5rem !important; }
  .mr-md-n4,
  .mx-md-n4 {
    margin-right: -1.5rem !important; }
  .mb-md-n4,
  .my-md-n4 {
    margin-bottom: -1.5rem !important; }
  .ml-md-n4,
  .mx-md-n4 {
    margin-left: -1.5rem !important; }
  .m-md-n5 {
    margin: -3rem !important; }
  .mt-md-n5,
  .my-md-n5 {
    margin-top: -3rem !important; }
  .mr-md-n5,
  .mx-md-n5 {
    margin-right: -3rem !important; }
  .mb-md-n5,
  .my-md-n5 {
    margin-bottom: -3rem !important; }
  .ml-md-n5,
  .mx-md-n5 {
    margin-left: -3rem !important; }
  .m-md-auto {
    margin: auto !important; }
  .mt-md-auto,
  .my-md-auto {
    margin-top: auto !important; }
  .mr-md-auto,
  .mx-md-auto {
    margin-right: auto !important; }
  .mb-md-auto,
  .my-md-auto {
    margin-bottom: auto !important; }
  .ml-md-auto,
  .mx-md-auto {
    margin-left: auto !important; } }

@media (min-width: 992px) {
  .m-lg-0 {
    margin: 0 !important; }
  .mt-lg-0,
  .my-lg-0 {
    margin-top: 0 !important; }
  .mr-lg-0,
  .mx-lg-0 {
    margin-right: 0 !important; }
  .mb-lg-0,
  .my-lg-0 {
    margin-bottom: 0 !important; }
  .ml-lg-0,
  .mx-lg-0 {
    margin-left: 0 !important; }
  .m-lg-1 {
    margin: 0.25rem !important; }
  .mt-lg-1,
  .my-lg-1 {
    margin-top: 0.25rem !important; }
  .mr-lg-1,
  .mx-lg-1 {
    margin-right: 0.25rem !important; }
  .mb-lg-1,
  .my-lg-1 {
    margin-bottom: 0.25rem !important; }
  .ml-lg-1,
  .mx-lg-1 {
    margin-left: 0.25rem !important; }
  .m-lg-2 {
    margin: 0.5rem !important; }
  .mt-lg-2,
  .my-lg-2 {
    margin-top: 0.5rem !important; }
  .mr-lg-2,
  .mx-lg-2 {
    margin-right: 0.5rem !important; }
  .mb-lg-2,
  .my-lg-2 {
    margin-bottom: 0.5rem !important; }
  .ml-lg-2,
  .mx-lg-2 {
    margin-left: 0.5rem !important; }
  .m-lg-3 {
    margin: 1rem !important; }
  .mt-lg-3,
  .my-lg-3 {
    margin-top: 1rem !important; }
  .mr-lg-3,
  .mx-lg-3 {
    margin-right: 1rem !important; }
  .mb-lg-3,
  .my-lg-3 {
    margin-bottom: 1rem !important; }
  .ml-lg-3,
  .mx-lg-3 {
    margin-left: 1rem !important; }
  .m-lg-4 {
    margin: 1.5rem !important; }
  .mt-lg-4,
  .my-lg-4 {
    margin-top: 1.5rem !important; }
  .mr-lg-4,
  .mx-lg-4 {
    margin-right: 1.5rem !important; }
  .mb-lg-4,
  .my-lg-4 {
    margin-bottom: 1.5rem !important; }
  .ml-lg-4,
  .mx-lg-4 {
    margin-left: 1.5rem !important; }
  .m-lg-5 {
    margin: 3rem !important; }
  .mt-lg-5,
  .my-lg-5 {
    margin-top: 3rem !important; }
  .mr-lg-5,
  .mx-lg-5 {
    margin-right: 3rem !important; }
  .mb-lg-5,
  .my-lg-5 {
    margin-bottom: 3rem !important; }
  .ml-lg-5,
  .mx-lg-5 {
    margin-left: 3rem !important; }
  .p-lg-0 {
    padding: 0 !important; }
  .pt-lg-0,
  .py-lg-0 {
    padding-top: 0 !important; }
  .pr-lg-0,
  .px-lg-0 {
    padding-right: 0 !important; }
  .pb-lg-0,
  .py-lg-0 {
    padding-bottom: 0 !important; }
  .pl-lg-0,
  .px-lg-0 {
    padding-left: 0 !important; }
  .p-lg-1 {
    padding: 0.25rem !important; }
  .pt-lg-1,
  .py-lg-1 {
    padding-top: 0.25rem !important; }
  .pr-lg-1,
  .px-lg-1 {
    padding-right: 0.25rem !important; }
  .pb-lg-1,
  .py-lg-1 {
    padding-bottom: 0.25rem !important; }
  .pl-lg-1,
  .px-lg-1 {
    padding-left: 0.25rem !important; }
  .p-lg-2 {
    padding: 0.5rem !important; }
  .pt-lg-2,
  .py-lg-2 {
    padding-top: 0.5rem !important; }
  .pr-lg-2,
  .px-lg-2 {
    padding-right: 0.5rem !important; }
  .pb-lg-2,
  .py-lg-2 {
    padding-bottom: 0.5rem !important; }
  .pl-lg-2,
  .px-lg-2 {
    padding-left: 0.5rem !important; }
  .p-lg-3 {
    padding: 1rem !important; }
  .pt-lg-3,
  .py-lg-3 {
    padding-top: 1rem !important; }
  .pr-lg-3,
  .px-lg-3 {
    padding-right: 1rem !important; }
  .pb-lg-3,
  .py-lg-3 {
    padding-bottom: 1rem !important; }
  .pl-lg-3,
  .px-lg-3 {
    padding-left: 1rem !important; }
  .p-lg-4 {
    padding: 1.5rem !important; }
  .pt-lg-4,
  .py-lg-4 {
    padding-top: 1.5rem !important; }
  .pr-lg-4,
  .px-lg-4 {
    padding-right: 1.5rem !important; }
  .pb-lg-4,
  .py-lg-4 {
    padding-bottom: 1.5rem !important; }
  .pl-lg-4,
  .px-lg-4 {
    padding-left: 1.5rem !important; }
  .p-lg-5 {
    padding: 3rem !important; }
  .pt-lg-5,
  .py-lg-5 {
    padding-top: 3rem !important; }
  .pr-lg-5,
  .px-lg-5 {
    padding-right: 3rem !important; }
  .pb-lg-5,
  .py-lg-5 {
    padding-bottom: 3rem !important; }
  .pl-lg-5,
  .px-lg-5 {
    padding-left: 3rem !important; }
  .m-lg-n1 {
    margin: -0.25rem !important; }
  .mt-lg-n1,
  .my-lg-n1 {
    margin-top: -0.25rem !important; }
  .mr-lg-n1,
  .mx-lg-n1 {
    margin-right: -0.25rem !important; }
  .mb-lg-n1,
  .my-lg-n1 {
    margin-bottom: -0.25rem !important; }
  .ml-lg-n1,
  .mx-lg-n1 {
    margin-left: -0.25rem !important; }
  .m-lg-n2 {
    margin: -0.5rem !important; }
  .mt-lg-n2,
  .my-lg-n2 {
    margin-top: -0.5rem !important; }
  .mr-lg-n2,
  .mx-lg-n2 {
    margin-right: -0.5rem !important; }
  .mb-lg-n2,
  .my-lg-n2 {
    margin-bottom: -0.5rem !important; }
  .ml-lg-n2,
  .mx-lg-n2 {
    margin-left: -0.5rem !important; }
  .m-lg-n3 {
    margin: -1rem !important; }
  .mt-lg-n3,
  .my-lg-n3 {
    margin-top: -1rem !important; }
  .mr-lg-n3,
  .mx-lg-n3 {
    margin-right: -1rem !important; }
  .mb-lg-n3,
  .my-lg-n3 {
    margin-bottom: -1rem !important; }
  .ml-lg-n3,
  .mx-lg-n3 {
    margin-left: -1rem !important; }
  .m-lg-n4 {
    margin: -1.5rem !important; }
  .mt-lg-n4,
  .my-lg-n4 {
    margin-top: -1.5rem !important; }
  .mr-lg-n4,
  .mx-lg-n4 {
    margin-right: -1.5rem !important; }
  .mb-lg-n4,
  .my-lg-n4 {
    margin-bottom: -1.5rem !important; }
  .ml-lg-n4,
  .mx-lg-n4 {
    margin-left: -1.5rem !important; }
  .m-lg-n5 {
    margin: -3rem !important; }
  .mt-lg-n5,
  .my-lg-n5 {
    margin-top: -3rem !important; }
  .mr-lg-n5,
  .mx-lg-n5 {
    margin-right: -3rem !important; }
  .mb-lg-n5,
  .my-lg-n5 {
    margin-bottom: -3rem !important; }
  .ml-lg-n5,
  .mx-lg-n5 {
    margin-left: -3rem !important; }
  .m-lg-auto {
    margin: auto !important; }
  .mt-lg-auto,
  .my-lg-auto {
    margin-top: auto !important; }
  .mr-lg-auto,
  .mx-lg-auto {
    margin-right: auto !important; }
  .mb-lg-auto,
  .my-lg-auto {
    margin-bottom: auto !important; }
  .ml-lg-auto,
  .mx-lg-auto {
    margin-left: auto !important; } }

@media (min-width: 1300px) {
  .m-xl-0 {
    margin: 0 !important; }
  .mt-xl-0,
  .my-xl-0 {
    margin-top: 0 !important; }
  .mr-xl-0,
  .mx-xl-0 {
    margin-right: 0 !important; }
  .mb-xl-0,
  .my-xl-0 {
    margin-bottom: 0 !important; }
  .ml-xl-0,
  .mx-xl-0 {
    margin-left: 0 !important; }
  .m-xl-1 {
    margin: 0.25rem !important; }
  .mt-xl-1,
  .my-xl-1 {
    margin-top: 0.25rem !important; }
  .mr-xl-1,
  .mx-xl-1 {
    margin-right: 0.25rem !important; }
  .mb-xl-1,
  .my-xl-1 {
    margin-bottom: 0.25rem !important; }
  .ml-xl-1,
  .mx-xl-1 {
    margin-left: 0.25rem !important; }
  .m-xl-2 {
    margin: 0.5rem !important; }
  .mt-xl-2,
  .my-xl-2 {
    margin-top: 0.5rem !important; }
  .mr-xl-2,
  .mx-xl-2 {
    margin-right: 0.5rem !important; }
  .mb-xl-2,
  .my-xl-2 {
    margin-bottom: 0.5rem !important; }
  .ml-xl-2,
  .mx-xl-2 {
    margin-left: 0.5rem !important; }
  .m-xl-3 {
    margin: 1rem !important; }
  .mt-xl-3,
  .my-xl-3 {
    margin-top: 1rem !important; }
  .mr-xl-3,
  .mx-xl-3 {
    margin-right: 1rem !important; }
  .mb-xl-3,
  .my-xl-3 {
    margin-bottom: 1rem !important; }
  .ml-xl-3,
  .mx-xl-3 {
    margin-left: 1rem !important; }
  .m-xl-4 {
    margin: 1.5rem !important; }
  .mt-xl-4,
  .my-xl-4 {
    margin-top: 1.5rem !important; }
  .mr-xl-4,
  .mx-xl-4 {
    margin-right: 1.5rem !important; }
  .mb-xl-4,
  .my-xl-4 {
    margin-bottom: 1.5rem !important; }
  .ml-xl-4,
  .mx-xl-4 {
    margin-left: 1.5rem !important; }
  .m-xl-5 {
    margin: 3rem !important; }
  .mt-xl-5,
  .my-xl-5 {
    margin-top: 3rem !important; }
  .mr-xl-5,
  .mx-xl-5 {
    margin-right: 3rem !important; }
  .mb-xl-5,
  .my-xl-5 {
    margin-bottom: 3rem !important; }
  .ml-xl-5,
  .mx-xl-5 {
    margin-left: 3rem !important; }
  .p-xl-0 {
    padding: 0 !important; }
  .pt-xl-0,
  .py-xl-0 {
    padding-top: 0 !important; }
  .pr-xl-0,
  .px-xl-0 {
    padding-right: 0 !important; }
  .pb-xl-0,
  .py-xl-0 {
    padding-bottom: 0 !important; }
  .pl-xl-0,
  .px-xl-0 {
    padding-left: 0 !important; }
  .p-xl-1 {
    padding: 0.25rem !important; }
  .pt-xl-1,
  .py-xl-1 {
    padding-top: 0.25rem !important; }
  .pr-xl-1,
  .px-xl-1 {
    padding-right: 0.25rem !important; }
  .pb-xl-1,
  .py-xl-1 {
    padding-bottom: 0.25rem !important; }
  .pl-xl-1,
  .px-xl-1 {
    padding-left: 0.25rem !important; }
  .p-xl-2 {
    padding: 0.5rem !important; }
  .pt-xl-2,
  .py-xl-2 {
    padding-top: 0.5rem !important; }
  .pr-xl-2,
  .px-xl-2 {
    padding-right: 0.5rem !important; }
  .pb-xl-2,
  .py-xl-2 {
    padding-bottom: 0.5rem !important; }
  .pl-xl-2,
  .px-xl-2 {
    padding-left: 0.5rem !important; }
  .p-xl-3 {
    padding: 1rem !important; }
  .pt-xl-3,
  .py-xl-3 {
    padding-top: 1rem !important; }
  .pr-xl-3,
  .px-xl-3 {
    padding-right: 1rem !important; }
  .pb-xl-3,
  .py-xl-3 {
    padding-bottom: 1rem !important; }
  .pl-xl-3,
  .px-xl-3 {
    padding-left: 1rem !important; }
  .p-xl-4 {
    padding: 1.5rem !important; }
  .pt-xl-4,
  .py-xl-4 {
    padding-top: 1.5rem !important; }
  .pr-xl-4,
  .px-xl-4 {
    padding-right: 1.5rem !important; }
  .pb-xl-4,
  .py-xl-4 {
    padding-bottom: 1.5rem !important; }
  .pl-xl-4,
  .px-xl-4 {
    padding-left: 1.5rem !important; }
  .p-xl-5 {
    padding: 3rem !important; }
  .pt-xl-5,
  .py-xl-5 {
    padding-top: 3rem !important; }
  .pr-xl-5,
  .px-xl-5 {
    padding-right: 3rem !important; }
  .pb-xl-5,
  .py-xl-5 {
    padding-bottom: 3rem !important; }
  .pl-xl-5,
  .px-xl-5 {
    padding-left: 3rem !important; }
  .m-xl-n1 {
    margin: -0.25rem !important; }
  .mt-xl-n1,
  .my-xl-n1 {
    margin-top: -0.25rem !important; }
  .mr-xl-n1,
  .mx-xl-n1 {
    margin-right: -0.25rem !important; }
  .mb-xl-n1,
  .my-xl-n1 {
    margin-bottom: -0.25rem !important; }
  .ml-xl-n1,
  .mx-xl-n1 {
    margin-left: -0.25rem !important; }
  .m-xl-n2 {
    margin: -0.5rem !important; }
  .mt-xl-n2,
  .my-xl-n2 {
    margin-top: -0.5rem !important; }
  .mr-xl-n2,
  .mx-xl-n2 {
    margin-right: -0.5rem !important; }
  .mb-xl-n2,
  .my-xl-n2 {
    margin-bottom: -0.5rem !important; }
  .ml-xl-n2,
  .mx-xl-n2 {
    margin-left: -0.5rem !important; }
  .m-xl-n3 {
    margin: -1rem !important; }
  .mt-xl-n3,
  .my-xl-n3 {
    margin-top: -1rem !important; }
  .mr-xl-n3,
  .mx-xl-n3 {
    margin-right: -1rem !important; }
  .mb-xl-n3,
  .my-xl-n3 {
    margin-bottom: -1rem !important; }
  .ml-xl-n3,
  .mx-xl-n3 {
    margin-left: -1rem !important; }
  .m-xl-n4 {
    margin: -1.5rem !important; }
  .mt-xl-n4,
  .my-xl-n4 {
    margin-top: -1.5rem !important; }
  .mr-xl-n4,
  .mx-xl-n4 {
    margin-right: -1.5rem !important; }
  .mb-xl-n4,
  .my-xl-n4 {
    margin-bottom: -1.5rem !important; }
  .ml-xl-n4,
  .mx-xl-n4 {
    margin-left: -1.5rem !important; }
  .m-xl-n5 {
    margin: -3rem !important; }
  .mt-xl-n5,
  .my-xl-n5 {
    margin-top: -3rem !important; }
  .mr-xl-n5,
  .mx-xl-n5 {
    margin-right: -3rem !important; }
  .mb-xl-n5,
  .my-xl-n5 {
    margin-bottom: -3rem !important; }
  .ml-xl-n5,
  .mx-xl-n5 {
    margin-left: -3rem !important; }
  .m-xl-auto {
    margin: auto !important; }
  .mt-xl-auto,
  .my-xl-auto {
    margin-top: auto !important; }
  .mr-xl-auto,
  .mx-xl-auto {
    margin-right: auto !important; }
  .mb-xl-auto,
  .my-xl-auto {
    margin-bottom: auto !important; }
  .ml-xl-auto,
  .mx-xl-auto {
    margin-left: auto !important; } }

/*
 * WordPress core required classes
 */
.alignnone {
  margin: 0; }

.aligncenter {
  display: block;
  margin: 0 auto 20px auto; }

.alignright {
  float: right;
  margin: 0 0 20px 20px; }

.alignleft {
  float: left;
  margin: 0 20px 20px 0; }

.wp-caption {
  background: #FFFFFF;
  max-width: 96%;
  /* Image does not overflow the content area */
  padding: 5px 3px 10px;
  text-align: center; }
  .wp-caption.alignnone {
    margin: 5px 20px 20px 0; }
  .wp-caption.alignleft {
    margin: 5px 20px 20px 0; }
  .wp-caption.alignright {
    margin: 5px 0 20px 20px; }
  .wp-caption img {
    border: 0 none;
    height: auto;
    margin: 0;
    max-width: 98.5%;
    padding: 0;
    width: auto; }
  .wp-caption p.wp-caption-text {
    font-size: 11px;
    line-height: 17px;
    margin: 0;
    padding: 0 4px 5px; }

/* Text meant only for screen readers. */
.screen-reader-text {
  border: 0;
  clip: rect(1px, 1px, 1px, 1px);
  -webkit-clip-path: inset(50%);
          clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute !important;
  width: 1px;
  word-wrap: normal !important;
  /* Many screen reader and browser combinations announce broken words as they would appear visually. */ }
  .screen-reader-text:focus {
    background-color: #eee;
    clip: auto !important;
    -webkit-clip-path: none;
            clip-path: none;
    color: #444;
    display: block;
    font-size: 1em;
    height: auto;
    left: 5px;
    line-height: normal;
    padding: 15px 23px 14px;
    text-decoration: none;
    top: 5px;
    width: auto;
    z-index: 100000;
    /* Above WP toolbar. */ }

.forefrontweb-button, #page .gform_wrapper .gform_button, .nav-links a {
  text-align: center;
  display: inline-block;
  transition: all 0.2s ease-in-out;
  padding: 9px 25px;
  color: #FFFFFF;
  background-color: #506055;
  border: 2px solid #506055;
  font-weight: 500;
  font-size: 18px;
  min-width: 200px;
  position: relative;
  margin-bottom: 15px;
  margin-left: 0 !important;
  margin-right: 15px;
  text-decoration: none; }
  .forefrontweb-button:last-child, #page .gform_wrapper .gform_button:last-child, .nav-links a:last-child {
    margin-bottom: 0; }
  @media (max-width: 767.98px) {
    .forefrontweb-button, #page .gform_wrapper .gform_button, .nav-links a {
      width: 100% !important; } }
  .forefrontweb-button:hover, #page .gform_wrapper .gform_button:hover, .nav-links a:hover, .forefrontweb-button:focus, #page .gform_wrapper .gform_button:focus, .nav-links a:focus {
    outline: none;
    background-color: #39443c;
    color: #FFFFFF;
    border-color: #39443c;
    text-decoration: none; }
  .forefrontweb-button--ghost {
    background-color: transparent;
    color: #506055;
    border-color: #506055; }
    .forefrontweb-button--ghost:hover, .forefrontweb-button--ghost:focus {
      border-color: #39443c;
      background-color: rgba(80, 96, 85, 0.1);
      color: #506055; }

.text-white .forefrontweb-button--ghost {
  color: #FFFFFF;
  border-color: #FFFFFF; }
  .text-white .forefrontweb-button--ghost:hover, .text-white .forefrontweb-button--ghost:focus {
    border-color: #e6e6e6;
    background-color: rgba(255, 255, 255, 0.1); }

@media (min-width: 768px) {
  p .forefrontweb-button:not(:first-child), p #page .gform_wrapper .gform_button:not(:first-child), #page .gform_wrapper p .gform_button:not(:first-child), p .nav-links a:not(:first-child), .nav-links p a:not(:first-child) {
    margin-left: 15px; } }

/*
 * Global element styling
 */
img {
  height: auto;
  max-width: 100%;
  max-height: 100%; }

h1, .h1, h2, .h2, h3, .h3 {
  margin-bottom: 20px;
  font-weight: normal;
  font-family: "DM Serif Display", serif;
  color: #212121; }

h1, .h1, h2, .h2 {
  line-height: 1.05;
  font-size: 48px; }
  @media (min-width: 1300px) {
    h1, .h1, h2, .h2 {
      font-size: 58px; } }
  @media screen and (max-width: 767px) {
    h1, .h1, h2, .h2 {
      font-size: 36px; } }

h3, .h3 {
  font-size: 36px;
  line-height: 1.08; }
  @media (min-width: 1300px) {
    h3, .h3 {
      font-size: 48px; } }

h4, .h4, h5, .h5, h6, .h6 {
  font-family: "Avenir", sans-serif;
  font-weight: 500;
  text-transform: uppercase;
  margin-bottom: 20px; }

h4, .h4 {
  font-size: 24px;
  letter-spacing: 0.1125em;
  line-height: 1.5; }

hr {
  margin-top: 0;
  margin-bottom: 20px;
  border: none;
  border-top: 1px solid #FFFFFF; }
  hr:last-child {
    margin-bottom: 0; }

h1:last-child, .h1:last-child, h2:last-child, .h2:last-child, h3:last-child, .h3:last-child, h4:last-child, .h4:last-child, h5:last-child, .h5:last-child, h6:last-child, .h6:last-child, p:last-child, ul:last-child, ol:last-child {
  margin-bottom: 0; }
  h1:last-child img, .h1:last-child img, h2:last-child img, .h2:last-child img, h3:last-child img, .h3:last-child img, h4:last-child img, .h4:last-child img, h5:last-child img, .h5:last-child img, h6:last-child img, .h6:last-child img, p:last-child img, ul:last-child img, ol:last-child img {
    margin-bottom: 0; }

p, ul, ol {
  font-weight: 100;
  margin-bottom: 20px; }
  @media (min-width: 768px) {
    p, ul, ol {
      font-size: 18px; } }

ol li, ul li {
  margin-bottom: 5px; }
  ol li:last-child, ul li:last-child {
    margin-bottom: 0; }

a {
  color: #B05730;
  transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.2s ease-in-out;
  text-decoration: underline; }
  a:hover, a:focus {
    color: #884325;
    text-decoration: none; }

b,
strong {
  font-weight: bold; }

.page-content {
  overflow: hidden;
  padding: 20px;
  padding-top: 116px; }
  @media (min-width: 768px) {
    .page-content {
      padding-top: 136px; } }
  @media screen and (max-width: 1080px) and (min-width: 767px) {
    .page-content {
      padding-top: 122px; } }
  @media screen and (max-width: 340px) {
    .page-content {
      padding-top: 100px; } }

body:has(#wpadminbar) .page-content {
  padding-top: 105px; }
  @media screen and (max-width: 1080px) {
    body:has(#wpadminbar) .page-content {
      padding-top: 89px; } }
  @media screen and (max-width: 780px) {
    body:has(#wpadminbar) .page-content {
      padding-top: 76px; } }
  @media screen and (max-width: 340px) {
    body:has(#wpadminbar) .page-content {
      padding-top: 57px; } }

body:has(#wpadminbar) .home-hero {
  margin-top: -120px; }

#wpadminbar ~ .site-content .page-content {
  padding-top: 105px; }

#wpadminbar ~ .page-content {
  padding-top: 105px; }

.is-homepage + .page-content {
  padding-top: unset; }

/*
 * Styling convenience classes
 */
.text-white {
  color: #FFFFFF; }
  .text-white h1, .text-white .h1, .text-white h2, .text-white .h2, .text-white h3, .text-white .h3, .text-white h4, .text-white .h4, .text-white h5, .text-white .h5, .text-white h6, .text-white .h6 {
    color: #FFFFFF; }
  .text-white--links a:not(.actionfiction-button) {
    color: #FFFFFF; }
    .text-white--links a:not(.actionfiction-button):hover, .text-white--links a:not(.actionfiction-button):focus {
      color: #e6e6e6; }

.bg-cover {
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center; }

.bg-contain {
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center center; }

.bg-tiled {
  background-repeat: repeat; }

.no-padding {
  padding: 0; }

@media (min-width: 1300px) {
  .hidden-desktop {
    display: none !important; } }

.container--narrow {
  max-width: 1023px; }

.container--medium {
  max-width: 940px; }

.container--extra-narrow {
  max-width: 640px; }

.container--no-padding {
  padding: 0; }
  @media (min-width: 768px) {
    .container--no-padding {
      padding: 0 20px; } }

.slick-next, .slick-prev {
  z-index: 1; }

@media (max-width: 991.98px) {
  .rellax {
    transform: translate3d(0, 0, 0) !important; } }

input[type=button],
input[type=submit],
button {
  border: none; }
  input[type=button]:focus,
  input[type=submit]:focus,
  button:focus {
    outline: none; }

#page .gform_wrapper input, #page .gform_wrapper select, #page .gform_wrapper textarea, #page .gform_wrapper button {
  transition: border-color 0.2s ease-in-out; }

#page .gform_wrapper input[type=text],
#page .gform_wrapper input[type=search],
#page .gform_wrapper input[type=number],
#page .gform_wrapper input[type=email],
#page .gform_wrapper input[type=tel],
#page .gform_wrapper input[type=password],
#page .gform_wrapper textarea,
#page .gform_wrapper select {
  border: 1px solid #7B7B7B;
  padding: 16px 20px;
  transition: border-color 0.2s ease-in-out;
  border-radius: 6px;
  font-size: 18px; }
  #page .gform_wrapper input[type=text]:focus,
  #page .gform_wrapper input[type=search]:focus,
  #page .gform_wrapper input[type=number]:focus,
  #page .gform_wrapper input[type=email]:focus,
  #page .gform_wrapper input[type=tel]:focus,
  #page .gform_wrapper input[type=password]:focus,
  #page .gform_wrapper textarea:focus,
  #page .gform_wrapper select:focus {
    outline: none;
    border-color: #C68061; }
  #page .gform_wrapper input[type=text]::-moz-placeholder, #page .gform_wrapper input[type=search]::-moz-placeholder, #page .gform_wrapper input[type=number]::-moz-placeholder, #page .gform_wrapper input[type=email]::-moz-placeholder, #page .gform_wrapper input[type=tel]::-moz-placeholder, #page .gform_wrapper input[type=password]::-moz-placeholder, #page .gform_wrapper textarea::-moz-placeholder, #page .gform_wrapper select::-moz-placeholder {
    letter-spacing: 0.5px; }
  #page .gform_wrapper input[type=text]::placeholder,
  #page .gform_wrapper input[type=search]::placeholder,
  #page .gform_wrapper input[type=number]::placeholder,
  #page .gform_wrapper input[type=email]::placeholder,
  #page .gform_wrapper input[type=tel]::placeholder,
  #page .gform_wrapper input[type=password]::placeholder,
  #page .gform_wrapper textarea::placeholder,
  #page .gform_wrapper select::placeholder {
    letter-spacing: 0.5px; }

#page .gform_wrapper input[type=text],
#page .gform_wrapper input[type=search],
#page .gform_wrapper input[type=number],
#page .gform_wrapper input[type=email],
#page .gform_wrapper input[type=tel],
#page .gform_wrapper input[type=password] {
  height: 54px; }

#page .gform_wrapper li.hidden_label input {
  margin-top: 0; }

#page .gform_wrapper .gform_footer {
  margin: 0; }

#page .gform_wrapper .gform_button {
  margin: 0; }

.home-hero {
  background-color: #F8F7F6; }
  @media (max-width: 1299.98px) {
    .home-hero {
      margin-bottom: 0 !important; } }
  .home-hero__image-col {
    padding-right: 0;
    padding-top: 25px; }
  .home-hero__image-wrap {
    display: flex;
    align-items: center;
    position: relative;
    margin-bottom: -60px; }
  .home-hero__heading {
    font-size: 36px; }
    @media screen and (min-width: 450px) {
      .home-hero__heading {
        font-size: 60px; } }
    @media screen and (min-width: 1300px) {
      .home-hero__heading {
        font-size: 70px; } }
  .home-hero__popout {
    background-color: #FFFFFF;
    border-radius: 10px;
    position: absolute;
    left: -50%;
    right: 20%;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    transition: all 0.2s ease-in-out;
    opacity: 0;
    transform: translateX(20px); }
    @media (min-width: 992px) {
      .home-hero__popout {
        left: 0; } }
    .home-hero__popout-arrows {
      position: absolute;
      content: '';
      background-image: url("/wp-content/themes/forefrontweb/build/71918bffdc990b4024174e1dc8555b8b.svg");
      background-repeat: no-repeat;
      background-position: center center;
      background-size: 57px 25px;
      width: 57px;
      height: 25px;
      right: 50%;
      z-index: 4; }
    .home-hero__popout-heading {
      font-size: 36px;
      line-height: 1.08;
      font-family: "DM Serif Display", serif;
      font-weight: normal;
      color: #212121; }
      @media (min-width: 1300px) {
        .home-hero__popout-heading {
          font-size: 48px; } }
  .home-hero__popout-headingwrap {
    padding: 20px 45px;
    border-bottom: 1px solid #D0D0D0;
    padding-right: calc(20% + 45px); }
    @media (min-width: 992px) {
      .home-hero__popout-headingwrap {
        padding-right: calc(35% + 45px); } }
  .home-hero__popup-heading {
    font-size: 38px; }
  .home-hero__popout-content {
    padding: 20px 45px;
    padding-right: calc(20% + 45px); }
    @media (min-width: 992px) {
      .home-hero__popout-content {
        padding-right: calc(35% + 45px); } }
  .home-hero__image {
    margin-left: auto;
    display: block;
    max-width: 50%;
    position: relative;
    z-index: 1; }
  .home-hero__content-col {
    padding: 60px 20px;
    padding-top: 140px; }
    @media (min-width: 1300px) {
      .home-hero__content-col {
        padding-left: calc((100vw - 1300px) / 2); } }
  .home-hero__heading-wrap {
    margin-bottom: 15px; }
    @media (min-width: 768px) {
      .home-hero__heading-wrap {
        padding-right: 75px; } }
  .home-hero__preheading {
    color: #212121;
    margin-bottom: 10px; }
    @media screen and (max-width: 450px) {
      .home-hero__preheading {
        font-size: 20px; } }
  .home-hero__left {
    position: relative;
    display: flex;
    align-items: flex-end;
    padding-bottom: 40px; }
    .home-hero__left:after {
      position: absolute;
      content: '';
      border-left: 2px solid #D0D0D0;
      border-bottom: 2px solid #D0D0D0;
      border-right: 2px solid #D0D0D0;
      border-bottom-left-radius: 10px;
      border-bottom-right-radius: 10px;
      bottom: 0;
      left: 0;
      right: 25px;
      height: 40px; }
      @media screen and (max-width: 450px) {
        .home-hero__left:after {
          display: none; } }
    .home-hero__left:before {
      content: '';
      width: 12px;
      height: 12px;
      position: absolute;
      right: 20px;
      bottom: 34px;
      background-image: url("/wp-content/themes/forefrontweb/build/d5d0b9ca601ea2d4c1f52a621b42cf6d.svg");
      background-position: center center;
      background-size: 12px 12px;
      background-repeat: no-repeat;
      z-index: 1; }
      @media screen and (max-width: 450px) {
        .home-hero__left:before {
          display: none; } }
    @media screen and (max-width: 450px) {
      .home-hero__left {
        flex-direction: column;
        gap: 30px 0; } }
  .home-hero__buttons {
    width: 51px;
    writing-mode: vertical-lr;
    transform: rotate(180deg); }
    @media screen and (max-width: 450px) {
      .home-hero__buttons {
        writing-mode: horizontal-tb;
        transform: rotate(0deg);
        width: 100%; } }
  .home-hero__ghost-button {
    min-width: 0;
    padding: 25px 9px; }
  .home-hero__solid-button {
    min-width: 0;
    padding: 25px 9px;
    margin-bottom: -4px; }
  .home-hero__content {
    padding-bottom: 20px;
    color: #5b5b5b; }
    @media screen and (min-width: 450px) {
      .home-hero__content {
        padding-right: 20px; } }
    @media (min-width: 768px) {
      .home-hero__content {
        padding-right: 53px; } }

body.home .page-content {
  padding-top: 20px; }

@media (min-width: 768px) {
  body.home .site-header {
    background-color: transparent;
    padding-top: 20px; }
    body.home .site-header--scrolled {
      background-color: #F8F7F6; } }

.home-hero-popout-active {
  transform: translateX(0) !important;
  opacity: 1 !important;
  z-index: 5 !important; }

.page-header {
  background-color: #F8F7F6; }
  .page-header--has-checklist {
    margin-bottom: 75px; }
  .page-header__inner {
    padding-top: 20px;
    padding-bottom: 40px; }
    .page-header__inner:after {
      content: '';
      display: block;
      background-position: center center;
      background-image: url("/wp-content/themes/forefrontweb/build/19494ed307102147a8c96e640182c848.svg");
      background-size: 43px 7px;
      background-repeat: no-repeat;
      width: 43px;
      height: 7px;
      margin-top: 10px; }
  .page-header__checklist {
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    border-radius: 10px;
    background-color: #FFFFFF;
    margin-bottom: -75px; }
    @media (min-width: 768px) {
      .page-header__checklist {
        margin-top: 20px; } }
    @media screen and (max-width: 450px) {
      .page-header__checklist {
        display: none; } }
  .page-header__checklist-titlewrap {
    border-bottom: 1px solid #D0D0D0;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: space-between; }
    @media (min-width: 992px) {
      .page-header__checklist-titlewrap {
        padding: 20px 45px; } }
  .page-header__checklist-title {
    font-size: 38px;
    margin-bottom: 0; }
  .page-header__checklist-check {
    border-radius: 5px;
    height: 35px;
    width: 35px;
    border: 2px solid #D0D0D0;
    margin-left: 15px;
    flex-shrink: 0;
    position: relative; }
    .page-header__checklist-check--checked:after {
      content: '';
      position: absolute;
      left: 4px;
      top: -8px;
      background-image: url("/wp-content/themes/forefrontweb/build/a5282ccbda105b4d41dd9d585e59bb04.svg");
      background-position: center center;
      background-repeat: no-repeat;
      background-size: 42px 36px;
      width: 42px;
      height: 36px; }
  .page-header__checklist-list {
    list-style-type: none;
    margin: 0;
    padding: 20px; }
    @media (min-width: 992px) {
      .page-header__checklist-list {
        padding: 20px 45px;
        -moz-columns: 3;
             columns: 3;
        column-break-inside: avoid; } }
    .page-header__checklist-list li {
      margin: 0; }
      .page-header__checklist-list li.checked .page-header__checklist-item:after {
        content: '';
        position: absolute;
        left: 3px;
        top: 5px;
        background-image: url("/wp-content/themes/forefrontweb/build/a5282ccbda105b4d41dd9d585e59bb04.svg");
        background-position: center center;
        background-repeat: no-repeat;
        background-size: 14px 12px;
        width: 14px;
        height: 12px; }
  .page-header__checklist-item {
    color: #5b5b5b;
    font-size: 16px;
    font-weight: 500;
    position: relative;
    text-decoration: none; }
    .page-header__checklist-item:before {
      content: '';
      display: inline-block;
      width: 13px;
      height: 13px;
      border: 2px solid #D0D0D0;
      border-radius: 2px;
      margin-right: 10px;
      margin-bottom: -1px; }

.full-imagevideo__inner {
  position: relative; }

.full-imagevideo__play-link {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  display: flex;
  align-items: center; }
  .full-imagevideo__play-link:hover {
    background-color: rgba(0, 0, 0, 0.2); }

.full-imagevideo__play {
  background-image: url("/wp-content/themes/forefrontweb/build/b439eb88245f9a21356b667d0e0fd5f2.svg");
  background-size: contain;
  background-repeat: no-repeat;
  width: 148px;
  height: 150px;
  display: block;
  color: #FFFFFF;
  font-family: "DM Serif Display", serif;
  font-size: 28px;
  padding-top: 40px;
  padding-left: 40px; }
  @media (min-width: 768px) {
    .full-imagevideo__play {
      width: 219px;
      height: 222px;
      font-size: 38px;
      padding-left: 60px;
      padding-top: 55px; } }

.full-imagevideo__image {
  width: 100%; }

.mini-faqs {
  position: relative; }
  .mini-faqs:before {
    content: '';
    background-image: url("/wp-content/themes/forefrontweb/build/191b80751760c7b45479c7ee78882448.svg");
    background-size: contain;
    background-repeat: no-repeat;
    background-position: bottom left;
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 50%;
    display: none; }
    @media (min-width: 768px) {
      .mini-faqs:before {
        display: block; } }
  .mini-faqs__container {
    position: relative; }
  .mini-faqs__heading-col {
    margin-bottom: 20px;
    background-color: #F8F7F6;
    padding: 20px; }
    @media (min-width: 768px) {
      .mini-faqs__heading-col {
        margin-bottom: 0;
        background-color: transparent;
        padding: 60px 20px; } }
  .mini-faqs__heading {
    font-size: 48px; }
    @media (min-width: 1300px) {
      .mini-faqs__heading {
        font-size: 100px;
        line-height: 94px;
        margin-bottom: 40px; } }
  .mini-faqs__subheading {
    color: #C68061; }
  .mini-faqs__faqs-title {
    font-size: 38px; }
  .mini-faqs__faq {
    border: 1px solid #7B7B7B;
    margin-bottom: 10px;
    background-color: #FFFFFF;
    width: 100%;
    overflow: hidden; }
    .mini-faqs__faq:last-child {
      margin-bottom: 0; }
    .mini-faqs__faq--open .mini-faqs__faq-title {
      background-color: #F8F7F6; }
      .mini-faqs__faq--open .mini-faqs__faq-title:after {
        transform: rotate(180deg); }
  .mini-faqs__faq-title {
    padding: 10px 20px;
    cursor: pointer;
    font-size: 18px;
    letter-spacing: 0.5px;
    border-right: 43px solid #506055;
    transition: all 0.2s ease-in-out;
    margin-bottom: 0;
    position: relative;
    color: #212121;
    text-transform: none;
    font-weight: 100; }
    .mini-faqs__faq-title:hover {
      background-color: #F8F7F6;
      border-color: #39443c; }
    .mini-faqs__faq-title:after {
      content: '';
      background-image: url("/wp-content/themes/forefrontweb/build/9ab338ac6ea2adecb607e3c649e1083e.svg");
      background-size: 12px 12px;
      background-repeat: no-repeat;
      background-position: center center;
      width: 43px;
      position: absolute;
      right: -43px;
      top: 0;
      bottom: 0; }
  .mini-faqs__faq-content {
    display: none;
    padding: 20px; }

.icon-list__box {
  background-color: #FFFFFF;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); }

.icon-list__heading-wrap {
  padding: 20px; }
  @media (min-width: 768px) {
    .icon-list__heading-wrap {
      padding: 30px; } }

@media (min-width: 768px) {
  .icon-list__heading {
    font-size: 38px; } }

.icon-list__list {
  list-style-type: none;
  margin: 0;
  padding: 0; }

.icon-list__list-item {
  border-top: 1px solid #D0D0D0;
  margin-bottom: 0;
  font-weight: 100;
  padding: 20px;
  display: flex;
  align-items: center; }
  @media (min-width: 768px) {
    .icon-list__list-item {
      padding: 20px 30px; } }

.icon-list__icon {
  width: 35px;
  height: 35px;
  margin-right: 15px;
  flex-shrink: 0; }

.scrolling-logos__logos {
  display: flex;
  align-items: center; }

.scrolling-logos__logo-wrap {
  margin-right: 70px; }

.scrolling-logos__logo {
  max-height: 50px;
  width: auto;
  height: auto;
  max-width: 250px;
  transition: filter 0.2s ease-in-out;
  filter: invert(65%) sepia(22%) saturate(0%) hue-rotate(183deg) brightness(118%) contrast(94%); }

.scrolling-logos__logo-link:hover .scrolling-logos__logo {
  filter: none; }

.forty-image__image {
  padding-top: 50%; }
  @media (min-width: 768px) {
    .forty-image__image {
      padding-top: 0; } }
  @media (min-width: 768px) {
    .forty-image__image--right {
      order: 2; } }

.forty-image__content {
  padding: 20px; }
  @media (min-width: 768px) {
    .forty-image__content {
      padding: 40px; } }
  @media (min-width: 1300px) {
    .forty-image__content {
      padding: 60px; } }

.points-links__box {
  background-color: #FFFFFF;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); }
  @media (min-width: 768px) {
    .points-links__box {
      max-width: 65%; } }

.points-links__heading-wrap {
  padding: 20px; }
  @media (min-width: 768px) {
    .points-links__heading-wrap {
      padding: 30px; } }

@media (min-width: 768px) {
  .points-links__heading {
    font-size: 38px; } }

.points-links__list {
  margin: 0;
  padding: 0;
  list-style-type: none; }

.points-links__point {
  border-top: 1px solid #D0D0D0;
  margin-bottom: 0;
  letter-spacing: 0.5px;
  font-weight: 100;
  padding: 20px;
  padding-left: 50px;
  position: relative; }
  .points-links__point:before {
    content: '•';
    position: absolute;
    left: 20px;
    top: 20px; }
  @media (min-width: 768px) {
    .points-links__point {
      padding: 25px 30px;
      padding-left: 60px;
      display: flex;
      align-items: center;
      min-height: 110px; }
      .points-links__point:before {
        top: 30px;
        left: 30px; } }

.points-links__button {
  margin-top: 20px;
  text-transform: uppercase;
  color: #A5AFA7;
  letter-spacing: 0.1125em;
  display: flex;
  align-items: center;
  justify-content: space-between; }
  .points-links__button:after {
    content: '';
    background-image: url("/wp-content/themes/forefrontweb/build/104f5e0c7b4c2e8102460558d563c4b0.svg");
    background-size: 47px 13px;
    background-repeat: no-repeat;
    background-position: center center;
    width: 47px;
    height: 13px;
    margin-left: 20px;
    flex-shrink: 0; }
  @media (min-width: 768px) {
    .points-links__button {
      margin-top: 0;
      width: 54%;
      position: absolute;
      right: -54%;
      font-size: 24px;
      padding: 30px 20px;
      min-width: 0; } }

.awards-affiliations__heading-wrap {
  background-color: #A5AFA7;
  padding: 20px;
  padding-bottom: 60px;
  position: relative; }
  @media (min-width: 1300px) {
    .awards-affiliations__heading-wrap {
      background-color: transparent;
      padding: 100px 20px; }
      .awards-affiliations__heading-wrap:before {
        content: '';
        position: absolute;
        left: calc(-50vw + 650px);
        top: 0;
        bottom: 0;
        right: -128px;
        background-color: #A5AFA7; } }
  .awards-affiliations__heading-wrap:after {
    content: '';
    background-image: url("/wp-content/themes/forefrontweb/build/f08eca8770921e64c8a082df0fc7cfcc.svg");
    background-repeat: no-repeat;
    background-position: center center;
    background-size: 43px 7px;
    width: 43px;
    height: 7px;
    display: block;
    position: relative;
    margin-top: 30px; }

.awards-affiliations__heading {
  color: #FFFFFF;
  position: relative; }
  @media (min-width: 992px) {
    .awards-affiliations__heading {
      font-size: 68px; } }

.awards-affiliations__button-wrap {
  margin-top: -25px;
  margin-bottom: 20px;
  padding: 0 20px; }
  @media (min-width: 1300px) {
    .awards-affiliations__button-wrap {
      margin-bottom: 40px;
      padding: 0; } }

.awards-affiliations__logos-col {
  padding-top: 20px; }
  @media (min-width: 768px) {
    .awards-affiliations__logos-col {
      padding-top: 50px; } }

.awards-affiliations__logos {
  display: flex;
  flex-wrap: wrap;
  margin: -10px; }

.awards-affiliations__logo-col {
  padding: 10px;
  width: 33.33%; }

.awards-affiliations__logo-box {
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  background-color: #FFFFFF;
  border-radius: 10%;
  padding-top: 100%;
  position: relative;
  display: block; }
  .awards-affiliations__logo-box--link:hover {
    background-color: #F8F7F6; }

.awards-affiliations__logo-wrap {
  position: absolute;
  left: 20px;
  right: 20px;
  top: 20px;
  bottom: 20px;
  display: flex;
  align-items: center;
  justify-content: center; }

.awards-affiliations__logo {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto; }

@media (min-width: 768px) {
  .fifty-overlapping--image-right .fifty-overlapping__image-col {
    order: 2; } }

@media (min-width: 1300px) {
  .fifty-overlapping--image-right .fifty-overlapping__background {
    position: absolute;
    right: -316px;
    left: 0; } }

.fifty-overlapping__image-col {
  margin-bottom: 20px; }
  @media (min-width: 768px) {
    .fifty-overlapping__image-col {
      margin-bottom: 0; } }
  @media (min-width: 1300px) {
    .fifty-overlapping__image-col {
      padding-top: 50px; } }

.fifty-overlapping__image {
  padding-top: 108%;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  position: relative;
  z-index: 1; }

.fifty-overlapping__content {
  padding: 20px;
  position: relative; }
  @media (min-width: 1300px) {
    .fifty-overlapping__content {
      padding: 90px 50px;
      background-color: transparent !important; } }

@media (min-width: 1300px) {
  .fifty-overlapping__background {
    position: absolute;
    left: -316px;
    right: 0;
    top: 0;
    bottom: 0; } }

.fifty-overlapping__inner {
  position: relative; }

.fifty-overlapping__heading-subheading {
  margin-bottom: 30px; }
  @media (min-width: 1300px) {
    .fifty-overlapping__heading-subheading {
      line-height: 0.9; } }

.fifty-overlapping__heading {
  font-size: 54px; }
  @media (min-width: 992px) {
    .fifty-overlapping__heading {
      font-size: 100px; } }

.fifty-overlapping__subheading {
  font-size: 32px; }
  @media (min-width: 992px) {
    .fifty-overlapping__subheading {
      font-size: 38px; } }

.outside-thebox__wrap {
  max-width: 1240px;
  margin: 0 auto; }
  @media (min-width: 1300px) {
    .outside-thebox__wrap {
      padding-left: 90px;
      padding-top: 90px;
      padding-bottom: 90px; } }

.outside-thebox__box {
  border-radius: 10px;
  padding: 20px 0;
  position: relative; }
  @media (min-width: 768px) {
    .outside-thebox__box {
      padding: 50px 30px; } }
  @media (min-width: 992px) {
    .outside-thebox__box {
      padding: 70px 50px; } }

.outside-thebox__bottom-text {
  transform: rotate(180deg);
  font-size: 90px;
  line-height: 1;
  color: #C9CFCB;
  font-family: "DM Serif Display", serif;
  position: absolute;
  text-align: right;
  left: 0;
  right: 0;
  bottom: -90px;
  display: none;
  letter-spacing: 1px; }
  @media (min-width: 1300px) {
    .outside-thebox__bottom-text {
      display: block; } }

.outside-thebox__left-text {
  transform: rotate(-90deg);
  font-size: 90px;
  letter-spacing: 1px;
  line-height: 1;
  color: #C9CFCB;
  font-family: "DM Serif Display", serif;
  position: absolute;
  text-align: center;
  left: -75px;
  top: 0;
  bottom: 0;
  display: none; }
  @media (min-width: 1300px) {
    .outside-thebox__left-text {
      display: block; } }

.outside-thebox__top-text {
  font-size: 90px;
  line-height: 1;
  color: #C9CFCB;
  font-family: "DM Serif Display", serif;
  position: absolute;
  text-align: left;
  left: 0;
  right: 0;
  top: -90px;
  bottom: 0;
  display: none;
  letter-spacing: 1px; }
  @media (min-width: 1300px) {
    .outside-thebox__top-text {
      display: block; } }

.polaroid-text__photos-col {
  margin-bottom: 30px; }
  @media (min-width: 768px) {
    .polaroid-text__photos-col {
      margin-bottom: 0; } }

.polaroid-text__vertical-one {
  transform: rotate(-3deg);
  width: 38%;
  margin-top: 12%;
  transition: transform 0.4s ease-in-out; }
  .polaroid-text__vertical-one:hover {
    transform: rotate(0) scale(1.15);
    position: relative;
    z-index: 2; }

.polaroid-text__vertical-two {
  transform: rotate(7deg);
  width: 38%;
  margin-top: -60%;
  margin-left: 39%;
  position: relative;
  z-index: 1;
  transition: transform 0.4s ease-in-out; }
  .polaroid-text__vertical-two:hover {
    transform: rotate(0) scale(1.15);
    position: relative;
    z-index: 2; }

.polaroid-text__horizontal {
  transform: rotate(-5deg);
  width: 52%;
  margin-left: 45%;
  transition: transform 0.4s ease-in-out; }
  .polaroid-text__horizontal:hover {
    transform: rotate(0) scale(1.15);
    position: relative;
    z-index: 2; }

.polaroid-text__vertical-frame {
  background-image: url("/wp-content/themes/forefrontweb/build/7a1923df444cb8ecce3b1c77f6d39d29.png");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center center;
  padding-top: 132.2%;
  position: relative; }

.polaroid-text__vertical-image {
  position: absolute;
  left: 4.5%;
  right: 20%;
  top: 4%;
  bottom: 5%; }

.polaroid-text__vertical-caption {
  transform: rotate(-90deg);
  position: absolute;
  left: 29%;
  bottom: 44%;
  color: #1e3b76;
  font-size: 12px;
  letter-spacing: 1.06px;
  font-family: "My Handwriting", sans-serif;
  text-transform: uppercase;
  width: 120%; }
  @media (min-width: 768px) {
    .polaroid-text__vertical-caption {
      font-size: 18px; } }
  @media (min-width: 768px) {
    .polaroid-text__vertical-caption {
      font-size: 20px; } }
  @media (min-width: 992px) {
    .polaroid-text__vertical-caption {
      font-size: 28px; } }
  @media (min-width: 1300px) {
    .polaroid-text__vertical-caption {
      font-size: 38px; } }

.polaroid-text__horizontal-frame {
  background-image: url("/wp-content/themes/forefrontweb/build/0d1efd8ce15b50377cd4676ff821086d.png");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center center;
  padding-top: 75.6%;
  position: relative; }

.polaroid-text__horizontal-image {
  position: absolute;
  left: 5%;
  right: 4%;
  top: 4.5%;
  bottom: 19.5%; }

.polaroid-text__horizontal-caption {
  position: absolute;
  left: 5%;
  bottom: 0;
  color: #1e3b76;
  font-size: 12px;
  letter-spacing: 1.06px;
  font-family: "My Handwriting", sans-serif;
  text-transform: uppercase;
  width: 95%; }
  @media (min-width: 576px) {
    .polaroid-text__horizontal-caption {
      font-size: 18px; } }
  @media (min-width: 768px) {
    .polaroid-text__horizontal-caption {
      font-size: 20px; } }
  @media (min-width: 992px) {
    .polaroid-text__horizontal-caption {
      font-size: 28px; } }
  @media (min-width: 1300px) {
    .polaroid-text__horizontal-caption {
      font-size: 38px; } }

.numbered-list__intro-content {
  margin-bottom: 30px; }

@media (min-width: 1300px) {
  .numbered-list__left-col {
    padding-left: calc((100vw - 1300px) / 2); } }

@media screen and (max-width: 450px) {
  .numbered-list__left-col {
    padding: 0 !important; } }

.numbered-list__image {
  width: 100%; }

.numbered-list__image-col {
  padding-right: 0; }

.numbered-list__list {
  list-style-type: none;
  position: relative;
  padding: 0;
  margin: 0; }

.numbered-list__list-item {
  border-bottom: 1px solid #D0D0D0;
  padding: 20px;
  position: relative;
  display: flex;
  align-items: center;
  margin-bottom: 0;
  background-image: linear-gradient(to right, #A5AFA7 0 80px, transparent 80px 100%); }
  @media (min-width: 768px) {
    .numbered-list__list-item {
      padding: 30px 20px;
      background-image: linear-gradient(to right, #A5AFA7 0 80px, transparent 80px 100%); } }
  @media screen and (max-width: 450px) {
    .numbered-list__list-item-content > h1, .numbered-list__list-item-content > h2, .numbered-list__list-item-content > h3, .numbered-list__list-item-content > h4, .numbered-list__list-item-content > h5, .numbered-list__list-item-content > h6 {
      word-break: break-word;
      letter-spacing: 0.08em; } }

.numbered-list__list-number {
  color: #FFFFFF;
  font-family: "DM Serif Display", serif;
  font-size: 58px;
  width: 80px;
  flex-shrink: 0;
  position: relative;
  left: 5px; }

.fifty-split__image-col {
  padding: 0; }

.fifty-split__images {
  display: flex;
  margin: 0 -10px;
  margin-bottom: 40px;
  position: relative; }
  @media (min-width: 768px) {
    .fifty-split__images {
      margin-bottom: 0;
      padding-bottom: 40px; } }
  .fifty-split__images:before {
    content: '';
    position: absolute;
    left: 10px;
    right: -200px;
    top: 50px;
    bottom: 0;
    background-color: #F8F7F6;
    display: none; }
    @media (min-width: 768px) {
      .fifty-split__images:before {
        display: block; } }

.fifty-split__image-wrap {
  width: 100%;
  padding: 0 10px;
  position: relative; }

.fifty-split__image {
  border-radius: 10px;
  padding-top: 177%; }

@media (min-width: 768px) {
  .fifty-split__content {
    padding: 0 50px; } }

@media (min-width: 1300px) {
  .fifty-split__content {
    padding-left: 90px;
    padding-right: calc((100vw - 1300px) / 2); } }

.services-block__icon-col {
  position: relative; }
  .services-block__icon-col:before {
    content: '';
    position: absolute;
    background-image: url("/wp-content/themes/forefrontweb/build/189a37ad8a39bd7d626b30ad27e09f11.svg");
    background-size: 264px 99px;
    background-position: center center;
    background-repeat: no-repeat;
    width: 264px;
    height: 99px;
    left: 50%;
    top: 0;
    display: none; }
    @media (min-width: 768px) {
      .services-block__icon-col:before {
        display: block; } }
  @media (min-width: 768px) {
    .services-block__icon-col {
      padding-top: 48px; } }

.services-block__icon-boxwrap {
  max-width: 150px; }
  @media (min-width: 768px) {
    .services-block__icon-boxwrap {
      max-width: none; } }

.services-block__icon-box {
  padding-top: 100%;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  position: relative;
  background-color: #FFFFFF; }

.services-block__icon-wrap {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  height: 60px;
  width: 60px;
  display: flex;
  justify-content: center;
  align-items: center; }

.services-block__content {
  padding-top: 20px; }
  @media (min-width: 768px) {
    .services-block__content {
      padding-top: 120px;
      padding-left: 30px; } }

.services-block__service {
  margin-bottom: 40px; }
  .services-block__service--right .services-block__icon-col:before {
    background-image: url("/wp-content/themes/forefrontweb/build/5823f77cc1bc9a3d49322b5301240a2a.svg");
    left: unset;
    right: 50%; }
  @media (min-width: 768px) {
    .services-block__service--right .services-block__icon-col {
      order: 2; } }
  @media (min-width: 768px) {
    .services-block__service--right .services-block__content {
      padding-left: 20px;
      padding-right: 30px;
      text-align: right; } }

.mini-contact {
  position: relative; }
  .mini-contact:before {
    content: '';
    background-image: url("/wp-content/themes/forefrontweb/build/191b80751760c7b45479c7ee78882448.svg");
    background-size: contain;
    background-repeat: no-repeat;
    background-position: bottom left;
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 50%;
    display: none; }
    @media (min-width: 768px) {
      .mini-contact:before {
        display: block; } }
  .mini-contact__container {
    position: relative; }
  .mini-contact__heading-col {
    margin-bottom: 20px;
    background-color: #F8F7F6;
    padding: 20px; }
    @media (min-width: 768px) {
      .mini-contact__heading-col {
        margin-bottom: 0;
        background-color: transparent;
        padding: 60px 20px; } }
  .mini-contact__heading {
    font-size: 48px; }
    @media (min-width: 1300px) {
      .mini-contact__heading {
        font-size: 100px;
        line-height: 94px;
        margin-bottom: 40px; } }
  .mini-contact__subheading {
    color: #C68061; }
  .mini-contact__form-title {
    font-size: 38px; }
  .mini-contact .gform_button {
    width: 100%; }

.fifty-quote__container {
  position: relative; }
  @media (min-width: 768px) {
    .fifty-quote__container {
      padding-bottom: 40px; }
      .fifty-quote__container:before {
        content: '';
        position: absolute;
        left: 20px;
        right: 25%;
        bottom: 0;
        height: 40px;
        border-bottom-left-radius: 10px;
        border-bottom-right-radius: 10px;
        border-left: 2px solid #D0D0D0;
        border-right: 2px solid #D0D0D0;
        border-bottom: 2px solid #D0D0D0; }
      .fifty-quote__container:after {
        content: '';
        position: absolute;
        right: calc(25% - 5px);
        bottom: 34px;
        background-image: url("/wp-content/themes/forefrontweb/build/1f5f66d139423592a18196721dfc493c.svg");
        width: 12px;
        height: 12px;
        background-size: 12px 12px;
        background-repeat: no-repeat;
        background-position: center center; } }

.fifty-quote__content {
  margin-bottom: 20px;
  position: relative; }

.fifty-quote__quote {
  background-color: #667a6a;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 20px;
  position: relative; }
  .fifty-quote__quote p {
    font-size: 20px;
    letter-spacing: 0.1125em;
    line-height: 1.33;
    font-weight: 900;
    text-transform: uppercase; }
    @media (min-width: 768px) {
      .fifty-quote__quote p {
        font-size: 24px; } }
  @media (min-width: 768px) {
    .fifty-quote__quote {
      padding: 40px; } }
  @media (min-width: 992px) {
    .fifty-quote__quote {
      padding: 60px; } }
  @media (min-width: 1300px) {
    .fifty-quote__quote {
      padding: 80px 90px; } }

.fifty-video__container {
  position: relative; }
  @media (min-width: 768px) {
    .fifty-video__container {
      padding-bottom: 40px; }
      .fifty-video__container:before {
        content: '';
        position: absolute;
        left: 20px;
        right: 25%;
        bottom: 0;
        height: 40px;
        border-bottom-left-radius: 10px;
        border-bottom-right-radius: 10px;
        border-left: 2px solid #D0D0D0;
        border-right: 2px solid #D0D0D0;
        border-bottom: 2px solid #D0D0D0; }
      .fifty-video__container:after {
        content: '';
        position: absolute;
        right: calc(25% - 5px);
        bottom: 34px;
        background-image: url("/wp-content/themes/forefrontweb/build/1f5f66d139423592a18196721dfc493c.svg");
        width: 12px;
        height: 12px;
        background-size: 12px 12px;
        background-repeat: no-repeat;
        background-position: center center; } }

.fifty-video__content {
  margin-bottom: 20px;
  position: relative; }
  @media (min-width: 1300px) {
    .fifty-video__content {
      padding-right: 70px; } }

.fifty-video__image {
  padding-top: 51%;
  height: 100%; }

.fifty-video__video-link {
  display: block;
  position: relative;
  height: 100%;
  padding-top: 51%; }
  .fifty-video__video-link:before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.2);
    opacity: 0;
    transition: opacity 0.2s ease-in-out; }
  .fifty-video__video-link:hover:before {
    opacity: 1; }

.fifty-video__video-play {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto 0;
  background-image: url("/wp-content/themes/forefrontweb/build/b439eb88245f9a21356b667d0e0fd5f2.svg");
  background-size: contain;
  background-repeat: no-repeat;
  width: 110px;
  height: 111px;
  display: block;
  color: #FFFFFF;
  font-family: "DM Serif Display", serif;
  font-size: 18px;
  padding-top: 30px;
  padding-left: 30px; }

.fifty-video__video-wrap {
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  border-radius: 10px;
  background-color: #FFFFFF;
  height: 100%;
  display: flex;
  flex-direction: column;
  overflow: hidden; }

.fifty-video__title-wrap {
  padding: 20px; }

.fifty-video__video-title {
  font-size: 32px; }
  @media (min-width: 768px) {
    .fifty-video__video-title {
      font-size: 38px; } }

.team-block__inner {
  position: relative; }

.team-block__heading-wrap:before {
  content: '';
  position: absolute;
  right: 0;
  top: 0;
  width: 50%;
  height: 335px;
  opacity: 0;
  background-color: #506055; }
  @media (min-width: 768px) {
    .team-block__heading-wrap:before {
      opacity: 1; } }
  @media (min-width: 992px) {
    .team-block__heading-wrap:before {
      width: 37%; } }

.team-block__heading {
  position: relative;
  font-size: 38px;
  color: #FFFFFF;
  padding: 20px;
  text-align: right;
  background-color: #506055; }
  @media (min-width: 768px) {
    .team-block__heading {
      background-color: transparent;
      padding: 0;
      padding-top: 20px; } }

.team-block__col {
  padding: 15px 5px; }

.team-block__member {
  transition: background-color 0.2s ease-in-out;
  display: block;
  border-radius: 10px;
  padding: 15px;
  text-decoration: none; }
  .team-block__member:hover {
    background-color: rgba(208, 208, 208, 0.3); }

.team-block__image {
  background-color: #D0D0D0;
  padding-top: 140%;
  border-radius: 10px;
  margin-bottom: 20px; }

.team-block__name span:first-child {
  display: block;
  font-family: "DM Serif Display", serif;
  font-size: 38px;
  color: #212121;
  line-height: 1; }

.team-block__name span:not(:first-child) {
  color: #A5AFA7;
  text-transform: uppercase;
  font-weight: 500;
  font-size: 24px;
  letter-spacing: 2.7px; }

.team-block__name span.team-block__position {
  color: #506055;
  font-weight: 400;
  font-size: 12px;
  letter-spacing: 1.5px;
  text-transform: none;
  display: block; }

@media (min-width: 992px) {
  .featured-portfolioitems {
    display: flex;
    align-items: center; } }

.featured-portfolioitems__heading-box {
  background-color: #C68061;
  padding: 20px;
  margin-bottom: 20px; }
  @media (min-width: 768px) {
    .featured-portfolioitems__heading-box {
      padding: 40px 30px;
      margin-bottom: 0; } }
  @media (min-width: 992px) {
    .featured-portfolioitems__heading-box {
      max-width: 375px;
      padding: 115px 40px;
      padding-right: 140px; } }

.featured-portfolioitems__heading {
  color: #FFFFFF;
  font-size: 38px;
  margin-bottom: 0; }
  @media (min-width: 768px) {
    .featured-portfolioitems__heading {
      margin-bottom: 40px; } }

.featured-portfolioitems__arrow {
  position: relative;
  height: 2px;
  background-color: #FFFFFF;
  display: none; }
  @media (min-width: 992px) {
    .featured-portfolioitems__arrow {
      display: block; } }
  .featured-portfolioitems__arrow:after {
    content: '';
    position: absolute;
    background-image: url("/wp-content/themes/forefrontweb/build/e9894424a51d1c0e7c7ea9a61d025258.svg");
    background-position: center center;
    background-repeat: no-repeat;
    background-size: 12px 12px;
    width: 12px;
    height: 12px;
    right: -4px;
    top: -5px; }

.featured-portfolioitems__items-wrap {
  margin: -10px; }
  @media (min-width: 768px) {
    .featured-portfolioitems__items-wrap {
      display: flex;
      margin-top: -60px;
      margin-left: 10px;
      margin-right: 10px; } }
  @media (min-width: 992px) {
    .featured-portfolioitems__items-wrap {
      width: 100%;
      margin: -10px;
      margin-left: -115px; } }

.featured-portfolioitems__item {
  padding: 10px;
  width: 100%; }

.services-tiles__heading-col {
  margin-bottom: 10px; }
  @media (min-width: 992px) {
    .services-tiles__heading-col {
      order: 2;
      margin-bottom: 0;
      padding-left: 50px;
      width: 40%;
      max-width: 40%;
      flex-basis: 40%; } }

@media (min-width: 992px) {
  .services-tiles__column {
    order: 1;
    margin-bottom: 0;
    width: 60%;
    max-width: 60%;
    flex-basis: 60%; } }

.services-tiles__preheading {
  font-family: "Avenir", sans-serif;
  font-weight: 500;
  font-size: 24px;
  letter-spacing: 2.7px;
  line-height: 32px;
  display: block;
  text-transform: uppercase;
  margin-bottom: 10px; }

.services-tiles__heading {
  line-height: 1; }
  @media (min-width: 1300px) {
    .services-tiles__heading {
      font-size: 100px; } }

.services-tiles__button {
  margin-top: 15px; }

.services-tiles__col {
  padding: 20px; }

.services-tiles__tile {
  display: block;
  background-color: #FFFFFF;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  border-radius: 10px;
  position: relative;
  padding-top: 100%;
  text-align: center; }
  .services-tiles__tile:hover {
    background-color: #F8F7F6; }
  @media screen and (max-width: 767px) {
    .services-tiles__tile {
      padding-top: 0;
      height: 250px; } }

.services-tiles__inner {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 30px; }

.services-tiles__icon {
  width: 60px;
  height: 60px;
  margin: auto 0;
  flex-shrink: 0; }
  @media screen and (min-width: 1600px) {
    .services-tiles__icon {
      height: 65px;
      width: 65px; } }
  @media screen and (max-width: 1150px) and (min-width: 991px) {
    .services-tiles__icon {
      width: 42px;
      height: 42px; } }
  @media screen and (max-width: 767px) {
    .services-tiles__icon {
      height: 90px;
      width: 90px; } }
  @media screen and (max-width: 450px) {
    .services-tiles__icon {
      width: 75px;
      height: 75px; } }
  @media screen and (max-width: 320px) {
    .services-tiles__icon {
      width: 60px;
      height: 60px; } }

.services-tiles__tile-text {
  font-family: "DM Serif Display", serif;
  font-size: 20px;
  line-height: 23px;
  color: #212121;
  min-height: 46px; }

.services-tiles__cta--button {
  display: flex;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  border-radius: 10px;
  position: relative;
  height: 100%;
  text-align: center;
  justify-content: center;
  align-items: center;
  font-size: 32px;
  font-family: "DM Serif Display", serif; }
  @media screen and (max-width: 400px) {
    .services-tiles__cta--button {
      font-size: 20px; } }

.portfolio-text {
  overflow: hidden;
  max-height: 900px; }
  @media screen and (max-width: 767px) {
    .portfolio-text {
      max-height: 1000px;
      padding-top: 30px; } }
  .portfolio-text__content-col {
    margin-bottom: 30px; }
    @media (min-width: 768px) {
      .portfolio-text__content-col {
        order: 2;
        margin-bottom: 0;
        padding-left: 60px; } }
  .portfolio-text__portfolio-wrap {
    grid-template-columns: repeat(2, 1fr);
    display: grid;
    grid-template-rows: repeat(6, 1fr);
    align-items: center;
    margin: -10px; }
    @media (min-width: 768px) {
      .portfolio-text__portfolio-wrap {
        margin-bottom: -20%;
        margin-top: -20%; } }
  .portfolio-text__portfolio-col {
    display: flex;
    gap: 0 30px;
    max-height: 900px;
    height: inherit;
    overflow-y: hidden; }
  .portfolio-text__item {
    padding: 10px; }
    @media screen and (max-width: 450px) {
      .portfolio-text__item--title {
        display: none; } }
  .portfolio-text__left-pillar {
    display: flex;
    flex-direction: column;
    gap: 20px;
    width: 50%;
    position: relative;
    bottom: 100px; }
  .portfolio-text__right-pillar {
    display: flex;
    flex-direction: column;
    gap: 20px;
    width: 50%; }

.category-portfolioitems__marquee {
  overflow: hidden;
  margin-top: 40px; }

.category-portfolioitems__top {
  padding: 0;
  margin-bottom: 30px; }

.category-portfolioitems__heading {
  text-align: right;
  background-color: #FFFFFF; }
  @media (min-width: 768px) {
    .category-portfolioitems__heading {
      font-size: 58px; } }
  @media (min-width: 1300px) {
    .category-portfolioitems__heading {
      font-size: 100px; } }

.category-portfolioitems__logos {
  display: flex;
  align-items: center; }

.category-portfolioitems__logo-wrap {
  margin-right: 70px; }

.category-portfolioitems__logo {
  max-height: 50px;
  width: auto;
  height: auto;
  max-width: 250px;
  filter: invert(66%) sepia(13%) saturate(0%) hue-rotate(147deg) brightness(92%) contrast(91%); }

.category-portfolioitems__items-wrap {
  margin: -10px;
  display: flex;
  flex-wrap: wrap; }
  @media (min-width: 768px) {
    .category-portfolioitems__items-wrap {
      display: flex;
      justify-content: flex-end;
      flex-wrap: wrap; } }

.category-portfolioitems__item {
  padding: 10px;
  width: 25%; }
  @media screen and (max-width: 767px) {
    .category-portfolioitems__item {
      width: 50%; } }
  @media screen and (max-width: 450px) {
    .category-portfolioitems__item {
      width: 100%; } }

.category-portfolioitems__link {
  display: block;
  margin-top: 20px;
  text-align: right;
  color: #506055;
  font-size: 18px; }

.statistics-block__heading-col {
  position: relative;
  margin-bottom: 30px; }
  @media (min-width: 992px) {
    .statistics-block__heading-col {
      margin-bottom: 0; }
      .statistics-block__heading-col:after {
        content: '';
        display: block;
        height: 27px;
        width: 100%;
        border-bottom-left-radius: 10px;
        border-left: 2px solid #D0D0D0;
        border-bottom: 2px solid #D0D0D0;
        margin-top: 30px; }
      .statistics-block__heading-col:before {
        content: '';
        display: block;
        height: 12px;
        width: 12px;
        background-image: url("/wp-content/themes/forefrontweb/build/c30abba2bb3842031cb5735e10e7668b.svg");
        background-size: 12px 12px;
        background-repeat: no-repeat;
        background-position: center center;
        position: absolute;
        right: 9px;
        bottom: -5px; } }

.statistics-block__preheading {
  color: #506055;
  margin-bottom: 10px; }

.statistics-block__heading {
  font-size: 48px; }
  @media screen and (min-width: 992px) {
    .statistics-block__heading {
      font-size: 80px; } }
  @media screen and (min-width: 1300px) {
    .statistics-block__heading {
      font-size: 100px;
      line-height: 1; } }

@media (min-width: 768px) {
  .statistics-block__stats-container:before {
    content: '';
    position: absolute;
    left: 64px;
    right: 20px;
    top: 0;
    bottom: 110px;
    background-color: #C68061; } }

.statistics-block__stats-container--open:before {
  display: none; }

.statistics-block__content-wrap {
  display: none; }

.statistics-block__stat-content {
  position: relative;
  background-color: #C68061;
  padding: 25px; }
  @media (min-width: 992px) {
    .statistics-block__stat-content {
      padding: 50px; } }
  @media (min-width: 1300px) {
    .statistics-block__stat-content {
      margin-bottom: 50px;
      padding-left: calc(30% - 45px);
      margin-left: 64px; } }

.statistics-block__stat-image {
  background-color: #D0D0D0;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  position: absolute;
  left: -64px;
  width: 30%;
  top: 50px;
  bottom: -50px;
  display: none; }
  @media (min-width: 1300px) {
    .statistics-block__stat-image {
      display: block; } }

.statistics-block__close {
  position: absolute;
  right: 25px;
  top: 25px;
  background-color: transparent;
  color: #FFFFFF; }

.statistics-block__stat {
  font-size: 100px;
  line-height: 1;
  margin-bottom: 0; }

.statistics-block__stat-label {
  font-size: 38px; }

.statistics-block__stat-subheading {
  font-size: 20px; }

@media (min-width: 768px) {
  .statistics-block__stats-overlay {
    display: flex;
    margin: -10px;
    margin-top: 40px; } }

.statistics-block__selector-wrap {
  width: 100%;
  margin-bottom: 20px; }
  .statistics-block__selector-wrap:last-child {
    margin-bottom: 0; }
  @media (min-width: 768px) {
    .statistics-block__selector-wrap {
      padding: 10px;
      margin-bottom: 0; } }

.statistics-block__stat-selector {
  background-color: #D0D0D0;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  position: relative;
  overflow: hidden;
  cursor: pointer; }
  @media (min-width: 768px) {
    .statistics-block__stat-selector {
      padding-top: 220%; } }
  .statistics-block__stat-selector:hover .statistics-block__selector-inner {
    background-color: rgba(0, 0, 0, 0.49); }

.statistics-block__selector-inner {
  padding: 25px;
  background-color: rgba(0, 0, 0, 0.39);
  transition: background-color 0.2s ease-in-out;
  display: flex;
  flex-direction: column; }
  @media (min-width: 768px) {
    .statistics-block__selector-inner {
      display: block;
      writing-mode: vertical-lr;
      transform: rotate(180deg);
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0; } }

.statistics-block__selector-stat {
  color: #FFFFFF;
  font-size: 80px;
  line-height: 1;
  order: -1; }
  @media (min-width: 1300px) {
    .statistics-block__selector-stat {
      font-size: 100px; } }
  @media screen and (max-width: 450px) {
    .statistics-block__selector-stat {
      font-size: 60px; } }

.statistics-block__selector-label {
  color: #FFFFFF;
  font-weight: bold;
  font-size: 20px;
  margin-bottom: 0; }
  @media (min-width: 1300px) {
    .statistics-block__selector-label {
      font-size: 24px; } }

.featured-casestudy__container {
  padding: 0; }

.featured-casestudy__image {
  background-color: #D0D0D0;
  position: relative;
  padding-top: 60%;
  border-radius: 10px;
  overflow: hidden;
  z-index: 1;
  margin-bottom: 20px; }
  @media (min-width: 768px) {
    .featured-casestudy__image {
      margin-top: 50px;
      margin-bottom: 0;
      padding-top: 112%; } }

.featured-casestudy__image-inner {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.42);
  padding: 60px;
  display: flex;
  justify-content: center;
  align-items: center; }
  @media (min-width: 768px) {
    .featured-casestudy__image-inner {
      padding: 100px; } }

.featured-casestudy__logo {
  width: auto;
  height: auto; }

.featured-casestudy__right-col {
  position: relative; }
  @media (min-width: 768px) {
    .featured-casestudy__right-col {
      padding-top: 50px; }
      .featured-casestudy__right-col:before {
        content: '';
        position: absolute;
        left: -200px;
        right: 20px;
        top: 0;
        height: 90%;
        background-color: #F8F7F6; } }

.featured-casestudy__link-wrap {
  margin-bottom: 40px; }

.featured-casestudy__link {
  font-size: 38px;
  display: block;
  color: #506055;
  position: relative;
  text-decoration: none; }
  @media (min-width: 992px) {
    .featured-casestudy__link span {
      display: block;
      padding-right: 20%; } }
  .featured-casestudy__link:hover, .featured-casestudy__link:focus {
    color: #39443c; }
  @media (min-width: 768px) {
    .featured-casestudy__link {
      padding: 0 60px; } }

.featured-casestudy__link-arrow {
  height: 2px;
  background-color: #506055;
  flex: 1;
  position: relative;
  margin-right: 5px;
  margin-top: 25px; }
  .featured-casestudy__link-arrow:after {
    content: '';
    background-image: url("/wp-content/themes/forefrontweb/build/ce9ba9e734f42f4e9dd6472212042e68.svg");
    background-size: 12px 12px;
    width: 12px;
    height: 12px;
    background-position: center center;
    background-repeat: no-repeat;
    position: absolute;
    right: -5px;
    top: -5px; }

.featured-casestudy__computer-wrap {
  position: relative;
  z-index: 2;
  display: none; }
  @media (min-width: 768px) {
    .featured-casestudy__computer-wrap {
      display: block; } }

.featured-casestudy__computer {
  background-image: url("/wp-content/themes/forefrontweb/build/2939a3385dd6a3f25e33dccdb97e0a06.png");
  padding-top: 91%;
  position: relative; }
  @media (min-width: 768px) {
    .featured-casestudy__computer {
      margin-left: -100px;
      margin-right: 100px; } }

.featured-casestudy__computer-screen {
  background-color: #D0D0D0;
  position: absolute;
  left: 2.5%;
  right: 2.7%;
  top: 2.7%;
  bottom: 36.6%; }

.related-portfolioitems__heading {
  text-align: right; }

.related-portfolioitems__items-wrap {
  margin: -10px; }
  @media (min-width: 768px) {
    .related-portfolioitems__items-wrap {
      display: flex;
      justify-content: flex-end; } }

.related-portfolioitems__item {
  padding: 10px;
  width: 25%; }
  @media screen and (max-width: 768px) {
    .related-portfolioitems__item {
      width: 100%; } }

.related-portfolioitems__link {
  border-top: 1px solid #D0D0D0;
  border-bottom: 1px solid #D0D0D0;
  padding: 20px;
  display: block;
  color: #506055;
  text-align: center;
  margin-top: 30px; }
  .related-portfolioitems__link:hover {
    background-color: #F8F7F6; }

.computer-screenshots {
  overflow: hidden; }
  .computer-screenshots__container {
    padding: 0; }
  .computer-screenshots__heading-right {
    text-align: right; }
  .computer-screenshots__computer-left {
    background-image: url("/wp-content/themes/forefrontweb/build/6f69ab07c32b06088906989623936b8a.png");
    padding-top: 127%;
    width: 180%;
    margin-left: -80%;
    position: relative;
    margin-bottom: 40px; }
    @media (min-width: 768px) {
      .computer-screenshots__computer-left {
        margin-bottom: 0; } }
  .computer-screenshots__computer-right {
    background-image: url("/wp-content/themes/forefrontweb/build/6f69ab07c32b06088906989623936b8a.png");
    padding-top: 127%;
    width: 180%;
    position: relative; }
  .computer-screenshots__computer-screen {
    background-position: center top;
    position: absolute;
    left: 13.2%;
    right: 13.1%;
    top: 2.7%;
    bottom: 36.5%; }

.computer-screenshot {
  overflow: hidden; }
  .computer-screenshot-container {
    padding: 0; }
  .computer-screenshot-heading-right {
    text-align: right; }
  .computer-screenshot-computer {
    background-image: url("/wp-content/themes/forefrontweb/build/6f69ab07c32b06088906989623936b8a.png");
    padding-top: 60%;
    position: relative; }
    @media screen and (min-width: 768px) {
      .computer-screenshot-computer {
        margin-bottom: 0; } }
    @media screen and (max-width: 450px) {
      .computer-screenshot-computer {
        padding-top: 90%; } }
  .computer-screenshot-computer-screen {
    background-position: center top;
    position: absolute !important;
    left: 18.7%;
    right: 18.7%;
    top: 2.8%;
    bottom: 36.5%;
    border-radius: 1px; }
    @media screen and (max-width: 450px) {
      .computer-screenshot-computer-screen {
        top: 2.85%;
        bottom: 36.4%;
        left: 3%;
        right: 3%; } }

.support-form__container .gform_required_legend {
  display: none; }

.support-form__container span.gfield_required.gfield_required_asterisk {
  color: #7B7B7B; }

@media screen and (max-width: 767px) {
  .support-form__container .support-request-type select.gfield_select {
    width: 100% !important; } }

.contact-form__container .gform_required_legend {
  display: none; }

.contact-form__container span.gfield_required.gfield_required_asterisk {
  color: #7B7B7B; }

.site-search-container-inner {
  max-width: 900px;
  display: flex;
  justify-content: center;
  margin: 0 auto; }
  @media screen and (max-width: 930px) {
    .site-search-container-inner {
      margin: 0 15px; } }

.site-search-container .search-wrap {
  width: 100%; }

.site-search-container .search-facets {
  width: 100%; }
  .site-search-container .search-facets .facetwp-input-wrap {
    display: flex;
    justify-content: center; }
  .site-search-container .search-facets .facetwp-type-search {
    margin-bottom: 20px; }
  .site-search-container .search-facets .facetwp-search {
    width: 75%;
    min-width: unset;
    line-height: 30px;
    font-size: 24px;
    border-radius: 30px;
    padding: 10px 20px;
    border: 2px solid #506055; }
    @media screen and (max-width: 450px) {
      .site-search-container .search-facets .facetwp-search {
        width: 100%; } }
  .site-search-container .search-facets .facetwp-icon {
    right: calc(12.5% + 10px);
    top: 50%;
    transform: translateY(-50%); }
    @media screen and (max-width: 450px) {
      .site-search-container .search-facets .facetwp-icon {
        right: 10px; } }

.site-search-container .search-term {
  text-align: center;
  margin-bottom: 40px; }

.search-results {
  list-style: none;
  padding-left: 0;
  margin-bottom: 0; }
  .search-results-item {
    display: flex;
    gap: 0 15px;
    margin-bottom: 15px; }

.load-more-wrap {
  margin-top: 30px;
  display: flex;
  justify-content: center; }

.blog__container--inner {
  max-width: 1300px;
  margin: 0 auto; }
  @media screen and (max-width: 1330px) {
    .blog__container--inner {
      margin: 0 15px; } }

.blog__upper {
  display: grid;
  grid-auto-rows: auto;
  grid-template-columns: 305px 1fr;
  gap: 0 30px; }
  @media screen and (max-width: 767px) {
    .blog__upper {
      grid-template-rows: repeat(2, auto);
      grid-template-columns: 1fr;
      gap: 30px 0; } }

.blog__categories {
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  height: auto;
  align-self: start; }
  .blog__categories--title {
    font-size: 28px;
    padding: 20px;
    margin-bottom: 0;
    color: #212121;
    font-family: "DM Serif Display", serif;
    font-weight: normal; }
    @media screen and (min-width: 768px) {
      .blog__categories--title {
        padding: 30px; } }
    @media screen and (min-width: 992px) {
      .blog__categories--title {
        padding: 30px 40px; } }
  .blog__categories .facetwp-facet {
    margin-bottom: 0; }
    .blog__categories .facetwp-facet .facetwp-checkbox {
      margin-bottom: 0;
      padding: 10px 20px;
      border-top: 1px solid #D0D0D0;
      padding-left: 45px;
      background-position: 20px 50%; }
      @media screen and (min-width: 768px) {
        .blog__categories .facetwp-facet .facetwp-checkbox {
          padding: 13px 30px;
          padding-left: 55px;
          background-position: 30px 50%; } }
      @media screen and (min-width: 992px) {
        .blog__categories .facetwp-facet .facetwp-checkbox {
          padding: 13px 40px;
          padding-left: 65px;
          background-position: 40px 50%; } }

.blog__blogs {
  display: grid;
  grid-auto-rows: auto;
  grid-template-columns: repeat(3, 1fr);
  gap: 30px;
  list-style: none;
  padding-left: 0;
  margin-bottom: 0; }
  @media screen and (max-width: 1050px) {
    .blog__blogs {
      grid-template-columns: repeat(2, 1fr); } }
  @media screen and (max-width: 500px) {
    .blog__blogs {
      grid-template-columns: 1fr; } }

.blog__blog--link {
  display: block;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  border-radius: 10px;
  background-color: #FFFFFF;
  padding: 20px;
  overflow: hidden;
  text-decoration: none; }
  .blog__blog--link:hover {
    background-color: #F8F7F6; }
    @media screen and (min-width: 768px) {
      .blog__blog--link:hover .blog__blog--arrow {
        margin-left: -30px; } }

.blog__blog--image {
  border-radius: 10px;
  width: 100%;
  height: 150px;
  background-color: #D0D0D0;
  background-size: cover;
  background-position: center center; }

.blog__blog--content {
  margin-top: 20px; }

.blog__blog--title {
  font-size: 22px;
  font-family: "DM Serif Display", serif;
  line-height: 28px;
  text-transform: none;
  letter-spacing: 0;
  color: #212121;
  margin-bottom: 10px;
  font-weight: 500; }

.blog__blog--date {
  color: #A5AFA7;
  font-size: 18px;
  font-weight: 500;
  letter-spacing: 2.02px;
  margin-bottom: 20px; }

.blog__blog--arrow {
  height: 2px;
  background-color: #506055;
  width: 50%;
  position: relative;
  margin-left: -20px;
  transition: margin-left 0.2s ease-in-out; }
  @media screen and (min-width: 768px) {
    .blog__blog--arrow {
      margin-left: -35px;
      width: 60%; } }
  .blog__blog--arrow:after {
    content: '';
    background-image: url("/wp-content/themes/forefrontweb/build/ce9ba9e734f42f4e9dd6472212042e68.svg");
    background-size: 12px 12px;
    background-repeat: no-repeat;
    background-position: center center;
    width: 12px;
    height: 12px;
    right: -4px;
    top: -5px;
    position: absolute; }

.blog__lower {
  margin-top: 30px;
  display: flex;
  justify-content: flex-end; }
  @media screen and (max-width: 767px) {
    .blog__lower {
      justify-content: center;
      margin-top: 40px; } }
  .blog__lower .facetwp-page {
    text-decoration: none; }

.full-text__form {
  margin-top: 30px; }

.site-footer {
  background-color: #F8F7F6; }
  .site-footer__top {
    padding: 20px 0; }
    @media (min-width: 768px) {
      .site-footer__top {
        padding: 40px 0; } }
    @media (min-width: 992px) {
      .site-footer__top {
        padding: 70px 0; } }
  .site-footer__col {
    margin-bottom: 20px; }
    @media (min-width: 768px) {
      .site-footer__col {
        margin-bottom: 40px; } }
    .site-footer__col:last-child {
      margin-bottom: 0; }
  .site-footer__section {
    background-color: #FFFFFF;
    border-radius: 10px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); }
  .site-footer__heading {
    letter-spacing: 0;
    font-size: 28px;
    text-transform: none;
    padding: 20px;
    border-bottom: 1px solid #D0D0D0;
    margin-bottom: 0; }
  .site-footer__contact-link {
    display: block;
    color: #5b5b5b !important;
    font-weight: 100;
    border-bottom: 1px solid #D0D0D0;
    padding: 15px 20px;
    display: flex;
    align-items: center;
    letter-spacing: 0.44px;
    word-break: break-word;
    text-decoration: none !important; }
    .site-footer__contact-link.footer-address:before {
      content: '';
      display: block;
      width: 25px;
      height: 31px;
      background-size: 25px 31px;
      background-repeat: no-repeat;
      background-position: center center;
      background-image: url("/wp-content/themes/forefrontweb/build/b4a4672d54069bc49ee197b2324a9e89.svg");
      margin-right: 18px;
      flex-shrink: 0; }
    .site-footer__contact-link.footer-email:before {
      content: '';
      display: block;
      width: 30px;
      height: 24px;
      background-size: 30px 24px;
      background-repeat: no-repeat;
      background-position: center center;
      background-image: url("/wp-content/themes/forefrontweb/build/27162c12267b9f399379fd0c40188ee1.svg");
      margin-right: 18px;
      flex-shrink: 0; }
    .site-footer__contact-link.footer-phone:before {
      content: '';
      display: block;
      width: 22px;
      height: 34px;
      background-size: 22px 34px;
      background-repeat: no-repeat;
      background-position: center center;
      background-image: url("/wp-content/themes/forefrontweb/build/02d36a0f3436e48f8aa18ea8e3814f0b.svg");
      margin-right: 18px;
      flex-shrink: 0; }
    .site-footer__contact-link:hover, .site-footer__contact-link:focus {
      background-color: #F8F7F6; }
    .site-footer__contact-link:last-child {
      border-bottom: none; }
  .site-footer__quick-links {
    list-style-type: none;
    margin: 0;
    padding: 0; }
    .site-footer__quick-links .menu-item {
      border-bottom: 1px solid #D0D0D0;
      margin: 0; }
      .site-footer__quick-links .menu-item a {
        display: block;
        padding: 15px 20px;
        color: #5b5b5b;
        font-weight: 100;
        letter-spacing: 0.44px;
        font-size: 16px;
        text-decoration: none; }
        .site-footer__quick-links .menu-item a:hover, .site-footer__quick-links .menu-item a:focus {
          background-color: #F8F7F6;
          color: #b36441; }
      .site-footer__quick-links .menu-item:last-child {
        border-bottom: none; }
  .site-footer__support-wrap {
    padding: 15px 20px;
    border-bottom: 1px solid #D0D0D0; }
    .site-footer__support-wrap:last-child {
      border-bottom: none; }
  .site-footer__support-button {
    width: 100%;
    min-width: 0; }
  .site-footer__social-link {
    border-bottom: 1px solid #D0D0D0;
    display: flex;
    align-items: center;
    padding: 10px 20px;
    color: #5b5b5b;
    font-weight: 100;
    letter-spacing: 0.44px;
    text-decoration: none; }
    .site-footer__social-link:hover, .site-footer__social-link:focus {
      background-color: #F8F7F6;
      color: #C68061; }
  .site-footer__social-icon {
    background-color: #A5AFA7;
    border-radius: 50%;
    color: #FFFFFF;
    width: 35px;
    height: 35px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-right: 13px; }
  .site-footer__google-partner {
    padding: 10px;
    display: flex;
    justify-content: center;
    align-items: center; }
    .site-footer__google-partner img {
      height: 140px;
      width: 140px; }
    .site-footer__google-partner:hover, .site-footer__google-partner .site-footer__google-partner:focus {
      background-color: #F8F7F6; }
  .site-footer__copyright-text {
    color: #FFFFFF;
    text-align: center;
    background-color: #506055;
    padding: 10px 20px;
    letter-spacing: 0.39px; }
    .site-footer__copyright-text a {
      color: #FFFFFF; }

.site-header {
  position: fixed;
  background-color: #F8F7F6;
  transition: all 0.2s ease-in-out;
  top: 20px;
  left: 20px;
  right: 20px;
  z-index: 999;
  padding: 10px 0; }
  @media screen and (min-width: 1080px) {
    .site-header {
      box-shadow: none;
      padding: 20px 0; } }
  .site-header--scrolled {
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); }
  .site-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    position: relative;
    padding: 12px 0; }
    @media screen and (min-width: 1080px) {
      .site-header__inner {
        flex-wrap: nowrap;
        padding: 0; } }
  .site-header__menu-toggle {
    margin-left: auto; }
    @media screen and (min-width: 1080px) {
      .site-header__menu-toggle {
        display: none; } }
  .site-header__menu {
    width: 100%;
    align-items: center;
    list-style-type: none;
    margin: 0;
    padding: 0;
    max-height: 0;
    visibility: hidden;
    transition: all 0.3s ease-in-out;
    overflow-y: scroll;
    -webkit-overflow-scrolling: touch; }
    .site-header__menu--open {
      visibility: visible;
      max-height: 300px;
      padding-top: 20px; }
    @media screen and (min-width: 1080px) {
      .site-header__menu {
        justify-content: flex-end;
        display: flex;
        visibility: visible;
        max-height: initial;
        overflow-y: visible;
        border-top: none; }
        .site-header__menu--open {
          margin-top: 0;
          padding-top: 0; } }
    .site-header__menu > .menu-item {
      margin: 0;
      width: 100%;
      display: flex;
      align-items: center;
      flex-wrap: wrap; }
      .site-header__menu > .menu-item .submenu-toggle {
        display: none;
        color: #C68061;
        padding: 10px;
        transition: transform 0.2s ease-in-out; }
        .site-header__menu > .menu-item .submenu-toggle--open {
          transform: rotate(180deg); }
      .site-header__menu > .menu-item.menu-item-has-children > .submenu-toggle {
        display: block; }
      @media (min-width: 992px) {
        .site-header__menu > .menu-item {
          width: auto; }
          .site-header__menu > .menu-item.menu-item-has-children > .submenu-toggle {
            display: none; }
          .site-header__menu > .menu-item:hover > a {
            background-color: #e2ded9; } }
      .site-header__menu > .menu-item.current-menu-item:not(.menu-item-home) > a {
        color: #C68061; }
        .site-header__menu > .menu-item.current-menu-item:not(.menu-item-home) > a:hover, .site-header__menu > .menu-item.current-menu-item:not(.menu-item-home) > a:focus {
          color: #C68061; }
      .site-header__menu > .menu-item > a {
        color: #7B7B7B;
        padding: 7px 0;
        display: block;
        font-size: 14px;
        position: relative;
        flex: 1;
        letter-spacing: 1px;
        font-weight: bold;
        text-transform: uppercase; }
        .site-header__menu > .menu-item > a:hover, .site-header__menu > .menu-item > a:focus {
          color: #7B7B7B; }
        @media (min-width: 992px) {
          .site-header__menu > .menu-item > a {
            padding: 15px; } }
  .site-header__brand {
    flex-shrink: 0;
    max-width: 205px; }
    @media screen and (max-width: 340px) {
      .site-header__brand {
        max-width: 140px; } }
  .site-header__menu-toggle {
    padding: 10px 5px;
    border: none;
    background-color: transparent; }
    .site-header__menu-toggle--open .site-header__toggle-bar:nth-child(2) {
      transform: translateY(8px) rotate(-45deg); }
    .site-header__menu-toggle--open .site-header__toggle-bar:nth-child(3) {
      opacity: 0; }
    .site-header__menu-toggle--open .site-header__toggle-bar:last-child {
      transform: translateY(-6px) rotate(45deg); }
  .site-header__toggle-bar {
    width: 30px;
    height: 2px;
    margin-bottom: 5px;
    display: block;
    background-color: #C68061;
    border-radius: 1px;
    transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out; }
    .site-header__toggle-bar:last-child {
      margin-bottom: 0; }
  .site-header__socials {
    flex-shrink: 0;
    margin-left: 15px;
    display: none; }
    @media (min-width: 1300px) {
      .site-header__socials {
        display: block; } }
  .site-header__social-link {
    background-color: #C68061;
    color: #7B7B7B;
    width: 25px;
    line-height: 25px;
    display: inline-block;
    border-radius: 50%;
    margin-right: 10px;
    text-align: center;
    font-size: 14px;
    transition: all 0.2s ease-in-out;
    will-change: transform; }
    .site-header__social-link:last-child {
      margin-right: 0; }
    .site-header__social-link:hover, .site-header__social-link:focus {
      background-color: #bf714e;
      color: #7B7B7B;
      transform: scale(1.1); }

.header-dropdown {
  position: fixed;
  left: 20px;
  right: 20px;
  top: 20px;
  background-color: #F8F7F6;
  transition: all 0.2s ease-in-out;
  opacity: 0;
  transform: translateY(-100px);
  visibility: hidden;
  z-index: 9999;
  max-height: calc(100vh - 40px);
  overflow: scroll;
  -webkit-overflow-scrolling: touch;
  box-shadow: 0 2px 20px rgba(0, 0, 0, 0.1);
  padding-top: 70px; }
  @media (min-width: 768px) {
    .header-dropdown {
      display: flex;
      padding-top: 0; } }
  .header-dropdown__cta {
    display: flex;
    flex-direction: column; }
    @media (min-width: 768px) {
      .header-dropdown__cta {
        width: 35%;
        flex: 0 0 35%;
        order: -1; } }
    .header-dropdown__cta:hover .header-dropdown__cta-text {
      background-color: #39443c; }
    .header-dropdown__cta:hover .header-dropdown__cta-arrow {
      transform: translateX(10px); }
  .header-dropdown__cta-image {
    padding-top: 80%;
    flex: 1; }
  .header-dropdown__cta-text {
    background-color: #506055;
    color: #FFFFFF;
    font-family: "DM Serif Display", serif;
    font-size: 24px;
    padding: 20px;
    transition: background-color 0.2s ease-in-out; }
    @media (min-width: 768px) {
      .header-dropdown__cta-text {
        font-size: 32px; } }
    @media (min-width: 1300px) {
      .header-dropdown__cta-text {
        padding: 40px 60px;
        font-size: 38px; } }
  .header-dropdown__cta-arrow {
    height: 2px;
    background-color: #FFFFFF;
    width: calc(100% + 20px);
    margin: 20px 0;
    margin-left: -20px;
    transition: transform 0.2s ease-in-out;
    position: relative; }
    @media (min-width: 768px) {
      .header-dropdown__cta-arrow {
        margin-left: -70px;
        width: calc(100% + 60px); } }
    .header-dropdown__cta-arrow:after {
      content: '';
      background-image: url("/wp-content/themes/forefrontweb/build/9e9fec78cbbadef568fbd234eee90d74.svg");
      background-size: 12px 12px;
      background-repeat: no-repeat;
      background-position: center center;
      width: 12px;
      height: 12px;
      right: -4px;
      top: -5px;
      position: absolute; }
  .header-dropdown--open {
    transform: translateY(0);
    opacity: 1;
    visibility: visible; }
  .header-dropdown__close {
    background-image: url("/wp-content/themes/forefrontweb/build/d5fa6ef01474bbb13058b4f50b8e716d.svg");
    background-size: 48px 49px;
    background-repeat: no-repeat;
    background-position: center center;
    width: 48px;
    height: 49px;
    position: absolute;
    right: 10px;
    top: 10px;
    background-color: transparent; }
  .header-dropdown__menu-col {
    flex: 1;
    width: 100%; }
    @media (min-width: 768px) {
      .header-dropdown__menu-col {
        border-right: 1px solid #D0D0D0; } }
  .header-dropdown__parent-link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid #D0D0D0;
    color: #506055;
    font-size: 32px;
    padding: 20px;
    font-family: "DM Serif Display", serif; }
    @media (min-width: 768px) {
      .header-dropdown__parent-link {
        font-size: 48px;
        padding: 10px 60px; } }
    @media (min-width: 1300px) {
      .header-dropdown__parent-link {
        font-size: 54px; } }
    .header-dropdown__parent-link:hover, .header-dropdown__parent-link:focus {
      color: #506055;
      background-color: #D0D0D0; }
      .header-dropdown__parent-link:hover .header-dropdown__parent-arrow, .header-dropdown__parent-link:focus .header-dropdown__parent-arrow {
        transform: translateX(5px); }
  .header-dropdown__parent-arrow {
    height: 2px;
    background-color: #506055;
    width: 20%;
    margin-left: 20px;
    transition: transform 0.2s ease-in-out;
    position: relative; }
    .header-dropdown__parent-arrow:after {
      content: '';
      background-image: url("/wp-content/themes/forefrontweb/build/ce9ba9e734f42f4e9dd6472212042e68.svg");
      background-size: 12px 12px;
      background-repeat: no-repeat;
      background-position: center center;
      width: 12px;
      height: 12px;
      right: -4px;
      top: -5px;
      position: absolute; }
  .header-dropdown__menu {
    list-style-type: none;
    margin: 0;
    padding: 0; }
  .header-dropdown__menu-item {
    margin: 0;
    border-bottom: 1px solid #D0D0D0; }
    .header-dropdown__menu-item--active > a {
      color: #A5AFA7; }
  .header-dropdown__menu-link {
    font-size: 20px;
    color: #212121;
    font-family: "DM Serif Display", serif;
    display: block;
    padding: 10px 20px; }
    @media (min-width: 768px) {
      .header-dropdown__menu-link {
        padding: 10px 40px; } }
    @media (min-width: 1300px) {
      .header-dropdown__menu-link {
        padding: 10px 60px; } }
    .header-dropdown__menu-link:hover, .header-dropdown__menu-link:focus {
      background-color: #D0D0D0;
      color: #212121; }

body.admin-bar .site-header {
  top: 52px; }
  @media screen and (max-width: 782px) {
    body.admin-bar .site-header {
      top: 66px; } }

body.admin-bar .header-dropdown {
  top: 52px; }
  @media screen and (max-width: 782px) {
    body.admin-bar .header-dropdown {
      top: 66px; } }

@media screen and (max-width: 600px) {
  body.admin-bar #wpadminbar {
    position: fixed; } }

@media screen and (min-width: 1080px) {
  #masthead {
    background-color: #F8F7F6;
    padding: 30px 0; }
    #masthead.is-homepage {
      background-color: transparent; }
    #masthead.site-header--scrolled {
      background-color: #F8F7F6; }
  .primary-nav {
    background-color: transparent;
    z-index: 100; }
    .primary-nav > .primary-menu {
      border: none;
      box-shadow: none;
      background-color: transparent;
      display: flex;
      align-items: center;
      z-index: 100; }
      .primary-nav > .primary-menu > li {
        border-left: none;
        position: relative; }
        .primary-nav > .primary-menu > li:not(.primary-nav-search-container):before {
          content: '';
          max-height: 0;
          pointer-events: none;
          width: 30px;
          opacity: 0;
          position: absolute;
          bottom: 10px;
          left: 50%;
          transform: translateX(-50%);
          background-image: url("/wp-content/themes/forefrontweb/build/19494ed307102147a8c96e640182c848.svg");
          background-size: contain;
          background-repeat: no-repeat;
          background-position: center top;
          transition: all 0.3s; }
        .primary-nav > .primary-menu > li:hover {
          background-color: transparent; }
          .primary-nav > .primary-menu > li:hover:before {
            max-height: 6px;
            opacity: 1;
            height: 6px; }
          .primary-nav > .primary-menu > li:hover > a {
            background: none; }
        .primary-nav > .primary-menu > li > a {
          color: #5b5b5b;
          font-size: 14px;
          letter-spacing: 1px;
          text-transform: uppercase;
          font-weight: bold;
          padding: 15px;
          background-color: transparent;
          font-family: "Avenir", sans-serif;
          padding-bottom: 20px;
          padding-top: 20px;
          text-decoration: none; } }
        @media screen and (min-width: 1080px) and (max-width: 1080px) {
          .primary-nav > .primary-menu > li > a {
            padding: 10px 15px 10px 0; } }

@media screen and (min-width: 1080px) {
          .primary-nav > .primary-menu > li > a > .sub-arrow {
            display: none; }
        .primary-nav > .primary-menu > li > .sub-menu {
          transition: all 0.3s ease-in-out 0s;
          z-index: 100;
          background-color: #F8F7F6;
          border: none;
          box-shadow: 0 2px 20px rgba(0, 0, 0, 0.1);
          top: unset !important;
          bottom: 0 !important;
          left: 50% !important;
          transform: translate(-50%, 100%); }
          .primary-nav > .primary-menu > li > .sub-menu > li {
            border: none;
            border-bottom: 1px solid #D0D0D0; }
            .primary-nav > .primary-menu > li > .sub-menu > li.menu-item-has-children.show-submenu > .sub-menu {
              padding-bottom: 11px !important;
              max-height: 300px !important;
              opacity: 1;
              z-index: 150;
              pointer-events: all !important;
              transition: all 0.3s; }
              .primary-nav > .primary-menu > li > .sub-menu > li.menu-item-has-children.show-submenu > .sub-menu > li {
                max-height: 70px !important; }
                .primary-nav > .primary-menu > li > .sub-menu > li.menu-item-has-children.show-submenu > .sub-menu > li > a {
                  max-height: 70px !important;
                  padding: 7px 15px !important;
                  text-decoration: none; }
            .primary-nav > .primary-menu > li > .sub-menu > li.menu-item-has-children.show-submenu .sub-arrow:before {
              transform: rotate(270deg); }
            .primary-nav > .primary-menu > li > .sub-menu > li.menu-item-has-children > .sub-menu {
              position: relative !important;
              margin: 0 !important;
              display: block !important;
              background-color: transparent !important;
              border: none !important;
              box-shadow: none !important;
              width: 100% !important;
              padding-top: 0px !important;
              padding-bottom: 0px !important;
              max-height: 0px !important;
              opacity: 0;
              pointer-events: none !important;
              transition: opacity 0s, max-height 0.3s, padding-bottom 0.3s; }
              .primary-nav > .primary-menu > li > .sub-menu > li.menu-item-has-children > .sub-menu li {
                border: none !important;
                max-height: 0px !important; }
                .primary-nav > .primary-menu > li > .sub-menu > li.menu-item-has-children > .sub-menu li a {
                  padding: 0 15px !important;
                  font-size: 14px !important;
                  max-height: 0px !important;
                  text-decoration: none; }
            .primary-nav > .primary-menu > li > .sub-menu > li:last-of-type {
              border-bottom: none !important; }
            .primary-nav > .primary-menu > li > .sub-menu > li.current-menu-item > a {
              color: #A5AFA7 !important; }
            .primary-nav > .primary-menu > li > .sub-menu > li > a {
              color: #212121;
              font-size: 16px;
              font-weight: bold;
              padding: 15px;
              font-family: "DM Serif Display", serif;
              transition: all 0.3s ease-in-out;
              position: relative;
              text-decoration: none; } }
            @media screen and (min-width: 1080px) and (max-width: 1080px) {
              .primary-nav > .primary-menu > li > .sub-menu > li > a {
                display: flex !important;
                padding: 10px 15px 10px 0;
                align-items: center; } }

@media screen and (min-width: 1080px) {
              .primary-nav > .primary-menu > li > .sub-menu > li > a .sub-arrow {
                width: 20px;
                left: unset;
                top: 10px;
                bottom: 10px;
                right: 15px;
                display: flex;
                justify-content: center;
                align-items: center;
                background-color: #506055;
                height: unset;
                z-index: 102;
                margin-top: 0 !important; }
                .primary-nav > .primary-menu > li > .sub-menu > li > a .sub-arrow:before {
                  content: '';
                  background-image: url("/wp-content/themes/forefrontweb/build/9e9fec78cbbadef568fbd234eee90d74.svg");
                  height: 8px;
                  width: 8px;
                  background-size: contain;
                  background-repeat: no-repeat;
                  transform: rotate(90deg);
                  transition: all 0.3s; }
    .primary-nav-search {
      display: none;
      position: absolute;
      bottom: -3px;
      right: 0;
      transform: translateY(100%); }
      .primary-nav-search.search-active {
        display: block; }
      .primary-nav-search-container {
        position: relative; }
      .primary-nav-search-input {
        width: 200px;
        font-size: 18px;
        line-height: 24px;
        border-radius: 30px;
        border: 1px solid #506055;
        padding: 5px 15px; }
      .primary-nav-search-icon {
        margin-left: 20px;
        padding: 10px;
        transition: all 0.3s ease-in-out; }
        .primary-nav-search-icon:hover {
          background-color: #e2ded9;
          transition: all 0.3s ease-in-out; }
      .primary-nav-search-mobile {
        display: none !important; } }

@media screen and (max-width: 1080px) {
  #masthead {
    background-color: #F8F7F6; }
  .primary-nav {
    display: none;
    position: absolute;
    left: -20px;
    right: -20px;
    background-color: #F8F7F6;
    bottom: 0;
    transform: translateY(100%);
    box-shadow: 0 20px 10px -15px rgba(0, 0, 0, 0.1); }
    .primary-nav > .primary-menu {
      background-color: #F8F7F6;
      border: none;
      box-shadow: none; }
      .primary-nav > .primary-menu > li {
        border-top: 0; }
        .primary-nav > .primary-menu > li > a {
          color: #5b5b5b;
          font-size: 14px;
          letter-spacing: 1px;
          text-transform: uppercase;
          font-weight: bold;
          padding: 15px; }
        .primary-nav > .primary-menu > li > ul {
          padding-left: 15px;
          background-color: #F8F7F6; }
          .primary-nav > .primary-menu > li > ul > li {
            border: none; }
            .primary-nav > .primary-menu > li > ul > li > a {
              color: #212121;
              font-size: 16px;
              font-weight: bold;
              padding: 10px 15px;
              font-family: "DM Serif Display", serif;
              transition: all 0.3s ease-in-out; }
      .primary-nav > .primary-menu > .primary-nav-search-container {
        display: none; }
  .sub-arrow {
    background-color: transparent !important;
    display: flex;
    justify-content: center;
    align-items: center; }
    .sub-arrow:before {
      content: '' !important;
      background-image: url("/wp-content/themes/forefrontweb/build/0ccb1c38e29753b3f19170d08ca89b4e.svg");
      height: 10px;
      width: 10px;
      background-size: contain;
      background-repeat: no-repeat;
      display: block;
      transition: all 0.3s; }
  a.highlighted .sub-arrow:before {
    content: '' !important;
    background-image: url("/wp-content/themes/forefrontweb/build/0ccb1c38e29753b3f19170d08ca89b4e.svg");
    height: 10px;
    width: 10px;
    background-size: contain;
    background-repeat: no-repeat;
    display: block;
    transform: rotate(180deg);
    transition: all 0.3s; } }

.current-menu-item > a {
  color: #B05730 !important; }

.posted-on .updated:not(.published) {
  display: none; }

.posts-archive {
  padding: 60px 0; }
  .posts-archive__heading {
    text-align: center; }
  .posts-archive__compact-wrap {
    padding: 20px; }

.single-wrap {
  position: relative;
  min-height: 700px; }

.single-container {
  padding: 60px 20px; }
  @media (min-width: 768px) {
    .single-container {
      padding: 100px 20px; } }

.single-post__header {
  margin-bottom: 30px; }

.single-post__title {
  font-size: 48px;
  margin-bottom: 10px; }
  @media screen and (max-width: 767px) {
    .single-post__title {
      font-size: 36px; } }

.single-post__meta {
  font-weight: 500;
  font-size: 24px;
  letter-spacing: 2.7px;
  color: #A5AFA7; }

.single-post__back {
  border-top: 1px solid #D0D0D0;
  border-bottom: 1px solid #D0D0D0;
  padding: 20px;
  display: block;
  color: #506055;
  text-align: center;
  margin-top: 30px; }
  .single-post__back:hover {
    background-color: #F8F7F6; }

.single-post__author-box {
  background-color: #FFFFFF;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  border-radius: 10px;
  margin-top: 30px; }
  @media (min-width: 768px) {
    .single-post__author-box {
      display: flex; } }
  @media (min-width: 1300px) {
    .single-post__author-box {
      border-top-left-radius: 0;
      border-bottom-left-radius: 0;
      display: block;
      margin-top: 0;
      position: absolute;
      top: 108px;
      left: -20px;
      width: calc((100vw - 960px) / 2);
      max-width: 300px; } }

.single-post__authorbox-section {
  border-bottom: 1px solid #D0D0D0;
  padding: 20px; }
  .single-post__authorbox-section--link {
    display: block;
    color: #7B7B7B; }
    .single-post__authorbox-section--link:hover {
      background-color: #F8F7F6;
      color: #7B7B7B; }
  @media (min-width: 768px) {
    .single-post__authorbox-section {
      border-bottom: none;
      border-right: 1px solid #D0D0D0;
      width: 50%;
      flex-shrink: 0; }
      .single-post__authorbox-section:last-child {
        border-right: none; } }
  @media (min-width: 1300px) {
    .single-post__authorbox-section {
      border-right: none;
      border-bottom: 1px solid #D0D0D0;
      width: 100%; }
      .single-post__authorbox-section:last-child {
        border-bottom: none; } }
  .single-post__authorbox-section:last-child {
    border-bottom: none; }

.single-post__headshot {
  background-color: #D0D0D0;
  width: 45px;
  height: 45px;
  border-radius: 50%;
  margin-bottom: 10px;
  background-position: top center; }

.single-post__name {
  color: #212121;
  font-weight: 500; }

.single-post__bio {
  margin-top: 10px;
  font-size: 14px; }

.single-post__categories-label {
  color: #212121;
  font-weight: 500;
  margin-bottom: 10px; }

.single-post__categories {
  list-style-type: none;
  margin: 0;
  padding: 0; }

.single-post__category {
  font-size: 14px; }

.compact-post {
  display: block;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  border-radius: 10px;
  background-color: #FFFFFF;
  padding: 20px;
  overflow: hidden; }
  .compact-post:hover {
    background-color: #F8F7F6; }
    @media (min-width: 768px) {
      .compact-post:hover .compact-post__arrow {
        margin-left: -30px; } }
  @media (min-width: 768px) {
    .compact-post {
      padding: 50px 30px; } }
  .compact-post--image {
    padding: 10px; }
    .compact-post--image .compact-post__inner {
      padding: 30px 10px; }
      @media (min-width: 768px) {
        .compact-post--image .compact-post__inner {
          padding: 30px 20px; } }
  .compact-post__image {
    border-radius: 10px;
    padding-top: 50%;
    background-color: #D0D0D0; }
  .compact-post__title {
    font-size: 28px;
    font-family: "DM Serif Display", serif;
    line-height: 31px;
    text-transform: none;
    letter-spacing: 0;
    color: #212121;
    margin-bottom: 10px; }
  .compact-post__date {
    color: #A5AFA7;
    font-size: 18px;
    font-weight: 500;
    letter-spacing: 2.02px;
    margin-bottom: 20px; }
  .compact-post__arrow {
    height: 2px;
    background-color: #506055;
    width: 50%;
    position: relative;
    margin-left: -20px;
    transition: margin-left 0.2s ease-in-out; }
    @media (min-width: 768px) {
      .compact-post__arrow {
        margin-left: -35px;
        width: 60%; } }
    .compact-post__arrow:after {
      content: '';
      background-image: url("/wp-content/themes/forefrontweb/build/ce9ba9e734f42f4e9dd6472212042e68.svg");
      background-size: 12px 12px;
      background-repeat: no-repeat;
      background-position: center center;
      width: 12px;
      height: 12px;
      right: -4px;
      top: -5px;
      position: absolute; }

.nav-links {
  border-top: 1px solid #7B7B7B; }
  @media (min-width: 768px) {
    .nav-links {
      display: flex;
      justify-content: space-between; } }
  .nav-links a {
    width: 100%;
    margin-top: 10px; }
    @media (min-width: 768px) {
      .nav-links a {
        width: auto; } }

.single-post-cta-container {
  margin-top: 50px;
  text-align: center;
  border: 1px solid rgba(30, 30, 30, 0.05);
  box-shadow: 0 2px 15px 0 rgba(0, 0, 0, 0.1);
  border-radius: 10px; }
  .single-post-cta-container .gform_required_legend {
    display: none; }

.single-post-cta-heading {
  background-color: #C68061;
  padding: 15px 20px;
  color: #FFFFFF;
  border-radius: 10px 10px 0 0; }

.single-post-cta-content {
  padding: 15px 20px; }

.single-post__featured-image {
  height: 100%;
  width: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 10px; }
  .single-post__featured-image--container {
    height: 500px;
    width: 100%;
    margin-bottom: 30px; }
    @media screen and (max-width: 991px) {
      .single-post__featured-image--container {
        height: 400px; } }
    @media screen and (max-width: 767px) {
      .single-post__featured-image--container {
        height: 350px; } }
    @media screen and (max-width: 450px) {
      .single-post__featured-image--container {
        height: 300px; } }

.newsletter-form {
  padding: 0 20px 20px; }
  .newsletter-form .gfield_label.gform-field-label {
    display: flex !important;
    text-align: left; }
    .newsletter-form .gfield_label.gform-field-label .gfield_required {
      color: #7B7B7B; }

.newsletter-form button {
  text-align: center;
  display: inline-block;
  transition: all 0.2s ease-in-out;
  padding: 9px 25px;
  color: #FFFFFF;
  background-color: #506055;
  border: 2px solid #506055;
  font-weight: 500;
  font-size: 18px;
  min-width: 200px;
  position: relative;
  margin-top: 20px; }
  .newsletter-form button:hover {
    cursor: pointer;
    background-color: #39443c;
    border-color: #39443c; }
  @media screen and (max-width: 450px) {
    .newsletter-form button {
      min-width: 0;
      width: 100%; } }

.accordion-shortcode__content {
  display: none;
  margin-bottom: 15px; }
  @media (min-width: 768px) {
    .accordion-shortcode__content {
      font-size: 18px; } }
  .accordion-shortcode__content p:empty {
    display: none; }

.accordion-shortcode__toggle {
  display: inline-block;
  width: 50px;
  height: 50px;
  background-image: url("/wp-content/themes/forefrontweb/build/9ab338ac6ea2adecb607e3c649e1083e.svg");
  background-size: 12px 12px;
  background-repeat: no-repeat;
  background-position: center center;
  transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out;
  cursor: pointer;
  border: 2px solid #506055;
  background-color: transparent;
  background-color: #506055;
  margin-right: 25px; }
  .accordion-shortcode__toggle--open {
    transform: rotate(180deg); }
  .accordion-shortcode__toggle:hover {
    background-color: #39443c;
    border-color: #39443c; }
  .accordion-shortcode__toggle--ghost {
    background-color: transparent;
    border-color: #506055;
    background-image: url("/wp-content/themes/forefrontweb/build/0ccb1c38e29753b3f19170d08ca89b4e.svg"); }
    .accordion-shortcode__toggle--ghost:hover {
      background-color: rgba(80, 96, 85, 0.1);
      border-color: #39443c; }

.triangles-shortcode {
  width: 43px;
  height: 7px;
  background-image: url("/wp-content/themes/forefrontweb/build/19494ed307102147a8c96e640182c848.svg");
  background-size: 43px 7px;
  background-position: center center;
  background-repeat: no-repeat;
  margin-bottom: 20px;
  position: relative; }
  .triangles-shortcode:last-child {
    margin-bottom: 0; }

.iconlink-shortcode {
  width: 50px;
  height: 50px;
  color: #FFFFFF;
  background-color: #000000;
  font-size: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%; }
  .iconlink-shortcode:hover, .iconlink-shortcode:focus {
    background-color: #C68061;
    color: #FFFFFF; }

.text-white .accordion-shortcode__toggle {
  background-color: #FFFFFF;
  border-color: #FFFFFF;
  background-image: url("/wp-content/themes/forefrontweb/build/0ccb1c38e29753b3f19170d08ca89b4e.svg"); }
  .text-white .accordion-shortcode__toggle:hover {
    background-color: #e6e6e6;
    border-color: #e6e6e6; }
  .text-white .accordion-shortcode__toggle--ghost {
    background-color: transparent;
    border-color: #FFFFFF;
    background-image: url("/wp-content/themes/forefrontweb/build/9ab338ac6ea2adecb607e3c649e1083e.svg"); }
    .text-white .accordion-shortcode__toggle--ghost:hover {
      border-color: #e6e6e6;
      background-color: rgba(255, 255, 255, 0.1); }

.text-white .triangles-shortcode {
  background-image: url("/wp-content/themes/forefrontweb/build/f08eca8770921e64c8a082df0fc7cfcc.svg"); }

.text-white .iconlink-shortcode {
  background-color: #FFFFFF;
  color: #C68061; }
  .text-white .iconlink-shortcode:hover, .text-white .iconlink-shortcode:focus {
    color: #b36441;
    background-color: #e6e6e6; }

.shortcard-container {
  border-radius: 15px;
  box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.1);
  overflow: hidden;
  margin-top: 40px;
  margin-bottom: 40px; }

.shortcard-heading {
  padding: 20px 40px;
  margin-top: 0 !important;
  margin-bottom: 0; }
  @media screen and (max-width: 767px) {
    .shortcard-heading {
      padding: 20px 30px; } }
  @media screen and (max-width: 450px) {
    .shortcard-heading {
      padding: 20px; } }
  .shortcard-heading.heading-light {
    color: white; }
  .shortcard-heading.heading-dark {
    color: #212121; }

.shortcard-content {
  padding: 20px 40px 30px;
  background-color: white; }
  @media screen and (max-width: 767px) {
    .shortcard-content {
      padding: 20px 30px 30px; } }
  @media screen and (max-width: 450px) {
    .shortcard-content {
      padding: 20px; } }
  .shortcard-content strong {
    color: #212121; }

.faqs-page {
  padding: 80px 0; }
  .faqs-page__filters {
    padding: 30px 25px;
    border-radius: 10px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    margin-bottom: 20px; }
    @media (min-width: 1300px) {
      .faqs-page__filters {
        margin-right: 50px; } }
    .faqs-page__filters .facetwp-facet {
      margin-bottom: 20px; }
      .faqs-page__filters .facetwp-facet:last-child {
        margin-bottom: 0; }
      .faqs-page__filters .facetwp-facet input.facetwp-search {
        border: 1px solid #7B7B7B;
        height: 50px;
        border-radius: 25px;
        padding-left: 20px;
        min-width: 0;
        transition: border-color 0.2s ease-in-out;
        width: 100%; }
        .faqs-page__filters .facetwp-facet input.facetwp-search:focus {
          outline: none;
          border-color: #C68061; }
      .faqs-page__filters .facetwp-facet .facetwp-input-wrap {
        width: 100%; }
      .faqs-page__filters .facetwp-facet .facetwp-icon {
        right: 15px; }
      .faqs-page__filters .facetwp-facet .facetwp-checkbox {
        margin-bottom: 10px; }
        .faqs-page__filters .facetwp-facet .facetwp-checkbox:last-child {
          margin-bottom: 0; }
  .faqs-page__filters-title {
    font-size: 28px; }
  .faqs-page__category {
    border-bottom: 1px solid #D0D0D0;
    padding-bottom: 60px;
    margin-bottom: 40px; }
  .faqs-page__faq {
    border: 1px solid #7B7B7B;
    margin-top: 20px;
    background-color: #FFFFFF;
    width: 100%;
    overflow: hidden; }
    .faqs-page__faq--open .faqs-page__faq-title {
      background-color: #F8F7F6; }
      .faqs-page__faq--open .faqs-page__faq-title:after {
        transform: rotate(180deg); }
  .faqs-page__faq-title {
    padding: 10px 20px;
    cursor: pointer;
    font-size: 18px;
    letter-spacing: 0.5px;
    border-right: 43px solid #506055;
    transition: all 0.2s ease-in-out;
    margin-bottom: 0;
    position: relative;
    color: #212121;
    text-transform: none;
    font-weight: 100; }
    .faqs-page__faq-title:hover {
      background-color: #F8F7F6;
      border-color: #39443c; }
    .faqs-page__faq-title:after {
      content: '';
      background-image: url("/wp-content/themes/forefrontweb/build/9ab338ac6ea2adecb607e3c649e1083e.svg");
      background-size: 12px 12px;
      background-repeat: no-repeat;
      background-position: center center;
      width: 43px;
      position: absolute;
      right: -43px;
      top: 0;
      bottom: 0; }
  .faqs-page__faq-content {
    display: none;
    padding: 20px; }
  .faqs-page__all-link {
    text-align: center;
    color: #506055;
    display: block;
    margin-top: 20px;
    padding: 15px 20px;
    border-radius: 10px;
    margin-bottom: -20px; }
    .faqs-page__all-link:hover {
      background-color: rgba(80, 96, 85, 0.1);
      color: #506055; }
  .faqs-page__cta-content {
    border-radius: 10px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    padding: 20px; }
    @media (min-width: 768px) {
      .faqs-page__cta-content {
        width: 60%;
        padding: 30px; } }
    @media (min-width: 992px) {
      .faqs-page__cta-content {
        padding: 30px 40px; } }
    @media (min-width: 1300px) {
      .faqs-page__cta-content {
        padding: 30px 60px; } }
  @media (min-width: 768px) {
    .faqs-page__cta {
      display: flex;
      align-items: center; } }
  .faqs-page__cta-button {
    margin-top: 20px;
    text-transform: uppercase;
    color: #A5AFA7;
    letter-spacing: 0.1125em;
    display: flex;
    align-items: center;
    justify-content: space-between; }
    .faqs-page__cta-button:after {
      content: '';
      background-image: url("/wp-content/themes/forefrontweb/build/104f5e0c7b4c2e8102460558d563c4b0.svg");
      background-size: 47px 13px;
      background-repeat: no-repeat;
      background-position: center center;
      width: 47px;
      height: 13px;
      margin-left: 20px;
      flex-shrink: 0; }
    @media (min-width: 768px) {
      .faqs-page__cta-button {
        font-size: 24px;
        padding: 30px 20px;
        min-width: 0;
        margin-top: 0;
        width: 40%; } }

.ourwork-page {
  padding: 80px 0;
  margin: 0 -10px; }
  .ourwork-page__filters {
    border-radius: 10px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    height: 100%; }
    .ourwork-page__filters .facetwp-facet {
      margin-bottom: 0; }
      .ourwork-page__filters .facetwp-facet .facetwp-checkbox {
        margin-bottom: 0;
        padding: 10px 20px;
        border-top: 1px solid #D0D0D0;
        padding-left: 40px;
        background-position: 20px 50%; }
        @media (min-width: 768px) {
          .ourwork-page__filters .facetwp-facet .facetwp-checkbox {
            padding: 13px 30px;
            padding-left: 50px;
            background-position: 30px 50%; } }
        @media (min-width: 992px) {
          .ourwork-page__filters .facetwp-facet .facetwp-checkbox {
            padding: 13px 40px;
            padding-left: 60px;
            background-position: 40px 50%; } }
  .ourwork-page__filters-title {
    font-size: 28px;
    padding: 20px;
    margin-bottom: 0; }
    @media (min-width: 768px) {
      .ourwork-page__filters-title {
        padding: 30px; } }
    @media (min-width: 992px) {
      .ourwork-page__filters-title {
        padding: 30px 40px; } }
  .ourwork-page__col {
    padding: 10px; }

.portfolioitem-compactsimple {
  display: block;
  position: relative;
  padding-top: 120%;
  border-radius: 10px;
  background-color: #D0D0D0;
  overflow: hidden; }
  .portfolioitem-compactsimple:hover:after {
    opacity: 0.2; }
  .portfolioitem-compactsimple:hover .portfolioitem-compactsimple__title {
    transform: translateY(-10px); }
  .portfolioitem-compactsimple:after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    background-color: #000000;
    opacity: 0;
    transition: opacity 0.2s ease-in-out; }
  .portfolioitem-compactsimple:before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 50%;
    background: linear-gradient(180deg, transparent 0%, #000000 100%); }
  .portfolioitem-compactsimple__title {
    position: absolute;
    left: 20px;
    bottom: 20px;
    right: 20px;
    color: #FFFFFF;
    font-weight: 900;
    font-size: 20px;
    line-height: 23px;
    z-index: 1;
    transition: transform 0.2s ease-in-out; }

.portfolioitem-compact {
  padding-top: 138%;
  position: relative;
  border-radius: 10px;
  overflow: hidden;
  background-color: #D0D0D0;
  display: block; }
  .portfolioitem-compact:hover .portfolioitem-compact__image {
    filter: none; }
  .portfolioitem-compact:hover .portfolioitem-compact__triangle:after {
    border-right-color: #39443c; }
  .portfolioitem-compact__image {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    filter: grayscale(100%);
    transition: filter 0.2s ease-in-out; }
  .portfolioitem-compact__triangle {
    width: 0;
    height: 0;
    padding-top: 80%;
    padding-right: 80%;
    overflow: hidden;
    position: absolute;
    bottom: 0;
    right: 0; }
    .portfolioitem-compact__triangle:after {
      content: '';
      display: block;
      width: 0;
      height: 0;
      margin-top: -500px;
      margin-right: -500px;
      border-top: 500px solid transparent;
      border-bottom: 500px solid transparent;
      border-right: 500px solid #506055;
      transition: border-color 0.2s ease-in-out; }
  .portfolioitem-compact__logo {
    position: absolute;
    right: 20px;
    bottom: 20px;
    width: 45%;
    height: 20%;
    background-position: bottom right; }

.portfolioitem-single {
  padding: 80px 0; }
  .portfolioitem-single__content-col {
    margin-bottom: 20px; }
    @media (min-width: 768px) {
      .portfolioitem-single__content-col {
        margin-bottom: 0; } }
  .portfolioitem-single__look {
    display: block;
    border-radius: 10px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    transition: background-color 0.2s ease-in-out;
    text-decoration: none; }
    .portfolioitem-single__look:hover {
      background-color: #F8F7F6; }
      .portfolioitem-single__look:hover .portfolioitem-single__look-triangle:after {
        border-left-color: #39443c; }
  .portfolioitem-single__look-image {
    position: relative;
    padding-top: 50%;
    background-color: #D0D0D0; }
  .portfolioitem-single__look-triangle {
    width: 0;
    height: 0;
    padding-top: 40%;
    padding-left: 40%;
    overflow: hidden;
    position: absolute;
    bottom: 0;
    left: 0; }
    .portfolioitem-single__look-triangle:after {
      content: '';
      display: block;
      width: 0;
      height: 0;
      margin-top: -500px;
      margin-left: -500px;
      border-top: 500px solid transparent;
      border-bottom: 500px solid transparent;
      border-left: 500px solid #506055;
      transition: border-color 0.2s ease-in-out; }
  .portfolioitem-single__look-logo {
    position: absolute;
    left: 20px;
    bottom: 20px;
    width: 25%;
    height: 40%;
    background-position: bottom right; }
  .portfolioitem-single__look-textwrap {
    display: flex;
    align-items: center;
    padding: 20px; }
  .portfolioitem-single__look-text {
    color: #506055;
    font-size: 38px;
    margin-bottom: 0; }
  .portfolioitem-single__look-arrow {
    height: 2px;
    background-color: #A5AFA7;
    flex: 1;
    position: relative;
    margin-left: 15px;
    margin-right: 5px; }
    .portfolioitem-single__look-arrow:after {
      content: '';
      background-image: url("/wp-content/themes/forefrontweb/build/ce9ba9e734f42f4e9dd6472212042e68.svg");
      background-size: 12px 12px;
      width: 12px;
      height: 12px;
      background-position: center center;
      background-repeat: no-repeat;
      position: absolute;
      right: -5px;
      top: -5px; }

.author-page {
  padding: 80px 0; }
  @media (min-width: 768px) {
    .author-page {
      overflow: hidden; } }
  @media (min-width: 768px) {
    .author-page__photo-col {
      order: 2; } }
  .author-page__photo-wrap {
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    border-radius: 10px;
    margin-bottom: 20px; }
    @media (min-width: 768px) {
      .author-page__photo-wrap {
        margin-bottom: 0; } }
  .author-page__photo {
    background-color: #D0D0D0;
    padding-top: 108%;
    background-position: top center; }
  .author-page__fun-fact {
    padding: 20px; }
    @media (min-width: 768px) {
      .author-page__fun-fact {
        display: flex;
        align-items: center; } }
    @media (min-width: 992px) {
      .author-page__fun-fact {
        padding: 20px 30px; } }
    @media (min-width: 1300px) {
      .author-page__fun-fact {
        padding: 20px 35px; } }
  .author-page__fact-title {
    font-size: 38px;
    margin-bottom: 10px; }
    @media (min-width: 768px) {
      .author-page__fact-title {
        margin-bottom: 0;
        margin-right: 15px;
        width: 30%; } }
  @media (min-width: 768px) {
    .author-page__fact {
      width: 70%; } }
  @media (min-width: 1300px) {
    .author-page__bio-col {
      padding-right: 70px; } }
  .author-page__bio-col h3 {
    font-size: 28px; }
  .author-page__name {
    margin-bottom: 10px; }
  .author-page__position {
    color: #A5AFA7; }
  .author-page__back-button {
    margin-top: 30px; }
  .author-page__posts {
    margin-top: 80px; }
  .author-page__posts-titlebox {
    background-color: #A5AFA7;
    padding: 20px;
    position: relative;
    margin-bottom: 20px; }
    @media (min-width: 768px) {
      .author-page__posts-titlebox {
        background-color: none;
        padding: 50px 30px;
        margin-bottom: 0; } }
    @media (min-width: 1300px) {
      .author-page__posts-titlebox {
        padding: 50px 0; }
        .author-page__posts-titlebox:before {
          content: '';
          position: absolute;
          left: calc(-1 * (100vw - 1260px) / 2);
          right: -100px;
          top: 0;
          bottom: 0;
          background-color: #A5AFA7; } }
  .author-page__posts-title {
    position: relative; }
  .author-page__posts-col {
    padding: 0 25px; }
    @media (min-width: 1300px) {
      .author-page__posts-col {
        padding-top: 75px; } }
  .author-page__post-col {
    padding: 15px; }

.quote-shortcode {
  background-color: #A5AFA7;
  width: 100%;
  padding: 25px 50px;
  text-transform: uppercase;
  color: #FFFFFF;
  font-size: 24px;
  text-align: center;
  letter-spacing: 2px;
  font-weight: 500;
  line-height: 1.4; }
  @media screen and (max-width: 400px) {
    .quote-shortcode {
      font-size: 20px;
      letter-spacing: 1px;
      padding: 40px 25px; } }

.single-faq__container {
  padding-top: 75px;
  padding-bottom: 75px; }
  .single-faq__container--inner {
    max-width: 900px;
    margin: 0 auto; }
    @media screen and (max-width: 930px) {
      .single-faq__container--inner {
        margin: 0 15px; } }

.single-faq__title {
  margin-bottom: 40px; }

@media (min-width: 768px) {
  .single-post.post h1,
  .single-post.post h2,
  .single-post.post h3,
  .single-post.post h4,
  .single-post.post h5,
  .single-post.post h6 {
    line-height: 1.05; }
  .single-post.post h1 {
    font-size: 58px; }
  .single-post.post h2 {
    font-size: 48px; }
  .single-post.post h3 {
    font-size: 36px; }
  .single-post.post h4 {
    font-size: 24px; }
  .single-post.post h5 {
    font-size: 22px; }
  .single-post.post h6 {
    font-size: 18px; } }

@media (max-width: 768px) {
  .single-post.post h1 {
    font-size: 48px; }
  .single-post.post h2 {
    font-size: 42px; }
  .single-post.post h3 {
    font-size: 36px; }
  .single-post.post h4 {
    font-size: 24px; }
  .single-post.post h5 {
    font-size: 22px; }
  .single-post.post h6 {
    font-size: 18px; } }

.single-post__content h2, .single-post__content h3, .single-post__content h4, .single-post__content h5, .single-post__content h6 {
  margin-top: 40px; }


/*# sourceMappingURL=main.c95bb033299f4c692591.css.map*/
/* forecheez: /wp-content/plugins/instagram-feed-pro/css/sbi-quickscroll.css */
/**
 * Swipe View — Reels Viewer (SMASH-1851 / SMASH-1978 / SMASH-1979)
 *
 * Restyled 2026-09-08 to Aman's FINAL reference build (HEAD 0334f13), per the
 * decision log at local-notes/swipe-view-launch/aman-final-porting-decisions-2026-09-08.md.
 * Rule ids in comments below (1.1, IG-4, …) are that log's.
 *
 * ── Viewport-unit convention (team feedback 2026-08-24, UNCHANGED) ─────────
 * EVERY viewport-height value in this file is declared TWICE, `vh` first and
 * `dvh` second. `100vh` is the LARGE viewport — it deliberately excludes mobile
 * browsers' collapsible toolbars from its measurement, so on a phone the viewer
 * sized itself taller than the visible area and the bottom-right rail rendered
 * underneath the browser chrome (the reported clipping). `100dvh` tracks the
 * viewport as the toolbars come and go, which is what "full screen" has to mean
 * here.
 *
 * The two-declaration order is the whole mechanism, not styling: a browser that
 * doesn't parse `dvh` discards the second declaration and keeps the `vh` value,
 * and one that does parse it takes the later declaration per the cascade. Never
 * collapse a pair into just the dvh line, and never reverse the order. Rule 1.1
 * of the porting log is explicit that the reference's bare `100dvh` is NOT
 * ported: we keep this pair convention, and a test guards it.
 *
 * The JS side is coupled to this: goToIndex() translates the track by one
 * viewport height per slide and uses the SAME vh-then-dvh assignment pair (see
 * its comment). A unit mismatch between the two files desyncs the track from the
 * slides progressively — slide N lands N * (100vh - 100dvh) off.
 *
 * ── Capability-query convention (rule 1.2) ─────────────────────────────────
 * The desktop-vs-touch switch is INPUT CAPABILITY, never viewport width. The
 * reference expresses it as ten `max-width: 768px` branches; every one of them
 * is really "does this pointer hover" — chevrons and tooltips need a mouse, the
 * in-frame rail and the rail-mounted CTA are touch layouts. So:
 *
 *   BASE rules in this file are the TOUCH layout (full-bleed frame, no rail
 *   column, no chevrons, no tooltips, CTA in the rail).
 *   `@media (hover: hover) and (pointer: fine)` at the END of the file adds the
 *   DESKTOP layout (framed 9:16 stage, rail column beside it, chevrons,
 *   tooltips, CTA pill in the top row).
 *
 * ZERO width media queries ship from this file, and no `dvh` value appears
 * without its `vh` partner. tests/js/swipe-css-conventions.test.js fails the
 * build on either.
 *
 * ── @media placement is load-bearing, not tidiness ────────────────────────
 * Every @media block lives BELOW every top-level rule. The geometry suites read
 * the stylesheet as `stripCssComments(css).split('@media')[0]`, so a mid-file
 * @media block silently truncates their view of the file and every rule after it
 * reads as missing. (Recorded in the survey's harness-blind-spot table; it has
 * bitten three times.) Narrow-viewport overrides fold into the existing blocks.
 */

/* ── Body lock ───────────────────────────────────────────────────────────── */
.sbi-qs-scroll-locked {
	overflow: hidden !important;
	height: 100vh;
	height: 100dvh;
}

/* ── Overlay root ────────────────────────────────────────────────────────── *
 * Rule 1.13 — the BACKDROP. Base (touch) is opaque with no blur: a blurred
 * backdrop on a full-bleed viewer paints nothing but itself, and the filter
 * costs a compositor pass on the least capable hardware. The desktop block
 * below swaps in the reference's translucent-plus-blur treatment, where the host
 * page staying faintly visible is Aman's stated intent.
 *
 * Rule 1.15 — TYPE SCALE without the webfont. The reference loads Inter
 * Variable from rsms.me; a third-party font request from a WP plugin is a new
 * external dependency (and self-hosting is a new bundled asset), so neither
 * ships. `Inter, InterVariable` lead the stack so the design's own face is used
 * wherever the host site already serves it, and the system stack carries the
 * rest. `liga`/`calt` on, matching the reference. Deliberately does NOT inherit
 * the host theme's font — the viewer is a self-contained surface.
 */
.sbi-qs-overlay {
	position: fixed;
	inset: 0;
	background: #000;
	z-index: 999999;
	display: none;
	overflow: hidden;
	color: #fff;
	color-scheme: dark;
	font-family: Inter, InterVariable, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;
	font-feature-settings: 'liga' 1, 'calt' 1;
	-webkit-font-smoothing: antialiased;
	-webkit-tap-highlight-color: transparent;
	user-select: none;
	/* Viewer root fades in over 180ms (rule 1.13). Fade-IN only: close() tears
	 * the DOM down synchronously so focus restoration, the scroll-lock release
	 * and the analytics flush all stay on one tick. A fade-OUT would have to
	 * defer teardown behind a timer, which is a new failure mode (an interrupted
	 * close leaving the body locked) for 180ms of polish on the way out. */
	opacity: 0;
	transition: opacity 180ms ease;

	/* ── Geometry tokens ────────────────────────────────────────────────────
	 * Base values are the TOUCH layout: full-bleed frame, square corners, no
	 * rail column reserved beside the stage. The desktop block at the end of
	 * this file overrides all four.
	 *
	 * --sbi-qs-frame-shift is HALF the horizontal space the rail column plus
	 * the stage gap occupy. Rule 1.1 centres the frame and the rail column
	 * TOGETHER, not the frame alone, so the frame's centre sits that far left of
	 * the window's centre. Holding it as one token is what keeps the frame, the
	 * session-level frame chrome, the rail column and the chevrons agreeing:
	 * five rules derive from it and none of them repeats the arithmetic. */
	--sbi-qs-stage-radius: 0px;
	--sbi-qs-rail-w: 0px;
	--sbi-qs-stage-gap: 0px;
	--sbi-qs-frame-shift: 0px;
	/* ── Stage-relative anchoring (unchanged mechanism, new formula) ─────────
	 * Half the PAINTED frame's width. This is what lets overlay-level chrome
	 * anchor to the FRAME's edges rather than the WINDOW's:
	 *
	 *     right: calc(50% - var(--sbi-qs-frame-shift) - var(--sbi-qs-stage-half))
	 *
	 * is the frame's left inset — and, because the frame+gap+rail trio is
	 * centred, it is also the rail column's RIGHT inset. That symmetry is why
	 * the rail column and the chevrons can anchor off the same one expression.
	 *
	 * On touch the frame is full-bleed, so half of it is exactly 50vw and the
	 * min()/ratio clamp has nothing to clamp. The desktop block restores the
	 * continuous `min()` form — rule 1.2's clamp-not-breakpoint requirement, and
	 * the reason a real iPhone SE (320x568, a quarter pixel above 9/16) can't
	 * fall off a threshold. The 9/16 ratio there MUST stay the same ratio
	 * .sbi-qs-media sizes with; a test asserts every occurrence agrees. */
	--sbi-qs-stage-half: 50vw;
	/* Expanded-caption cap (rule IG-5). See .sbi-qs-caption-text. */
	--sbi-qs-caption-cap: calc(18.2px * 12);
}
.sbi-qs-overlay.sbi-qs-active {
	display: block;
}
.sbi-qs-overlay.sbi-qs-visible {
	opacity: 1;
}
.sbi-qs-overlay:focus {
	outline: 0;
}

/* ── Close — window-anchored, TOP-LEFT (rule 1.4) ────────────────────────── *
 * MOVED from top-right (2026-09-08). Two things changed and both are the
 * design's: the corner, and the rest-state paint.
 *
 * Still window-anchored, and that reasoning is unchanged and still the right
 * one: close dismisses the VIEWER, a window-level object, so it belongs to the
 * window; mute and play/pause act on the VIDEO, so they belong to the frame.
 * Anchoring a control by what it acts on keeps deciding correctly as chrome is
 * added. What the reference changes is which corner — the frame's top-LEFT is
 * now deliberately empty (rule 1.5: no wordmark, no counter), so the window's
 * top-left is free and the frame's top-right belongs to mute + CTA.
 *
 * The 2026-08-18 bare-glyph decision is REVERSED here, deliberately rather than
 * by drift: rule 1.4 gives every circular control in this design one paint —
 * `rgba(255,255,255,.16)` at rest, `.28` on hover — and close, the chevrons and
 * the TikTok rail circles all share it. The reference's own mobile IG override
 * to `.14` is a specificity accident (spec §4.4 item 1, confirmed against his
 * "all circular buttons share one style" commit), so `.16` is used uniformly on
 * both viewports.
 *
 * 40x40 is the design's box and is BELOW the 44px convention this file uses
 * elsewhere. Recorded, not silently accepted: 40px clears WCAG 2.5.8 (24px) and
 * 2.5.5's AAA target is 44px, which this viewer's other controls meet. The
 * design's number wins per the authority split (visual design = Aman), and the
 * gap is one line in the change log rather than a silent 4px.
 */
.sbi-qs-close {
	/* ── The UA's form-control defaults, refused explicitly ──────────────────
	 * A <button> is not a normal element: the UA sets its own `font` shorthand
	 * (`400 13.3333px Arial` in Chrome) and its own `padding: 1px 6px`, and
	 * NEITHER inherits from the viewer. Measured on the live demo: every button
	 * in this viewer reported `font-family: Arial` while the overlay itself
	 * reported the design's `Inter, InterVariable, …` stack — so rule 1.6's
	 * "Tap to unmute" label and the rail's counts were rendering in Arial, at
	 * the design's sizes but not its face.
	 *
	 * `font: inherit` FIRST, so each rule's own explicit size/weight below still
	 * wins on source order. `padding: 0` because a glyph-only control's box is
	 * its tap target and the UA's 6px side padding silently shrinks the content
	 * area (a 40px close disc was laying out its 22px glyph in 28px of content
	 * box). `appearance: none` because iOS Safari otherwise paints its own
	 * control chrome over the disc.
	 *
	 * Deliberately repeated per rule rather than hoisted into a
	 * `.sbi-qs-overlay button` reset: that selector has HIGHER specificity
	 * (0,1,1) than the single-class rules here (0,1,0), so it would override the
	 * paddings those rules set on purpose — the mute chip's `0 7px`, the pill's
	 * `0 13px 0 11px`. Flat specificity is what keeps this predictable. */
	font: inherit;
	-webkit-appearance: none;
	appearance: none;
	padding: 0;
	position: absolute;
	top: 12px;
	top: max(12px, env(safe-area-inset-top, 0px));
	left: 12px;
	z-index: 6;
	box-sizing: border-box;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	border: 0;
	background: rgba(255, 255, 255, 0.16);
	color: #fff;
	cursor: pointer;
	/* Rex review (SMASH-1851): explicit, not relied-on-by-omission — every
	 * genuine control states its own pointer-events: auto so an "opt out by
	 * default" ancestor can't silently swallow it if a future change wraps
	 * these in a container. */
	pointer-events: auto;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background 150ms ease, transform 150ms ease;
}
.sbi-qs-close:hover,
.sbi-qs-close:focus-visible {
	background: rgba(255, 255, 255, 0.28);
	outline: 0;
}
.sbi-qs-close:active {
	transform: scale(0.94);
}
/* Kept even though the reference has no focus ring anywhere (spec §4.2's last
 * row names IG/TikTok anchors as the gap). Behaviour + a11y are ours where the
 * design is silent, and a keyboard user must be able to see where they are. */
.sbi-qs-close:focus-visible {
	box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.6);
}
.sbi-qs-close svg {
	width: 22px;
	height: 22px;
}
/* ── The 44px hit target, WITHOUT changing the design's 40px disc ─────────────
 * Same technique as .sbi-qs-caption-more's, and the same reason: the visible
 * box is the design's and is not negotiable, while the REACHABLE box is ours
 * and this file's convention is 44px. A positioned pseudo-element takes no part
 * in layout but is hit-tested, and a hit on it resolves to its originating
 * element — so elementFromPoint over this ring returns the button.
 *
 * 40 -> 44 is 2px on each side. Worth doing rather than waving through: 40px
 * clears WCAG 2.5.8 (24px, AA) but misses 2.5.5's 44px AAA target, and this
 * viewer's other controls meet it. Invisible either way, so there is no design
 * question to escalate — only a gap to close. */
.sbi-qs-close::before {
	content: '';
	position: absolute;
	inset: -2px;
	border-radius: 50%;
}

/* ── Viewport (clips the transforming track) ─────────────────────────────── *
 * Both z-index: 2 AND pointer-events: none are load-bearing here, not
 * decorative — see the note on .sbi-qs-gesture below for why the z-index fix
 * has to live here and not on a slide descendant.
 *
 * pointer-events: none is inherited by everything painted inside (track, post,
 * frame, media, per-slide chrome) UNLESS a rule targets that element
 * specifically. The genuine per-slide controls do exactly that — the author
 * link, the Follow pill, the more/less button, every rail item — and NOT via a
 * blanket `> *` rule, which is the defect Rex caught in review (see
 * .sbi-qs-bottom). Without the `none` here, .sbi-qs-viewport / .sbi-qs-track
 * themselves (bare containers with no click handler) become the hit-test result
 * for a tap anywhere on the video area, and tap-to-toggle-play silently stops
 * firing.
 */
.sbi-qs-viewport {
	position: absolute;
	inset: 0;
	overflow: hidden;
	z-index: 2;
	pointer-events: none;
}

.sbi-qs-track {
	position: relative;
	width: 100%;
	will-change: transform;
	transform: translate3d(0, 0, 0);
	pointer-events: none; /* Inherited from .sbi-qs-viewport anyway; explicit for clarity. */
	/* Transition is applied inline by the JS so the first positioning can skip animation. */
}

/* ── Individual post — the SLIDE, one viewport tall ──────────────────────── *
 * Full viewport height, and that is the track's arithmetic, not a visual
 * choice: goToIndex() translates by one viewport height per slide. The PAINTED
 * frame inside is shorter than this on desktop (rule 1.1's 8px margins) — the
 * slide is the scroll unit, the frame is the picture.
 */
.sbi-qs-post {
	position: relative;
	width: 100%;
	/* vh-then-dvh pair — see the viewport-unit convention at the top of this
	 * file. This is the rule the rail-clipping report was actually about: the
	 * slide, and therefore the chrome positioned against its bottom edge, used
	 * to extend below the visible viewport on a phone. */
	height: 100vh;
	height: 100dvh;
	overflow: hidden;
	pointer-events: none;
}

/* ── The FRAME (rule 1.1) ────────────────────────────────────────────────── *
 * Base = touch: full-bleed, square corners, no margins. `inset: 0` with no
 * width/height fills the slide.
 *
 * Desktop (see the capability block at the end of the file) = a 9:16 column of
 * height `viewport - 16px`, giving 8px top and bottom margins, centred TOGETHER
 * with the rail column. The centring mechanism is `margin: auto` against a
 * right inset that reserves the rail column plus the stage gap: the box then
 * centres inside `[0, 100vw - rail - gap]`, whose centre is exactly
 * `50vw - frame-shift`. No transform is involved, which matters — a transform
 * here would mint a stacking context, and this file's §6.3 history is about
 * exactly those.
 *
 * `isolation: isolate` is the reference's (and ours): it scopes the per-slide
 * chrome's paint order to the frame. It adds a stacking context INSIDE the
 * track, which is already inside one (the track's transform), so it cannot
 * affect the only comparison that decides pointer ownership — viewport z-index
 * vs gesture z-index, one level up. See .sbi-qs-gesture.
 *
 * `overflow: hidden` is the CLIP for the corner radius and for the per-slide
 * chrome, which NOW LIVES INSIDE THIS BOX (it used to hug the stage from
 * outside). Nothing in here needs to escape: the author row and the caption are
 * inset by their own padding, and the expanded caption is capped and scrolls
 * internally (rule IG-5) rather than growing past the frame — which is the very
 * defect spec §4.1 item 9 measured in the reference (a 2.5k-char caption
 * escaping the frame top by 463px and being silently clipped).
 */
.sbi-qs-media {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	margin: auto;
	background: #000;
	border-radius: var(--sbi-qs-stage-radius, 0px);
	overflow: hidden;
	isolation: isolate;
	pointer-events: none;
}

/* ── Letterbox backdrop (rule 1.14) ──────────────────────────────────────── *
 * Media WIDER than 9:16 x 1.04 letterboxes with `contain` over a blurred,
 * darkened blow-up of its own poster. Media TALLER than that is CROPPED with
 * `cover` and gets no backdrop — the reference's behaviour, carried as decided
 * (log rule 1.14, flagged to Aman as Q5).
 *
 * Instagram posters are absent on most cached rows, so the common IG case is
 * the plain black frame; the JS only sets this element up when a poster URL
 * actually survives the scheme check. Recorded because it makes the treatment
 * look unimplemented on a typical feed when it is simply not applicable.
 *
 * The URL reaches this element as an inline `background-image` set by the JS
 * through a dedicated CSS-url guard, never by string-building a stylesheet.
 */
.sbi-qs-backdrop {
	position: absolute;
	inset: -10%;
	background-position: center;
	background-size: cover;
	background-repeat: no-repeat;
	filter: blur(28px) brightness(0.55) saturate(1.2);
	transform: scale(1.1);
	pointer-events: none;
}

.sbi-qs-video,
.sbi-qs-poster,
.sbi-qs-embed {
	position: relative;
	width: 100%;
	height: 100%;
	pointer-events: none;
	/* The second half of the corner clip. `border-radius` alone is dropped on
	 * real GPUs once a composited video layer settles — the layer ignores the
	 * ancestor's clip — so the shape is ALSO stated as a `clip-path`, which
	 * composites. Both read the one variable, so there is still one value and
	 * one gate. Neither is redundant with the other; they fail in different
	 * directions, and at-rest corners stay an on-device verification step
	 * (SwiftShader/headless cannot reproduce the failure). */
	border-radius: var(--sbi-qs-stage-radius, 0px);
	clip-path: inset(0 round var(--sbi-qs-stage-radius, 0px));
}
.sbi-qs-video,
.sbi-qs-poster {
	/* Rule 1.14: `cover` is the DEFAULT (the taller-than-9:16 case, cropped);
	 * `[data-fit="contain"]` below switches the wider case to letterboxing.
	 * This inverts the previous always-`contain` treatment, which letterboxed
	 * every non-9:16 source inside a fixed frame.
	 *
	 * NO `background` here, and that is load-bearing rather than tidying. It
	 * used to be `#000`, which was right when the frame always letterboxed
	 * against black — but an `object-fit: contain` element still FILLS its box
	 * and paints its own background in the letterbox bands, so once rule 1.14
	 * put a blurred poster backdrop behind the media, that background covered
	 * it completely. Caught by the browser measurement pass on the live demo:
	 * every geometry and state probe passed, the backdrop was present,
	 * displayed, correctly filtered and correctly sized, and the bands still
	 * rendered plain black.
	 *
	 * The frame's own `background: #000` is what shows through instead — which
	 * is exactly the behaviour rule 1.14 asks for in the (common, on Instagram)
	 * no-poster case, since the backdrop is hidden then. One black, one owner. */
	object-fit: cover;
}
.sbi-qs-media[data-fit="contain"] .sbi-qs-video,
.sbi-qs-media[data-fit="contain"] .sbi-qs-poster {
	object-fit: contain;
}
.sbi-qs-embed {
	border: 0;
	background: #000;
}

/* ── Media host ──────────────────────────────────────────────────────────── *
 * The tier's own element (video / iframe / poster img) goes in here, and
 * instantiateTier() clears THIS node on every escalation. It exists so the
 * per-slide chrome — backdrop, scrim, bottom row, spinner, terminal tier — can
 * live inside the painted frame and survive a tier change. The previous
 * structure had the frame and the media host as one element, which is exactly
 * why the chrome had to sit outside the frame and hug it, and why the meta row
 * read wider than the video column.
 */
.sbi-qs-mediahost {
	position: absolute;
	inset: 0;
	pointer-events: none;
}

/* ── Buffering spinner (rule 1.19, spec §6.1's loading affordance) ───────── */
.sbi-qs-spinner {
	position: absolute;
	top: 50%;
	left: 50%;
	margin: -18px 0 0 -18px;
	box-sizing: border-box;
	width: 36px;
	height: 36px;
	border: 3px solid rgba(255, 255, 255, 0.25);
	border-top-color: #fff;
	border-radius: 50%;
	z-index: 2;
	pointer-events: none;
	opacity: 0;
	transition: opacity 200ms ease;
	animation: sbiQsSpin 0.8s linear infinite;
}
.sbi-qs-media[data-buffering="true"] .sbi-qs-spinner {
	opacity: 1;
}

/* ── Terminal tier (rule 1.19) ───────────────────────────────────────────── *
 * The poster stays visible under a scrim with one centred line and a route out.
 * The permanent top-row CTA (desktop) / rail "View" item (touch) is untouched
 * by the escalation — spec §6f forbids re-rendering or relocating it — so this
 * pill is an ADDITION on the dead tier, not that CTA moved.
 */
.sbi-qs-fail {
	position: absolute;
	inset: 0;
	z-index: 2;
	display: none;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 14px;
	background: rgba(0, 0, 0, 0.4);
	/* §6.3: the layer is inert and the pill opts back in. */
	pointer-events: none;
}
.sbi-qs-media[data-tier="terminal"] .sbi-qs-fail {
	display: flex;
}
/* Shown on BOTH viewports, unlike the top-row CTA it borrows its paint from: a
 * dead tier needs a visible route out even on touch, where the top pill is
 * hidden and the rail's "View" item is the CTA. */
.sbi-qs-media[data-tier="terminal"] .sbi-qs-fail-link {
	display: inline-flex;
	pointer-events: auto;
}
.sbi-qs-fail-text {
	font-size: 13px;
	color: rgba(255, 255, 255, 0.7);
}

/* ── Gesture-capture layer (§7.1: hidden from AT, not focusable) ─────────── *
 * SMASH-1851: this layer is a SIBLING of .sbi-qs-viewport (both are direct
 * children of .sbi-qs-overlay) — it is NOT nested inside the track, so a
 * z-index set on something inside the track never gets compared against this
 * element's z-index at all.
 *
 * .sbi-qs-track carries a live `transform` (the swipe animation, §3.2) and
 * therefore establishes its OWN stacking context (a non-none transform does
 * that per spec, independent of will-change). That traps every z-index inside
 * the track — a slide descendant's z-index only ever orders it against OTHER
 * elements inside that same trapped context, never against this gesture div.
 * The actual comparison that decides who wins a click is this element's z-index
 * vs .sbi-qs-viewport's, because those two are the ones that are actually
 * siblings. That is why .sbi-qs-viewport carries the real z-index: 2 (above
 * this element's 1) instead.
 *
 * With .sbi-qs-viewport on top, this div would swallow EVERY click inside the
 * track were it not for the pointer-events: none on .sbi-qs-post /
 * .sbi-qs-media / the media elements: those make the video area transparent to
 * the pointer so a tap still falls through here (tap-to-toggle keeps working
 * everywhere except the bits of chrome that explicitly opt back in).
 *
 * Carries NO tabindex, deliberately. It used to have tabindex="-1" to keep it
 * "out of the tab order", which was backwards: a <div> is not focusable to
 * begin with, so the attribute did not remove sequential focusability (there
 * was none) — it ADDED click and programmatic focusability, which is the one
 * thing an aria-hidden element must not have. Chrome then refused the
 * aria-hidden outright on any click landing here.
 */
.sbi-qs-gesture {
	position: absolute;
	inset: 0;
	z-index: 1;
	cursor: pointer;
}

/* ── Session-level frame chrome (the second consumer of the frame geometry) ─ *
 * An overlay-level box that reproduces the PAINTED FRAME's exact geometry, and
 * holds the chrome that is session-scoped rather than per-post: the top row
 * (mute + CTA), the progress bar, and the pause glyph.
 *
 * Why it exists, since the reference has no equivalent: in his build the top row
 * and the progress bar are per-slide children of each frame, which is free
 * because there is exactly one of each state to hold — his mute is a global
 * `state.muted` read by CSS. Ours cannot be per-slide: mute is one session-level
 * <button> (one accessible name, one focus stop, one disabled state driven by
 * the ACTIVE tier's capability), and N mute buttons would mean N focus stops in
 * the trap and N labels to keep in sync. The CTA pill is per-post data, but only
 * ever one post is active, so its href is refreshed on slide change — the same
 * thing updateChrome() already does for every other session control.
 *
 * Consequence to know: this chrome does NOT travel with a drag, while the rail
 * and the bottom row (both per-slide, inside the track) do. That matches the
 * ratified rule, which names the RAIL as the element that mirrors the drag
 * transform, and it matches the reference visually because his build has no JS
 * drag to reveal the difference.
 *
 * `overflow: hidden` + the radius are what let the 2px progress bar sit flush
 * on the frame's ROUNDED bottom edge: the bar is full frame width, so without
 * the clip its square ends would poke out past the corner curve. This is the
 * one job that could not be done by positioning alone.
 *
 * The geometry formula is stated in TWO places — here and .sbi-qs-media — and
 * that duplication is the cost of the split above.
 * tests/js/swipe-stage-geometry.test.js re-derives both from the file and fails
 * if they disagree, so the pair cannot drift silently.
 */
.sbi-qs-framechrome {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	margin: auto;
	z-index: 3;
	border-radius: var(--sbi-qs-stage-radius, 0px);
	overflow: hidden;
	/* §6.3: the container is inert; each genuine control opts back in. */
	pointer-events: none;
}

/* ── Top row inside the frame (rule 1.5) ─────────────────────────────────── *
 * `[blank left] … [mute][View on Instagram]`, right-aligned. The frame's
 * top-LEFT is deliberately EMPTY — the reference removed the Reels wordmark and
 * never added a counter there (rule 1.8), and the window close button now
 * occupies that corner of the WINDOW.
 *
 * Touch keeps a 62px left pad so the row's contents can never slide under that
 * window-anchored close button, which on a full-bleed frame overlaps this row.
 */
.sbi-qs-top {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	box-sizing: border-box;
	height: 48px;
	padding: 14px 10px 0 62px;
	padding-top: max(14px, env(safe-area-inset-top, 0px));
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
	/* Rule IG-1 — the only text-shadow in the design's IG skin, and it is here
	 * because the top row has NO scrim behind it (there is no top gradient).
	 * The bottom row gets its contrast from .sbi-qs-scrim instead. */
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
	pointer-events: none;
}

/* ── Mute button (rule 1.6 / spec §2.4) ──────────────────────────────────── *
 * MOVED from the bottom-right gutter to the frame's top-right (reversing the
 * 2026-08-28 placement), and completely restyled: this is the design's shared
 * unmute affordance, the single most-explained element in Aman's walkthrough.
 *
 * The state paint is the point, and it is inverted from every other control in
 * this file: MUTED is LOUD (solid white chip, dark glyph) and UNMUTED is QUIET
 * (dark translucent, white glyph). His commit message is literal about it —
 * "Mute chip is solid white whenever muted, dark translucent once unmuted" —
 * and it is why the chip carries NO shadow: it is deliberately flatter than the
 * scrim-shadowed text around it.
 *
 * The label slides OUT OF the button rather than appearing beside it, which is
 * what makes 34 -> 136 a single expanding box instead of two elements. The
 * transitions are the measured ones and they are deliberately asymmetric
 * (700ms for the geometry, 450ms for the colour, 350ms+50ms for the label's
 * opacity) — the label fades in behind a width that is still opening.
 *
 * WHEN the label shows is OURS, not his (rule 1.7): he opens muted
 * unconditionally, we keep §4.1's unmuted attempt, so the label becomes the
 * REFUSAL arm. The JS owns that gate; this file only paints the two states.
 */
.sbi-qs-mute {
	/* ── The UA's form-control defaults, refused explicitly ──────────────────
	 * A <button> is not a normal element: the UA sets its own `font` shorthand
	 * (`400 13.3333px Arial` in Chrome) and its own `padding: 1px 6px`, and
	 * NEITHER inherits from the viewer. Measured on the live demo: every button
	 * in this viewer reported `font-family: Arial` while the overlay itself
	 * reported the design's `Inter, InterVariable, …` stack — so rule 1.6's
	 * "Tap to unmute" label and the rail's counts were rendering in Arial, at
	 * the design's sizes but not its face.
	 *
	 * `font: inherit` FIRST, so each rule's own explicit size/weight below still
	 * wins on source order. `padding: 0` because a glyph-only control's box is
	 * its tap target and the UA's 6px side padding silently shrinks the content
	 * area (a 40px close disc was laying out its 22px glyph in 28px of content
	 * box). `appearance: none` because iOS Safari otherwise paints its own
	 * control chrome over the disc.
	 *
	 * Deliberately repeated per rule rather than hoisted into a
	 * `.sbi-qs-overlay button` reset: that selector has HIGHER specificity
	 * (0,1,1) than the single-class rules here (0,1,0), so it would override the
	 * paddings those rules set on purpose — the mute chip's `0 7px`, the pill's
	 * `0 13px 0 11px`. Flat specificity is what keeps this predictable. */
	font: inherit;
	-webkit-appearance: none;
	appearance: none;
	position: relative;   /* the ::before hit-target ring below */
	box-sizing: border-box;
	min-width: 34px;
	height: 34px;
	border: 0;
	border-radius: 17px;
	padding: 0 7px;
	background: #fff;
	color: #111;
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	/* Deliberate — reference commit 33f0e75 removes it from the chip and the
	 * glyph both. Stated rather than omitted so a future "add a shadow like the
	 * other controls" change has to argue with it. */
	box-shadow: none;
	text-shadow: none;
	cursor: pointer;
	pointer-events: auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	/* NO `overflow: hidden` here (MG-06). The ::before below is the 44px hit
	 * ring, absolutely positioned at `inset: -5px` — so it lies OUTSIDE this
	 * 34px chip's padding box, and clipping the box clipped the ring with it.
	 * The pseudo-element still computed as 44x44 with `pointer-events: auto`,
	 * which is why this read as working: nothing outside the chip was actually
	 * hit-testable, so an edge tap fell through to `.sbi-qs-gesture` and PAUSED
	 * the Reel instead of toggling sound — a misroute of exactly the kind §6.3
	 * exists to exclude, on the one control whose visual size is deliberately
	 * smaller than its target.
	 *
	 * Nothing here needs the clip: the sliding "Tap to unmute" label clips
	 * itself (`.sbi-qs-mute-label { max-width: 0; overflow: hidden }`), and the
	 * 20px glyph cannot overflow a 34px chip. `.sbi-qs-close` never had this
	 * bug because it does not clip — same ring pattern, `inset: -2px`. */
	white-space: nowrap;
	line-height: 1;
	transition: padding 700ms cubic-bezier(0.22, 1, 0.36, 1),
		background 450ms ease,
		color 450ms ease;
}
.sbi-qs-mute svg {
	width: 20px;
	height: 20px;
	flex: 0 0 auto;
	filter: none;
}
/* ── The 44px hit target for a 34px chip (see .sbi-qs-close::before) ─────────
 * 5px on each side takes the 34px resting chip to 44x44. The insets are
 * asymmetric in effect rather than in value: the chip GROWS to 136px wide while
 * hinting, so the horizontal 5px only ever matters at rest, where it is needed.
 *
 * The right-hand 5px reaches into the 8px gap between this and the CTA pill and
 * stops 3px short of it — and the pill's own expansion below is VERTICAL ONLY
 * for exactly that reason. Two controls whose grown hit boxes overlap would hand
 * the shared strip to whichever paints last, which is the kind of silent,
 * position-dependent misroute §6.3's history is made of. */
.sbi-qs-mute::before {
	content: '';
	position: absolute;
	inset: -5px;
	border-radius: 22px;
}
.sbi-qs-mute-label {
	max-width: 0;
	margin-left: 0;
	opacity: 0;
	transform: translateX(-6px);
	overflow: hidden;
	font-size: 13px;
	font-weight: 600;
	line-height: 13px;
	letter-spacing: -0.005em;
	white-space: nowrap;
	transition: max-width 700ms cubic-bezier(0.22, 1, 0.36, 1),
		margin 700ms cubic-bezier(0.22, 1, 0.36, 1),
		opacity 350ms ease 50ms,
		transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}
.sbi-qs-mute-hinting {
	padding: 0 12px 0 9px;
}
.sbi-qs-mute-hinting .sbi-qs-mute-label {
	max-width: 140px;
	margin-left: 6px;
	opacity: 1;
	transform: none;
}
/* Unmuted — the quiet state. Driven by an attribute rather than a class so the
 * paint can never disagree with what updateMuteChrome() computed as the REAL
 * state (rule 1.7a: the button always reflects reality, including "muted for a
 * reason the visitor didn't choose"). */
.sbi-qs-mute[data-state="on"] {
	background: rgba(0, 0, 0, 0.55);
	color: #fff;
}
.sbi-qs-mute[data-state="on"]:hover,
.sbi-qs-mute[data-state="on"]:focus-visible {
	background: rgba(0, 0, 0, 0.75);
}
.sbi-qs-mute[data-state="on"] .sbi-qs-mute-label {
	display: none;
}
.sbi-qs-mute:focus-visible {
	outline: 0;
	box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.6);
}
/* Rule 1.20 / §6.2: a control the tier cannot support is DISABLED, never
 * omitted. The reference omits the button when `hasAudio === false`, which
 * leaves `m` flipping a state with no control and no audible effect. */
.sbi-qs-mute:disabled {
	opacity: 0.35;
	cursor: default;
}

/* ── CTA pill "View on Instagram" (rule IG-6) ────────────────────────────── *
 * Desktop only, top-right beside mute. On touch it is `display: none` and the
 * CTA becomes a rail item instead — Aman states this migration explicitly for
 * all three platforms ("the view button on mobile moves at the bottom, the mute
 * stays up top").
 *
 * Replaces the left-aligned in-caption pill that used to sit in the bottom
 * chrome band (rule IG-7). Hidden by default because base = touch.
 */
.sbi-qs-view-on-ig,
.sbi-qs-fail-link {
	position: relative;   /* the ::before hit-target band below */
	display: none;
	box-sizing: border-box;
	align-items: center;
	gap: 7px;
	height: 34px;
	padding: 0 13px 0 11px;
	border-radius: 999px;
	background: rgba(0, 0, 0, 0.35);
	color: #fff;
	font-size: 13px;
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
	text-decoration: none;
	text-shadow: none;
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5));
	pointer-events: auto;
	flex: 0 0 auto;
	transition: background 150ms ease;
}
.sbi-qs-view-on-ig svg,
.sbi-qs-fail-link svg {
	width: 16px;
	height: 16px;
	flex: 0 0 auto;
}
/* VERTICAL ONLY — see .sbi-qs-mute::before for why. The pill is already 163px
 * wide, so height is the only axis that misses 44px. */
.sbi-qs-view-on-ig::before,
.sbi-qs-fail-link::before {
	content: '';
	position: absolute;
	top: -5px;
	right: 0;
	bottom: -5px;
	left: 0;
	border-radius: 999px;
}
.sbi-qs-view-on-ig:hover,
.sbi-qs-view-on-ig:focus-visible,
.sbi-qs-fail-link:hover,
.sbi-qs-fail-link:focus-visible {
	background: rgba(0, 0, 0, 0.55);
	color: #fff;
	text-decoration: none;
	outline: 0;
}
.sbi-qs-view-on-ig:focus-visible,
.sbi-qs-fail-link:focus-visible {
	box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.7);
}

/* ── Progress bar (rule 1.12) ────────────────────────────────────────────── *
 * MOVED from a full-bleed bar across the WINDOW's top edge to the bottom edge
 * INSIDE the frame, at the design's 2px (TikTok's is 3px, and its red fill goes
 * white on both). Sits inside .sbi-qs-framechrome so the frame's radius clips
 * the bar's square ends.
 *
 * scaleX rather than width is unchanged and is the whole reason the bar
 * interpolates smoothly between the 250ms samples §6.1 requires: a transform
 * animates on the compositor, a width relayouts.
 */
.sbi-qs-progress {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 2px;
	background: rgba(255, 255, 255, 0.28);
	overflow: hidden;
	/* A read-only readout with no click handler. Without this it would swallow
	 * taps landing in its band instead of letting them reach the gesture layer
	 * (spec §6.3's "non-interactive chrome MUST opt out too"). */
	pointer-events: none;
}
.sbi-qs-progress-fill {
	display: block;
	width: 100%;
	height: 100%;
	background: #fff;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 250ms linear;
}
/* Applied by setProgress() for ONE write, whenever the position moves backward
 * (a slide change, a loop wrap). Without it the fill ANIMATES back down over
 * 250ms, which reads as the bar rewinding — rule 1.12's "jump on nav" class.
 * The class is added, the value written, then the class removed on the next
 * frame, so only that single write is unanimated. */
.sbi-qs-progress-fill-jump {
	transition: none;
}

/* ── Pause glyph (rule 1.10) ─────────────────────────────────────────────── *
 * REPLACES the 600ms tap-flash. This is a play triangle shown for AS LONG AS
 * the slide is paused, not a transient echo of a tap — so the viewer always
 * shows whether it is playing, which is also what §6.1's "play/pause reflects
 * actual state" asks for on the visual channel (the sr-only live region carries
 * it on the AT channel).
 *
 * Deliberately NOT `inset: 0` + `place-items: center`, which is how the
 * reference does it. This is a shrink-wrapped, centre-anchored 84px box, so a
 * future pointer-events regression on this layer would expose an 84px disc
 * rather than the whole frame. Same reasoning the tap-flash it replaces was
 * built with, and this file's founding §6.3 defect is exactly that shape.
 *
 * The in-curve OVERSHOOTS (scale ~1.026 at 120ms) and the out-curve does not —
 * asymmetric on purpose per the walkthrough: "appearing is a statement,
 * disappearing gets out of the way."
 */
.sbi-qs-flash {
	position: absolute;
	top: 50%;
	left: 50%;
	margin: -42px 0 0 -42px;
	z-index: 4;
	/* Decorative echo of state the layer BELOW owns. Without this it would
	 * swallow the tap that toggles playback — an 84px dead disc dead centre of
	 * the frame, i.e. exactly where a visitor taps to resume. */
	pointer-events: none;
	display: none;
}
.sbi-qs-flash svg {
	box-sizing: border-box;
	width: 84px;
	height: 84px;
	padding: 22px;
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.4);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	color: #fff;
	will-change: transform, filter;
}
.sbi-qs-overlay[data-paused="true"] .sbi-qs-flash {
	display: block;
}
.sbi-qs-overlay[data-paused="true"] .sbi-qs-flash svg {
	animation: sbiQsFlashIn 200ms cubic-bezier(0.2, 0.9, 0.25, 1.15) both;
}
/* The dissolve. `.sbi-qs-flash-on` is left behind by the JS for one 100ms
 * window after unpausing, so the glyph can animate OUT rather than vanishing. */
.sbi-qs-overlay[data-paused="false"] .sbi-qs-flash-on {
	display: block;
}
.sbi-qs-overlay[data-paused="false"] .sbi-qs-flash-on svg {
	animation: sbiQsFlashOut 100ms cubic-bezier(0.4, 0, 0.6, 1) both;
}

/* ── Desktop up/down chevrons (rule 1.11) ────────────────────────────────── *
 * Row 2 of the rail column, vertically centred on the frame. The reference
 * builds the rail column as a `minmax(0,1fr) auto 1fr` grid (measured
 * 380/124/380 at an 884px frame) so the chevrons land on the frame's centre and
 * get pushed up if the action stack ever needs more than its half.
 *
 * Ours reproduces the RESULT without the grid, and the reason is that the two
 * rows have different owners: the action stack is per-POST (its counts change
 * per slide, and the ratified rule has it travelling with the drag) so it lives
 * inside the track, while the chevrons are session-level and cannot. Nothing can
 * be one grid across that boundary. Since the frame is vertically centred in the
 * viewport, "centred on the frame" is `top: 50%`, and the grid's row-growth
 * behaviour is unreachable at IG's rail height anyway (183px against a 380px
 * half). Recorded as a deviation with a measured equivalence rather than
 * silently.
 *
 * Anchored off the same one expression as the rail column: `50% - frame-shift -
 * stage-half` is the frame's LEFT inset and, because the trio is centred, also
 * the rail column's RIGHT inset.
 *
 * VISIBILITY is input capability, never width (rule 1.2): touch has swipe for
 * this already, and width is wrong in both directions — a narrow desktop window
 * still has a mouse, a large tablet still does not.
 *
 * Both directions are built unconditionally and DISABLED at the ends of the
 * track, rather than added and removed: a control that vanishes at the last
 * slide moves its sibling, and a disabled button keeps the cluster's geometry
 * stable while staying honest about what it can do (§6.2).
 */
.sbi-qs-nav {
	position: absolute;
	right: calc(50% - var(--sbi-qs-frame-shift) - var(--sbi-qs-stage-half));
	width: var(--sbi-qs-rail-w);
	top: 50%;
	transform: translateY(-50%);
	z-index: 5;
	/* Hidden by default (base = touch); the capability query at the end of this
	 * file switches it on. */
	display: none;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	/* §6.3: the CONTAINER is inert and the two buttons opt back in below. */
	pointer-events: none;
}
.sbi-qs-nav-prev,
.sbi-qs-nav-next {
	/* ── The UA's form-control defaults, refused explicitly ──────────────────
	 * A <button> is not a normal element: the UA sets its own `font` shorthand
	 * (`400 13.3333px Arial` in Chrome) and its own `padding: 1px 6px`, and
	 * NEITHER inherits from the viewer. Measured on the live demo: every button
	 * in this viewer reported `font-family: Arial` while the overlay itself
	 * reported the design's `Inter, InterVariable, …` stack — so rule 1.6's
	 * "Tap to unmute" label and the rail's counts were rendering in Arial, at
	 * the design's sizes but not its face.
	 *
	 * `font: inherit` FIRST, so each rule's own explicit size/weight below still
	 * wins on source order. `padding: 0` because a glyph-only control's box is
	 * its tap target and the UA's 6px side padding silently shrinks the content
	 * area (a 40px close disc was laying out its 22px glyph in 28px of content
	 * box). `appearance: none` because iOS Safari otherwise paints its own
	 * control chrome over the disc.
	 *
	 * Deliberately repeated per rule rather than hoisted into a
	 * `.sbi-qs-overlay button` reset: that selector has HIGHER specificity
	 * (0,1,1) than the single-class rules here (0,1,0), so it would override the
	 * paddings those rules set on purpose — the mute chip's `0 7px`, the pill's
	 * `0 13px 0 11px`. Flat specificity is what keeps this predictable. */
	font: inherit;
	-webkit-appearance: none;
	appearance: none;
	padding: 0;
	position: relative;
	box-sizing: border-box;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	border: 0;
	/* Rule 1.4's one circular-control paint, shared with close. */
	background: rgba(255, 255, 255, 0.16);
	color: #fff;
	cursor: pointer;
	pointer-events: auto;
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
	transition: background 150ms ease, transform 150ms ease, opacity 150ms ease;
}
.sbi-qs-nav-prev svg,
.sbi-qs-nav-next svg {
	width: 24px;
	height: 24px;
}
.sbi-qs-nav-prev:hover,
.sbi-qs-nav-next:hover,
.sbi-qs-nav-prev:focus-visible,
.sbi-qs-nav-next:focus-visible {
	background: rgba(255, 255, 255, 0.28);
	outline: 0;
}
.sbi-qs-nav-prev:active,
.sbi-qs-nav-next:active {
	transform: scale(0.94);
}
.sbi-qs-nav-prev:focus-visible,
.sbi-qs-nav-next:focus-visible {
	box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.6);
}
.sbi-qs-nav-prev:disabled,
.sbi-qs-nav-next:disabled {
	opacity: 0.3;
	cursor: default;
	transform: none;
}

/* ── Bottom scrim (rule IG-1) ────────────────────────────────────────────── *
 * 42% of the frame's height, inside the frame, under the bottom row. There is
 * deliberately NO top scrim: the top row carries its own text-shadow instead
 * (see .sbi-qs-top), because a second gradient up there would fight the
 * frame's clean top edge that removing the wordmark created.
 */
.sbi-qs-scrim {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 42%;
	z-index: 1;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.72), rgba(0, 0, 0, 0.28) 55%, rgba(0, 0, 0, 0) 100%);
	pointer-events: none;
}

/* ── Rail column (rule 1.3) ──────────────────────────────────────────────── *
 * Base = touch: an in-frame absolute overlay at the frame's bottom-right,
 * shrink-wrapped to its content (`right: 10px` is the design's IG inset).
 * Desktop (capability block) = a 44px-wide column OUTSIDE the frame, 16px to
 * its right, bottom-aligned with the frame.
 *
 * ── SESSION-LEVEL: one column, an overlay child (SMASH-1851) ───────────────
 * It used to be a child of `.sbi-qs-post` — one column per slide, inside the
 * track — which is how it got its travel for free: the track's transform
 * carried it. Measured on 6.13.0.6, that made the active rail sweep the FULL
 * SLIDE HEIGHT on every navigation (900px at 1440x900, 844px at 390x844) while
 * the top row and the chevrons held perfectly still. Asmita, 2026-09-10: "keep
 * them in place and update them without them going up and down with the video
 * (we do this with TikTok)."
 *
 * This does NOT reverse the rule ratified 2026-08-27 ("the rail travels with
 * the reel"). That rule is about the DRAG, where a pinned rail leaves reel N's
 * stats over reel N+1's incoming video for the whole gesture — and the drag
 * follow survives, now as an explicit transform (see `transition-property`
 * below and setRailTravel() in the JS) rather than as an inherited one. What
 * goes is travel on the COMMIT, which is exactly what TikTok does: its one rail
 * element takes the live drag delta and lands at rest in the same paint that
 * swaps its content (`chromeTravelStyle`, SwipeView.jsx).
 *
 * The RESTING GEOMETRY is unchanged by the move, and the reason is checkable
 * rather than hopeful: `.sbi-qs-post` is `height: 100vh/100dvh` and
 * `.sbi-qs-overlay` is `position: fixed; inset: 0`, so the old and the new
 * containing blocks are the same box and these insets resolve identically
 * against either. Measured at both viewports before and after — zero delta.
 *
 * The one thing the move inherits rather than fixes: on a phone the overlay's
 * `inset: 0` and the post's `100dvh` can disagree by the browser chrome's
 * height on engines where a fixed box resolves against the LARGE viewport. That
 * is the same reference `.sbi-qs-framechrome` (also session-level, also
 * `bottom: 0` against the overlay) has always used, so this introduces no new
 * risk class — but it does mean the rail's bottom clearance is one of the
 * things only a real device can settle. Flagged for the iPhone pass, not
 * papered over.
 *
 * Base = touch: an in-frame absolute overlay at the frame's bottom-right
 * (`right: 10px` is the design's IG inset). Desktop (capability block) = a 44px
 * column OUTSIDE the frame, 16px to its right, bottom-aligned with it. It could
 * not be a child of `.sbi-qs-framechrome` instead, which would otherwise be the
 * tidier home: that box carries `overflow: hidden` so the 2px progress bar can
 * sit flush on the frame's rounded bottom edge, and on desktop the rail is
 * outside the frame, so it would be clipped away entirely.
 *
 * z-index 5, up from the 2 it carried inside the post. Inside a slide it only
 * had to beat the gesture layer's 1 within the viewport's own stacking context;
 * at overlay level it is a sibling of `.sbi-qs-framechrome` (3) and shares its
 * visual column with `.sbi-qs-nav` (5), so it takes the chevrons' level. Below
 * close (6) and the coach overlay (9), which both deliberately paint over
 * everything.
 *
 * The 44px width is the reference's `.sc-railcol`; the action stack inside it
 * shrink-wraps to ~29px and centres, which is why his `.sc-rail` measures
 * 28.9px inside a 44px column.
 */
.sbi-qs-railcol {
	position: absolute;
	right: 10px;
	bottom: 0;
	z-index: 5;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: flex-end;
	/* Only the DURATION is written from JS (setRailTravel), so the easing and
	 * the property list stay declarative and in one place. `transform` alone,
	 * never `all`: the duration is toggled between 0ms and 320ms on every drag
	 * frame, and `all` would drag every other animatable property into that. */
	transition-property: transform;
	transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1);
	transition-duration: 0ms;
	/* §6.3: the column is inert; each rail item opts back in. */
	pointer-events: none;
}
/* An all-empty rail hides the COLUMN, not just its items — see updateRail().
 * `display: flex` above is an AUTHOR declaration and therefore beats `hidden`'s
 * UA rule, so without this the attribute would hide nothing at all. The column
 * must genuinely leave layout: its 18px of bottom padding is dead space for the
 * dismiss and tap-to-pause carve-outs, and a laid-out empty column would keep
 * carving a live region out of the backdrop for a post that has no rail. */
.sbi-qs-railcol[hidden] {
	display: none;
}
.sbi-qs-rail {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 20px;
	padding-bottom: 18px;
	padding-bottom: max(18px, var(--sbi-qs-safe-bottom, env(safe-area-inset-bottom, 0px)));
	pointer-events: none;
}

/* ── Rail items (rules IG-2, IG-3) ───────────────────────────────────────── *
 * BARE GLYPHS — no discs. Rule IG-2, and it is the one place the IG skin
 * departs from "all circular buttons share one style": TikTok's rail glyphs sit
 * in translucent circles, Instagram's do not, because Instagram's own Reels
 * player renders them bare. A drop-shadow does the contrast work a disc would
 * otherwise do.
 *
 * SEMANTICS differ per item and are NOT interchangeable (rule IG-3):
 *   like    — a READOUT, not a control. `<div role="img">` with an exact-figure
 *             label, `cursor: default`, and the hover transform suppressed.
 *             There is no logged-in visitor inside an embedded feed, so a heart
 *             styled like Instagram's tappable heart would promise something the
 *             UI cannot deliver.
 *   comment — a LINK to the post, where commenting genuinely works.
 *   share   — a real <button>: Web Share, then clipboard + toast, then a toast
 *             carrying the URL. The only genuine in-page action in the rail.
 *   view    — touch only; the desktop CTA pill's counterpart.
 *
 * Instagram exposes NO share count, so the share glyph carries none — and
 * "absent" is not "zero" anywhere in this cluster (a non-business account
 * reports no metrics at all).
 *
 * Each item is a shrink-wrapped column, NEVER a full-width flex child. That is
 * the ratified "never a full-width chrome strip" rule: a stretched item becomes
 * an opaque dead strip across the thumb zone that eats tap-to-pause and swipe
 * both — §6.3's fourth recurrence.
 */
.sbi-qs-act {
	/* ── The UA's form-control defaults, refused explicitly ──────────────────
	 * A <button> is not a normal element: the UA sets its own `font` shorthand
	 * (`400 13.3333px Arial` in Chrome) and its own `padding: 1px 6px`, and
	 * NEITHER inherits from the viewer. Measured on the live demo: every button
	 * in this viewer reported `font-family: Arial` while the overlay itself
	 * reported the design's `Inter, InterVariable, …` stack — so rule 1.6's
	 * "Tap to unmute" label and the rail's counts were rendering in Arial, at
	 * the design's sizes but not its face.
	 *
	 * `font: inherit` FIRST, so each rule's own explicit size/weight below still
	 * wins on source order. `padding: 0` because a glyph-only control's box is
	 * its tap target and the UA's 6px side padding silently shrinks the content
	 * area (a 40px close disc was laying out its 22px glyph in 28px of content
	 * box). `appearance: none` because iOS Safari otherwise paints its own
	 * control chrome over the disc.
	 *
	 * Deliberately repeated per rule rather than hoisted into a
	 * `.sbi-qs-overlay button` reset: that selector has HIGHER specificity
	 * (0,1,1) than the single-class rules here (0,1,0), so it would override the
	 * paddings those rules set on purpose — the mute chip's `0 7px`, the pill's
	 * `0 13px 0 11px`. Flat specificity is what keeps this predictable. */
	font: inherit;
	-webkit-appearance: none;
	appearance: none;
	position: relative;   /* the ::before hit-target box below */
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 5px;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	color: #fff;
	text-decoration: none;
	cursor: pointer;
	pointer-events: auto;
	/* Bare glyphs over arbitrary video need their own contrast guard. */
	filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.45));
	transition: transform 120ms ease;
}
.sbi-qs-act svg {
	width: 28px;
	height: 28px;
	flex: 0 0 auto;
}
/* ── 44px hit targets for BARE glyphs (see .sbi-qs-close::before) ────────────
 * A rail item is a shrink-wrapped flex column, so its WIDTH is whichever child
 * is wider: the glyph (26px desktop, 28px touch) or the count text. For a
 * one-digit count the text is ~7.8px, so the item is exactly as wide as the
 * glyph — and that is the whole defect this rule used to have. It stated the
 * ring as an INSET PAIR (`left`/`right: -8px`), which makes the ring's width a
 * value DERIVED from the item's: 28 + 16 = 44 on touch, but 26 + 16 = **42** on
 * desktop, two short of the convention. A floor expressed as a relative inset
 * is not a floor, it is an arithmetic coincidence that holds for one glyph size.
 *
 * So the horizontal axis is stated ABSOLUTELY: a fixed 44px box centred on the
 * item (`left: 50%` + `margin-left: -22px`), which is the same 44px whatever the
 * glyph measures and whatever figure Instagram returns. It resolves flush to the
 * rail COLUMN — the space the design already reserves for these controls — so a
 * grown item still cannot reach out over the video: on desktop the column is
 * 44px and the item is centred in it, so the ring lands exactly on the column's
 * two edges rather than 1px inside them.
 *
 * The VERTICAL axis keeps the ±1px insets, because the item is 43px (desktop) /
 * 45px (touch) tall and the derived 45/47px already clears 44 — shrinking it to
 * a flat 44 would REMOVE reachable area. `min-height` states the floor anyway,
 * so this axis cannot silently sink the way the other one did if the count row
 * ever stops being rendered. It does not fire at either current viewport; when a
 * min-height clamps a box that pins both `top` and `bottom`, the box is
 * over-constrained and grows downward from `top`, into the gap below.
 *
 * Adjacent items still cannot overlap: the growth is horizontal, and the ±1px
 * of vertical growth against an 18px (desktop) / 20px (touch) gap leaves ~15px
 * / ~17px of genuinely dead space between two rings — which is what keeps a tap
 * in the gap landing on the carve-out instead of on a control.
 *
 * `.sbi-qs-act-like` gets it too, even though it is a readout rather than a
 * control: it carries `role="img"` with a label, and an AT user targeting it
 * should not have a smaller target than the items either side of it. */
.sbi-qs-act::before {
	content: '';
	position: absolute;
	top: -1px;
	bottom: -1px;
	min-height: 44px;
	left: 50%;
	width: 44px;
	margin-left: -22px;
}
.sbi-qs-act-count,
.sbi-qs-act-label {
	/* `block` + min-height so an EMPTY count still reserves its row — an empty
	 * inline element generates no line box, which would pull the share glyph
	 * 17px up toward its neighbour. See buildRailItem() for why the row is
	 * always rendered. */
	display: block;
	min-height: 12px;
	font-size: 12px;
	font-weight: 600;
	line-height: 12px;
	/* Tabular figures so a count changing between slides doesn't shift the
	 * glyph above it. */
	font-variant-numeric: tabular-nums;
}
.sbi-qs-act:hover {
	color: #fff;
	text-decoration: none;
	transform: scale(1.06);
}
.sbi-qs-act:active {
	transform: scale(0.94);
}
.sbi-qs-act:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 3px;
	border-radius: 4px;
}
/* ── `hidden` must actually hide (SMASH-1851) ───────────────────────────────
 * The rail's items are built once and shown or hidden per slide, so `hidden` is
 * now load-bearing rather than decorative. `.sbi-qs-act` sets `display: flex`
 * above, and an AUTHOR declaration beats the UA's `[hidden] { display: none }`
 * — so the attribute on its own would hide NOTHING: a post with no like figure
 * would render an empty heart, and a post with no permalink would render a
 * comment glyph linking nowhere.
 *
 * Two independent conditions decide an item's visibility and they must not be
 * folded into one mechanism: DATA (this post has no figure / no permalink) is
 * `hidden`, written from JS; VIEWPORT (`.sbi-qs-act-view` is desktop-only) is
 * the capability query at the end of this file. Either one alone hides.
 *
 * `[hidden]` is (0,2,0) so it also wins over the capability block's
 * `.sbi-qs-act-view` (0,1,0) regardless of order — both resolve to `none`, so
 * the outcome is the same either way, but the specificity is why this rule does
 * not need to live below that block. */
.sbi-qs-act[hidden] {
	display: none;
}

/* The readout. Hover/active feedback is suppressed rather than merely
 * unstyled — a transform on hover is itself an affordance claim. */
.sbi-qs-act-like {
	cursor: default;
}
.sbi-qs-act-like:hover,
.sbi-qs-act-like:active {
	transform: none;
}

/* ── Bottom row (rules IG-4, IG-5) ───────────────────────────────────────── *
 * In-frame, frame-anchored, replacing the old chrome band that hugged the stage
 * from OUTSIDE it. Author row, then a ONE-LINE caption.
 *
 * `padding-right` is a SEPARATE LONGHAND and must stay one: it clears the rail
 * on touch (where the rail is inside the frame) and drops back to the plain
 * inset on desktop (where the rail is outside). Folding it into the shorthand
 * also breaks the geometry suite, which parses that shorthand's values.
 *
 * Pins `bottom` ONLY, never `top` as well. An absolutely-positioned box with
 * both pinned resolves to the full containing block on Safari 15.4-16.3 when a
 * `fit-content` height is unsupported — a full-frame band over the gesture
 * layer eating every vertical swipe. Bottom-anchored chrome pins bottom.
 */
.sbi-qs-bottom {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 2;
	box-sizing: border-box;
	padding: 0 16px 16px 16px;
	padding-bottom: max(16px, var(--sbi-qs-safe-bottom, env(safe-area-inset-bottom, 0px)));
	padding-right: 76px;
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-size: 14px;
	line-height: 18.2px;
	/* The gesture layer owns this whole band by default; only the genuine
	 * controls inside opt back in.
	 *
	 * Rex review (SMASH-1851), blocking finding, and the reason there is no
	 * `> *` rule here: a blanket opt-in used to live on the predecessor of this
	 * element on the theory that its children have nothing clickable inside
	 * them. That missed that pointer-events needs no click handler to do damage
	 * — this is a COLUMN flex container with the default `align-items: stretch`,
	 * so a blanket rule turns the author row and the caption into opaque,
	 * FULL-WIDTH bands sitting in the mobile thumb zone on every slide,
	 * silently swallowing tap-to-toggle (bound to the gesture layer, never
	 * reached) and touch-swipe navigation both. Spec §6.3 names this exact case.
	 * The fix is per-control opt-in, and the author row and Follow pill below
	 * additionally carry `align-self: flex-start` so they shrink-wrap. */
	pointer-events: none;
}

/* ── Author row (rule IG-4) ──────────────────────────────────────────────── */
.sbi-qs-authorrow {
	display: flex;
	align-items: center;
	gap: 10px;
	/* Shrink-wrapped, not stretched — see .sbi-qs-bottom. */
	align-self: flex-start;
	min-width: 0;
	max-width: 100%;
}
.sbi-qs-author {
	display: flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
	color: #fff;
	text-decoration: none;
	pointer-events: auto;
}
.sbi-qs-author:hover .sbi-qs-handle-text,
.sbi-qs-author:focus-visible .sbi-qs-handle-text {
	text-decoration: underline;
	text-underline-offset: 3px;
}
.sbi-qs-author:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 2px;
	border-radius: 4px;
}
.sbi-qs-avatar {
	box-sizing: border-box;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	object-fit: cover;
	flex: 0 0 auto;
	background: #262626;
}
/* Fallback when the post carries no usable avatar URL (rule IG-4): the
 * reference's initial-letter gradient disc. The hue is derived from the handle
 * so the same account always gets the same disc, rather than a colour that
 * changes between slides. */
.sbi-qs-avatar-fallback {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 13px;
	font-weight: 600;
	line-height: 1;
	text-transform: uppercase;
	color: #fff;
	background-image: linear-gradient(135deg, hsl(var(--sbi-qs-avatar-hue, 212) 70% 58%), hsl(calc(var(--sbi-qs-avatar-hue, 212) + 50) 65% 38%));
}
.sbi-qs-handle {
	display: flex;
	align-items: center;
	gap: 4px;
	min-width: 0;
	font-size: 14px;
	font-weight: 600;
	line-height: 18.2px;
}
.sbi-qs-handle-text {
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.sbi-qs-verified {
	width: 14px;
	height: 14px;
	flex: 0 0 auto;
}
/* Outline pill, NOT Instagram's filled blue — the design's own treatment, and
 * the same shape TikTok fills solid red. Aman's stated rationale is CTA
 * density: "our users might appreciate having CTA almost everywhere". */
.sbi-qs-follow {
	position: relative;   /* the ::before hit-target band below */
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 28px;
	padding: 0 12px;
	margin-left: 2px;
	border: 1px solid rgba(255, 255, 255, 0.75);
	border-radius: 8px;
	background: transparent;
	color: #fff;
	font-size: 13px;
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
	text-decoration: none;
	flex: 0 0 auto;
	pointer-events: auto;
	transition: background 150ms ease;
}
/* 28px tall by design (rule IG-4); the band below takes the reachable box to
 * 44px without moving the outline. Vertical only — the pill sits in a row with
 * the author link 2px to its left, so a horizontal expansion would overlap it. */
.sbi-qs-follow::before {
	content: '';
	position: absolute;
	top: -8px;
	right: 0;
	bottom: -8px;
	left: 0;
	border-radius: 8px;
}
.sbi-qs-follow:hover,
.sbi-qs-follow:focus-visible {
	background: rgba(255, 255, 255, 0.12);
	color: #fff;
	text-decoration: none;
	outline: 0;
}
.sbi-qs-follow:focus-visible {
	box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.7);
}

/* ── Caption (rules IG-4, IG-5) ──────────────────────────────────────────── *
 * ONE line, clamped with `nowrap` + ellipsis, with a "more" control revealed
 * only on MEASURED overflow. Down from three lines — the design's call.
 *
 * §6.1's expander contract, all four parts, and each one encodes a defect that
 * has shipped:
 *   - the caption TEXT is never tappable; only the shrink-wrapped more/less
 *     button is interactive. The reference puts `role="button" tabindex="0"` on
 *     the caption BLOCK, so its centre hit-test lands on the text node — spec
 *     §4.1 item 7. We keep his visual treatment exactly and move the role onto
 *     the button that already looks like the control.
 *   - revealed only on measured overflow (scrollWidth vs clientWidth).
 *   - expansion NEVER survives a slide change.
 *   - the expanded block is CAPPED and owns its own scroll surface; wheel and
 *     touch inside it must not navigate the track. Uncapped, a 2.5k-char
 *     caption measures 782px in his desktop build and escapes the frame top by
 *     463px, silently clipped — text lost with no indication.
 *
 * The CAP is a line count, not a viewport fraction, and that is a deliberate
 * deviation from rule IG-5's "≈26% of frame height": 12 lines at the design's
 * own 18.2px line-height is 218.4px, which is 24.7% of the 884px desktop frame
 * and 25.9% of the 844px mobile frame — inside a percentage point of his figure
 * at BOTH reference viewports, while introducing no viewport unit at all. A
 * percentage would not work: this element's containing block is bottom-anchored
 * with an auto height, so a percentage max-height resolves to `none`. Giving it
 * a definite height would mean pinning both `top` and `bottom`, which is the
 * named Safari full-band hazard above.
 */
.sbi-qs-caption {
	margin: 0;
	display: flex;
	align-items: baseline;
	gap: 6px;
	font-size: 14px;
	line-height: 18.2px;
	/* Deliberately NOT opted back into pointer events — the text must never be
	 * tappable. Only .sbi-qs-caption-more opts in. */
	pointer-events: none;
}
.sbi-qs-caption-text {
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.sbi-qs-caption-more {
	/* ── The UA's form-control defaults, refused explicitly ──────────────────
	 * A <button> is not a normal element: the UA sets its own `font` shorthand
	 * (`400 13.3333px Arial` in Chrome) and its own `padding: 1px 6px`, and
	 * NEITHER inherits from the viewer. Measured on the live demo: every button
	 * in this viewer reported `font-family: Arial` while the overlay itself
	 * reported the design's `Inter, InterVariable, …` stack — so rule 1.6's
	 * "Tap to unmute" label and the rail's counts were rendering in Arial, at
	 * the design's sizes but not its face.
	 *
	 * `font: inherit` FIRST, so each rule's own explicit size/weight below still
	 * wins on source order. `padding: 0` because a glyph-only control's box is
	 * its tap target and the UA's 6px side padding silently shrinks the content
	 * area (a 40px close disc was laying out its 22px glyph in 28px of content
	 * box). `appearance: none` because iOS Safari otherwise paints its own
	 * control chrome over the disc.
	 *
	 * Deliberately repeated per rule rather than hoisted into a
	 * `.sbi-qs-overlay button` reset: that selector has HIGHER specificity
	 * (0,1,1) than the single-class rules here (0,1,0), so it would override the
	 * paddings those rules set on purpose — the mute chip's `0 7px`, the pill's
	 * `0 13px 0 11px`. Flat specificity is what keeps this predictable. */
	font: inherit;
	-webkit-appearance: none;
	appearance: none;
	/* §6.3 explicit opt-in: this button IS the control, and the only one. */
	pointer-events: auto;
	position: relative;
	flex: 0 0 auto;
	display: none;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	color: #a8a8a8;
	font-size: 14px;
	font-weight: 400;
	line-height: 18.2px;
	cursor: pointer;
}
/* The 44px hit target, WITHOUT the layout cost. The design's visible control is
 * 33.9 x 18.2 — below this file's 44px control convention, a gap the survey has
 * carried as an advisory since 2026-08-19. Padding would fix the target and
 * break the design: this row is measured at 18.2px tall and the bottom row at
 * 76.2px, so a 44px-tall button grows the whole block by 26px and pushes the
 * author row up off its mark.
 *
 * A positioned pseudo-element takes no part in layout but IS hit-tested, and a
 * hit on it resolves to its originating element — so elementFromPoint over this
 * region returns the button, which is exactly what §6.3's proof asks for. The
 * visible box stays the design's; only the reachable box grows.
 *
 * Insets are asymmetric on purpose: 13px above and below the 18.2px text gives
 * 44.2px, and the horizontal 6px stops short of the caption text so the grown
 * target cannot start swallowing taps meant for the gesture layer. */
.sbi-qs-caption-more::before {
	content: '';
	position: absolute;
	top: -13px;
	right: -6px;
	bottom: -13px;
	left: -6px;
}
.sbi-qs-caption-has-more .sbi-qs-caption-more {
	display: inline-block;
}
.sbi-qs-caption-more:hover {
	color: #fff;
}
.sbi-qs-caption-more:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 2px;
	border-radius: 4px;
}
.sbi-qs-caption-expanded {
	align-items: flex-end;
}
.sbi-qs-caption-expanded .sbi-qs-caption-text {
	/* Caption text is set via textContent, never innerHTML (§12) — a caption's
	 * literal `<br>`/`<br/>` markers are translated to `\n` in JS instead (see
	 * formatCaptionText()). `pre-line` turns those preserved newlines into real
	 * breaks without ever parsing the text as markup. */
	white-space: pre-line;
	overflow-y: auto;
	overflow-x: hidden;
	text-overflow: clip;
	max-height: var(--sbi-qs-caption-cap);
	/* Owns its scroll surface. The wheel/touch handlers additionally refuse to
	 * navigate while the event originated inside here — CSS alone cannot stop
	 * the gesture layer, because the gesture layer is not an ancestor. */
	pointer-events: auto;
	padding-right: 10px;
	scrollbar-width: thin;
	scrollbar-color: rgba(255, 255, 255, 0.35) transparent;
}
.sbi-qs-caption-expanded .sbi-qs-caption-text::-webkit-scrollbar {
	width: 4px;
}
.sbi-qs-caption-expanded .sbi-qs-caption-text::-webkit-scrollbar-track {
	background: transparent;
}
.sbi-qs-caption-expanded .sbi-qs-caption-text::-webkit-scrollbar-thumb {
	background: rgba(255, 255, 255, 0.35);
	border-radius: 2px;
}
/* ── Hashtags inside the caption (rule IG-5) — COLOUR ONLY, NOT LINKS ────── *
 * CONFLICT, resolved toward behaviour and escalated rather than resolved
 * silently (log § 0). Rule IG-5 asks for two things that cannot both hold:
 * "caption text never tappable; only the shrink-wrapped more/less button is
 * interactive" AND "hashtags #e0f1ff, hover underline". A hover underline on a
 * hashtag is an interactivity claim, and a hashtag link is tappable caption
 * text — which is precisely what spec §6.1's expander contract forbids, and
 * that contract encodes a defect that has shipped three times.
 *
 * Behaviour wins per the authority split, so hashtags take the design's COLOUR
 * and stay inert spans: no href, no hover underline, no pointer-events opt-in.
 * The visual result is the design's at rest and differs only on hover.
 * Carried into the change log as a question for Aman.
 *
 * Built by tokenising the ALREADY-ESCAPED caption text and appending real text
 * nodes and spans — never by parsing markup (§12). */
.sbi-qs-tag {
	color: #e0f1ff;
}

/* ── First-run swipe coach (rule 1.9) ────────────────────────────────────── *
 * The ONLY onboarding overlay that ships, and it replaces the four-row intro
 * card outright. Aman retracts his own earlier proposal in the walkthrough — "I
 * know I added four instructions, so I'm just kind of trying to minimize what
 * we tell them… a lot of it can just be noticed from how they use Instagram" —
 * and the final design keeps exactly two hints: this one, and the unmute label
 * on the mute button. No pause hint, no desktop swipe hint, no keyboard hint
 * card, no "reset hint" button (that one is a dev aid).
 *
 * TOUCH ONLY and FIRST RUN ONLY: desktop has visible chevrons and a cursor, so
 * it needs no swipe instruction. Gated in JS on the same input-capability probe
 * this file's chevrons use, and persisted in localStorage under a
 * plugin-namespaced key so it shows once ever rather than once per session.
 *
 * `pointer-events: none` is not optional here: this is a full-frame layer above
 * the gesture layer, so without it the very swipe it is teaching would be
 * swallowed. Dismiss listeners are armed 350ms AFTER open so the tap that
 * opened the viewer cannot dismiss it before it is read.
 */
.sbi-qs-coach {
	position: absolute;
	inset: 0;
	z-index: 9;
	display: none;
	align-items: center;
	justify-content: center;
	background: rgba(0, 0, 0, 0.35);
	pointer-events: none;
}
.sbi-qs-coach-visible {
	display: flex;
}
.sbi-qs-coach-inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
	font-size: 15px;
	font-weight: 600;
	line-height: 19.5px;
	text-align: center;
	text-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
}
.sbi-qs-coach-hand {
	width: 44px;
	height: 64px;
	animation: sbiQsSwipe 1.4s ease-in-out infinite;
}

/* ── Keyframes ───────────────────────────────────────────────────────────── */
@keyframes sbiQsSpin {
	to { transform: rotate(360deg); }
}
@keyframes sbiQsFlashIn {
	0%   { opacity: 0; transform: scale(0.3); filter: blur(4px); }
	100% { opacity: 1; transform: scale(1);   filter: blur(0);   }
}
@keyframes sbiQsFlashOut {
	0%   { opacity: 1; transform: scale(1);   filter: blur(0);   }
	100% { opacity: 0; transform: scale(0.8); filter: blur(4px); }
}
@keyframes sbiQsSwipe {
	0%   { transform: translateY(18px);  opacity: 0.35; }
	45%  { transform: translateY(-26px); opacity: 1; }
	100% { transform: translateY(18px);  opacity: 0.35; }
}

/* ══════════════════════════════════════════════════════════════════════════
 * EVERY @media BLOCK LIVES BELOW THIS LINE. Nothing top-level may follow.
 * The geometry suites read `stripCssComments(css).split('@media')[0]`, so a
 * rule placed after the first @media is invisible to them and reads as missing.
 * ══════════════════════════════════════════════════════════════════════════ */

/* ── Desktop layout (rule 1.2: input capability, NEVER width) ────────────── *
 * "Desktop" is a pointer that hovers and is fine, full stop. Everything in here
 * is either something that needs a mouse (chevrons, tooltips) or a layout that
 * only makes sense when there is room beside the frame (the rail column, the
 * top-row CTA pill). The reference expresses all of it as `max-width: 768px`
 * branches; not one of those thresholds ships.
 */
@media (hover: hover) and (pointer: fine) {
	.sbi-qs-overlay {
		/* Rule 1.13 — the host page stays faintly visible behind the blur,
		 * which is Aman's stated intent. `color-mix` second so a browser
		 * without it keeps the plain rgba above; both compute to the same
		 * 82% black over the desktop backdrop. */
		background: rgba(0, 0, 0, 0.82);
		background: color-mix(in srgb, #000 82%, transparent);
		-webkit-backdrop-filter: blur(14px);
		backdrop-filter: blur(14px);

		--sbi-qs-stage-radius: 8px;
		--sbi-qs-rail-w: 44px;
		--sbi-qs-stage-gap: 16px;
		/* Half of rail + gap. Rule 1.1 centres the frame and the rail column
		 * TOGETHER, so the frame's centre sits this far left of the window's. */
		--sbi-qs-frame-shift: 30px;
		/* Half the painted frame's width, as a CONTINUOUS clamp rather than a
		 * breakpoint (rule 1.2). Derivation, so the three numbers are checkable:
		 * the frame is `viewport height - 16px` tall (8px top and bottom
		 * margins) at 9:16, and can never be wider than the space left after
		 * the rail column and the stage gap — so
		 *   half = min(50vw - 30px, (50vh - 8px) * 9 / 16).
		 * At 1440x900: min(690, 248.625) = 248.625, frame 497.25 x 884 at
		 * x = 441.375. The 9 / 16 here MUST stay the ratio .sbi-qs-media sizes
		 * with; a test asserts every occurrence in this file agrees.
		 * vh-then-dvh pair, as everywhere. */
		--sbi-qs-stage-half: min(calc(50vw - 30px), calc((50vh - 8px) * 9 / 16));
		--sbi-qs-stage-half: min(calc(50vw - 30px), calc((50dvh - 8px) * 9 / 16));
	}

	/* Rule 1.4 — (16, 16) on desktop, (12, 12) on touch. */
	.sbi-qs-close {
		top: 16px;
		left: 16px;
	}

	/* Rule 1.1 — the framed 9:16 stage. `right` reserves the rail column plus
	 * the stage gap, and `margin: auto` then centres the frame inside what is
	 * left, which puts its centre at `50vw - frame-shift`. No transform. */
	.sbi-qs-media,
	.sbi-qs-framechrome {
		right: calc(var(--sbi-qs-rail-w) + var(--sbi-qs-stage-gap));
		height: calc(100vh - 16px);
		height: calc(100dvh - 16px);
		width: min(calc(100vw - var(--sbi-qs-rail-w) - var(--sbi-qs-stage-gap)), calc((100vh - 16px) * 9 / 16));
		width: min(calc(100vw - var(--sbi-qs-rail-w) - var(--sbi-qs-stage-gap)), calc((100dvh - 16px) * 9 / 16));
	}

	/* Rule 1.5 — no need to clear the window close button here; it is far to
	 * the left of the frame on any desktop viewport. */
	.sbi-qs-top {
		padding: 14px 14px 0 16px;
	}

	/* Rule IG-6 — the CTA is a top-row pill on desktop, a rail item on touch. */
	.sbi-qs-view-on-ig {
		display: inline-flex;
	}
	.sbi-qs-act-view {
		display: none;
	}

	.sbi-qs-nav {
		display: flex;
	}

	/* Rule 1.3 — the rail column moves OUTSIDE the frame, 16px to its right,
	 * bottom-aligned with the frame. `right` is the frame's own left inset:
	 * because the frame + gap + rail trio is centred, the trio's two outer
	 * insets are equal, so the rail column's right inset IS
	 * `50% - frame-shift - stage-half`. One expression, checkable by symmetry,
	 * and shared with .sbi-qs-nav. */
	.sbi-qs-railcol {
		right: calc(50% - var(--sbi-qs-frame-shift) - var(--sbi-qs-stage-half));
		left: auto;
		bottom: 8px;
		width: var(--sbi-qs-rail-w);
	}
	.sbi-qs-rail {
		gap: 18px;
		padding-bottom: 18px;
	}
	/* 26px desktop, 28px touch (rule IG-2) — the touch value is the base. */
	.sbi-qs-act svg {
		width: 26px;
		height: 26px;
	}

	/* Rule IG-4 — the rail is outside the frame here, so the bottom row needs
	 * no gutter reserved for it. */
	.sbi-qs-bottom {
		padding-right: 16px;
	}

	/* ── Tooltips (rule 1.9, spec §2.2) ──────────────────────────────────────
	 * On close and the two chevrons ONLY. The reference already gates its
	 * tooltips on this exact query, so the idiom is his; what this block adds
	 * is that no other control gets one — no pause hint, no swipe hint.
	 *
	 * All three sit at the design's `data-tip-pos="right"`: close is at the
	 * window's top-left and the chevrons are right of the frame, so in both
	 * cases the label has room outward. The attribute is namespaced
	 * (`data-sbi-qs-tip`) rather than the reference's bare `data-tip`, which is
	 * a name a host theme or another plugin could plausibly already use on the
	 * page.
	 *
	 * `::after` on a flex container would become a flex item; `position:
	 * absolute` takes it out of flow, and `pointer-events: none` keeps a
	 * tooltip that overhangs a sibling from stealing its clicks.
	 */
	[data-sbi-qs-tip]::after {
		content: attr(data-sbi-qs-tip);
		position: absolute;
		top: 50%;
		left: calc(100% + 10px);
		transform: translateY(-50%) translateX(4px);
		padding: 6px 9px;
		border: 1px solid rgba(255, 255, 255, 0.08);
		border-radius: 6px;
		background: rgba(28, 28, 30, 0.96);
		color: #fff;
		font-size: 12px;
		font-weight: 500;
		line-height: 12px;
		white-space: nowrap;
		box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
		z-index: 30;
		opacity: 0;
		pointer-events: none;
		transition: opacity 120ms ease, transform 120ms ease;
	}
	[data-sbi-qs-tip]:hover::after,
	[data-sbi-qs-tip]:focus-visible::after {
		opacity: 1;
		transform: translateY(-50%) translateX(0);
	}
}

/* ── Reduced motion (§3.2: motion REMOVED entirely, not shortened) ───────── *
 * Last block in the file so it wins over the capability block above regardless
 * of specificity, and `!important` on the animations for the same reason.
 *
 * ── .sbi-qs-progress-fill is DELIBERATELY ABSENT ────────────────────────────
 * Its 250ms linear transition is not decoration: it interpolates between the
 * 250ms state samples §6.1 requires, and removing it makes the bar step in
 * visible jumps rather than sit still. A progress bar that advances IS the
 * content. The one motion here nobody asked for — the rewind on a slide change
 * — is already suppressed by .sbi-qs-progress-fill-jump for exactly that write.
 */
@media (prefers-reduced-motion: reduce) {
	.sbi-qs-track {
		transition: none !important;
	}
	.sbi-qs-overlay,
	.sbi-qs-close,
	.sbi-qs-mute,
	.sbi-qs-mute-label,
	.sbi-qs-nav-prev,
	.sbi-qs-nav-next,
	.sbi-qs-view-on-ig,
	.sbi-qs-follow,
	.sbi-qs-author,
	.sbi-qs-act,
	.sbi-qs-spinner {
		transition: none;
	}
	/* ── The rail's drag-follow is NOT removed here, only its snap ────────────
	 * §3.2 is about motion the visitor did not ask for. A drag is direct
	 * manipulation they are performing themselves, so the rail keeps following
	 * the finger 1:1 — it just gets there with no transition, which is what
	 * `transition: none` produces for a transform written every frame anyway.
	 * The RELEASE snap is the animated case and it is the one that goes.
	 *
	 * setRailTravel() already refuses to animate under reduced motion, so this
	 * is the belt to that braces: the JS writes `transition-duration` inline
	 * (which beats any stylesheet rule), and this covers the case where a future
	 * caller forgets. TikTok's rail resolves to exactly the same behaviour. */
	.sbi-qs-railcol {
		transition: none;
	}
	/* The pause glyph's bloom and dissolve and the coach hand's swipe loop are
	 * both motion the visitor did not ask for. The glyph still APPEARS and
	 * still reports the paused state — only the animation goes, which is the
	 * §3.2 distinction between removing motion and removing information.
	 *
	 * .sbi-qs-spinner is DELIBERATELY NOT here. A stopped spinner is
	 * indistinguishable from a hung one, so removing its rotation would replace
	 * a small piece of essential state feedback with a misleading one. It is
	 * 36px, centred, and rotational rather than translational — the shape of
	 * animation reduced-motion guidance consistently exempts. */
	.sbi-qs-flash svg,
	.sbi-qs-coach-hand {
		animation: none !important;
	}
	.sbi-qs-overlay[data-paused="false"] .sbi-qs-flash-on {
		display: none;
	}
	[data-sbi-qs-tip]::after {
		transition: none;
	}
}

