/* || Global Styles */

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

:root {
  /* Colours */

  --neutral-900: #2b2620;
  --neutral-800: #3e3428;
  --neutral-700: #5a4c3c;
  --neutral-600: #7a6a57;
  --neutral-400: #e4ded5;
  --neutral-200: #f2eeea;
  --neutral-100: #fbf6ef;
  --neutral-50: #fdfbf7;
  --neutral-0: #fff;
  --sun-500: #edb63a;
  --sun-300: #f5d98a;
  --sun-200: #ffde7a;
  --sun-50: #fff4dc;
  --blue-500: #5769c6;

  --terracotta-700: #9f3e1d;
  --terracotta-600: #b7411b;
  --terracotta-500: #c25a2e;
  --terracotta-400: #e07a3f;
  --terracotta-300: #f1b39f;
  --rose-500: #c04a72;

  /* Text Presets */
  --txt-preset-1-fs: 3rem;
  --txt-preset-1-lh: 120%;
  --txt-preset-1-ls: -0.5008px;
  --txt-preset-1-fw: 400;
  --txt-preset-1-ital-fs: 40px;
  --txt-preset-1-ital-lh: 120%;
  --txt-preset-1-ital-ls: -0.5008px;
  --txt-preset-1-ital-style: italic;
  --txt-preset-1-ital-fw: 400;
  --txt-preset-2-fs: 28.8px;
  --txt-preset-2-lh: 120%;
  --txt-preset-2-ls: -0.2496px;
  --txt-preset-2-fw: 400;
  --txt-preset-3-fs: 24px;
  --txt-preset-3-lh: 140%;
  --txt-preset-3-ls: -0.2px;
  --txt-preset-3-fw: 400;
  --txt-preset-4-fs: 20px;
  --txt-preset-4-lh: 140%;
  --txt-preset-4-ls: -0.1008px;
  --txt-preset-4-fw: 400;
  --txt-preset-4-ital-fs: 20px;
  --txt-preset-4-ital-lh: 140%;
  --txt-preset-4-ital-ls: -0.1008px;
  --txt-preset-4-ital-style: italic;
  --txt-preset-4-ital-fw: 400;
  --txt-preset-5-fs: 12.4px;
  --txt-preset-5-lh: 140%;
  --txt-preset-5-fw: 400;
  --txt-preset-5-med-fs: 14px;
  --txt-preset-5-med-lh: 120%;
  --txt-preset-5-med-fw: 500;
  --txt-preset-5-semi-b-fs: 14px;
  --txt-preset-5-semi-b-lh: 120%;
  --txt-preset-5-semi-b-ls: 0.2992px;
  --txt-preset-5-semi-b-fw: 600;
  --txt-preset-6-fs: 14px;
  --txt-preset-6-lh: 140%;
  --txt-preset-6-ls: 2px;
  --txt-preset-6-fw: 500;
  --txt-preset-7-fs: 10.4px;
  --txt-preset-7-lh: 120%;
  --txt-preset-7-ls: 0.4px;
  --txt-preset-8-fs: 12px;
  --txt-preset-8-lh: 140%;
  --txt-preset-8-ls: 2px;
  --txt-preset-9-fs: 12px;
  --txt-preset-9-lh: 140%;
  --txt-preset-10-fs: 10px;
  --txt-preset-10-lh: 140%;
  --txt-preset-10-ls: 1px;
  --txt-preset-11-fs: 10px;
  --txt-preset-11-lh: 140%;
  --txt-preset-11-ls: 1px;
}

/* || Main Styles */

html {
  scroll-behavior: smooth;
}

body {
  position: relative;
  width: min(100%, 1440px);
  height: 100vh;
}

/* Mobile Header */

header {
  background-color: var(--neutral-100);
  width: 100%;
}

.header-items {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px;
}

.header-overflow {
  border-top: 1.6px solid var(--neutral-400);
  background-color: var(--neutral-100);
  width: 100%;
  height: 16px;
}

.header-menu-icon,
.close-btn {
  cursor: pointer;
  border: 0.0625rem solid var(--neutral-400);
  border-radius: 0.25rem;
  padding: 0.5rem;
}

