/* -------------------------------------- */
/* Fonts                                  */
/*----------------------------------------*/

@font-face {
  font-family: 'DancingScript-Medium';
  src: url('/font/DancingScript-Medium.ttf') format('truetype');
}
@font-face {
  font-family: 'DancingScript-Regular';
  src: url('/font/DancingScript-Regular.ttf') format('truetype');
}
@font-face {
  font-family: 'DancingScript-SemiBold';
  src: url('/font/DancingScript-SemiBold.ttf') format('truetype');
}
@font-face {
  font-family: 'DancingScript-Bold';
  src: url('/font/DancingScript-Bold.ttf') format('truetype');
}
@font-face {
  font-family: 'RougeScript-Regular';
  src: url('/font/RougeScript-Regular.ttf') format('truetype');
}
@font-face {
  font-family: 'NotoSerif-Regular';
  src: url('/font/NotoSerif-Regular.ttf') format('truetype');
}


/* -------------------------------------- */
/* Reset                                  */
/*----------------------------------------*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}


/* -------------------------------------- */
/* General                                */
/*----------------------------------------*/

:root {
  --accent-black: #000000;
  --accent-brown: #795038;
  --accent-grey: #969aa3;
  --accent-blue-dark: #1e2d58;
  --accent-blue-dark-70: #1e2d58AA;
  --accent-blue-medium: #4682b4;
  --accent-blue-light: #cde3f7;
  --accent-blue-light-50: #cde3f777;
  --accent-white: #FFFFFF;
}

::selection {
  background-color: var(--accent-blue-light);
  color: var(--accent-blue-dark);
}

body {
  background-color: var(--accent-blue-dark);
  background-blend-mode: color-burn;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  width: 100vw;
  height: 100vh;
  margin: 0;
  font-size: 18px;
  font-family: "RougeScript-Regular", serif;
  font-weight: lighter;
  box-sizing: border-box;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

.flex-container {
  width: 100%;
  height: calc(100% - 150px);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 0;
  box-sizing: border-box;
}

h1 {
  display: block;
  text-align: center;
  font-size: 6em;
  font-weight: lighter;
  margin: 50px auto;
}

h2 {
  display: block;
  text-align: center;
  font-size: 4em;
  font-weight: lighter;
  margin: 30px auto;
}

h3 {
  display: block;
  text-align: center;
  font-size: 3em;
  font-weight: lighter;
  margin: 20px auto;
}

.heading {
  position: relative;
  left: -50px;
  font-size: 10em;
  pointer-events: none;
  padding: 0 5px;
  animation: fade-in 1s 0.5s ease backwards;
}

.subheading {
  animation: fade-in 1s 1.5s ease backwards; 
}

.heading-separator {
  animation: fade-in 1s 1s ease backwards; 
}

hr {
  display: block;
  width: 200px;
  height: 0;
  border: 1px solid var(--accent-white);
  border-radius: 2px;
  margin: 1em auto 2.5em auto;
}

a {
  color: var(--accent-blue-medium);
  text-decoration: none;
}

a:hover,
a:focus {
  text-decoration: underline;
}

details {
  display: block;
  margin: 0 auto;
  font-family: "NotoSerif-Regular";
}

details > summary {
  list-style: none;
  color: var(--accent-blue-medium);
  text-decoration: none;
  font-family: "RougeScript-Regular";
  text-align: center;
  cursor: pointer;
  font-size: 3em;
  margin: 30px 0 20px;
}
details > summary::-webkit-details-marker {
  display: none;
}
details > summary:hover,
details > summary:focus {
  text-decoration: underline;
}

details > p,
.snow-section details > p {
  width: 100%;
}

html {
	scrollbar-width: thin;
	scrollbar-color: var(--accent-blue-dark);
}
html::-webkit-scrollbar {
  width: 10px;
	background-color: #FFFFFFCC;
}
html::-webkit-scrollbar-thumb {
	border-radius: 5px;
	background: var(--accent-blue-dark);
}



.header-section {
  width: 100%;
  height: 100vh;
  overflow: visible;
  color: var(--accent-white);
  margin: 0;
  padding: 0;
  position: relative;
}

.snow-section {
  width: 100%;
  height: auto;
  background-color: #FFFFFFCC;
  background: linear-gradient(180deg, #FFFFFFFF 0%, #FFFFFFCC 10%, #FFFFFFCC 100%);
  padding: 50px 50px 100px 50px;
  box-sizing: border-box;
  color: var(--accent-blue-dark);
  margin: 0;
  position: relative;
}

.snow-section p {
  width: 50%;
  margin: 20px auto;
  font-size: 1.2em;
  font-family: "NotoSerif-Regular";
  line-height: normal;
}

.snow-section details {
  width: 50%;
}

.snow-section ::selection {
  background-color: var(--accent-blue-dark);
  color: var(--accent-white);
}

.snow-section-text {
  position: relative;
  z-index: 100;
}

.snow-section-text > h1, 
.snow-section-text > h2, 
.snow-section-text > h3, 
.snow-section-text > p,
.snow-section-text > div {
  opacity: 1;
  transition: opacity 1s ease;
}

.snow-section-text > h1.invisible, 
.snow-section-text > h2.invisible, 
.snow-section-text > h3.invisible, 
.snow-section-text > p.invisible,
.snow-section-text > div.invisible,
.snow-section-text a.gallery-img-link.invisible {
  opacity: 0;
}


/* -------------------------------------- */
/* Winter decoration elements             */
/*----------------------------------------*/

.snowfall {
  min-width: 100%;
  min-height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  display: block;
  z-index: 1000;
  mix-blend-mode: screen;
  pointer-events: none;
  animation: fade-in-50 10s 3s ease backwards; 
  opacity: 0.5;
}

.snow-ground {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 999;
  pointer-events: none;
  background: linear-gradient(180deg, transparent 0%, transparent calc(100% - 150.1px), var(--accent-white) calc(100% - 150px), var(--accent-white) 100%);
  background-size: 100% 120%;
  background-position-y: 100%;
}

#coupleInSnow {
  position: absolute;
  right: 0;
  bottom: -38px;
  width: 200px;
  height: 300px;
  fill: var(--accent-white);
  opacity: 0.9;
  overflow: visible;
}

#vundj {
  animation: fade-in-80 2s 6.5s backwards;
}

