/* All screen sizes */

/****************************************
* Root variables
****************************************/

:root {
  --fni-font-1: 'Lato';
  --fni-font-2: 'Neutra';

  --fni-color-1: #0077c0;
  --fni-color-2: #f68e4a;
  --fni-color-3: #298fd0;
  --fni-color-4: #f5be64;
  --fni-color-5: #2389ca;
  --fni-color-6: #0467a6;
  --fni-color-7: #f3b858;
  --fni-color-8: #fce3bd;
  --fni-color-9: #f68e4b;

  --fni-container: 1008px;
  --fni-nav-toggle-color: var(--fni-color-2);
}

/****************************************
* Typography
****************************************/

h1 {
  font: normal bold 30px/1em var(--fni-font-2);
  color: var(--fni-color-1);
  text-transform: uppercase;
}

h2 {
  font: normal bold 25px/1em var(--fni-font-2);
  color: var(--fni-color-5);
  text-transform: uppercase;
}

h3 {
  font: normal bold 34px/1em var(--fni-font-2);
  color: var(--fni-color-3);
  text-transform: uppercase;
}

h4 {
  font: normal bold 18px/1.3em var(--fni-font-1);
  color: var(--fni-color-2);
  text-transform: uppercase;
}

h4 span.uppercase {
  margin-right: .25rem;
  font-size: 40px;
  line-height: 1em;
}

p,
a,
li,
label,
legend {
  font: normal normal 16px/1.5em var(--fni-font-1);
  color: #646464;
}

p.highlight {
  position: relative;
  bottom: 0;
  text-align: center;
  border: 4px dotted var(--fni-color-8);
  border-right: none;
  border-left: none;
  padding: 1rem 0;
  color: #0376bd;
}

a {
  color: var(--fni-color-2);
  text-decoration: none;
  font-weight: bold;
}

a:focus,
a:hover,
a.active {
  color: var(--fni-color-3);
}

hr {
  margin: 1.5rem 0;
  border-top: 4px dotted #e6e6e6;
}

h1 + h2,
h1 + p,
h1 + ul,
h1 + ol,
h1 + form,
h3 + h3,
p + h2,
p + h3,
p + form,
ul + h2,
ul + h3,
ol + h2,
ol + h3,
img + h2,
img + h3,
blockquote + h2,
blockquote + h3,
blockquote + p,
blockquote + ul,
blockquote + ol,
blockquote + img,
details + h2,
details + h3,
details + p,
details + ul,
details + ol,
details + img,
.button + h2,
.button + h3,
.video + h2,
.video + h3,
.video + .video {
  margin-top: 2rem;
}

h2 + h3,
h2 + p,
h2 + ul,
h2 + ol,
h2 + img,
h2 + form,
h2 + blockquote,
h2 + details,
h2 + .button,
h2 + .video,
h3 + h4,
h3 + p,
h3 + ul,
h3 + ol,
h3 + img,
h3 + form,
h3 + blockquote,
h3 + details,
h3 + .button,
h3 + .video,
h4 + p,
p + p,
p + ul,
p + ol,
p + img,
p + blockquote,
p + details,
p + .button,
p + .video,
p + .social-buttons,
img + p,
img + img,
.button + .button,
.grid + label,
.grid + .grid,
.grid + .button,
.flex + p,
.flex + .flex {
  margin-top: 1rem;
}

li + li {
  margin-top: .5rem;
}

/****************************************
* Lists
****************************************/

ul {
  margin: 0 0 1rem 0;
  padding-left: 1.5rem;
  list-style: none;
}

ul li {
  position: relative;
  margin: 0 0 .25rem 0;
}

ul li::after {
  content: '';
  display: block;
  position: absolute;
  top: 9px;
  left: -1rem;
  border-radius: 100%;
  background-color: var(--fni-color-1);
  width: 0;
  height: 0;
  padding: 3px;
}

/****************************************
* Buttons
****************************************/

.button {
  padding: .5rem 1rem;
  font: normal bold 16px/1em var(--fni-font-1);
  text-transform: uppercase;
  letter-spacing: 1px;
}

.button.rectangle {
  border: 3px solid var(--fni-color-4);
  border-radius: 10px;
  background-color: var(--fni-color-9);
  font: normal bold 18px/1.2em var(--fni-font-2);
}

