/* 

Fonts: 
    font-family: 'Esteban', serif; 400 REG
    font-family: 'Poppins', sans-serif; 200,300,400,500,600,700 + italics

*/

:root {
    --dark: #0D248E;
    --light: #ffffff;
    --featured: #f8ae56;
    --highlight: #ffffff;
    --paragraph: 'Poppins', sans-serif;
    --heading:'Poppins', sans-serif;
}

* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

img { max-width: 100%; }

[class*=grid] {
    margin:0;
}

html {
    scroll-behavior: smooth;
}

/* Utility Classes */

.tall-30 { min-height: 30vh; }
.tall-40 { min-height: 40vh; }
.tall-50 { min-height: 50vh; }
.tall-60 { min-height: 60vh; }
.tall-70 { min-height: 70vh; }
.tall-80 { min-height: 80vh; }
.tall-90 { min-height: 90vh; }

.padded    { padding: 5%;    }
.padded-1  { padding: 1rem;  }
.padded-2  { padding: 2rem;  }

.padded-t  { padding-top: 5%;     }
.padded-b  { padding-bottom: 5%;  }
.padded-l  { padding-left: 5%;    }
.padded-r  { padding-right: 5%;   }

.padded-lr-1 {padding: 0 1rem 0 1rem;}

.padded-t-1 {padding-top:1rem;}
.padded-b-2 {padding-bottom:2rem;}

.banner-border {
    border: 2rem white solid;
}

.gallery-margin {
    margin: 1.5rem 1.2rem 1.5rem 1.2rem;
}

.main-gallery-padding {
    padding: 2.5rem 2.3rem 2.5rem 2.3rem;
}

.margin-b-1 { margin-bottom: 1rem; }
.margin-b-2 { margin-bottom: 2rem; }

.padded-0 { padding: 0; }
.padded-b-0 { padding-bottom: 0; }
.margin-b-0 { margin-bottom: 0; }

.margin-t-1 {margin-top: 1rem;}
.margin-t-2 {margin-top: 2rem;}

.margin-tb-1 {
    margin-top:1rem;
    margin-bottom:1rem;
}

.left   { text-align: left; }
.center { text-align: center; }
.right  { text-align: right; }

.uppercase {text-transform: uppercase;}
.not-bold {font-weight:400;}
.bold {font-weight:500;}

.capped-width {
    max-width: 1000px;
    margin:auto;
}

.capped-width-narrow {
    max-width: 900px;
    margin:auto;
}

/* Typography */

body {
    font-family: var(--paragraph);
    font-weight: 300;
    color: var(--dark);
    background-color: var(--highlight);
}

h1,h2,h3,h4,h5,h6 {
    font-family:var(--paragraph);
    margin-bottom: 0.8rem;
    letter-spacing: -0.01em;
    font-weight:500;
}

h1 {
    font-size: 3rem;
    font-family:var(--heading);
    font-weight:500;
}

h2 {
    font-size: 2rem;
}

h3 {
    font-size: 1.5rem;
}

p  {
 font-family: var(--paragraph);
 font-weight: 300;   
 line-height: 1.7;
 margin-bottom: 0.8rem;
 font-size: 1rem;
}

p:last-child{
    margin-bottom: 0;
}

.subtle { 
    opacity: 0.8;
    font-size: 0.7rem;
    margin-bottom:0;
}

.emphasis {
    font-size: 1.1rem;
    font-weight: 400; 
}

.larger-h2 {font-size:2.5rem;}

.light-text {
    color:var(--light);
}

.icon-spaced {
    margin:0.5rem;
}

.small-icon {
    max-height:20%;
    max-width:20%;
}

.featured-text {
    font-size:1.5rem;
    font-weight:500;
    color:var(--light);
}



/* Underline animation effect on hover links */

a {
    display:inline-block;
    position: relative;
    color: inherit;
    padding-bottom: 0;
    text-decoration:none;
}

a::before {
    content: '';
    position: absolute;
    width: 100%;
    height: 1px;
    border-radius: 1px;
    background-color: var(--dark);
    bottom: 0;
    left: 0;
    transform-origin: right;
    transform: scaleX(0);
    transition: transform .3s ease-in-out;
  }

