/* @import url("https://fonts.googleapis.com/css2?family=Abel"); */
@import url("https://fonts.googleapis.com/css2?family=Tomorrow:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap");

:root {
  --prime-color: #454b66;
  --second-color: #ff6b6b;
  --thrid-color: #967d69;
  --black-chocolate: #191308;
  --powder: #e4e4e4;
  --font-1: font-family: "Tomorrow", sans-serif;
  /* --font-2: font-family: 'Bebas Neue',sans-serif; */
  /* --animate-duration: 2s;
    --animate-delay: 2.9s; */
}

* {
  -webkit-user-select: none; /* Safari */
  -ms-user-select: none; /* IE 10 and IE 11 */
  user-select: none; /* Standard syntax */
  /* cursor: pointer; */
}

.container {
  max-width: 760px;
  margin: auto;
}

.container-fuild {
  max-width: 1200px;
  margin: auto;
}

/* width — display:none hides it app-wide; the track/thumb rules below only
   take effect if that is ever removed */
::-webkit-scrollbar {
  width: 20px;
  position: absolute;
  left: 0;
  display: none;
}

/* Track */
::-webkit-scrollbar-track {
  background: #f0f0f0;
}

/* Handle */
::-webkit-scrollbar-thumb {
  background: #888;
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background: #555;
}

body {
  width: 100%;
  height: 80vh;
  min-height: 100vh;
  /* mobile viewport bug fix */
  min-height: -webkit-fill-available;
  position: fixed;
  top: 0;
  left: 0;
  overflow: hidden;
  background-color: rgb(31 31 30);
  font-family: "Tomorrow", sans-serif;
}

html {
  margin: 0;
  padding: 0;
  border: none;
  height: -webkit-fill-available;
  font-family: "Tomorrow", sans-serif;
}

.row {
  margin-left: 0;
  margin-right: 0;
}

.header {
  color: white;
  font-size: 2em;
  text-align: center;
}

.b1 {
  width: 60px;
  height: 60px;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 100;
  border: thin solid white;
  border-radius: 0.5em;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #ffffff52;
  color: white;
  opacity: 0;
}

.b2 {
  width: 60px;
  height: 60px;
  position: fixed;
  top: 0;
  right: 0;
  z-index: 100;
  border: thin solid white;
  border-radius: 0.5em;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #ffffff52;
  color: white;
  opacity: 0;
}

.b3 {
  background: black;
  opacity: 0;
  /* background: rgba(0,0,0,0); */
  width: 160px;
  height: 32px;
  position: fixed;
  bottom: 0;
  left: 0;
  z-index: 100;
}

#loadingScreen {
  width: 100%;
  height: 100vh;
  background: #e9e9e9;
  display: flex;
  justify-content: center;
  align-items: center;
  position: absolute;
  z-index: 9999;
}

body:before {
  /* content: ""; */
  /* background: url('../img/grey-wall-background.jpg')  center center no-repeat; */
  /* width: 100%;
  height: 100vh;
  position: fixed;
  top: 0;
  left: 0;
  background: white;
  opacity: 1;
  background: rgb(255, 255, 255);
  background: radial-gradient(
    circle,
    rgba(255, 255, 255, 0.3) 25%,
    rgba(255, 255, 255, 1) 100%
  ); */
  background: none;
}

.overlay {
  content: "";
  width: 100%;
  height: 100vh;
  position: fixed;
  top: 0;
  left: 0;
  background: rgba(0, 0, 0, 0.8);
  display: none;
  z-index: 9;
}

main {
  background-color: rgb(31 31 30);
  min-height: 100vh;
  font-family: "Tomorrow", sans-serif;
}

ol {
  counter-reset: li;
  margin-left: 0;
  padding-left: 0;
}

ol > li {
  position: relative;
  margin: 0 0 6px 2em;
  padding: 0px 8px 4px 8px;
  list-style: none;
}

#infoModal .question,
#infoModal .answer {
  font-size: 1.2em;
}

#infoModal .question {
  text-transform: uppercase;
  color: #ffd100;
  letter-spacing: 0.05em;
}

#infoModal .answer {
  color: #c7c7c7;
}

.vertical-alignment-helper {
  display: table;
  height: 100%;
  width: 100%;
  pointer-events: none;
  /* This makes sure that we can still click outside of the modal to close it */
}

.vertical-align-center {
  /* To center vertically */
  display: table-cell;
  vertical-align: middle;
  pointer-events: none;
  padding: 2em !important;
  text-align: center;
}

.star {
  font-size: 4em;
  cursor: pointer;
}

.one {
  color: rgb(255, 0, 0);
}

.two {
  color: rgb(255, 106, 0);
}

.three {
  color: rgb(251, 255, 120);
}

.four {
  color: rgb(255, 255, 0);
}

.five {
  color: rgb(24, 159, 14);
}

.modal-content {
  /* Bootstrap sets the size of the modal in the modal-dialog class, we need to inherit it */
  width: inherit;
  max-width: inherit;
  /* For Bootstrap 4 - to avoid the modal window stretching full width */
  height: inherit;
  /* To center horizontally */
  margin: 0 auto;
  pointer-events: all;
}

#rewardsModal h1 {
  font-size: 1.3em;
}

#rewardsModal {
  font-family: "Tomorrow", sans-serif;
  font-size: 0.8em;
}

input#pinInput {
  text-align: center;
  font-size: 1.3em;
}

input#pinInput:valid {
  box-shadow: 0 0 0 10px green;
}

input#pinInput:invalid {
  box-shadow: 0 0 0 10px red;
}

form#requestPinResetForm {
  text-align: center;
  margin-top: 80px;
}

ol > li:before {
  content: counter(li);
  counter-increment: li;
  position: absolute;
  top: -2px;
  left: -2em;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  width: 2em;
  margin-right: 8px;
  padding: 4px;
  border-top: 2px solid #666;
  color: #fff;
  background: #000;
  font-family: "Helvetica Neue", Arial, sans-serif;
  text-align: center;
  border-radius: 50%;
}

ol.mostActiveList li,
ol.approachingList li,
ol.overAllKnurdList li {
  font-family: "Tomorrow", sans-serif;
  font-size: 1.1em;
  margin-bottom: 0.5em;
  background: #262626;
  color: #ffffff;
  border: 1px solid #3f3f3f;
  border-left: 4px solid #024304;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.3);
  padding: 0.5em 0.75em;
  cursor: pointer;
  position: relative;
}

.leaderboard h3 {
  font-family: "Tomorrow", sans-serif;
  color: #ffd100;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.25);
  margin-bottom: 0.6em;
  margin-top: 1em;
  font-size: 1.4em;
}

.leaderboard span {
  background: rgb(117, 105, 31);
  background: radial-gradient(
    circle,
    rgba(117, 105, 31, 1) 0%,
    rgba(255, 237, 0, 1) 100%
  );
  color: black;
  border-radius: 10em;
  position: absolute;
  height: 38px;
  width: 40px;
  text-align: center;
  right: 0.5em;
  box-shadow: 0 6px 12px -4px rgba(0, 0, 0, 0.4);
}

.top10-user .modal-dialog {
  display: flex;
  align-items: center;
  min-height: calc(100% - 3.5rem);
}

.top10-user .modal-content {
  background: #1f1f1e;
  color: #c7c7c7;
  border: 1px solid #3f3f3f;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  font-family: "Tomorrow", sans-serif;
}

