:root {
  --ink: #171713;
  --cream: #f6f1e8;
  --paper: #fbf8f2;
  --green: #063d2a;
  --green2: #092f22;
  --gold: #d7a432;
  --line: #ded5c8;
  --muted: #706c65;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  color: var(--ink);
  background: var(--cream);
  font-family: "DM Sans", Arial, sans-serif;
}

button,
a {
  -webkit-tap-highlight-color: transparent;
}

button {
  font: inherit;
}


/* ===============================
   HEADER
================================ */

.siteHeader {
  position: absolute;
  z-index: 30;

  top: 0;
  left: 0;

  width: 100%;
  height: 74px;

  display: grid;
  grid-template-columns: auto 1fr auto;

  align-items: center;

  gap: 55px;

  padding: 0 50px;

  color: #fff;

  background: rgba(8, 8, 7, .78);

  border-bottom:
    1px solid rgba(255,255,255,.08);

  backdrop-filter: blur(8px);
}


.brand {
  color: #fff;

  text-decoration: none;

  font-family:
    "Playfair Display",
    Georgia,
    serif;

  font-size: 31px;

  line-height: 1;

  white-space: nowrap;
}


.desktopNav {
  display: flex;

  align-items: center;

  gap: 42px;

  height: 100%;
}


.desktopNav a {
  position: relative;

  height: 100%;

  display: grid;

  place-items: center;

  color: #fff;

  text-decoration: none;

  font-size: 15px;

  font-weight: 500;

  white-space: nowrap;
}


.desktopNav a.active::after {

  content: "";

  position: absolute;

  left: 0;
  right: 0;

  bottom: 11px;

  height: 2px;

  background: var(--gold);
}


.headerActions {
  display: flex;

  align-items: center;

  gap: 18px;
}


.locationButton,
.iconButton,
.menuButton {

  border: 0;

  color: #fff;

  background: transparent;

  cursor: pointer;
}


.locationButton {

  display: flex;

  gap: 8px;

  align-items: center;

  font-size: 15px;
}


.lineIcon {
  font-size: 22px;
}


.chevron {
  opacity: .8;
}


.iconButton {

  width: 30px;

  height: 38px;

  padding: 0;

  font-size: 30px;

  line-height: 1;
}


.userIcon {

  font-size: 26px;

  transform: rotate(180deg);
}


.menuButton {

  display: none;

  font-size: 25px;
}


.mobileNav {
  display: none;
}


/* ===============================
   HERO
================================ */

.hero {

  position: relative;

  min-height: 474px;

  padding:
    113px
    7%
    30px;

  color: #fff;

  background-image:
    url("atlanta-skyline-hero.png");

  background-size: cover;

  background-position:
    center 49%;

  isolation: isolate;
}


.heroShade {

  position: absolute;

  inset: 0;

  z-index: -1;

  background:

    linear-gradient(
      90deg,
      rgba(0,0,0,.86) 0%,
      rgba(0,0,0,.62) 38%,
      rgba(0,0,0,.20) 68%,
      rgba(0,0,0,.05) 100%
    ),

    linear-gradient(
      0deg,
      rgba(0,0,0,.18),
      rgba(0,0,0,.1)
    );
}


.heroContent {

  max-width: 660px;
}


.hero h1 {

  margin: 0;

  font-family:
    "Playfair Display",
    Georgia,
    serif;

  font-size:
    clamp(
      54px,
      4.4vw,
      76px
    );

  font-weight: 500;

  line-height: .94;

  letter-spacing: -2.5px;
}


.hero h1 span {

  color: #e1bf76;
}


.hero p {

  margin:
    20px
    0
    27px;

  font-size: 18px;

  line-height: 1.4;
}


/* ===============================
   CATEGORY BUTTONS
================================ */

.categoryGrid {

  display: flex;

  gap: 14px;
}


.categoryButton {

  width: 111px;

  height: 92px;

  border:
    1px solid #c39b42;

  border-radius: 10px;

  display: flex;

  flex-direction: column;

  justify-content: center;

  align-items: center;

  gap: 7px;

  color: #fff;

  background:
    rgba(
      3,
      51,
      35,
      .78
    );

  cursor: pointer;

  transition:
    transform .2s ease,
    background .2s ease,
    box-shadow .2s ease;
}