/* Mobile Menu */

.overlay {
  display: block;
  position: absolute;
  opacity: 0;
  z-index: -1;
  transition:
    opacity 0.3s ease-in-out,
    z-index 0.1s ease-in-out;
  inset: 0;
  background-color: var(--neutral-700);
  width: 100%;
  height: 100vh;
}

.overlay_visble {
  opacity: 0.5;
  z-index: 98;
}

.mobile_menu {
  display: block;
  position: fixed;
  transform: translateX(-100%);
  opacity: 1;
  z-index: -1;
  transition:
    transform 0.2s ease-in-out,
    opacity 0.1s ease-in-out,
    z-index 0.1s ease-in-out;
  inset: 0;
  background-color: var(--neutral-100);
  width: 20rem;
}

.mobile_menu_visible {
  transform: translateX(0%);
  opacity: 1;
  z-index: 99;
}

.mobile_header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-block-end: 1rem;
  border: 0.0625rem solid var(--neutral-400);
  background-color: var(--neutral-100);
  padding: 1rem;
  width: 100%;
}

.mobile_nav {
  list-style: none;
}

.mobile_menu_content {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 0 1rem;
  height: 85vh;
}

.mobile_nav_list_item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  transition: background-color 0.2s ease-in-out;
  cursor: pointer;
  border-radius: 0.5rem;
  padding: 0.5rem 0.75rem;
  font-weight: var(--txt-preset-5-med-fw);
  font-size: var(--txt-preset-5-med-fs);
  line-height: var(--txt-preset-5-med-lh);
  font-family: 'DM Sans', Arial, Helvetica, sans-serif;
}

.mobile_nav_list_item:hover {
  background-color: var(--neutral-0);
}

.mobile_menu_weather {
  position: relative;
  margin-block-end: 1rem;
  box-shadow: 0.2rem 0.2rem 0.5rem var(--neutral-400);
  border-radius: 1rem;
  background-color: var(--sun-300);
  padding: 0.75rem 1rem;
  width: 100%;
  overflow: hidden;
}

.weather_text {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.weather_today {
  color: var(--neutral-700);
  font-size: var(--txt-preset-10-fs);
  line-height: var(--txt-preset-10-lh);
  font-family: 'DM Mono', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-10-ls);
}

.temperature {
  font-weight: var(--txt-preset-2-fw);
  font-size: var(--txt-preset-2-fs);
  line-height: var(--txt-preset-2-lh);
  font-family: 'Fraunces', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-2-ls);
}

.weather_description {
  color: var(--neutral-700);
  font-size: var(--txt-preset-7-fs);
  line-height: var(--txt-preset-7-lh);
  font-family: 'DM Sans', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-7-ls);
}

.sun_image {
  position: absolute;
  top: 0;
  right: 0;
  transform: translate(15%, -35%);
}

hr {
  margin-block-end: 1rem;
  border-style: dashed;
  color: var(--neutral-400);
}

.menu_footer_text {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  color: var(--neutral-600);
  font-size: var(--txt-preset-10-fs);
  line-height: var(--txt-preset-10-lh);
  font-family: 'DM Mono', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-10-ls);
}

/* Main Header Section */

main {
  padding: 0 16px 40px 16px;
}

.main-header {
  margin-block-end: 48px;
}

.main-header-text-container {
  margin-block-end: 16px;
}

.booking-text {
  margin-block-end: 4px;
  color: var(--neutral-600);
  font-size: var(--txt-preset-8-fs);
  line-height: var(--txt-preset-8-lh);
  font-family: 'DM Mono', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-8-ls);
}

h1 {
  color: var(--neutral-900);
  font-weight: var(--txt-preset-1-fw);
  font-size: var(--txt-preset-1-fs);
  line-height: var(--txt-preset-1-lh);
  font-family: 'Fraunces', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-1-ls);
}

h1 span {
  color: var(--terracotta-600);
  font-style: italic;
}

.main-header-btns-container {
  display: flex;
  justify-content: center;
  gap: 16px;
}