.top10-user .modal-body {
  font-size: 0.8em;
}

.top10-user .modal-body div {
  font-size: 1.5em;
  text-align: center;
}

.top10-user .modal-body .username {
  text-align: center;
  font-size: 2em;
  line-height: 1em;
  border: none;
  font-family: "Tomorrow", sans-serif;
  letter-spacing: 0.1em;
  font-weight: 500;
  text-transform: uppercase;
  color: #ffd100;
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.25);
  background: none;
  margin-bottom: 0.3em;
}

.storeConnection {
    position: fixed;
    bottom: 0;
    left: 0;
    font-size: 1em;
    text-transform: uppercase;
    font-weight: 500;
    color: white;
    background: black;
    padding: 0.5em 1.2em;
    width: 100%;
    text-align: center;
}

.greeting {
  text-align: center;
  font-size: 3em;
  line-height: 1em;
  border: 2px solid;
  font-family: abel;
  margin-top: 0.3em;
  letter-spacing: 0.1em;
  font-weight: 900;
  text-transform: uppercase;
  text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2);
  box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.3);
  background: rgba(255, 255, 255, 0.5);
}

.member-greeting-header {
  margin: 0.25em auto;
  font-size: 2em;
  padding: 0.2em;
  background: #d5d5d5b8;
  width: 95%;
}

.member_since_cont {
  text-align: center;
  font-size: 2em;
}

.mainButtons {
  display: inline-flex;
  align-content: center;
  flex-wrap: wrap;
  align-items: center;
  /* height: 47vh; */
  justify-content: space-around;
}

.sideButtons {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-top: 1em;
}

.button {
  width: 47%;
  height: 3em;
  font-family: "Times New Roman", Times, serif;
  font-weight: bold;
  float: left;
  margin: 1%;
  text-align: center;
  border-radius: 0.75em;
  font-size: 1.25em;
  border: 3px solid #141414;
  box-shadow:
    inset 0px 3px 0px 0px #c0c0c0,
    inset 0px -3px 0px 0px #4d4c4c,
    0px 0px 100px #00aeff00,
    0px 0px 100px #93d9fa00,
    0 15px 19px -10px rgba(0, 0, 0, 0.5);
  /* box-shadow: inset 0px 3px 0px 0px #c0c0c0, inset 0px -3px 0px 0px #4d4c4c, 0px 0px 5px #00aeff, 0px 0px 100px #00aeff, 0px 0px 100px #93d9fa; */
  background: radial-gradient(#cbcbcb, #7a7a7a);
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0 0.5em;
  line-height: 1em;
  color: #242424;
  text-shadow: 0px 1px 0px #ededed;
  transition: all 0.3s;
  text-transform: uppercase;
}

.bottom-Buttons {
  position: fixed;
  bottom: 0;
  background: rgb(255, 255, 255);
  background: linear-gradient(
    0deg,
    rgba(255, 255, 255, 1) 56%,
    rgba(255, 255, 255, 0) 100%
  );
  padding-top: 4em;
  overflow: hidden;
  padding-bottom: 0.6em;
  max-width: 760px;
  margin: auto;
}

#sortASC {
  font-family: "Tomorrow", sans-serif;
  width: fit-content;
  padding: 0.5em 1.2em;
  background: #262626;
  color: #ffd100;
  border: 1px solid #3f3f3f;
  border-top: 4px solid #024304;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.3);
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.25);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.2s ease-in-out;
}

#sortASC:hover,
#sortASC:active,
#sortASC.sorted {
  background: #024304;
  color: #ffffff;
}

.mobile-wrapper {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  /* min-height: -webkit-fill-available; */
}

.home-btn .button {
  height: 8em;
  width: 8em;
}

.reward-badge {
  background: red;
  color: white;
  font-family: sans-serif;
  padding: 0.3em 0.5em;
  border-radius: 100%;
  line-height: 1em;
  position: absolute;
  font-size: 1.25em;
  font-weight: 100;
  top: -2vh;
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.5);
  right: -2vh;
}
.confetti {
  left: 0;
  pointer-events: none;
  position: fixed;
  top: 0;
  transform: translate3d(0, 0, 0);
  will-change: transform;
  height: 100%;
  width: 100%;
  z-index: 9999;
}

.confetti-item {
  position: absolute;
  transform: translate3d(0, 0, 0);
  will-change: transform;
}

svg.dn {
  position: absolute;
}

@keyframes confetti-fall {
  0% {
    transform: translateY(-100%);
  }

  95% {
    animation-timing-function: ease-in-out;
    transform: translateY(calc(100vh - 55%));
  }

  100% {
    transform: translateY(calc(150vh - 65%));
  }
}

:focus:not(:focus-visible) {
  outline: none;
}

.rewards-modal .modal-content {
  background: none;
  border: none;
  margin-top: -10em;
}

.rewards-modal .modal-header {
  border-bottom: none;
}

.rewards-modal .close {
  color: white;
  opacity: 1;
  font-size: 3em;
}

.rewards-modal .close:focus-visible {
  display: none;
}

.rewards-modal .modal-body {
  background: #a70000;
  color: white;
  font-size: 2em;
  text-align: center;
  border-radius: 0.5em;
  box-shadow: 0px 0px 30px 20px rgba(255, 255, 255, 0.3);
}

.rewards-modal button {
  border: none;
  border-radius: 1em;
  padding: 0 1em;
  margin: 0.5em;
}

.progress {
  height: 2em;
  border-radius: 0em;
  border: 1px solid #e0e0e0;
  margin: 1em;
  box-shadow:
    inset 0 2px 0 rgba(0, 0, 0, 0.2),
    0 0 4px rgba(0, 0, 0, 0.1);
  font-size: 1.5em;
}

.progress-bar {
  width: 0;
  text-align: right;
  background-image: url("../img/beer-meter.jpg");
  background-size: auto 50px;
  text-shadow: 1px 1px 2px black;
  padding-right: 0.5em;
}

.content h2 {
  font-size: 3em;
  font-weight: bold;
  text-decoration: underline;
}

.reward-info,
.membersReward {
  font-family: "Tomorrow", sans-serif;
  font-size: 1.4em;
  padding: 0.25em;
  text-align: center;
  color: #c7c7c7;
}

/* Reward redemption button → gold CTA like the other pages */
.rewardBtn {
  font-family: "Tomorrow", sans-serif;
  color: #261c03;
  border: none;
  font-weight: 400;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  text-align: center;
  width: 100%;
  float: none;
  padding: 0.5em 0.75em;
  cursor: pointer;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  background: linear-gradient(
    215deg,
    rgba(186, 153, 19, 1) 0%,
    rgba(255, 204, 0, 1) 45%,
    rgb(173 144 24) 46%,
    rgba(255, 200, 0, 1) 100%
  );
  box-shadow:
    inset 1px 1px 1px #ffffffc7,
    inset -3px -3px 1px #0000004a,
    0 11px 20px -10px rgb(198 215 22 / 50%);
}

.rewards {
  margin-bottom: 1em;
}

/* Reward tier list → plain text, no border */
.reward-info {
  margin-top: 1em;
  letter-spacing: 0.05em;
}

.reward-info > div {
  padding: 0.15em 0;
}