.button:focus,
.button:hover,
.button:disabled {
  color: #ffffff;
}

.button.medium {
  background-image: url('/images/layout/buttons/medium.png');
  width: 203px;
  height: 48px;
  padding: 1.1rem 0;
}

.button.medium.flipped {
  position: relative;
  background-image: none;
  z-index: 1;
}

.button.medium.flipped::before {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  transform: scaleX(-1);
  z-index: -1;
  background-image: url('/images/layout/buttons/medium.png');
  background-size: 100% 100%;
  width: 100%;
  height: 100%;
}

.button.long {
  background-image: url('/images/layout/buttons/long.png');
  width: 279px;
  height: 53px;
  padding: 1.25rem 0;
}

/****************************************
* Header
****************************************/

header {
  position: relative;
  z-index: 99;
  background-color: rgba(255, 255, 255, .3);
}

header .flex {
  flex-direction: column;
}

header .logo {
  padding: .5rem 1.5rem;
}

header .logo img {
  max-width: 120px;
}

/****************************************
* Navigation
****************************************/

.nav-toggle {
  top: 14px;
  right: 8px;
}

nav {
  background-color: var(--fni-color-3);
  width: 100%;
  max-height: 0;
  padding: 0 1rem;
  overflow: hidden;
  transition: max-height .4s ease-in;
}

nav.on {
  max-height: 100vh;
}

nav ul {
  margin: 2rem 0;
  list-style: none;
  padding: 0;
}

nav ul + ul {
  margin-top: 0;
}

nav li {
  margin: 0;
}

nav li::after {
  display: none;
}

nav .sub-nav {
  text-align: center;
}

nav .sub-nav li {
  display: inline-block;
}

nav .sub-nav li + li {
  margin-left: 13px;
}

nav .sub-nav a {
  text-transform: uppercase;
  font: normal bold 14px/1.5em var(--fni-font-2);
  color: var(--fni-color-4);
}

nav .sub-nav .alt a {
  color: var(--fni-color-2);
}

nav .main-nav li {
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  margin: 0 auto;
  background-image: url('/images/layout/buttons/medium.png');
  background-size: 100% 100%;
  width: 203px;
  height: 48px;
  padding: 1.1rem 0;
  text-align: center;
}

nav .main-nav li:nth-of-type(odd) {
  position: relative;
  background-image: none;
  z-index: 1;
}

nav .main-nav li:nth-child(odd)::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: url('/images/layout/buttons/medium.png');
  background-size: 100% 100%;
  transform: scaleX(-1);
  z-index: -1;
}

nav .main-nav li + li {
  margin-top: .25rem;
}

nav .main-nav a {
  align-self: center;
  padding: .75rem 0 .5rem 0;
  text-transform: uppercase;
  font: normal bold 18px/1em var(--fni-font-2);
  color: #ffffff;
}

nav .request-quote {
  position: absolute;
  top: 20px;
  right: 60px;
  border: 3px solid var(--fni-color-4);
  border-radius: 10px;
  background-color: var(--fni-color-2);
  padding: 1rem .5rem;
  font: normal bold 12px/0 var(--fni-font-2);
  color: #ffffff;
}

nav .request-quote:hover,
nav .request-quote:focus {
  background-color: transparent;
}

@media(max-width: 365px) {
  nav .request-quote {
    display: none;
  }
}

/****************************************
* Billboard
****************************************/

.billboard {
  position: relative;
  z-index: 1;
  height: 85vw;
}

.billboard > .padding {
  position: relative;
  height: 100%;
}

.billboard.pattern {
  background-image: url('/images/layout/backgrounds/blue-pattern.webp');
  background-position: top center;
  background-repeat: no-repeat;
}

.billboard .animal {
  position: absolute;
  top: auto;
  bottom: -1px;
  right: 0;
  left: auto;
  z-index: -1;
  margin-bottom: 0;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: bottom;
  width: 100vw;
  max-width: 100vw;
}

.billboard .desktop .animal {
  width: 792px;
  height: 595px;
}

.billboard .mobile .animal {
  width: 1000px;
  height: 1270px;
}

.billboard h6 {
  position: absolute;
  top: 18%;
  left: 0;
  right: 0;
  margin: auto;
  transform: translateY(-50%);
  padding-top: 0;
  text-align: center;
  text-transform: lowercase;
  text-shadow: 2px 2px 3px rgba(0, 0, 0, .5);
  font: normal 900 45px/1em var(--fni-font-1);
  color: var(--fni-color-2);
}