.header-btn {
  border: none;
  border-radius: 32px;
  padding: 10px 16px;
  width: 176px;
  height: 37px;
  font-weight: var(--txt-preset-5-semi-b-fw);
  font-size: var(--txt-preset-5-semi-b-fs);
  line-height: var(--txt-preset-5-semi-b-lh);
  font-family: 'DM Sans', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-5-semi-b-ls);
}

.print-receipt-btn {
  transition:
    background-color 0.2s ease-in-out,
    color 0.2s ease-in-out;
  cursor: pointer;
  border: 1.6px solid var(--neutral-400);
  background-color: transparent;
  color: var(--neutral-900);
}

.print-receipt-btn:hover {
  background-color: var(--terracotta-700);
  color: var(--neutral-50);
}

.add-to-calender-btn {
  transition:
    background-color 0.2s ease-in-out,
    color 0.2s ease-in-out;
  cursor: pointer;
  background-color: var(--neutral-900);
  color: var(--sun-50);
}

.add-to-calender-btn:hover {
  background-color: var(--neutral-400);
  color: var(--neutral-800);
}

.sun-image {
  display: none;
}

/* Booking Cards Section */

/* Welcome Card */

.booking-cards {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-block-end: 3rem;
}

.welcome-item {
  padding: 24px;
  width: 327px;
  height: 420px;
}

.welcome-card {
  transform: rotate(4deg);
  z-index: 5;
  box-shadow: 16px 19.2px 48px var(--terracotta-300);
  border-radius: 20px;
  background: radial-gradient(
    circle at top right,
    var(--terracotta-400) 0%,
    var(--terracotta-500) 50%,
    var(--terracotta-700) 100%
  );
}

.welcome-card-content {
  border-top: 1.6px dashed var(--terracotta-400);
}

.welcome-card-header {
  display: flex;
  justify-content: space-between;
  padding-top: 16px;
}

.welcome-title,
.room {
  color: var(--sun-50);
  font-family: 'DM Mono', Arial, Helvetica, sans-serif;
}

.welcome-title,
.room {
  font-size: var(--txt-preset-10-fs);
  line-height: var(--txt-preset-10-lh);
  letter-spacing: var(--txt-preset-10-ls);
}

.welcome-flex-wrapper {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 6.8em;
}

.note-from-host,
.host-name,
.room-name {
  font-family: 'Fraunces', Arial, Helvetica, sans-serif;
}
.note-from-host {
  color: var(--sun-200);
  font-style: var(--txt-preset-4-ital-style);
  font-weight: var(--txt-preset-4-ital-fw);
  font-size: var(--txt-preset-4-ital-fs);
  line-height: var(--txt-preset-4-ital-lh);
  letter-spacing: var(--txt-preset-4-ital-ls);
}

.host-name,
.welcome-card-txt,
.room-name {
  color: var(--sun-50);
}

.host-name {
  margin-block-end: 32px;
  font-style: var(--txt-preset-1-ital-style);
  font-weight: var(--txt-preset-1-ital-fw);
  font-size: var(--txt-preset-1-ital-fs);
  line-height: var(--txt-preset-1-ital-lh);
  letter-spacing: var(--txt-preset-1-ital-ls);
}

.welcome-card-txt {
  font-weight: var(--txt-preset-5-fw);
  font-size: var(--txt-preset-5-fs);
  line-height: var(--txt-preset-5-lh);
  font-family: 'DM Sans', Arial, Helvetica, sans-serif;
}

.room-name {
  font-weight: var(--txt-preset-4-fw);
  font-size: var(--txt-preset-4-fs);
}

/* Receipt Card */
.receipt-card {
  transform: rotate(-4deg);
  box-shadow: 16px 0px 48px var(--neutral-400);
  border-radius: 20px;
  background-color: var(--neutral-50);
  padding: 24px 24px;
  color: var(--neutral-900);
  font-family: 'DM Sans', Arial, Helvetica, sans-serif;
}

.receipt-header {
  border-bottom: 1.6px dashed var(--neutral-400);
  padding-bottom: 19.2px;
}