.red-banner {
  font-family: "Tomorrow", sans-serif;
  background: #a70000;
  color: white;
  font-size: 1.2em;
  text-align: center;
  padding: 0.6em;
  margin-right: 1em;
  margin-top: 1em;
  line-height: 1.2em;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
}

.brewList.active {
  box-shadow: inset 16px 16px 20px rgb(0 0 0 / 23%);
  cursor: grabbing;
}

.intro-header {
  background: linear-gradient(0deg, #024304, black);
  color: white;
  text-align: center;
  font-family: "Tomorrow", sans-serif;
  font-size: 12pt;
  position: sticky;
  z-index: 1;
  top: 0;
  box-shadow: 0 70px 100px -56px #feffc080;
}

.intro-header span {
  font-weight: 600;
  font-size: 1.2em;
}

.title {
  font-size: 2em;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  line-height: 1em;
  padding: .5em .2em;
}

.rank {
  text-transform: uppercase;
  color: yellow;
  font-size: 1.5em;
}

.intro-header .username {
  font-size: 1.7em;
  text-transform: uppercase;
  line-height: 1em;
}

.badges-list {
  border: thin solid #3f3f3f;
  padding: 1.1em 0 0;
  margin: 10px;
  margin-top: -10px;
  max-height: 11em;
}

.badges-container {
  font-family: "Tomorrow";
  font-size: 0.8em;
}

.badge-name {
  font-size: 0.8em;
  color: white;
  margin-top: 0.75em;
}

.badges-container h4 {
  background: rgb(31 31 30);
  width: fit-content;
  margin: auto;
  z-index: 0;
  position: relative;
  font-size: 0.9em;
  letter-spacing: 0.3em;
  padding: 0 10px 0 10px;
  text-transform: uppercase;
  color: white;
}

.badge-image {
  /* border-radius: 50%; */
  /* overflow: hidden; */
  border: none;
  filter: drop-shadow(0px 8px 10px -4px rgba(0, 0, 0, 0.5));
  /* box-shadow: 0px 8px 10px -4px rgba(0, 0, 0, 0.5); */
}

.badge-image img {
  filter: drop-shadow(0 0 15px rgba(255, 255, 255, 0.3));
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
}

.row.profile-info-container {
  font-family: "Tomorrow", sans-serif;
  font-weight: 300;
}

.profile-info-container h5 {
  font-size: 0.6em;
  margin: 0.75em 0 -0.5em;
  text-transform: uppercase;
}

.profile-info-container span {
  font-size: 12pt;
}

.navi-container {
  position: fixed;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  transition: all 0.2s ease-in;
  z-index: 9;
}

.popup-menu.active::before {
  content: "";
  width: 100%;
  height: 100vh;
  background: #000000d9;
  position: fixed;
  top: 0;
  left: 0;
  z-index: -1;
}

.popup-menu-item.current {
  background: #777777;
  color: black;
  border-color: #777;
}

.menu-btn {
  background: #024304;
  color: white;
  width: 3em;
  height: 3em;
  aspect-ratio: 1;
  font-size: 1.75em;
  text-align: center;
  z-index: 100;
  display: flex;
  align-items: center;
  flex-direction: row;
  justify-content: center;
  margin-right: 1em;
}

.hamburger-inner,
.hamburger-inner:after,
.hamburger-inner:before {
  background-color: white;
}

.hamburger.is-active .hamburger-inner,
.hamburger.is-active .hamburger-inner:after,
.hamburger.is-active .hamburger-inner:before {
  background-color: #ffffff;
  width: 100%;
  margin-left: 0px;
}

.hamburger-inner {
  width: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  margin-left: 10px;
}



.hamburger--collapse .hamburger-inner:after {
  width: 50%;
}

.popup-menu {
  height: 0vh;
  overflow: hidden;
  width: 100%;
  /* bottom: -50%; */
  /* position: absolute; */
  background: rgba(0, 0, 0, 0.901);
  color: white;
  font-family: "Tomorrow", sans-serif;
  /* opacity: 0; */
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-content: flex-start;
  justify-content: center;
  padding: 0;
  transition: all 0.3s ease-in-out;
  max-width: 1200px;
  opacity: 0;
}

.popup-menu.active {
  padding: 1em 1em 2em;
  /* bottom: 0; */
  opacity: 1;
  height: auto;
  box-shadow: 0 -55px 60px -25px #0b87989e;
  border-top: 15px double #024304;
}

.popup-menu-item {
  width: 45%;
  border: 2px solid #575757;
  margin: 0.7em;
  padding: 0.5em;
  text-align: center;
  letter-spacing: 0.1em;
  transform: skewX(348deg);
  /* float: left; */
  font-size: .8em;
}

.popup-menu-item:hover {
  background: rgb(255, 255, 0);
  color: black;
}

.list-group-item {
  font-weight: 600;
}

@keyframes buttonClick {
  from {
    box-shadow:
      inset 0px 5px 0px 0px #c0c0c0,
      inset 0px -5px 0px 0px #4d4c4c;
  }

  70% {
    box-shadow:
      inset 0px 0px 0px 0px #c0c0c0,
      inset 0px 0px 0px 0px #4d4c4c,
      0px 0px 5px #00aeff,
      0px 0px 100px #00aeff,
      0px 0px 100px #93d9fa;
  }

  to {
    box-shadow:
      inset 0px 3px 0px 0px #c0c0c0,
      inset 0px -3px 0px 0px #4d4c4c,
      0px 0px 5px #00aeff,
      0px 0px 100px #00aeff,
      0px 0px 100px #93d9fa;
  }
}

.button:active {
  color: #0e8fff;
  /* box-shadow: inset 0px 1px 0px 0px #c0c0c0, inset 0px -3px 0px 0px #4d4c4c; */
  transform: translateY(4px);
  text-shadow: 0px 1px 0px #cdcdcd;
  /* box-shadow: 0px 0px 20px 30px #0e8fff; */
  /* -webkit-box-shadow: inset 0px 0px 5px #00aeff, 0px 0px 5px #00aeff, 0px 0px 50px #00aeff, 0px 0px 50px #93d9fa; */
  /* -moz-box-shadow: inset 0px 0px 5px #00aeff, 0px 0px 5px #00aeff,0px 0px 50px #00aeff,0px 0px 50px #93d9fa; */
  box-shadow:
    inset 0px 3px 0px 0px #c0c0c0,
    inset 0px -3px 0px 0px #4d4c4c,
    0px 0px 5px #00aeff,
    0px 0px 100px #00aeff,
    0px 0px 100px #93d9fa;
  border: 2px solid #62bce7;
  animation: buttonClick 0.5s ease-in;
}

.button.active {
  color: #0c7bae;
  box-shadow:
    inset 0px 5px 0px 0px #c0c0c0,
    inset 0px -5px 0px 0px #4d4c4c,
    0px 0px 5px #00aeff,
    0px 0px 100px #00aeff,
    0px 0px 100px #93d9fa;
  transform: translateY(4px);
  border: 2px solid #62bce7;
  text-shadow: 0 0 20px #0e8fff;
}

.member_tasted {
  color: #dd0000;
}

.dash-cards {
  background-color: #cecece;
  padding: 5px;
  border-radius: 8px;
  text-align: center;
  box-shadow: 0 12px 12px -10px rgba(0, 0, 0, 0.5);
}

.row.profile-info div {
  /* margin-top: 5px; */
  text-transform: none;
  padding: 5px;
}

.user_details {
  /* bottom: 0;
    position: absolute; */
  width: 100%;
  font-size: 1.5em;
  text-transform: none;
}

.profile-email {
  font-size: unset;
}

.member_progress {
  text-align: center;
  font-size: .8em;
}

.user_details .stats {
  background: var(--black-chocolate);
  color: white;
  padding: 2vh;
  line-height: 1.25em;
}

span.profile-info-label {
  font-size: 13pt;
  border-bottom: thin solid #b40000;
  background-color: #b40000;
  color: white;
  border-radius: 4px 4px 0 0;
  display: block;
  text-transform: uppercase;
  text-align: center;
}

.profile-roh,
.profile-membership,
.profile-total-tasted-brews,
.profile-saucers-visited,
.profile-member-since {
  font-size: 18pt;
}

.row.profile-info {
  font-size: 1em;
}

.content.margin {
  min-height: 75vh;
  display: flex;
  flex-direction: column;
  justify-content: space-evenly;
  overflow: scroll;
  scrollbar-width: none;
  padding-bottom: 150px;
  max-height: 80vh;
  margin-top: 6em;
}
.content {
  display: flex;
  flex-direction: column;
  justify-content: space-evenly;
  overflow: scroll;
  scrollbar-width: none;
  padding-bottom: 200px;
  max-height: 90vh;
  min-height: 80vh;
}

.searchBar {
  background: var(--black-chocolate);
  color: white;
  font-size: 1em;
  padding: 0.5em;
  border-radius: 25px;
  position: sticky;
  z-index: 4;
  left: 5px;
  top: 5px;
  width: calc(100% - 10px);
  box-shadow: 0 21px 12px -11px rgba(0, 0, 0, 0.7);
}

.searchBoxContainer {
  width: 63%;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

i.fas.fa-search {
  font-size: 2em;
  padding: 0 10px;
}

input#searchBrew {
  font-size: 1.5em;
  padding: 0 10px 0 10px !important;
  margin: 0 !important;
  height: fit-content;
  display: inline;
}

.searchTip {
  font-style: italic;
  font-size: 0.9em;
}

.draughtCheckbox {
  font-size: 1em;
  margin-left: 1em;
  color: var(--black-chocolate);
  /* background: white; */
  height: 5em;
  padding: 0 0.5em 0px 0.5em;
  border-radius: 1em;
  text-align: center;
  width: 10%;
}

button.draught-btn {
  background: white;
  color: #000000;
  border: 3px solid orange !important;
  border-radius: 100%;
  padding: 1em 0.5em;
  width: 55px;
  height: 55px;
  line-height: 1em;
  font-size: 0.8em;
}

button.draught-btn.draught-only {
  background: orange !important;
  color: black;
}

.draughtCheckbox input[type="checkbox"] {
  box-sizing: border-box;
  padding: 0;
  transform: scale(2) translateY(6px);
}

.brew-display {
  width: 100%;
}

.brew-display h1 {
  font-size: 2.75em;
  font-weight: bold;
  display: flex;
  align-items: center;
  margin-top: 0.25em;
}

.brewListContainer {
  width: 100%;
  float: left;
  overflow-y: auto;
  height: 76vh;
  background: linear-gradient(90deg, #ffffff57, #ffffff);
}

.styleListContainer {
    width: 100%;
    float: left;
    overflow: auto;
}

.styleListContainer::-webkit-scrollbar {
  width: 5px;
  position: absolute;
  left: 0;
}

.brewDetailsContainer {
  width: 100%;
  float: right;
  overflow-y: auto;
  height: 74vh;
}

/* Slide-in brew panel (memberStyle.php / visitorStyle.php).
   FIXED, not absolute. Parked off-screen at right: -80% an absolutely
   positioned panel adds ~80vw to the document's scroll width, and iOS Safari
   answers that by shrink-to-fitting the whole page — so the styles list
   rendered zoomed-out and stayed that way until a style was tapped and
   .active pulled the panel back to right: 0. A fixed box never contributes to
   the scrollable area, so the page keeps its own width the whole time.
   top/max-height are explicit because a fixed box has no useful static
   position, and pointer-events keeps the invisible panel from eating taps
   along the right edge of the screen. */
.styleBrewListContainer {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  position: fixed;
  background-color: #1f1f1e;
  color: #c7c7c7;
  border: 1px solid #3f3f3f;
  right: -80%;
  width: 90%;
  top: 25vh;
  max-height: 65vh;
  z-index: 10;
  padding: 0.7em;
  box-shadow: -10px 10px 20px rgba(0, 0, 0, 0.5);
  opacity: 0;
  pointer-events: none;
  transition: all 0.25s ease-in;
}

.styleBrewListContainer h1 {
  font-family: "Tomorrow", sans-serif;
  color: #ffd100;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 1.6em;
  text-align: center;
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.25);
}

.styleBrewListContainer .brewName {
  font-size: 0.6em !important;
}

.styleBrewListContainer.active {
  right: 0;
  opacity: 1;
  pointer-events: auto;
}

/* Style list items (memberStyle.php / visitorStyle.php) → dark cards */
.styleName {
  font-family: "Tomorrow", sans-serif;
  font-size: 0.55em;
  background: #262626;
  color: #ffffff;
  border: 1px solid #3f3f3f;
  border-left: 4px solid #024304;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.3);
  margin: 0 0 0.5em;
  padding: 0.6em 0.8em;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  transition: all 0.2s ease-in-out;
}

.styleName:hover,
.styleName.brewNameSelected {
  background: #024304;
  color: #ffd100;
}

/* ============================================2026 */

.gold-text {
  background: #ba9913;
  background: linear-gradient(
    0deg,
    rgba(186, 153, 19, 1) 0%,
    rgba(255, 204, 0, 1) 45%,
    rgba(140, 118, 27, 1) 46%,
    rgba(255, 200, 0, 1) 100%
  );
  background-clip: text;
  color: transparent;
  /* font-weight: bold; */
  /* font-size: 3rem; */
  display: inline-block;
  transition: all 0.3s ease-in-out;
}

.gold-text:hover {
  background: linear-gradient(
    0deg,
    rgba(186, 153, 19, 1) 0%,
    rgb(255 246 0) 25%,
    rgb(223 185 28) 26%,
    rgb(255 255 255) 100%
  );
  background-clip: text;
  text-shadow: 0px 0px 10px #fffce0;
}

.intro-header .progress {
  margin: 0.5em 0;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
}

.intro-header .progress:after {
  content: "";
  background: linear-gradient(
    45deg,
    transparent 25%,
    #ffffff 60%,
    #d8d8d8 61%,
    transparent 75%
  );
  position: absolute;
  width: stretch;
  height: 100%;
  opacity: 0.7;
}

.digital-box {
  border: 1px solid #3f3f3f;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  overflow: hidden;
  box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.3);
  background: #262626;
  color: #c7c7c7;
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
}