#torches {
  animation: fade-in-80 2s 7s backwards;
}

#coupleInSnowTorchLight1 {
  fill: rgb(240, 220, 0);
  -webkit-filter: drop-shadow(0 0 3px rgb(240, 220, 0));
  filter: drop-shadow(0 0 3px rgb(240, 220, 0));
  animation: torch1 0.7s 0s infinite alternate ease;
}

#coupleInSnowTorchLight2 {
  fill: rgb(240, 96, 0);
  -webkit-filter: drop-shadow(0 0 3px rgb(240, 96, 0));
  filter: drop-shadow(0 0 3px rgb(240, 96, 0));
  animation: torch2 0.5s 0s infinite alternate ease;
}

#snowSteps {
  fill: var(--accent-grey);
}

#snowStepsAniStep1 {
  animation: fade-in 0.5s 2s backwards;
}
#snowStepsAniStep2 {
  animation: fade-in 0.5s 2.25s backwards;
}
#snowStepsAniStep3 {
  animation: fade-in 0.5s 2.5s backwards;
}
#snowStepsAniStep4 {
  animation: fade-in 0.5s 2.75s backwards;
}
#snowStepsAniStep5 {
  animation: fade-in 0.5s 3s backwards;
}
#snowStepsAniStep6 {
  animation: fade-in 0.5s 3.25s backwards;
}
#snowStepsAniStep7 {
  animation: fade-in 0.5s 3.5s backwards;
}
#snowStepsAniStep8 {
  animation: fade-in 0.5s 3.75s backwards;
}
#snowStepsAniStep9 {
  animation: fade-in 0.5s 4s backwards;
}
#snowStepsAniStep10 {
  animation: fade-in 0.5s 4.25s backwards;
}
#snowStepsAniStep11 {
  animation: fade-in 0.5s 4.5s backwards;
}
#snowStepsAniStep12 {
  animation: fade-in 0.5s 4.75s backwards;
}
#snowStepsAniStep13 {
  animation: fade-in 0.5s 5s backwards;
}
#snowStepsAniStep14 {
  animation: fade-in 0.5s 5.25s backwards;
}
#snowStepsAniStep15 {
  animation: fade-in 0.5s 5.5s backwards;
}
#snowStepsAniStep16 {
  animation: fade-in 0.5s 5.75s backwards;
}
#snowStepsAniStep17 {
  animation: fade-in 0.5s 6s backwards;
}
#snowStepsAniStep18 {
  animation: fade-in 0.5s 6.25s backwards;
}