.left-title,
.receipt-header-right,
.rec-header,
.total-sub-header {
  font-size: var(--txt-preset-10-fs);
  line-height: var(--txt-preset-10-lh);
  letter-spacing: var(--txt-preset-10-ls);
}

.receipt-header,
.receipt-header-right {
  display: flex;
  justify-content: space-between;
}

.receipt-header-right {
  gap: 16px;
}

.rec-header,
.receipt-number-header {
  color: var(--neutral-600);
  font-family: 'DM Mono', Arial, Helvetica, sans-serif;
}

.check-container {
  display: flex;
  justify-content: space-between;
  border-bottom: 1.6px dashed var(--neutral-400);
  padding: 19.2px 24px;
}

.check-date {
  font-weight: var(--txt-preset-2-fw);
  font-size: var(--txt-preset-2-fs);
  line-height: var(--txt-preset-2-lh);
  letter-spacing: var(--txt-preset-2-ls);
}

.check-wrapper {
  display: flex;
  flex-direction: column;
  gap: 8px;
  text-align: center;
}

.your-stay,
.check-date,
.total-price {
  font-family: 'Fraunces', Arial, Helvetica, sans-serif;
}

.check-day-time {
  font-size: var(--txt-preset-7-fs);
  line-height: var(--txt-preset-7-lh);
  letter-spacing: var(--txt-preset-7-ls);
}

.breakdown-container {
  border-bottom: 1.6px solid var(--neutral-400);
  padding: 19.2px 0;
}

.breakdown-item {
  padding-right: 16px;
  font-weight: var(--txt-preset-5-fw);
  font-size: var(--txt-preset-5-fs);
  line-height: var(--txt-preset-5-lh);
}

.breakdown-price {
  font-size: var(--txt-preset-9-fs);
  line-height: var(--txt-preset-9-lh);
}

.breakdown-item,
.breakdown-price {
  color: var(--neutral-900);
}

.receipt-total-container {
  padding: 19.2px 0;
}

.receipt-total-container table {
  width: 100%;
}

.total-header {
  font-size: var(--txt-preset-8-fs);
  line-height: var(--txt-preset-8-lh);
  letter-spacing: var(--txt-preset-8-ls);
}

.total-price {
  font-weight: var(--txt-preset-3-fw);
  font-size: var(--txt-preset-3-fs);
  line-height: var(--txt-preset-3-lh);
  letter-spacing: var(--txt-preset-3-ls);
}

.total-header,
.total-sub-header {
  padding-right: 48px;
}

.total-price-row,
.barcode-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* Info Card Section */

.info-cards-section {
  display: grid;
  grid-template-rows: auto;
  grid-template-columns: 1fr;
  gap: 1.125rem;
}

.info-card {
  box-shadow: 0rem 1rem 2rem var(--neutral-400);
  border: 0.1rem solid var(--neutral-400);
  border-radius: 1rem;
  background-color: var(--neutral-50);
  padding: 1.25rem 1rem;
}

.card-category-wrapper {
  display: flex;
  justify-content: space-between;
  margin-block-end: 1.25rem;
}

.card-category {
  display: flex;
  align-items: center;
  gap: 0.625rem;
}

.info-icon-wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 0.5rem;
  background-color: var(--terracotta-600);
  width: 2.5rem;
  height: 2.5rem;
}

h2 {
  color: var(--terracotta-600);
  font-weight: var(--txt-preset-6-fw);
  font-size: var(--txt-preset-6-fs);
  line-height: var(--txt-preset-6-lh);
  font-family: 'DM Mono', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-6-ls);
}

.info-num,
h3 {
  font-weight: var(--txt-preset-3-fw);
  font-size: var(--txt-preset-3-fs);
  line-height: var(--txt-preset-3-lh);
  font-family: 'Fraunces', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-3-ls);
}

h3 {
  margin-block-end: 0.5rem;
}

.info-num {
  color: var(--terracotta-600);
}