/* The member-dash stat cards stay hidden until member-dash.php has populated them
   from the member JSON. Without this they bounce in showing the hardcoded
   placeholders (0 brews, "April 1, 2010", a stand-in email) and then visibly
   change once the data lands.

   Opacity rather than display/visibility so the grid never reflows and the parent
   .wow bounce still measures correctly. Scoped to .profile-info-container so this
   only gates the dash stats — and so a stylesheet that fails to load falls back to
   the old always-visible behaviour instead of a permanently blank section. */
.profile-info-container .digital-box {
  opacity: 0;
  transition: opacity 0.4s ease-in;
}

.profile-info-container.data-loaded .digital-box {
  opacity: 1;
}

.profile-header {
  font-size: 0.55em;
  background: linear-gradient(45deg, black 0%, #222 60%, #666 62%, black 100%);
  color: #ffd100;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  text-align: center;
  padding: 0.2em;
  transition: all 0.3s ease-in-out;
}

div#m_stat_email {
  font-size: 0.6em;
}

.profile-info-content {
  font-size: 0.7em;
  text-align: center;
  font-weight: 500;
  overflow: auto;
  margin: 0.2em 0.6em;
}

.brewList {
  list-style-type: none;
  margin: 0;
  padding: 0;
  font-size: 2em;
  /* height: 79vh; */
  /* overflow-y: scroll; */
  scrollbar-color: red orange;
  scrollbar-width: thin;
  cursor: pointer;
  -moz-user-select: none;
  -webkit-user-select: none;
  -ms-user-select: none;
  -khtml-user-select: none;
  user-select: none;
}