.categoryButton:hover,
.categoryButton.active {

  transform:
    translateY(-2px);

  background:
    rgba(
      4,
      65,
      44,
      .95
    );

  box-shadow:
    0 8px 24px
    rgba(0,0,0,.18);
}


.categoryIcon {

  height: 30px;

  color: #e6bd62;

  font-size: 30px;

  line-height: 1;
}


.categoryButton span:last-child {

  font-size: 14px;

  font-weight: 500;
}


/* ===============================
   RESTAURANTS
================================ */

.ratedSection {

  padding:
    38px
    0
    54px;

  overflow: hidden;

  background: var(--paper);
}


.sectionHeading {

  width:
    calc(
      100% - 120px
    );

  margin:
    0
    auto
    25px;

  display: flex;

  justify-content:
    space-between;

  align-items:
    flex-end;
}


.eyebrow {

  display: none;

  margin:
    0
    0
    6px;

  color: var(--green);

  font-size: 11px;

  letter-spacing: 1.7px;

  font-weight: 700;
}


.sectionHeading h2 {

  margin: 0;

  font-family:
    "Playfair Display",
    Georgia,
    serif;

  font-size:
    clamp(
      33px,
      3vw,
      43px
    );

  font-weight: 500;

  letter-spacing: -1px;
}


.viewAll {

  border: 0;

  background: none;

  font-size: 14px;

  cursor: pointer;

  padding: 9px 0;
}


.viewAll span {

  margin-left: 11px;

  font-size: 24px;

  vertical-align: -2px;
}


/* ===============================
   SLIDER
================================ */

.sliderShell {

  position: relative;

  width: 100%;
}


.restaurantTrack {

  display: flex;

  gap: 22px;

  overflow-x: auto;

  scroll-behavior: smooth;

  scrollbar-width: none;

  padding:
    0
    60px
    8px;

  scroll-snap-type:
    x mandatory;
}


.restaurantTrack::-webkit-scrollbar {

  display: none;
}


.restaurantCard {

  position: relative;

  flex:
    0 0 320px;

  overflow: hidden;

  border:
    1px solid
    var(--line);

  border-radius: 8px;

  background: #fffaf3;

  scroll-snap-align: start;

  cursor: pointer;

  transition:
    transform .2s ease,
    box-shadow .2s ease;
}


.restaurantCard:hover {

  transform:
    translateY(-4px);

  box-shadow:
    0 12px 26px
    rgba(40,35,25,.12);
}


.cardImageWrap {

  position: relative;

  height: 245px;

  overflow: hidden;

  background: #ddd;
}


.restaurantCard img {

  width: 100%;

  height: 100%;

  object-fit: cover;

  display: block;

  transition:
    transform .3s ease;
}


.restaurantCard:hover img {

  transform:
    scale(1.025);
}


.cardBadge {

  position: absolute;

  top: 12px;

  right: 12px;

  padding:
    6px
    11px;

  border-radius: 999px;

  color: #fff;

  background: var(--green);

  font-size: 11px;

  font-weight: 600;
}


.cardBody {

  position: relative;

  min-height: 114px;

  padding:
    12px
    15px
    13px;
}


.cardBody h3 {

  margin:
    0
    0
    5px;

  font-family:
    "Playfair Display",
    Georgia,
    serif;

  font-size: 20px;

  font-weight: 500;
}


.rating {

  margin:
    0
    0
    6px;

  font-size: 13px;
}


.rating .star {

  color: #d39b23;
}


.rating .count {

  color: #777;
}


.cardMeta {

  margin: 2px 0;

  font-size: 12px;

  color: #302e2a;
}


.cardPrice {

  position: absolute;

  right: 15px;

  bottom: 13px;

  font-size: 13px;
}


.sliderArrow {

  position: absolute;

  z-index: 5;

  top: 45%;

  width: 48px;

  height: 48px;

  border:
    1px solid
    #ded7cc;

  border-radius: 50%;

  display: grid;

  place-items: center;

  padding:
    0
    0
    4px;

  color: #1d1b17;

  background: #fffaf1;

  box-shadow:
    0 4px 12px
    rgba(0,0,0,.12);

  font-size: 35px;

  cursor: pointer;
}