a:hover::before {
  transform-origin: left;
  transform: scaleX(1);
}

/* Changing underline colour for links on dark background */

.bg-dark a::before {
    background-color: var(--light);
  }

/* Buttons + remove underline effect on buttons */

.button {
  text-decoration: none;
  border: 2px solid; 
  border-radius: 20px;
  padding: 0.5rem 1rem;
  display: inline-block;
  font-weight: 400;
  color:var(--light);
  margin-top: 2rem;
  transition: 0.3s all;
}

.button-dark {
    text-decoration: none;
    border: 2px solid; 
    border-radius: 20px;
    padding: 0.5rem 1rem;
    display: inline-block;
    font-weight: 400;
    color:var(--dark);
    transition: 0.3s all;
  }

.banner-button {
    margin-top: 4rem;
    font-size:1.5rem;
}

.button-dark:hover {
    color:var(--featured);
}

.button-dark::before {
    height:0px;
  }

.button-dark:hover::before{
    transform: none;
    transform-origin: none;
}

.bg-dark .button:hover {
    color:var(--highlight);
}

/* Remove underline effect on specific links */

.no-underline::before {
    height:0px;
  }

.no-underline:hover::before{
    transform: none;
    transform-origin: none;
}

/* Remove underline styles for image block links */

.norm-links a{
    color: inherit;
    transition: 0.5s all;
    text-decoration: none;
    border-bottom:none;
    position: inherit;
    display:block;
}

.norm-links a::before {
    height:0px;
  }

.norm-links a:hover::before{
    transform: none;
    transform-origin: none;
}

/* Header & Footer  */

header {
    padding: 0.5% 5%;
}

footer a {
    text-decoration:none;
    padding:0.5rem;
    padding-bottom:0;
    border:none;
}

header a {
    text-decoration: none;
    padding: 0.25rem;
    padding-bottom:0;
    border:none;
}

.menu {
    padding:0.5rem;
}

.menu a {
    padding: 0 0.5rem;
    margin: 0 1.5rem;
}

.footer-menu a {
    padding: 0 0.5rem;
    margin: 0 1.5rem;
}

footer a {
    padding-bottom:0;
}

.footer-menu a:last-child {
    margin-right: 0;
}

.social-menu {
    padding:0.5rem;
}

/* Aspect Ratio  */
.portrait-tall { padding-bottom: 175%; }
.portrait { padding-bottom: 125%; }
.square { padding-bottom: 100%; }
.landscape { padding-bottom: 66%; }
.landscape-wide { padding-bottom: 56%; }

/* Hamburger Menu */

.hamburger-button {
    cursor: pointer;
    padding: 0.5rem;
    display: inline-block;
    font-weight: 200;
    font-size: 1.5rem;
    line-height: 0.8;
    position: absolute;
    right: 5%;
    top: 0;
    z-index: 4;
  }
  
  /* Styles when the hamburger button is active  */
  .hamburger-button.active {
    color: var(--featured);
  }
  
  
  .mobile-menu {
    display: none; 
    background-color: var(--highlight);
    padding: 10%;
    position: fixed; 
    z-index:3;
    top: 1rem;
    bottom: 0;
    left: 0;
    right: 0;
    text-align: center;
  }
  
  .mobile-menu a {
    text-decoration: none;
    border-bottom:none; 
    color: inherit; 
    padding: 5%;
    display: block;
    font-weight: normal;
  }



/* Map styles */

.mapouter {
    position:relative;
    text-align:right;
    height:500px;
    width:600px;
    padding:0;
    border: 2rem transparent solid;
}

.gmap_canvas {
    overflow:hidden;
    background:none!important;
    height:100%;
    width:100%;
}

#mapcontent {
    font-family: inherit;
    font-size: 1rem;
    text-align: center;
}

/* Background Images and Colours */

.banner {
    background-color:var(--light); 
    background-size: cover; 
    background-position: center; 
    background-repeat: no-repeat;
}

.bg-dark {
    background-color:var(--dark);
    color:var(--light);
}
.bg-light {background-color:var(--light);}
.bg-featured {background-color:var(--featured);}
.bg-highlight {background-color:var(--highlight);}