/* ==========================================================================
   Beer List / Beer Cards  (memberBeerfinder.php — template for list screens)
   Matches the member-dash "digital-box" design language (see .digital-box).
   Scoped to .beer-card so the older .brewName / .brewDetails rules used by
   other screens are left untouched until they are migrated.
   ========================================================================== */

/* Card wrapper — digital-box treatment */
.card.beer-card {
  background: #262626;
  color: #c7c7c7;
  border: 1px solid #3f3f3f;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  overflow: hidden;
  box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.3);
  margin: 0 0 0.85em;
}

/* Clickable header row — subtle green accent echoing the dash intro-header */
.beer-card .beer-card-header {
  cursor: pointer;
  border-left: 4px solid #024304;
  background: linear-gradient(90deg, rgba(2, 67, 4, 0.35), transparent);
  transition: background 0.3s ease-in-out;
}

.beer-card .beer-card-header:hover,
.beer-card .beer-card-header:active {
  background: linear-gradient(90deg, rgba(2, 67, 4, 0.6), transparent);
}

/* Brew name — scoped override of the global .brewName cascade below */
.beer-card .brewName {
    font-size: 1em !important;
    font-weight: 400;
    color: #ffffff;
    text-transform: none;
    text-shadow: 0 0 10px rgba(255, 255, 255, 0.25);
    padding: 0.6em 0.75em;
    margin: 0;
}

.beer-card .brewName > div {
  cursor: pointer;
}

/* Body sits on the card; .brew-details provides the inset panel below */
.beer-card .card-body {
  background: transparent;
  color: #c7c7c7;
  font-size: 11pt;
}

/* Empty review state */
.beer-card .brewReview {
  color: #8a8a8a;
  font-style: italic;
  margin-top: 0.5em;
  font-size: 0.9em;
}

/* Queue cards (memberQueues.php) — static cards with a delete action */
.queue-card .beer-card-header {
  cursor: default;
}

.queue-card .brew_added_date {
  font-size: 0.5em;
  color: #8a8a8a;
  letter-spacing: normal;
  text-transform: none;
}

.queue-actions {
  text-align: center;
  padding: 0.6em 0.75em 0.8em;
}

.queue-delete-btn {
  font-family: "Tomorrow", sans-serif;
  background: #a70000;
  color: #ffffff;
  border: none;
  border-radius: 0.35em;
  padding: 0.4em 1.6em;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  cursor: pointer;
}

.queue-delete-btn:hover,
.queue-delete-btn:active {
  background: #c40000;
}

/* Tasted-brew rating (memberTastedBrews.php) */
.brewReviewRow {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75em;
}

/* Community rating summary next to the stars */
.brewReview .reviewAvg {
  color: #ffd100;
  font-weight: 500;
  font-style: normal;
}

.brewReview .reviewCount {
  color: #8a8a8a;
  font-style: normal;
}

/* Small gold "Rate This Beer" button, sits to the right of the review stars */
.rateBrewBtn {
  font-family: "Tomorrow", sans-serif;
  background: #ffd100;
  color: #000000;
  border: none;
  border-radius: 0.35em;
  padding: 0.25em 0.75em;
  margin-left: auto;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  font-size: 0.7em;
  font-weight: 700;
  white-space: nowrap;
  cursor: pointer;
  transition: all 0.2s ease-in-out;
}

.rateBrewBtn:hover,
.rateBrewBtn:active {
  background: #ffdb4d;
  color: #000000;
}

/* Rating modal */
#brewReviewModal .modal-dialog {
  max-width: 100%;
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}

#brewReviewModal .modal-content {
  width: clamp(30%, 300px, 100%);
  background: #1f1f1e;
  color: #c7c7c7;
  border: 1px solid #3f3f3f;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  font-family: "Tomorrow", sans-serif;
}

#brewReviewModal .modal-header {
  background: linear-gradient(0deg, #024304, black);
  color: #ffffff;
  border-bottom: 1px solid #3f3f3f;
  align-items: center;
}

#brewReviewModal .modal-title {
  font-size: 1.4em;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

#brewReviewModal .modal-header .close {
  color: #ffffff;
  opacity: 0.9;
  text-shadow: none;
}

#brewReviewModal .reviewBrewName {
  text-align: center;
  color: #ffd100;
  font-size: 1.2em;
  margin-bottom: 0.5em;
}

.starPicker {
  text-align: center;
  margin: 0.5em 0 0.75em;
}

.starPicker .star-rating {
  width: 2.4em;
  margin: 0 0.15em;
  cursor: pointer;
  opacity: 0.3;
  filter: grayscale(1);
  transition: all 0.15s ease-in-out;
}

.starPicker .star-rating.selected {
  opacity: 1;
  filter: none;
  transform: scale(1.05);
}

#brewReviewModal .reviewText {
  background: #262626;
  color: #ffffff;
  border: 1px solid #3f3f3f;
  border-radius: 0.35em;
  width: 100%;
  margin-bottom: 0.75em;
}

#brewReviewModal .reviewText:focus {
  background: #262626;
  color: #ffffff;
  border-color: #024304;
  box-shadow: 0 0 0 0.2rem rgba(2, 67, 4, 0.4);
}

.submitReviewBtn {
  font-family: "Tomorrow", sans-serif;
  width: 100%;
  color: #000000;
  border: none;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 0.5em;
  cursor: pointer;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  background: linear-gradient(
    197deg,
    rgba(186, 153, 19, 1) 0%,
    rgba(255, 204, 0, 1) 45%,
    rgba(140, 118, 27, 1) 46%,
    rgba(255, 200, 0, 1) 100%
  );
  text-shadow:
    3px 2px 2px #ffffffb3,
    -3px -2px 2px #00000033;
}

.brewList::-webkit-scrollbar {
  position: absolute;
  left: 0;
}

/* Was three separate .brewName blocks; the later font-size/padding won, so the
   0.7em/1.1em font-sizes and the 0.25em padding were dead. */
.brewName {
  background: none;
  color: white;
  font-size: 1em !important;
  font-weight: 400;
  padding: 0.75em;
  transition: all 0.5s ease-in-out;
  text-align: left;
}

.searchBoxDescription {
  margin: 6px -60px;
}