.billboard.home h6 {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100%;
  transform: translateY(-50%) translateX(-50%);
  z-index: 10;
  text-align: center;
}

.billboard h6 span {
  display: block;
  color: var(--fni-color-7);
  font-size: 30px;
}

.billboard .curve {
 /* position: absolute;*/
  bottom: 0;
  width: 100%;
  height: 100%;
}

.billboard .curve::after {
  content: '';
  display: block;
  position: absolute;
  left: 50%;
  bottom: -10px;
  transform: translateX(-50%) translateY(80%);
  border-radius: 100%;
  background-color: #ffffff;
  width: 150%;
  height: 70%;
}

.billboard.home {
  height: 50vw;
  overflow: hidden;
}

.billboard.home table td {
  position: relative;
}

.billboard.home video {
  position: absolute;
  top: 0px;
  left: 0;
  width: 100vw;
  height: auto;
}

/****************************************
* After billboard section
****************************************/

.after-billboard {
  position: relative;
  z-index: 2;
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}

.after-billboard p,
.after-billboard a {
  font-size: 20px;
}

/*********************************
* Icons
**********************************/

.icons h2 {
  color: var(--fni-color-5);
  font-size: 35px;
  text-align: center;
}

.icons object {
  display: block;
  margin: 0 auto 1rem auto;
  width: 80px;
  height: 80px;
  cursor: pointer;
}

.icons object:hover + h2,
.icons h2:hover {
  color: var(--fni-color-9);
  cursor: pointer;
}

.icons ul {
  margin-top: 1rem;
  list-style: none;
}

.icons li {
  margin: 0;
  text-align: center;
  line-height: 1.5em;
}

.icons li::after {
  display: none;
}

.icons li,
.icons p {
  color: #363636;
}

/*********************************
* Recent Work
**********************************/

.recent-work {
  display: block;
  border: 5px solid #cee0f6;
  border-left: none;
  border-right: none;
}

.recent-work .info {
  position: relative;
  width: 100%;
  background-color: var(--fni-color-3);
}

.recent-work .info .wrapper {
  position: relative;
  max-width: 90%;
  margin: auto;
  padding-top: 3rem;
  padding-bottom: 3rem;
  top: 0;
  left: 0;
  transform: none;
}

.recent-work .info h3 {
  color: var(--fni-color-4);
}

.recent-work .info p {
  color: #ffffff;
}

.recent-work .info .button {
  margin-left: auto;
  margin-right: auto;
}

.recent-work .info .button + .button {
  margin-top: 0;
}

.recent-work .showcase {
  background-color: #232323;
  width: 100%;
  font-size: 0;
}

.recent-work .work {
  box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.5);
}

.recent-work .work a.view-portfolio {
  display: block;
}

/****************************************
* Social media icons
****************************************/

.social-buttons {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}

.social-buttons > .social-icons a {
  display: inline-block;
  width: 30px;
  height: 33px;
}

.social-buttons > .social-icons a + a {
  margin-left: .75rem;
}

.social-buttons > .social-icons i {
  font-size: 30px;
  line-height: 1.1em;
}

/****************************************
* Latest Post
****************************************/

.latest-post p > a {
  word-wrap: anywhere;
}

.latest-post p + img,
.latest-post p + .fb-video,
.latest-post img + p,
.latest-post .fb-video + p {
  margin-top: 1rem;
}

.latest-post .social-buttons {
  padding: .5rem 0;
}

.latest-post .social-buttons > div {
  display: inline-block;
  vertical-align: middle;
  font-size: 0;
}

.latest-post .slip-n-slide {
  margin: 1rem 0;
}

.latest-post .slip-n-slide img {
  position: relative;
  top: 0;
  transform: none;
}

.latest-post [data-overlay] {
  display: inline-flex;
  justify-content: center;
  margin: 1rem 0;
  position: relative;
}

.latest-post [data-overlay] svg {
  position: absolute;
  top: .5rem;
  right: .5rem;
  width: 15px;
  height: 15px;
  filter: drop-shadow(0px 0px 4px rgba(0, 0, 0, 0.7));
  opacity: 0;
  transition: all .4s ease;
}