.info-date {
  margin-block-end: 1rem;
  color: var(--neutral-600);
  font-size: var(--txt-preset-7-fs);
  line-height: var(--txt-preset-7-lh);
  letter-spacing: var(--txt-preset-7-ls);
}

.info-date,
.info-text {
  font-family: 'DM Sans', Arial, Helvetica, sans-serif;
}

.info-text {
  color: var(--neutral-700);
  font-weight: var(--txt-preset-5-fw);
  font-size: var(--txt-preset-5-fs);
  line-height: var(--txt-preset-5-lh);
}

.wifi-icon {
  background-color: var(--blue-500);
}

.wifi-text {
  color: var(--blue-500);
}

.brek-icon {
  filter: brightness(0) saturate(100%) invert(100%) sepia(100%) saturate(0%)
    hue-rotate(288deg) brightness(102%) contrast(102%);
}

.breakfast-icon {
  background-color: var(--rose-500);
}

.breakfast-text {
  color: var(--rose-500);
}

.wifi-container-name {
  margin-block-end: 4px;
}

.wifi-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-radius: 0.5rem;
  background-color: var(--neutral-200);
  padding: 0rem 0.625rem;
  height: 32px;
  color: var(--neutral-900);
}

.wifi-header {
  color: var(--neutral-600);
  font-size: var(--txt-preset-8-fs);
  line-height: var(--txt-preset-8-lh);
  font-family: 'DM Mono', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-8-ls);
}

.wifi-name {
  font-size: var(--txt-preset-7-fs);
  line-height: var(--txt-preset-7-lh);
  font-family: 'DM Sans', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-7-ls);
}

.wifi-pw-copy {
  display: flex;
  align-items: center;
  gap: 6px;
}

.copy-btn {
  transition:
    background-color 0.2s ease-in-out,
    color 0.2s ease-in-out;
  cursor: pointer;
  border: 1.6px solid var(--neutral-400);
  border-radius: 32px;
  padding: 4px 8px 2px 8px;
  color: var(--neutral-600);
  font-size: var(--txt-preset-10-fs);
  line-height: var(--txt-preset-10-lh);
  font-family: 'DM Mono', Arial, Helvetica, sans-serif;
  letter-spacing: var(--txt-preset-10-ls);
}

.copy-btn:hover {
  background-color: var(--neutral-900);
  color: var(--neutral-0);
}

@media screen and (min-width: 820px) {
  body {
    background-color: var(--neutral-200);
  }

  .mobile_menu {
    width: 24rem;
  }

  .main-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }

  .header-btn {
    width: 160px;
  }

  .booking-cards {
    display: flex;
    flex-direction: row-reverse;
    justify-content: center;
  }

  .welcome-item {
    width: 340px;
  }

  .info-cards-section {
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
  }
}

@media screen and (min-width: 1440px) {
  body {
    display: grid;
    grid-template-columns: 1fr 3fr;
    grid-row: 1fr;
  }
  header {
    display: none;
  }

  .mobile_menu {
    transform: translateX(0%);
    opacity: 1;
    z-index: 99;
    width: 260px;
  }

  .close-btn {
    display: none;
  }

  main {
    margin-inline-start: 260px;
    padding: 32px 40px;
    width: 100%;
  }

  .welcome-item {
    width: 400px;
    height: 420px;
  }

  .info-cards-section {
    grid-template-columns: repeat(3, 1fr);
  }

  .booking-cards {
    position: relative;
  }

  .sun-image {
    display: block;
    position: absolute;
    opacity: 0;
    transition: opacity 0.5s ease;
  }

  .welcome-item {
    transition:
      transform 0.2s ease,
      box-shadow 0.2s ease;
  }

  .welcome-card {
    transform-origin: top left;
  }
  .receipt-card {
    transform-origin: top right;
  }

  .booking-cards:hover .welcome-card {
    transform: rotate(-5deg) translateX(4rem);
    box-shadow: none;
  }
  .booking-cards:hover .receipt-card {
    transform: rotate(5deg) translateX(-4rem);
    box-shadow: none;
  }

  .booking-cards:hover .sun-image {
    opacity: 1;
  }
}