.bg-img {
    background-color:var(--light);
    background-size: cover;
    background-position: center;
    background-repeat:no-repeat;
}

/* Overlay */

.bg-overlay {
    position: relative;
  }
  
.bg-overlay::before {
    content: ""; 
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    background-color: rgba(0,0,0,0.5);
  }
  
.bg-overlay > * {
    position: relative;
  }

/* Gridlex Classes */

.flex-flip-alternate:nth-child(even) {
    flex-direction: row-reverse;
}

/* Contact Forms  */

form input, 
form textarea {
  width: 100%;
  margin: 0.5rem 0;
  padding: 0.5rem;
  border: 2px solid #a2745c;
  outline: none;
  font-family: inherit;
  font-size: 0.9rem;
}

form input:focus,
form textarea:focus {
  border-color: #9b9b81;
}

textarea {
  min-height: 4rem;
}

form label {
  margin-top: 1rem;
  display: block;
  color: #a2745c;
  font-weight: bold;
}

form .button {
    border: 2px solid #a2745c;
    background: none;
    color: #a2745c;
    font-weight: bold;
    padding: 0.5rem 2rem;
    margin-top: 1rem;
}


/* Media Queries */

/* General CSS Styles (apply everywhere) */ 
 
.show-sm,
.show-md {
    display: none;
}

/* --------------- MD Media Query (64em / 1024px) --------------- */ 
/* Styles added here will apply at devices smaller than 576px, or zoomed in equivalent */ 

@media (max-width: 64em) {
    .show-md { display: inline-block; }
    .hide-md { display: none; }

    .md-padded-2 {padding:2rem;}

    .md-tall-30 { min-height:30vh; }
    .md-tall-40 { min-height:40vh; }
    .md-tall-50 { min-height:50vh; }
    .md-tall-60 { min-height:60vh; }
    .md-tall-70 { min-height:70vh; }

    .padded {padding:7%;}

    .flex-flip-md {
        flex-direction: row-reverse;
     }

     .hamburger-button {
        cursor: pointer;
        padding: 0.5rem;
        display: inline-block;
        font-weight: 200;
        font-size: 2.5rem;
        line-height: 0.8;
        position: absolute;
        right: 5%;
        top: 1.5rem;
        z-index: 4;
      }

    

}

/* SM - max-width in pixels approximately 768px */
@media(max-width: 48em) {

    .show-sm { display:inline-block; }
    .hide-sm {display: none; }

    .center-sm { text-align: center; }

    .sm-padded-0 { padding:0; }
    .sm-padded-2 { padding:2rem; }

    .margin-t-sm { margin-top:0.5rem; }
    .margin-sm { margin:0.2rem; }

    .sm-tall-30 { min-height:30vh; }

    .flex-flip-sm { flex-direction: column-reverse; }

    h1 {
        font-size: 2rem;
    }
    
    h2 {
        font-size: 1.5rem;
    }
    
    h3 {
        font-size: 1rem;
    }
    
    p  {
     font-family: var(--paragraph);
     font-weight: 300;   
     line-height: 1.8;
     margin-bottom: 0.5rem;
     font-size: 0.8rem;
    }

    .larger-h2 {font-size: 1.7rem;}

    .button-dark {
        text-decoration: none;
        border: 1px solid;
        border-radius: 20px;
        padding: 0.5rem 1rem;
        display: inline-block;
        font-weight: 400;
        color: var(--dark);
        transition: 0.3s all;
        font-size:0.8rem;
    }

    .subtle { 
        opacity: 0.8;
        font-size: 0.5rem;
    }

    .gallery-margin {
        margin: 0;
    }

    .gallery-padding {
        padding: 1rem 0.8rem 1rem 0.8rem;
    }

    .logo {
        font-size:1.3rem;
        margin-bottom:0;
    }

    .hamburger-button {
        cursor: pointer;
        padding: 0.5rem;
        display: inline-block;
        font-weight: 200;
        font-size: 1.5rem;
        line-height: 0.8;
        position: absolute;
        right: 5%;
        top: 1rem;
        z-index: 4;
      }

    .mapouter {
        position:relative;
        text-align:right;
        height:100%;
        width:100%;
        padding:0;
        border:none;
    }
}