.latest-post [data-overlay]:hover svg {
  opacity: 1;
}

/****************************************
* Client list
****************************************/

.client-list-buttons {
  font-size: 0;
  white-space: nowrap;
}

.client-list-buttons .button.rectangle {
  display: block;
  font-size: 16px;
}

.client-list-buttons .button {
  margin-top: .5rem;
}

.client-list-buttons .button:first-of-type {
  margin-left: 0;
}

.client-list p {
  margin: 0;
}

.client-list ul:last-of-type {
  margin-bottom: 0;
}

.client-list li {
  position: relative;
  cursor: pointer;
}

.client-list ul:hover {
  position: relative;
  z-index: 9;
}

.client-list li img {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  width: 300px;
  height: auto;
  z-index: 99;
}

.client-list li:hover img {
  display: block;
  pointer-events: none;
}

.client-list p,
.client-list a,
.client-list h2 {
  position: relative;
  z-index: 1;
}

.client-list-target ul,
.client-list-target h2 {
  opacity: 0;
  animation: fade-in-down forwards 1s ease-out;
}

.client-list tr > td:nth-of-type(2) .client-list-target ul,
.client-list tr > td:nth-of-type(2) .client-list-target h2 {
  animation-delay: .25s;
}

.client-list tr > td:nth-of-type(3) .client-list-target ul,
.client-list tr > td:nth-of-type(3) .client-list-target h2 {
  animation-delay: .5s;
}

@keyframes fade-in-down {
  0% {
    opacity: 0;
    transform: translateY(-25px);
  }
  25% {
    opacity: .15;
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/****************************************
* Request a quote form
****************************************/

label,
legend {
  display: block;
  margin-bottom: 0;
  background-color: var(--fni-color-3);
  width: 100%;
  padding: 0 .5rem;
  color: #ffffff;
}

label.invalid {
  background-color: #dd0000;
  color: #ffffff;
}

input,
select,
textarea {
  border: 1px solid var(--fni-color-3);
  border-bottom: 2px solid var(--fni-color-3);
  border-radius: 0;
  height: auto;
  font-size: 16px;
  line-height: 1.4em;
  color: #646464;
}

input.invalid,
select.invalid,
textarea.invalid {
  outline: none;
  border-color: #dd0000;
}

.checkboxes {
  border: 1px solid var(--fni-color-3);
  border-bottom: 2px solid var(--fni-color-3);
  border-radius: 0;
  background-color: transparent;
  padding: 1.5rem 1rem;
  font-size: 0;
}

ul.radios {
  padding: 0;
}

ul.radios li::after {
  display: none;
}

ul.radios [type="radio"] + label {
  background-color: transparent;
  color: #646464;
}

fieldset .checkboxes {
  margin: 0;
}

.checkboxes > li,
.radios > li {
  margin-bottom: .5rem;
}

.checkboxes > li::after {
  display: none;
}

.checkboxes > li:last-of-type,
.radios > li:last-of-type {
  margin-bottom: 0;
}

.checkboxes > li :last-child,
.radios > li :last-child {
  margin-bottom: 0;
}

.checkboxes > li:last-of-type {
  margin-bottom: 0;
}

.checkboxes label {
  display: inline-block;
  background-color: transparent;
  color: #646464;
}

.checkboxes > li > p {
  margin-bottom: 0;
  margin-top: 1.5rem;
  font-weight: bold;
  text-transform: uppercase;
}

.checkboxes > li:first-of-type p {
  margin-top: 0;
}

form p.heading {
  margin-bottom: 1rem;
  font-weight: bold;
  text-transform: uppercase;
}

form[name="xREQUEST_A_QUOTE"] textarea[name="xTELL_US_ABOUT_YOUR_PROJECT"] {
  height: 505px;
}

form[name="xREQUEST_A_QUOTE"] .checkboxes > li {
  margin-bottom: 11px;
}

form[name="xREQUEST_A_QUOTE"] .checkboxes > li:last-of-type {
  margin-bottom: 0;
}

form[name="xREQUEST_A_QUOTE"] [type="submit"] {
  margin-top: 1rem;
}

/****************************************
* Out Of Office Email Actions
****************************************/

form[name="xOUT_OF_OFFICE_EMAIL_ACTIONS"] input[type="radio"] + label {
  margin-bottom: 1rem;
}

form[name="xOUT_OF_OFFICE_EMAIL_ACTIONS"] :last-child {
  margin-bottom: 0;
}

/****************************************
* Pay Online
****************************************/

form[name="xPAY_ONLINE"] textarea[name="xCOMMENTS"] {
  height: 250px;
}

form[name="xPAY_ONLINE"] .styled-select {
  margin-bottom: 1rem;
  border-radius: 0;
  padding: 0;
}

form[name="xPAY_ONLINE"] label {
  margin-top: 0;
}

form[name="xPAY_ONLINE"] #invoices-target .invoice {
  display: grid;
  grid-template-columns: 1fr 1fr;
}

form[name="xPAY_ONLINE"] #invoices-target .invoice + .invoice {
  padding-top: 1rem;
  border-top: 4px dotted #e6e6e6;
}