.tree-svg {
  width: 150px;
  height: auto;
  animation: fade-in 1s 2s backwards;
  z-index: 99;
}

#headerTree1 {
  position: absolute;
  left: 50px;
  bottom: 130px;
}
#headerTree2 {
  position: absolute;
  left: 180px;
  bottom: 110px;
}

#snowTree1 {
  position: absolute;
  right: 50px;
  top: 500px;
}
#snowTree2 {
  position: absolute;
  right: 180px;
  top: 520px;
}
#snowTree3 {
  position: absolute;
  left: 50px;
  top: 2000px;
}
#snowTree4 {
  position: absolute;
  left: 180px;
  top: 2020px;
}
#snowTree5 {
  position: absolute;
  right: 50px;
  top: 3500px;
}
#snowTree6 {
  position: absolute;
  right: 180px;
  top: 3520px;
}


/* -------------------------------------- */
/* Miscellaneous                          */
/*----------------------------------------*/

.flex-color-gallery {
  display: flex;
  width: 50%;
  flex-direction: column;
  flex-wrap: nowrap;
  justify-content: space-between;
  margin: 0 auto;
}

.flex-color-gallery-row {
  display: flex;
  width: 100%;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: center;
  margin: 10px auto;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.color-el {
  display: block;
  width: 150px;
  height: 150px;
  margin: 20px;
  border-radius: 25%;
  box-shadow: 0 0 20px var(--accent-grey);
  transform: scale(1);
  transition: transform 0.5s ease;
}
.color-el:hover,
.color-el:focus {
  transform: scale(1.3);
}
.color-el#grey {
  background-color: var(--accent-grey);
}
.color-el#brown {
  background-color: var(--accent-brown);
}
.color-el#black {
  background-color: var(--accent-black);
}
.color-el#light-blue {
  background-color: var(--accent-blue-light);
}
.color-el#medium-blue {
  background-color: var(--accent-blue-medium);
}
.color-el#dark-blue {
  background-color: var(--accent-blue-dark);
}

.arrow-down {
  position: absolute;
  left: calc(50% - 7px);
  bottom: 50px;
  display: block;
  animation: fade-in 1s ease 9s backwards, jump 3s ease 10s backwards infinite;
}

.arrow-down::before {
  content: '';
  position: absolute;
  width: 20px;
  height: 3px;
  display: block;
  transform: rotate(45deg);
  left: -16px;
  top: 0;
  background-color: var(--accent-grey);
}
.arrow-down::after {
  content: '';
  position: absolute;
  width: 20px;
  height: 3px;
  display: block;
  transform: rotate(-45deg);
  right: -16px;
  top: 0;
  background-color: var(--accent-grey);
}


/* -------------------------------------- */
/* Auth page                              */
/*----------------------------------------*/

.auth-form {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  color: var(--accent-white);
  text-align: center;
  font-family: "NotoSerif-Regular";
}

#authForm > label {
  display: block;
  text-align: center;
  font-size: 4em;
  margin: 30px;
  font-family: "RougeScript-Regular";
}

#authForm > input[type="password"] {
  display: block;
  text-align: center;
  background-color: transparent;
  color: var(--accent-white);
  border: 0;
  border-bottom: 1px solid var(--accent-white);
  outline: none;
  font-size: 3em;
  margin: 30px auto;
  font-family: "NotoSerif-Regular";
  max-width: 95vw;
  box-sizing: border-box;
}

#authForm > input[type="password"].fail {
  border-bottom: 3px solid red;
  animation: shake 0.5s ease;
}