.brewDetails {
  background: var(--black-chocolate);
  color: white;
  margin-bottom: 1em;
  padding: 0.5em 1em;
  font-size: 0.55em;
  line-height: 1.6em;
  box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
  display: none;
  text-transform: none;
  overflow-y: auto;
  height: fit-content !important;
}

.brewName img {
  background: #7b7b7b;
  aspect-ratio: 1;
  object-fit: contain;
  border-radius: 1em;
  padding: 2px;
}

.draft-btn {
  border: 2px solid;
  line-height: 1em;
  padding: 5px;
  font-size: 0.8em;
  font-weight: 500;
  opacity: 0.6;
}

.draft-btn.active {
  border: 2px solid #cfcf05;
  background: #cfcf05;
  color: black;
  opacity: 1;
}

.brewName.brewNameSelected {
  background: black;
  color: #ffdb00;
  font-size: 1.25em !important;
}

.brewNameSelected.brewName img {
  transform: scale(3);
  position: absolute;
  top: 5em;
  right: 2em;
}

.star-rating {
  width: 1.35em;
  margin-top: -0.25em;
}

.brew-details {
  background: #232a2d;
  padding: 1em;
  border-radius: 1em;
}

/* Style-page brew popup modal.
   NOTE: this was two .brewByStyle blocks ~150 lines apart. The later one won every
   overlapping property, so the "match the dark beer-card look" values in the first
   block — #1f1f1e background, 0.6em radius, header border-bottom, 0.8 close opacity
   — were never actually rendering. Merged here at the values that are live today
   (grey #5f5f5f modal). See note in the response about switching it to dark. */
.brewByStyle .modal-content {
  background: #5f5f5f;
  color: white;
  border: 1px solid #3f3f3f;
  border-radius: 1em;
}

.brewByStyle .modal-dialog {
  display: flex;
  align-items: center;
  min-height: calc(100% - 3.5rem);
}

.brewByStyle .modal-header {
  border: none;
}

.brewByStyle .modal-title {
  color: #ffffff;
  font-family: "Tomorrow", sans-serif;
  font-size: 3em;
  line-height: 1em;
  text-align: center;
}

.brewByStyle #brewModalLabel {
  font-size: 1.5em;
}

.brewByStyle .close {
  color: white;
  text-shadow: none;
  opacity: 1;
  font-size: 3em;
  position: relative;
  top: -13px;
}

.brewByStyle .modal-body {
  font-size: 1em;
  line-height: 1.4em;
  background: #333333;
  font-family: "Tomorrow", sans-serif;
}

.addToQueue,
.addToQueueStyle {
  font-family: "Tomorrow", sans-serif;
  color: #261c03;
  font-weight: 400;
  border: none;
  text-align: center;
  padding-bottom: 0.5em;
  margin-top: 1em !important;
  border-radius: 6px;
  background: linear-gradient(
    215deg,
    rgba(186, 153, 19, 1) 0%,
    rgba(255, 204, 0, 1) 45%,
    rgb(173 144 24) 46%,
    rgba(255, 200, 0, 1) 100%
  );
  box-shadow:
    inset 1px 1px 1px #ffffffc7,
    inset -3px -3px 1px #0000004a,
    0 11px 20px -10px rgb(198 215 22 / 50%);
}

.brewDescription {
  font-size: 1em;
  line-height: 1.5em !important;
  margin-top: 1em;
}

/* Random 3 queue button uses the same gold CTA as the other pages
   (see the global .addToQueue rule) — no color override here. */

.queueUpScreen {
  position: absolute;
  z-index: -10;
  background: rgba(0, 0, 0, 0.9);
  color: white;
  width: 100vw;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  opacity: 0;
}

.queueUpScreen.activate {
  opacity: 1;
  z-index: 999;
}

.wave-container {
  display: flex;
}

.wave {
  width: 5px;
  height: 100px;
  background: linear-gradient(45deg, yellow, #fff);
  margin: 10px;
  animation: wave 1s linear infinite;
  border-radius: 20px;
}
.wave:nth-child(2) {
  animation-delay: 0.1s;
}
.wave:nth-child(3) {
  animation-delay: 0.2s;
}
.wave:nth-child(4) {
  animation-delay: 0.3s;
}
.wave:nth-child(5) {
  animation-delay: 0.4s;
}
.wave:nth-child(6) {
  animation-delay: 0.5s;
}
.wave:nth-child(7) {
  animation-delay: 0.6s;
}
.wave:nth-child(8) {
  animation-delay: 0.7s;
}
.wave:nth-child(9) {
  animation-delay: 0.8s;
}
.wave:nth-child(10) {
  animation-delay: 0.9s;
}

@keyframes wave {
  0% {
    transform: scale(0);
  }
  50% {
    transform: scale(1);
  }
  100% {
    transform: scale(0);
  }
}

.atq_top_line {
  font-size: 0.9em;
  font-weight: 500;
  letter-spacing: 0.05em;
  padding-top: 0.3em;
  text-transform: uppercase;
}

.atq_bottom_line {
  font-size: 2em;
  line-height: 1em;
}

.search-icon {
  width: 10%;
  margin-right: 10px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.brew_added_date {
  font-size: 0.65em;
}

.brew-card {
  font-family: "Tomorrow", sans-serif;
  background: #262626;
  color: #c7c7c7;
  padding: 1em;
  font-size: 1.2em;
  border: 1px solid #3f3f3f;
  border-top: 4px solid #024304;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.3);
  overflow-y: auto;
  margin-bottom: 1em;
}

.brew-card .brewTitle {
  color: #ffffff;
  font-weight: 500;
  font-size: 1.1em;
  line-height: 1.1em;
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.25);
  margin-bottom: 0.4em;
  padding-bottom: 0.3em;
  border-bottom: 1px solid #3f3f3f;
}

.row.brew-display.random-3 {
  overflow: visible;
  margin-bottom: 11em;
}

.random-3 .brew-card {
    font-size: 1em;
}

/* Random 3 action buttons → match the dark/green-gold design */
.button.ranBtn,
.button.draftBtn {
  font-family: "Tomorrow", sans-serif;
  height: auto;
  background: #262626;
  color: #ffd100;
  border: 1px solid #3f3f3f;
  border-top: 4px solid #024304;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.3);
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.25);
  letter-spacing: 0.05em;
  padding: 0.6em;
  font-size: 1em;
}

.button.ranBtn:hover,
.button.draftBtn:hover,
.button.ranBtn:active,
.button.draftBtn:active {
  background: #024304;
  color: #ffffff;
}

.ui-accordion-content {
  height: fit-content !important;
  background: #191308;
}

.ui-accordion-content h4 {
  color: white;
  font-size: 0.7em;
  padding: 0.25em 0.5em 0 0.5em;
}

@media screen and (min-width: 1023px) {
  body {
    font-size: 16px;
    font-family: "Tomorrow", sans-serif;
  }

  /* Beer list flows as a wrapping row of cards (desktop only) */
  #beerListContainer {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: flex-start;
  }

    .container-fuild {
  max-width: 1200px;
  margin: auto;
  font-size: 1em;
}

.menu-btn {

    width: 3em;
    height: 3em;

}

.popup-menu-item {
    width: 30%;
    border: 2px solid #575757;
    margin: 0.5em;
    padding: 0.5em;
    text-align: center;
    letter-spacing: 0.1em;
    transform: skewX(348deg);
    /* float: left; */
    font-size: 1em;
}

