:root {
  --primary-font-color: #766257;
  --bg-color: linear-gradient(to bottom, #e5dfa9d4, #eaeaea);
  --fontSize-heading-lg: 3rem;
  --fontSize-heading-base: 2.8rem;
  --fontSize-text-base: 1rem;
  --sacramento: Preahvihear, cursive;
  --arabic: "Preahvihear", serif;
  --shadow-md: 0 0 10px rgba(255, 255, 255, 0.3);
  --transition-small: all 0.3s ease;
}
@font-face {
  font-family: Preahvihear;
  src: url(../fonts/KhAngToaThmor3.ttf) format("truetype");
}
.w-100 {
  width: 100%;
}
html {
  scroll-behavior: smooth;
  scrollbar-width: none !important;
}
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  text-decoration: none;
  outline: 0;
}
body {
  font-family: Preahvihear, sans-serif;
  color: var(--primary-font-color);
  text-shadow: 2px 2px 5px #ffffff;
  background-color: #f0e8d2;
  overflow-y: hidden;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
body.active {
  overflow-y: auto;
}
body::-webkit-scrollbar {
  display: none;
}
button {
  font-family: Preahvihear, sans-serif;
}
.map {
  width: 100%;
  max-width: 400px;
  height: 300px;
}
.main,
.welcome {
  margin: 0 auto;
  max-width: 450px;
}
.main {
  position: relative;
  box-shadow: var(--shadow-md);
}
p {
  line-height: 1.7rem;
}
.audio button {
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  border: none;
  background-color: #fff;
  color: #000;
  font-size: 1.2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  cursor: pointer;
  transform: translateX(200%);
  transition: 1.5s transform ease;
}
.audio button.show {
  transform: translateX(0);
}
.audio button.active {
  animation: rotate 3s linear infinite;
}
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.fade-in {
  animation: fadeIn 1.25s ease-in-out forwards;
}
.sakura {
  pointer-events: none;
  position: absolute;
  background: #ffda36ea;
  opacity: 0;
  z-index: 9999;
  transition: opacity 1s ease-in-out;
}
.sakura-falling {
  width: 100vw;
  height: 100%;
  position: fixed;
  left: 0;
  top: 0;
}
#sakura {
  width: 100%;
}
#sakura {
  transition: opacity 1s ease-in-out;
}
#sakura.active,
#sakura.active .sakura,
#sakura.active .top-left-decoration,
#sakura.active .top-right-decoration {
  opacity: 1 !important;
}
.top-right-decoration {
  position: absolute;
  top: 0;
  right: 0;
  display: block;
  width: 40%;
  z-index: 9999;
  opacity: 0;
  /* filter: drop-shadow(5px 5px 10px #222); */
  transition: all 1s ease-in-out;
}
.top-left-decoration {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 40%;
  z-index: 9999;
  opacity: 0;
  /* filter: drop-shadow(5px 5px 10px #222); */
  transition: all 1s ease-in-out;
}
.bride {
  width: 100%;
  min-height: 100vh;
  text-align: center;
  padding: 10rem 8rem;
  position: relative;
}
.bride h2 {
  font-size: 1.6rem;
  font-family: var(--arabic);
  font-weight: 400;
}
.bride h3 {
  font-size: var(--fontSize-heading-base);
  font-family: var(--sacramento);
  font-weight: 400;
  margin: 1rem 0;
}
.bride .bride_couple,
.bride .bride_couple li,
.bride .bride_couple li figure,
.bride .bride_couple ul {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
}
.bride .bride_couple {
  margin-top: 1rem;
}
.bride .bride_couple ul {
  gap: 1rem;
}
.bride .bride_couple li figure img {
  width: 12rem;
  height: 12rem;
  object-fit: cover;
  border-radius: 50%;
  box-shadow: var(--shadow-md);
}
.bride .bride_couple li figure figcaption {
  font-size: var(--fontSize-heading-base);
  margin: 1rem 0;
  font-family: var(--sacramento);
}
.bride .bride_couple span {
  font-size: 3.4rem;
  font-family: var(--sacramento);
  font-weight: 400;
  margin-top: 1rem;
}
.bride i,
.galeri > i,
.hadist i,
.time a + p + i {
  font-size: 3rem;
  color: #f0e9b7;
  position: absolute;
  z-index: 10;
  animation: upAndDown 3s infinite;
}
.bride i:nth-of-type(1) {
  top: 14rem;
  right: 8rem;
}
.bride i:nth-of-type(2) {
  left: 8rem;
  top: 24rem;
}
.bride i:nth-of-type(3) {
  top: 54rem;
  right: 8rem;
}
.bride i:nth-of-type(4) {
  top: 60rem;
  left: 8rem;
}
.bride i:nth-of-type(5) {
  right: 8rem;
  bottom: 6rem;
}
.hadist {
  width: 100%;
  padding: 4rem 8rem;
  text-align: center;
  background: var(--bg-color);
  position: relative;
}
.hadist h2 {
  font-size: var(--fontSize-heading-base);
  font-family: var(--sacramento);
  font-weight: 400;
  margin-bottom: 1rem;
}
.hadist p span {
  display: block;
  margin-top: 1rem;
  font-size: 1.1rem;
}
.hadist i {
  top: 16rem;
  left: 8rem;
}
.hadist svg {
  position: absolute;
  left: 0;
  right: 0;
  z-index: -10;
}
.hadist svg:nth-of-type(1) {
  top: -8rem;
}
.hadist svg:nth-of-type(2) {
  bottom: -10rem;
}
.galeri {
  width: 100%;
  min-height: 100vh;
  text-align: center;
  padding: 4rem 8rem 12rem;
  position: relative;
}
.galeri .container {
  border: 3px solid #fff;
  width: 100%;
  padding: 0 1.5rem 2rem;
  border-radius: 15px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1), 0 -1px 1px rgba(0, 0, 0, 0.1);
  position: relative;
}
.galeri .container h2,
.galeri div:nth-of-type(2) h2 {
  font-family: var(--sacramento);
  font-size: var(--fontSize-heading-base);
  font-weight: 400;
  padding: 2rem 1rem;
}
.gift {
  position: relative;
  padding: 1rem 0;
  z-index: 2;
}
.gift h2 {
  font-family: var(--sacramento);
  font-size: var(--fontSize-heading-base);
  font-weight: 400;
}
.galeri .container figure {
  width: 100%;
  height: 35rem;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow-x: auto;
  scrollbar-width: none;
}
.galeri .container figure::-webkit-scrollbar,
.galeri div:nth-of-type(2)::-webkit-scrollbar,
.galeri div:nth-of-type(3)::-webkit-scrollbar {
  display: none;
}
.galeri .container figure img {
  width: 100%;
  margin: auto;
  border-radius: 8px;
  object-fit: contain;
  transition: all ease-in-out 0.5s;
}
.galeri .container figure img:hover {
  cursor: pointer;
}
.galeri .container ul {
  padding: 0.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 5.6rem;
}
.galeri .container ul li {
  width: 1.8rem;
  height: 0.25rem;
  background-color: rgba(255, 255, 255, 0.5);
  border-radius: 1px;
  list-style-type: none;
  cursor: pointer;
}
.galeri .container ul li.active {
  background-color: #fff;
}
.galeri .container button:nth-of-type(1),
.galeri .container button:nth-of-type(2) {
  font-size: 4rem;
  color: rgba(255, 255, 255, 0.5);
  background: 0 0;
  border: none;
  position: absolute;
  top: 24.6rem;
}
.galeri .container button:nth-of-type(1) i:hover,
.galeri .container button:nth-of-type(2) i:hover {
  color: #fff;
  cursor: pointer;
}
.galeri .container button:nth-of-type(1) {
  left: 2rem;
}
.galeri .container button:nth-of-type(2) {
  right: 2rem;
}
.galeri .container button:nth-of-type(3) {
  padding: 0.5rem 1rem;
  background-color: #fff;
  border: 1px solid #000;
  border-radius: 20px;
  margin-top: 4rem;
  transition: var(--transition-small);
}
.galeri .container button:nth-of-type(3):hover {
  color: #fff;
  background-color: #000;
  cursor: pointer;
}
.galeri div:nth-of-type(2) {
  width: 100%;
  height: 100vh;
  padding: 2rem 8rem;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #000;
  z-index: 99999;
  overflow-y: auto;
  transition: all 0.3s ease;
  transform: scale(0);
  opacity: 0;
  transform-origin: bottom;
}
.galeri div:nth-of-type(3) {
  width: 100%;
  height: 100%;
  padding: 0 8rem;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #000;
  z-index: 99999;
  transition: all 0.3s ease;
  transform: scale(0);
  opacity: 0;
  transform-origin: bottom;
}
.galeri div:nth-of-type(2) > div {
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1), 0 -1px 1px rgba(0, 0, 0, 0.1);
  border-radius: 15px;
  padding: 2rem;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
  gap: 2rem;
}
.galeri div:nth-of-type(3) > div {
  height: 100%;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1), 0 -1px 1px rgba(0, 0, 0, 0.1);
  border-radius: 0;
  padding: 0 1rem;
}
.galeri div:nth-of-type(3) > div img {
  margin: auto;
  width: 100%;
  height: 100%;
  object-fit: contain;
  border-radius: 0;
}
.galeri div:nth-of-type(2) > div img {
  margin: auto;
  width: 100%;
  object-fit: cover;
  border-radius: 20px;
}
.galeri div:nth-of-type(2) button,
.galeri div:nth-of-type(3) button {
  padding: 0;
  font-size: 2rem;
  background: 0 0;
  border: none;
  cursor: pointer;
  position: absolute;
  top: 0;
  right: 5px;
  color: #fff;
  transition: var(--transition-small);
}
.galeri div:nth-of-type(2) button:hover i,
.galeri div:nth-of-type(3) button:hover i {
  text-shadow: 1px 2px 5px rgba(0, 0, 0, 0.5);
}
.galeri div:nth-of-type(2).active,
.galeri div:nth-of-type(3).active {
  transform: scale(1);
  opacity: 1;
}
.galeri > i {
  top: 2rem;
  left: 10rem;
}
.top div div {
  min-width: 110px;
}
.top div div span:nth-of-type(1) {
  min-width: 50px;
  text-align: left;
}
.home {
  width: 100%;
  height: 100%;
  text-align: center;
  background: var(--bg-color);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  position: relative;
  transition: all 2s ease;
  transform: translateY(-600%);
}
.home.active {
  transform: translateY(0);
}
.home h2 {
  margin-top: 100px;
  padding: 0 10px;
  font-size: 2.4rem;
  font-family: var(--sacramento);
  font-weight: 400;
}
.home figure {
  margin: 2rem auto 0;
}
.home figure img {
  border: 2px solid #fff;
  width: 10rem;
  height: 10rem;
  border-radius: 50%;
  object-fit: cover;
  box-shadow: var(--shadow-md);
}
.home figure figcaption {
  margin: 0 0 0.5rem;
  font-weight: 400;
  font-family: var(--sacramento);
  font-size: var(--fontSize-heading-lg);
}
.home h3 {
  font-weight: 500;
}
.home .home-time {
  margin-top: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
}
.home .home-time div {
  width: 3rem;
  height: 3rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #000;
  border-radius: 8px;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
}
.home .home-time div p {
  font-size: 0.8rem;
  line-height: normal;
}
.home .home-time div p span {
  font-size: 0.6rem;
  margin-top: 0.2rem;
}
.gift a,
.home a {
  padding: 0.5rem 1rem;
  color: #fff;
  font-size: 1rem;
  background-color: #000;
  margin: 1rem auto;
  border-radius: 20px;
  width: fit-content;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
}
.home a i {
  font-size: 1.2rem;
}
.top .scroll_down {
  margin-bottom: 5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 1rem;
  width: 100%;
  background-color: transparent;
}
.home svg {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -110px;
  z-index: -10;
  filter: drop-shadow(0 -1px 3px rgba(0, 0, 0, 0.5));
}
nav {
  display: flex;
  width: 100%;
  max-width: 450px;
  padding: 0 1.4rem;
  color: var(--bg-color);
  background-color: #f9d543fe;
  align-items: center;
  justify-content: space-between;
  border-top-left-radius: 12px;
  border-top-right-radius: 12px;
  padding-top: 10px;
  position: fixed;
  bottom: -100%;
  z-index: 99;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
  transform: translateY(0);
  transition: bottom 2s ease, transform 1s ease;
}
nav.active {
  bottom: 0;
}
nav.scroll {
  transform: translateY(100%);
}
nav a {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 0.1rem;
  width: 4rem;
  height: 3rem;
  color: #fff;
}
nav a i {
  font-size: 1.2rem;
}
nav a span {
  font-size: 0.6rem;
}
nav a:hover {
  background-color: transparent;
  color: #fff;
}
.time {
  width: 100%;
  min-height: 100vh;
  text-align: center;
  padding: 10rem 8rem;
  position: relative;
  background: linear-gradient(to bottom, #fff8c1, #fff7ba);
}
.time h2 {
  font-family: var(--sacramento);
  font-size: var(--fontSize-heading-base);
  font-weight: 400;
  margin-bottom: 2rem;
}
.time div:nth-of-type(1) {
  margin-top: 2rem;
}
.time div:nth-of-type(1) div h3 {
  font-family: var(--sacramento);
  font-size: var(--fontSize-heading-lg);
  font-weight: 400;
}
.time div:nth-of-type(1) div:nth-of-type(2) {
  margin-top: 2rem;
}
.time svg {
  width: 100%;
  position: absolute;
  left: 0;
  right: 0;
  z-index: -10;
}
.time svg:nth-of-type(1) {
  top: -5rem;
  filter: drop-shadow(0 -1px 3px rgba(255, 255, 255, 0.5));
}
.time a {
  padding: 0.5rem 1rem;
  color: #fff;
  font-size: 1rem;
  background-color: #000;
  margin: 2rem auto 1rem;
  border-radius: 20px;
  width: fit-content;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
}
.time a i {
  font-size: 1.2rem;
}
.time a + p + i {
  right: 8rem;
  top: 22rem;
}
@keyframes rotate {
  0% {
    transform: rotate(0);
  }
  100% {
    transform: rotate(360deg);
  }
}
@keyframes upAndDown {
  0%,
  100% {
    transform: translateY(-0.8rem);
  }
  50% {
    transform: translateY(0.8rem);
  }
}
@-webkit-keyframes fall {
  0% {
    opacity: 0.9;
    top: 0;
  }
  100% {
    opacity: 0.2;
    top: 100%;
  }
}
@keyframes fall {
  0% {
    opacity: 0.9;
    top: 0;
  }
  100% {
    opacity: 0.2;
    top: 100%;
  }
}
@-webkit-keyframes blow-soft-left {
  0% {
    margin-left: 0;
  }
  100% {
    margin-left: -50%;
  }
}
@keyframes blow-soft-left {
  0% {
    margin-left: 0;
  }
  100% {
    margin-left: -50%;
  }
}
@-webkit-keyframes blow-medium-left {
  0% {
    margin-left: 0;
  }
  100% {
    margin-left: -100%;
  }
}
@keyframes blow-medium-left {
  0% {
    margin-left: 0;
  }
  100% {
    margin-left: -100%;
  }
}
@-webkit-keyframes blow-soft-right {
  0% {
    margin-left: 0;
  }
  100% {
    margin-left: 50%;
  }
}
@keyframes blow-soft-right {
  0% {
    margin-left: 0;
  }
  100% {
    margin-left: 50%;
  }
}
@-webkit-keyframes blow-medium-right {
  0% {
    margin-left: 0;
  }
  100% {
    margin-left: 100%;
  }
}
@keyframes blow-medium-right {
  0% {
    margin-left: 0;
  }
  100% {
    margin-left: 100%;
  }
}
@-webkit-keyframes sway-0 {
  0% {
    -webkit-transform: rotate(-5deg);
  }
  40% {
    -webkit-transform: rotate(28deg);
  }
  100% {
    -webkit-transform: rotate(3deg);
  }
}
@keyframes sway-0 {
  0% {
    -ms-transform: rotate(-5deg);
    transform: rotate(-5deg);
  }
  40% {
    -ms-transform: rotate(28deg);
    transform: rotate(28deg);
  }
  100% {
    -ms-transform: rotate(3deg);
    transform: rotate(3deg);
  }
}
@-webkit-keyframes sway-1 {
  0% {
    -webkit-transform: rotate(10deg);
  }
  40% {
    -webkit-transform: rotate(43deg);
  }
  100% {
    -webkit-transform: rotate(15deg);
  }
}
@keyframes sway-1 {
  0% {
    -ms-transform: rotate(10deg);
    transform: rotate(10deg);
  }
  40% {
    -ms-transform: rotate(43deg);
    transform: rotate(43deg);
  }
  100% {
    -ms-transform: rotate(15deg);
    transform: rotate(15deg);
  }
}
@-webkit-keyframes sway-2 {
  0% {
    -webkit-transform: rotate(15deg);
  }
  40% {
    -webkit-transform: rotate(56deg);
  }
  100% {
    -webkit-transform: rotate(22deg);
  }
}
@keyframes sway-2 {
  0% {
    -ms-transform: rotate(15deg);
    transform: rotate(15deg);
  }
  40% {
    -ms-transform: rotate(56deg);
    transform: rotate(56deg);
  }
  100% {
    -ms-transform: rotate(22deg);
    transform: rotate(22deg);
  }
}
@-webkit-keyframes sway-3 {
  0% {
    -webkit-transform: rotate(25deg);
  }
  40% {
    -webkit-transform: rotate(74deg);
  }
  100% {
    -webkit-transform: rotate(37deg);
  }
}
@keyframes sway-3 {
  0% {
    -ms-transform: rotate(25deg);
    transform: rotate(25deg);
  }
  40% {
    -ms-transform: rotate(74deg);
    transform: rotate(74deg);
  }
  100% {
    -ms-transform: rotate(37deg);
    transform: rotate(37deg);
  }
}
@-webkit-keyframes sway-4 {
  0% {
    -webkit-transform: rotate(40deg);
  }
  40% {
    -webkit-transform: rotate(68deg);
  }
  100% {
    -webkit-transform: rotate(25deg);
  }
}
@keyframes sway-4 {
  0% {
    -ms-transform: rotate(40deg);
    transform: rotate(40deg);
  }
  40% {
    -ms-transform: rotate(68deg);
    transform: rotate(68deg);
  }
  100% {
    -ms-transform: rotate(25deg);
    transform: rotate(25deg);
  }
}
@-webkit-keyframes sway-5 {
  0% {
    -webkit-transform: rotate(50deg);
  }
  40% {
    -webkit-transform: rotate(78deg);
  }
  100% {
    -webkit-transform: rotate(40deg);
  }
}
@keyframes sway-5 {
  0% {
    -ms-transform: rotate(50deg);
    transform: rotate(50deg);
  }
  40% {
    -ms-transform: rotate(78deg);
    transform: rotate(78deg);
  }
  100% {
    -ms-transform: rotate(40deg);
    transform: rotate(40deg);
  }
}
@-webkit-keyframes sway-6 {
  0% {
    -webkit-transform: rotate(65deg);
  }
  40% {
    -webkit-transform: rotate(92deg);
  }
  100% {
    -webkit-transform: rotate(58deg);
  }
}
@keyframes sway-6 {
  0% {
    -ms-transform: rotate(65deg);
    transform: rotate(65deg);
  }
  40% {
    -ms-transform: rotate(92deg);
    transform: rotate(92deg);
  }
  100% {
    -ms-transform: rotate(58deg);
    transform: rotate(58deg);
  }
}
@-webkit-keyframes sway-7 {
  0% {
    -webkit-transform: rotate(72deg);
  }
  40% {
    -webkit-transform: rotate(118deg);
  }
  100% {
    -webkit-transform: rotate(68deg);
  }
}
@keyframes sway-7 {
  0% {
    -ms-transform: rotate(72deg);
    transform: rotate(72deg);
  }
  40% {
    -ms-transform: rotate(118deg);
    transform: rotate(118deg);
  }
  100% {
    -ms-transform: rotate(68deg);
    transform: rotate(68deg);
  }
}
@-webkit-keyframes sway-8 {
  0% {
    -webkit-transform: rotate(94deg);
  }
  40% {
    -webkit-transform: rotate(136deg);
  }
  100% {
    -webkit-transform: rotate(82deg);
  }
}
@keyframes sway-8 {
  0% {
    -ms-transform: rotate(94deg);
    transform: rotate(94deg);
  }
  40% {
    -ms-transform: rotate(136deg);
    transform: rotate(136deg);
  }
  100% {
    -ms-transform: rotate(82deg);
    transform: rotate(82deg);
  }
}