#authForm > button[type="submit"] {
  display: block;
  text-align: center;
  background-color: var(--accent-white);
  color: var(--accent-blue-dark);
  border: 0;
  border-radius: 5px;
  padding: 5px 10px;
  outline: none;
  font-size: 1.5em;
  margin: 30px auto;
  cursor: pointer;
  transition: background-color 0.3s ease, color 0.3s ease;
  font-family: "NotoSerif-Regular";
}

#authForm > button[type="submit"]:hover,
#authForm > button[type="submit"]:focus {
  background-color: var(--accent-blue-medium);
  color: var(--accent-white);
}


/* -------------------------------------- */
/* Image gallery                          */
/*----------------------------------------*/

.gallery {
  width: 70%;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
  grid-auto-flow: row;
  gap: 20px;
  align-items: center;
}

.gallery-img {
  width: 100%;
  display: block;
}

.gallery-img-link {
  position: relative;
  max-width: 100%;
  max-height: 100%;
  height: fit-content;
  display: block;
  z-index: 1;
  filter: saturate(0) contrast(1.2);
  transition: filter 0.5s ease, transform 0.5s ease, box-shadow 0.5s ease, z-index 0s 0.5s, opacity 0.5s ease;
}

.gallery-img-link.invisible {
  opacity: 0;
}

.gallery-img-link:hover, 
.gallery-img-link:focus {
  z-index: 2;
  box-shadow: 0 0 30px #000000;
  filter: saturate(1) contrast(1);
  transform: scale(1.05);
  transition: filter 0.5s ease, transform 0.5s ease, box-shadow 0.5s ease, z-index 0s 0s, opacity 0.5s ease;
}

.gallery-img-download {
  position: absolute;
  width: 100%;
  height: 40px;
  bottom: 0;
  left: 0;
  color: var(--accent-blue-dark);
  font-size: 28px;
  line-height: 40px;
  text-align: center;
  background: url(incl/download-solid.svg) #ffffff;
  background-size: 20px;
  background-repeat: no-repeat;
  background-position: 5% center;
  transition: opacity 0.3s 0s ease, height 0.3s ease, line-height 0.3s ease;
  opacity: 0;
}

.gallery-img-link:hover .gallery-img-download,
.gallery-img-link:focus .gallery-img-download {
  transition: opacity 0.3s 0.5s ease, height 0.3s ease, line-height 0.3s ease;
  opacity: 1;
}

.gallery-img-download:hover {
  line-height: 60px;
  height: 60px;
}

.lb-data .lb-number {
  margin-top: 10px;
  font-size: 32px !important;
}

.wedding-video {
  width: 60%;
  height: auto;
  margin: 0 auto;
  display: block;
  background-color: #000000;
}

/* -------------------------------------- */
/* Media Queries                          */
/*----------------------------------------*/

@media screen and (max-width: 1800px) {
  body {
    font-size: 16px;
  }

  .heading {
    left: -40px;
  }

  .gallery {
    grid-template-columns: 1fr 1fr 1fr;
    width: 90%;
  }
}

@media screen and (max-width: 1500px) {
  body {
    font-size: 14px;
  }

  .heading {
    left: -25px;
  }

  #coupleInSnow {
    width: 140px;
    height: 210px;
    bottom: 19px;
  }  

  .tree-svg {
    width: 100px;
    height: auto;
  }
  #headerTree1 {
    bottom: 140px;
  }
  #headerTree2 {
    left: 130px;
    bottom: 120px;
  }
  #snowTree2 {
    right: 130px;
  }
  #snowTree4 {
    left: 130px;
  }
  #snowTree5 {
    top: 3700px;
  }
  #snowTree6 {
    right: 130px;
    top: 3720px;
  }

  .snow-section p,
  .snow-section details,
  .flex-color-gallery {
    width: 70%;
  }

  .color-el {
    width: 100px;
    height: 100px;
    margin: 15px;
  }
}


@media screen and (max-width: 1000px) {
  #snowTree1,
  #snowTree2,
  #snowTree3,
  #snowTree4,
  #snowTree5,
  #snowTree6 {
    opacity: 0.3;
  }
}