.sliderArrow.left {

  left: 14px;
}


.sliderArrow.right {

  right: 14px;
}


/* ===============================
   MODAL BACKGROUND
================================ */

.modalBackdrop {

  position: fixed;

  z-index: 100;

  inset: 0;

  display: grid;

  place-items: center;

  padding: 30px;

  background:
    rgba(
      7,
      8,
      6,
      .58
    );

  backdrop-filter:
    blur(2px);

  opacity: 0;

  visibility: hidden;

  transition:
    opacity .22s ease,
    visibility .22s ease;
}


.modalBackdrop.open {

  opacity: 1;

  visibility: visible;
}


/* ===============================
   RESTAURANT MODAL
================================ */

.restaurantModal {

  position: relative;

  width:
    min(
      520px,
      100%
    );

  max-height:
    calc(
      100vh - 45px
    );

  overflow: auto;

  border-radius: 9px;

  background: #fbf7ef;

  box-shadow:
    0 26px 75px
    rgba(0,0,0,.35);

  transform:
    translateY(15px)
    scale(.98);

  transition:
    transform .22s ease;
}


.modalBackdrop.open
.restaurantModal {

  transform:
    translateY(0)
    scale(1);
}


.modalClose {

  position: absolute;

  z-index: 2;

  top: 15px;

  right: 15px;

  width: 32px;

  height: 32px;

  border: 0;

  border-radius: 50%;

  display: grid;

  place-items: center;

  padding:
    0
    0
    3px;

  color: white;

  background:
    rgba(
      24,
      24,
      20,
      .88
    );

  font-size: 25px;

  cursor: pointer;
}


.modalImage {

  width: 100%;

  height: 235px;

  object-fit: cover;

  display: block;
}


.modalBody {

  padding:
    17px
    27px
    26px;
}


.modalBody h2 {

  margin:
    0
    0
    6px;

  font-family:
    "Playfair Display",
    Georgia,
    serif;

  font-size: 31px;

  font-weight: 500;
}


.modalRatingRow {

  display: flex;

  align-items: center;

  gap: 5px;

  font-size: 13px;
}


.stars {

  color: var(--gold);

  font-size: 20px;
}


.reviewCount {

  color: #56534d;
}


.trendBadge {

  margin-left: 8px;

  padding:
    4px
    9px;

  border-radius: 999px;

  color: #fff;

  background: var(--green);

  font-size: 11px;
}


.modalDescription {

  margin:
    16px
    0
    13px;

  color: #33312d;

  font-size: 13px;

  line-height: 1.55;
}


.modalCuisine {

  margin: 0;

  padding:
    0
    0
    15px;

  border-bottom:
    1px solid
    #ddd5c8;

  font-size: 13px;

  font-weight: 500;
}


.modalDetails {

  display: grid;

  grid-template-columns:
    repeat(
      3,
      1fr
    );

  padding:
    17px
    0;

  border-bottom:
    1px solid
    #ddd5c8;
}


.detailItem {

  display: flex;

  gap: 8px;

  padding:
    0
    12px;

  border-right:
    1px solid
    #ddd5c8;
}


.detailItem:first-child {

  padding-left: 0;
}


.detailItem:last-child {

  border-right: 0;
}


.detailIcon {

  font-size: 21px;
}


.detailItem div {

  display: flex;

  flex-direction: column;

  gap: 4px;

  font-size: 11px;

  line-height: 1.25;
}


.detailItem strong {

  font-size: 12px;
}


/* ===============================
   MODAL BUTTONS
================================ */

.modalActions {

  display: grid;

  grid-template-columns:
    1fr
    1fr;

  gap: 20px;

  padding-top: 20px;
}


.modalActions a {

  height: 47px;

  display: grid;

  place-items: center;

  border-radius: 6px;

  text-decoration: none;

  font-size: 13px;

  font-weight: 600;
}


.outlineCta {

  border:
    1px solid
    var(--green);

  color:
    var(--green);
}


.solidCta {

  color: #fff;

  background:
    var(--green);
}


body.modalOpen {

  overflow: hidden;
}


/* ===============================
   TABLET
================================ */