.intro-header {
    background: linear-gradient(0deg, #024304, black);
    color: white;
    text-align: center;
    font-family: "Tomorrow", sans-serif;
    font-size: 18pt;
    position: sticky;
    z-index: 1;
    top: 0;
    box-shadow: 0 70px 100px -50px #feffc080;
}

  .brewList {
    padding-bottom: 10em;
  }

  .brewDetails {
    height: 72vh;
  }

  .draughtCheckbox {
    padding: 0 0.5em 0px 0.5em;
  }

  .draughtCheckbox input[type="checkbox"] {
    transform: scale(2) translateY(4px);
  }

  .fa-search {
    font-size: 2em;
    margin-right: 0.25em;
  }

  .brewListContainer,
  .styleListContainer {
    width: 100%;
    float: left;
    overflow-y: auto !important;
    height: 82vh;
  }

  .card.beer-card {
    width: 48%;
    float: left;
    margin-left: 2%;
    font-size: 1.2em;
}

  .brewListContainer {
    height: fit-content;
    width: 100%;
  }

  .brewDetails > div {
    margin-bottom: 0.3em;
    line-height: 1.2em;
  }
}

/* ==========================================================================
   Kiosk / entry screen (kiosk.php) — matches the member-dash design language.
   Scoped to .kiosk-page (and the #signInModel id) so the shared .greeting /
   .button rules used by other screens are left untouched.
   ========================================================================== */

.kiosk-page {
    font-family: "Tomorrow", sans-serif;
    font-size: .75em;
}

/* Center the greeting + home buttons vertically in the viewport.
   (The global body rule caps height at 80vh — restore full height here.) */
body.kiosk-page {
  height: 100vh;
}

/* Greeting sits at the top; buttons fill the rest and center in the middle */
.kiosk-page .container {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-height: 100vh;
}

/* Store-select screen: center the container vertically in the viewport.
   (The global body rule caps height at 80vh — restore full height here.) */
body.index-page {
  height: 100vh;
}

.index-page .container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
}

.index-page .header {
  font-family: "Tomorrow", sans-serif;
  margin-bottom: 1rem;
}

/* Store dropdown — match the app font/theme and enlarge for touch/mobile.
   font-size >= 16px keeps iOS from auto-zooming on focus; appearance:none +
   custom chevron gives a consistent look while the native picker still opens. */
.index-page .form-control,
.index-page select#store {
  font-family: "Tomorrow", sans-serif;
  font-size: 1.3rem;
  width: 100%;
  height: auto;
  padding: 0.75em 2.5em 0.75em 1em;
  background-color: #262626;
  color: #ffffff;
  border: 1px solid #3f3f3f;
  border-radius: 0.5em;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23c7c7c7' d='M2 5h12L8 11z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 1em center;
  background-size: 0.8em;
}

.index-page .form-control:focus,
.index-page select#store:focus {
  background-color: #262626;
  color: #ffffff;
  border-color: #024304;
  box-shadow: 0 0 0 0.2rem rgba(2, 67, 4, 0.4);
  outline: none;
}

.index-page select#store option {
  background: #262626;
  color: #ffffff;
  font-family: "Tomorrow", sans-serif;
}

/* Store picker stacks top-to-bottom: closest-store callout, then the status
   line, then the Select Store dropdown. The shared .mainButtons is a wrapping
   inline-flex ROW (kiosk.php's home buttons rely on that), which laid the
   dropdown out BESIDE the Closest Flying Saucer button instead of under it.
   Scoped to .index-page so kiosk.php keeps its row. */
.index-page .mainButtons {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  width: 100%;
  max-width: 420px;
}

/* Closest-store (geolocation) callout */
.index-page .closest-store {
  text-align: center;
  margin-bottom: 1.25rem;
}

.index-page .closest-label {
  color: #c7c7c7;
  font-size: 1rem;
  letter-spacing: 0.05em;
  margin-bottom: 0.5rem;
}

.index-page .closest-btn {
  font-family: "Tomorrow", sans-serif;
  font-size: 1.7rem;
  width: 100%;
  padding: 0.75em 1em;
  background: #024304;
  color: #ffffff;
  border: 0;
  border-radius: 0.5em;
  cursor: pointer;
}

.index-page .closest-status {
  color: #c7c7c7;
  text-align: center;
  font-size: 1rem;
  margin-bottom: 1rem;
}

/* Animated ellipsis while the geolocation request is in flight, so the line
   reads as working rather than stuck. The dots are real elements (not a CSS
   ::after) because the error path overwrites the status with textContent,
   which drops them — exactly what we want once there is nothing to wait for. */
.index-page .closest-status .dots span {
  animation: closestDots 1.4s ease-in-out infinite;
  opacity: 0.25;
}

.index-page .closest-status .dots span:nth-child(2) {
  animation-delay: 0.2s;
}

.index-page .closest-status .dots span:nth-child(3) {
  animation-delay: 0.4s;
}

@keyframes closestDots {
  0%, 60%, 100% {
    opacity: 0.25;
  }
  30% {
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .index-page .closest-status .dots span {
    animation: none;
    opacity: 1;
  }
}

.index-page .browse-location-label {
  text-align: center;
  color: #ffd100;
  font-family: "Tomorrow", sans-serif;
  font-size: 1.3rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 0.85rem;
}

.kiosk-page .home-btn {
    flex-grow: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.5em;
    width: 100%;
    height: 80vh;
}

/* Links (e.g. signin.php "Request PIN Reset") → readable gold on dark */
.kiosk-page a {
  color: #ffd100;
}

.kiosk-page a:hover {
  color: #fff3b0;
}

/* Greeting title → dash intro-header treatment */
.kiosk-page .greeting {
  font-family: "Tomorrow", sans-serif;
  font-weight: 400;
  font-size: 2.5em;
  background: linear-gradient(0deg, #024304, black);
  color: #ffffff;
  border: none;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  padding: 0.45em 0.3em;
  margin-top: 0;
  letter-spacing: 0.1em;
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
  box-shadow:
    0 40px 80px -50px #feffc080,
    4px 4px 10px rgba(0, 0, 0, 0.3);
}

/* Bottom "Connected to:" bar → green tint to match the header */
.kiosk-page .storeConnection {
  background: black;
  color: #818181;
  letter-spacing: 0.05em;
  box-shadow: 0 -20px 40px -30px #feffc080;
  z-index: 10;
}

/* Visitor / Member home buttons → digital-box cards */
.kiosk-page .home-btn .button {
  font-family: "Tomorrow", sans-serif;
  background: #262626;
  color: #ffd100;
  border: 1px solid #3f3f3f;
  border-top: 4px solid #024304;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.3);
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.25);
  letter-spacing: 0.08em;
  transition: all 0.3s ease-in-out;
}

.kiosk-page .home-btn .button:hover,
.kiosk-page .home-btn .button:active {
  background: #024304;
  color: #ffffff;
  border-top-color: #ffd100;
}

/* Vertically center the sign-in modal, with a 1em top/bottom margin.
   min-height accounts for the 2em of combined vertical margin so the
   flex centering fills the remaining viewport height. */
#signInModel .modal-dialog {
  display: flex;
  align-items: center;
  min-height: calc(100% - 2em);
  margin: 1em auto;
  width: 400px;
}

/* Sign-in modal → digital-box surface with green header + gold CTA */
#signInModel .modal-content {
  background: #1f1f1e;
  color: #c7c7c7;
  border: 1px solid #3f3f3f;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  font-family: "Tomorrow", sans-serif;
}