@media screen and (max-width: 800px) {
  body {
    font-size: 12px;
  }

  .heading {
    left: 0;
    font-size: 8em;
  }

  hr {
    width: 100px;
    margin: 0.5em auto 1.5em auto;
  }

  h1 {
    margin: 30px auto;
  }

  #coupleInSnow {
    width: 80px;
    height: 120px;
    bottom: 25px;
  }  

  .tree-svg {
    width: 50px;
    height: auto;
  }
  #headerTree1 {
    left: 30px;
    bottom: 95px;
  }
  #headerTree2 {
    left: 70px;
    bottom: 90px;
  }
  #snowTree1 {
    top: 200px;
  }
  #snowTree2 {
    right: 90px;
    top: 205px;
  }
  #snowTree4 {
    left: 90px;
    top: 2005px;
  }
  #snowTree6 {
    right: 90px;
    top: 3705px;
  }
  

  .snow-section {
    padding: 30px 30px 80px 30px;
  }

  .snow-ground {
    background: linear-gradient(180deg, transparent 0%, transparent calc(100% - 100.1px), var(--accent-white) calc(100% - 100px), var(--accent-white) 100%);
  }
  
  .snow-section p,
  .snow-section details,
  .flex-color-gallery {
    width: 80%;
  }

  .color-el {
    width: 75px;
    height: 75px;
    margin: 10px;
  }

  
  .arrow-down {
    left: calc(50% - 3px);
  }

  .arrow-down::before {
    width: 10px;
    height: 2px;
    left: -8px;
  }
  .arrow-down::after {
    width: 10px;
    height: 2px;
    right: -8px;
  }

  .gallery {
    grid-template-columns: 1fr 1fr;
    width: 95%;
    gap: 10px;
  }

  .gallery-img-download {
    font-size: 22px;
  }  

  .wedding-video {
    width: 80%;
  }
}

@media screen and (max-width: 600px) {
  .snow-section {
    padding: 15px 15px 50px 15px;
  }
  
  .snow-section p,
  .snow-section details,
  .flex-color-gallery {
    width: 100%;
  }

  .wedding-video {
    width: 95%;
  }
}


/* -------------------------------------- */
/* Animation                              */
/*----------------------------------------*/

@keyframes fade-in {
  0% { opacity: 0; }
  100% { opacity: 1; }
}
@keyframes fade-in-50 {
  0% { opacity: 0; }
  100% { opacity: 0.5; }
}
@keyframes fade-in-60 {
  0% { opacity: 0; }
  100% { opacity: 0.6; }
}
@keyframes fade-in-80 {
  0% { opacity: 0; }
  100% { opacity: 0.8; }
}

@keyframes torch1 {
  0% {
    fill: rgb(240, 220, 0);
    -webkit-filter: drop-shadow(0 0 3px rgb(240, 220, 0));
    filter: drop-shadow(0 0 3px rgb(240, 220, 0));
  }
  100% {
    fill: rgb(240, 96, 0);
    -webkit-filter: drop-shadow(0 0 3px rgb(240, 96, 0));
    filter: drop-shadow(0 0 3px rgb(240, 96, 0));
  }
}

@keyframes torch2 {
  0% {
    fill: rgb(240, 96, 0);
    -webkit-filter: drop-shadow(0 0 3px rgb(240, 96, 0));
    filter: drop-shadow(0 0 3px rgb(240, 96, 0));
  }
  100% {
    fill: rgb(240, 220, 0);
    -webkit-filter: drop-shadow(0 0 3px rgb(240, 220, 0));
    filter: drop-shadow(0 0 3px rgb(240, 220, 0));
  }
}

@keyframes jump {
  0% { transform: translateY(0); }
  40% { transform: translateY(0); }
  50% { transform: translateY(10px); }
  60% { transform: translateY(0); }
  100% { transform: translateY(0); }
}

@keyframes shake {
  0% { transform: translateX(0); }
  10% { transform: translateX(5px); }
  20% { transform: translateX(-10px); }
  30% { transform: translateX(15px); }
  40% { transform: translateX(-20px); }
  50% { transform: translateX(25px); }
  60% { transform: translateX(-20px); }
  70% { transform: translateX(15px); }
  80% { transform: translateX(-10px); }
  90% { transform: translateX(5px); }
  100% { transform: translateX(0); }
}