@media (max-width: 960px) {

  .siteHeader {

    gap: 20px;

    padding:
      0
      22px;
  }


  .desktopNav {

    gap: 19px;
  }


  .headerActions .iconButton {

    display: none;
  }


  .hero {

    padding-left: 5%;
  }


  .sectionHeading {

    width:
      calc(
        100% - 60px
      );
  }


  .restaurantTrack {

    padding-left: 30px;

    padding-right: 30px;
  }

}


/* ===============================
   MOBILE
================================ */

@media (max-width: 760px) {

  .siteHeader {

    position: absolute;

    height: 64px;

    grid-template-columns:
      1fr
      auto;

    padding:
      0
      18px;
  }


  .brand {

    font-size: 27px;
  }


  .desktopNav,
  .locationButton {

    display: none;
  }


  .menuButton {

    display: block;
  }


  .mobileNav {

    position: absolute;

    z-index: 29;

    top: 64px;

    right: 12px;

    width: 200px;

    padding: 10px;

    border-radius: 9px;

    flex-direction: column;

    background:
      rgba(
        10,
        20,
        15,
        .98
      );

    box-shadow:
      0 16px 32px
      rgba(0,0,0,.28);
  }


  .mobileNav.open {

    display: flex;
  }


  .mobileNav a {

    padding:
      11px
      12px;

    color: white;

    text-decoration: none;

    font-size: 14px;
  }


  .hero {

    min-height: 560px;

    padding:
      105px
      20px
      30px;

    background-position:
      57%
      center;
  }


  .heroShade {

    background:
      linear-gradient(
        90deg,
        rgba(0,0,0,.82),
        rgba(0,0,0,.42)
      );
  }


  .hero h1 {

    font-size: 48px;

    letter-spacing: -1.8px;
  }


  .hero p {

    font-size: 16px;
  }


  .categoryGrid {

    display: grid;

    grid-template-columns:
      repeat(
        4,
        minmax(0,1fr)
      );

    gap: 7px;
  }


  .categoryButton {

    width: auto;

    height: 84px;
  }


  .categoryIcon {

    font-size: 25px;

    height: 26px;
  }


  .categoryButton span:last-child {

    font-size: 12px;
  }


  .ratedSection {

    padding-top: 29px;
  }


  .sectionHeading {

    width:
      calc(
        100% - 40px
      );

    margin-bottom: 18px;
  }


  .sectionHeading h2 {

    font-size: 32px;
  }


  .viewAll {

    display: none;
  }


  .eyebrow {

    display: block;
  }


  .restaurantTrack {

    gap: 14px;

    padding:
      0
      20px
      8px;
  }


  .restaurantCard {

    flex-basis: 82vw;

    max-width: 330px;
  }


  .cardImageWrap {

    height: 220px;
  }


  .sliderArrow {

    display: none;
  }


  .modalBackdrop {

    padding: 16px;

    align-items: center;
  }


  .modalImage {

    height: 205px;
  }


  .modalBody {

    padding:
      16px
      18px
      21px;
  }


  .modalBody h2 {

    font-size: 27px;
  }


  .modalDetails {

    grid-template-columns:
      1fr;

    gap: 0;
  }


  .detailItem,
  .detailItem:first-child {

    padding:
      10px
      0;

    border-right: 0;

    border-bottom:
      1px solid
      #e4dbce;
  }


  .detailItem:last-child {

    border-bottom: 0;
  }


  .modalActions {

    grid-template-columns: 1fr;

    gap: 10px;
  }

}


@media (max-width: 390px) {

  .hero h1 {

    font-size: 43px;
  }


  .categoryButton {

    height: 79px;
  }


  .categoryButton span:last-child {

    font-size: 11px;
  }

}
/* AUTOMATIC SLIDER OVERFLOW FIX */

.restaurantTrack {
  overflow-x: auto !important;
  scroll-behavior: smooth;
  scrollbar-width: none;
}

.restaurantTrack::-webkit-scrollbar {
  display: none;
}

.restaurantCard {
  min-width: 320px !important;
  flex-shrink: 0 !important;
}

@media (max-width: 800px) {
  .restaurantCard {
    min-width: 85% !important;
  }
}