form[name="xPAY_ONLINE"] .invoices-wrapper {
  position: relative;
  /* height: 375px; */
}

form[name="xPAY_ONLINE"] #invoices-target {
  position: relative;
}

form[name="xPAY_ONLINE"] #invoices-target a[data-action="add-invoice"] i.fa {
  position: absolute;
  bottom: 50%;
  right: 0;
  transform: translate(50%, 50%);
  font-size: 30px;
}

form[name="xPAY_ONLINE"] .expiration-date {
  display: grid;
  grid-template-columns: 1fr 1fr;
}

form[name="xPAY_ONLINE"] div.info-box {
  /*position: absolute;*/
  padding: 1rem;
  bottom: 2.5rem;
  margin: auto;
  left: 0;
  right: 0;
/*  width: calc(100% - 3rem);*/
  background-color: var(--fni-color-3);
}

form[name="xPAY_ONLINE"] div.info-box p {
  color: #ffffff;
}

form[name="xPAY_ONLINE"] div.info-box p#total-price {
  margin-bottom: 1rem;
  text-align: center;
  font-size: 18px;
}

form[name="xPAY_ONLINE"] [type="submit"] {
  margin-bottom: 1rem;
}

@media (max-width: 960px) {
  form[name="xPAY_ONLINE"] .invoices-wrapper {
    height: auto;
  }

  form[name="xPAY_ONLINE"] div.info-box {
    position: relative;
    padding: 1rem;
    bottom: 0;
    width: 100%;
  }
}

.payment-disclaimer {
  margin-top: 2rem;
}

/****************************************
* Facebook Latest Posts
****************************************/

.login-container {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  padding-top: 15rem;
  padding-bottom: 8rem;
  text-align: center;
}

.login-container >* {
  margin: auto;
}

.login-container h1 {
  text-align: center;
}

.login-container h2 {
  margin-bottom: 5rem;
}

.login-container .loading-message {
  line-height: 40px;
}

.login-container .success-message {
  text-align: center;
  text-transform: none;
}

.login-container .failure-message {
  margin-top: 5rem;
  color: #dd0000;
  text-transform: none
}

.login-container .hide {
  display: none;
}

/****************************************
* Footer
****************************************/

footer {
  background-color: var(--fni-color-3);
}

footer h2 {
  font-size: 18px;
  line-height: 1.3em;
  color: var(--fni-color-4);
}

footer p {
  color: #ffffff;
}

footer a,
footer a:focus,
footer a:hover {
  font-weight: normal;
  color: var(--fni-color-4);
}

footer i {
  margin-right: .5rem;
  color: var(--fni-color-8);
}

footer hr {
  border-top: 5px dotted var(--fni-color-6);
  margin: .5rem 0;
}

footer .review-icons {
  margin-top: 1rem;
}

footer .review-icons a {
  display: inline-block;
  margin-right: 1rem;
}

footer .review-icons i {
  margin: 0;
  font-size: 30px;
  color: var(--fni-color-4);
}

footer .grid > div:last-of-type {
  display: grid;
  grid-template-columns: 1fr 97px;
}

footer .exclamation-mark {
  display: inline-block;
  max-height: 210px;
}

/****************************************
* Attribution
****************************************/

.attribution {
  background-color: var(--fni-color-6);
  padding: .5rem .5rem calc(.5rem + env(safe-area-inset-bottom));
}

.attribution p,
.attribution a {
  font-size: 12px;
  color: #b1c9e8;
}

.attribution a {
  font-weight: normal;
  text-transform: none;
}