#signInModel .modal-header {
  background: linear-gradient(0deg, #024304, black);
  color: #ffffff;
  border-bottom: 1px solid #3f3f3f;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  align-items: center;
}

#signInModel .modal-header .close {
  color: #ffffff;
  opacity: 0.9;
  text-shadow: none;
}

/* Form styling — shared by the kiosk sign-in modal and the signin.php
   PIN screens (all on a .kiosk-page body). :not(.btn) skips the MOU
   toggle labels, which are styled as buttons. */
.kiosk-page label:not(.btn) {
  color: #ffd100;
  letter-spacing: 0.05em;
}

.kiosk-page .form-control {
  background: #262626;
  color: #ffffff;
  border: 1px solid #3f3f3f;
  border-radius: 0.35em;
}

.kiosk-page .form-control:focus {
  background: #262626;
  color: #ffffff;
  border-color: #024304;
  box-shadow: 0 0 0 0.2rem rgba(2, 67, 4, 0.4);
}

.kiosk-page select.form-control option {
  background: #262626;
  color: #ffffff;
}

.kiosk-page .btn-outline-secondary {
  color: #c7c7c7;
  border-color: #3f3f3f;
}

.kiosk-page .btn-group-toggle .btn.active {
  background: #024304;
  color: #ffffff;
  border-color: #024304;
}

/* Submit buttons ("Beam Me Up!", "Create My Pin!") → gold CTA */
.kiosk-page input[type="submit"] {
  color: #261c03;
  border: none;
  font-weight: 400;
  background: linear-gradient(215deg, rgba(186, 153, 19, 1) 0%, rgba(255, 204, 0, 1) 45%, rgb(173 144 24) 46%, rgba(255, 200, 0, 1) 100%);
  /* text-shadow:
    3px 2px 2px #ffffffb3,
    -3px -2px 2px #00000033; */
  box-shadow:
    inset 1px 1px 1px #ffffffc7,
    inset -3px -3px 1px #0000004a,
    0 11px 20px -10px rgb(198 215 22 / 50%)
}

/* ==========================================================================
   Visitor landing page (visitor.php)
   ========================================================================== */

/* Info modal, food menu popup (openFoodMenu) and event details popup
   (openEventDetails) → dark digital-box surface to match the rest of the app */
#infoModal .modal-content,
.foodMenuModal .modal-content,
.eventDetailsModal .modal-content {
  background: #1f1f1e;
  color: #c7c7c7;
  border: 1px solid #3f3f3f;
  corner-shape: bevel;
  border-radius: 0.5em 0 0.5em 0;
  font-family: "Tomorrow", sans-serif;
  margin: 3em 1em 3em;
}

.foodMenuModal .modal-header,
.eventDetailsModal .modal-header {
  align-items: center;
  border-bottom: 1px solid #3f3f3f;
}

.foodMenuModal .modal-title,
.eventDetailsModal .modal-title {
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.foodMenuModal .modal-header .close,
.eventDetailsModal .modal-header .close {
  color: #c7c7c7;
  opacity: 1;
  text-shadow: none;
}

.foodMenuModal .modal-body {
  padding: 0.5em;
}

.foodMenuModal .food-menu-img {
  display: block;
  width: 100%;
  height: auto;
}

.foodMenuModal .food-menu-fallback {
  padding: 2em 1em;
  text-align: center;
  letter-spacing: 0.05em;
}

/* Event details popup (openEventDetails in functions.js). Renders the event
   from our own `events` table — beerknurd.com sends X-Frame-Options:
   SAMEORIGIN, so the old iframe version could never display.

   Every popup is the SAME SIZE regardless of how much description an event
   has: the content box is a fixed-height flex column and the body scrolls
   inside it, instead of the dialog growing and shrinking per event. */
/* Width has to be DEFINITE, not just capped. Bootstrap sets
   .modal-dialog{width:auto}, so a max-width alone lets the box size to its
   container/content — and .modal-content is a shrinkable flex item, so the
   1em side margin it used to carry made that worse. The gutter now lives on
   the dialog and .modal-content fills it exactly, so every event popup is the
   same width whatever is inside it. */
.eventDetailsModal .modal-dialog {
  width: calc(100% - 2rem);
  max-width: 560px;
  margin-left: auto;
  margin-right: auto;
}

.eventDetailsModal .modal-content {
  width: 100%;
  margin: 1.5em 0;
  height: calc(100vh - 3em);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.eventDetailsModal .modal-header {
  flex: 0 0 auto;
}

.eventDetailsModal .modal-body {
  flex: 1 1 auto;
  padding: 0 0 1.25em;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

/* Never cropped and never capped: full width at the image's own aspect ratio,
   however tall that is. A tall poster will push the title and description
   down, but the popup is a fixed-height scrolling box so its outline does not
   change — you just scroll to the text. object-fit stays as insurance in case
   a height ever gets constrained from above; it is a no-op with height:auto. */
.eventDetailsModal .event-details-image {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  background: #262626;
  margin-bottom: 1.1em;
}

.eventDetailsModal .event-details-meta {
  border-bottom: 1px solid #3f3f3f;
  padding: 0 1.25em 0.85em;
  margin-bottom: 1em;
}

.eventDetailsModal .event-when {
  color: #ffd100;
  font-size: 1.1em;
  letter-spacing: 0.03em;
}

.eventDetailsModal .event-where {
  color: #9a9a9a;
  font-size: 0.95em;
  margin-top: 0.25em;
}

/* Staff-authored TinyMCE HTML — keep it readable without letting it bring its
   own colors or runaway image widths into the dark popup. */
.eventDetailsModal .event-details-desc {
  font-size: 1em;
  line-height: 1.6;
  color: #c7c7c7;
  padding: 0 1.25em;
  min-width: 0;
  overflow-wrap: break-word;
  word-break: break-word;
}

.eventDetailsModal .event-details-desc * {
  color: inherit !important;
  background: transparent !important;
  max-width: 100%;
}

.eventDetailsModal .event-details-desc img {
  height: auto;
  border-radius: 0.3em;
}

.eventDetailsModal .event-details-desc a {
  color: #ffd100 !important;
  text-decoration: underline;
}

.eventDetailsModal .event-details-empty {
  color: #9a9a9a;
  font-style: italic;
}

.eventDetailsModal .event-details-actions {
  margin: 1.25em 1.25em 0;
  padding-top: 1em;
  border-top: 1px solid #3f3f3f;
  text-align: center;
}

.eventDetailsModal .event-details-actions a {
  color: #ffd100;
  letter-spacing: 0.03em;
}

/* INFO button → gold CTA, centered (overrides the old silver .button) */
.visitor-page .button {
  font-family: "Tomorrow", sans-serif;
   color: #261c03;
  border: none;
  font-weight: 400;
  background: linear-gradient(215deg, rgba(186, 153, 19, 1) 0%, rgba(255, 204, 0, 1) 45%, rgb(173 144 24) 46%, rgba(255, 200, 0, 1) 100%);
  /* text-shadow:
    3px 2px 2px #ffffffb3,
    -3px -2px 2px #00000033; */
  box-shadow:
    inset 1px 1px 1px #ffffffc7,
    inset -3px -3px 1px #0000004a,
    0 11px 20px -10px rgb(198 215 22 / 50%)
}
