.material-symbols-outlined {
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
  display: inline-block;
  line-height: 1;
  text-transform: none;
  letter-spacing: normal;
  word-wrap: normal;
  white-space: nowrap;
  direction: ltr;
}

body {
  font-family: 'Montserrat', 'NanumSquare', sans-serif;
  overflow-x: hidden;
  background-image: url("assets/images/bg_seamless.webp");
  background-repeat: repeat;
  background-size: 300px 300px;
}

#page {
  max-width: 430px;
  width: 100%;
  margin: 0 auto;
  overflow-x: hidden;
}

#top-app-bar {
  padding-top: max(0.75rem, env(safe-area-inset-top));
}


/* ===== GALLERY WALL LAYOUT ===== */
.gallery-wall {
  position: relative;
  width: 100%;
  visibility: hidden;
}

.gallery-wall.is-positioned {
  visibility: visible;
}

/* Frame button wrapper — absolutely positioned by JS */
.gallery-frame {
  position: absolute;
  cursor: pointer;
  border: none;
  background: none;
  padding: 0;
  transition: opacity 0.2s ease;
}

.gallery-frame:hover {
  opacity: 0.88;
}

.gallery-frame:active {
  opacity: 0.72;
}

/* PNG frame overlay structure */
.gallery-frame-inner {
  position: relative;
  width: 100%;
}


.gallery-frame-png {
  position: relative;
  width: 100%;
  height: auto;
  display: block;
  z-index: 1;
  pointer-events: none;
}

/* ===== GALLERY MODAL ===== */
.gallery-modal {
  position: fixed;
  inset: 0;
  z-index: 70;
  display: flex;
  align-items: center;
  justify-content: center;
  visibility: hidden;
  pointer-events: none;
}

.gallery-modal.is-open {
  visibility: visible;
  pointer-events: all;
}

.gallery-modal-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0);
}

/* The animating frame wrapper */
.gallery-modal-frame-wrap {
  position: relative;
  z-index: 1;
  width: min(300px, 82vw);
  transform-origin: center center;
}

/* The frame in modal — reuses same .frame-* classes */
.gallery-modal-inner-frame {
  width: 100%;
}

.gallery-modal-inner-frame .gallery-frame-photo {
  position: relative;
  width: 100%;
  height: auto;
  max-height: 72vh;
  object-fit: contain;
}

/* Modal inner — prev | frame | next 가로 배치 */
.gallery-modal-inner {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 8px;
}

/* Modal controls */
.gallery-modal-close {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 2;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(255, 255, 255, 0.8);
  background: none;
  border: none;
  cursor: pointer;
  transition: color 0.15s ease;
}

.gallery-modal-close:hover {
  color: #fff;
}

.gallery-modal-nav {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(255, 255, 255, 0.8);
  background: none;
  border: none;
  cursor: pointer;
  transition: color 0.15s ease;
}

.gallery-modal-nav:hover {
  color: #fff;
}

/* Scroll lock when modal/drawer is open */
body.overflow-hidden {
  overflow: hidden;
}

/* 버튼 호버 시 글자색 유지 */
#contact-btn:hover,
#contact-btn:active {
  color: #1A1400;
}

.account-side-tab[aria-selected="true"]:hover,
.account-side-tab[aria-selected="true"]:active {
  color: #ffffff;
}

.account-side-tab[aria-selected="false"]:hover,
.account-side-tab[aria-selected="false"]:active {
  color: #6B5046;
}

aside {
  left: max(0px, calc((100vw - 430px) / 2));
  box-shadow: 6px 0 32px rgba(80, 50, 30, 0.22), 1px 0 0 rgba(80, 50, 30, 0.06);
  background-image: url('assets/images/drawer_texture.png');
  background-size: 400px;
  background-repeat: repeat;
}

/* ===== STAR OVERLAY ===== */
#intro {
  background-image: url('assets/images/stars/stars_intro.png');
  background-size: 100% auto;
  background-position: top;
  background-repeat: no-repeat;
}

#our-story {
  background-image: url('assets/images/stars/stars_ourstory.png');
  background-size: 100% auto;
  background-position: top;
  background-repeat: no-repeat;
}

#gallery {
  background-image: url('assets/images/stars/stars_gallery.png');
  background-size: 100% auto;
  background-position: top;
  background-repeat: no-repeat;
}

#location {
  background-image: url('assets/images/stars/stars_location.png');
  background-size: 100% auto;
  background-position: top;
  background-repeat: no-repeat;
}

#account {
  background-image: url('assets/images/stars/stars_account.png');
  background-size: 100% auto;
  background-position: top;
  background-repeat: no-repeat;
}

#share {
  background-image: url('assets/images/stars/stars_share.png');
  background-size: 100% auto;
  background-position: top;
  background-repeat: no-repeat;
}

/* ===== INTRO GALLERY WALL ===== */
.intro-gallery {
  position: relative;
  width: 100%;
  max-width: 430px;
  margin: 56px auto 0;
}

.intro-album {
  display: block;
  width: 100%;
  height: auto;
  pointer-events: none;
}

.intro-gallery-text {
  position: absolute;
  top: 48%;
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  z-index: 2;
  white-space: nowrap;
}

.intro-gallery-text .intro-names {
  color: #523D33;
  font-size: 22px;
  font-family: 'Montserrat', sans-serif;
  font-weight: 700;
  letter-spacing: 0.18em;
  line-height: 1.6;
  text-transform: uppercase;
  margin-bottom: 30px;
}

.intro-gallery-text .intro-date {
  color: rgba(82, 61, 51, 0.75);
  font-size: 12px;
  letter-spacing: 0.15em;
  font-family: 'Montserrat', sans-serif;
  font-weight: 700;
  margin-bottom: 2px;
}

.intro-gallery-text .intro-venue {
  color: #523D33;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.04em;
  font-family: 'NanumSquare', sans-serif;
}

.intro-scroll-hint {
  position: absolute;
  bottom: 15%;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  z-index: 2;
}

.intro-scroll-label {
  color: #523D33;
  font-family: 'Montserrat', sans-serif;
  font-size: 9px;
  font-weight: 400;
  letter-spacing: 0.22em;
  opacity: 0.7;
}

.intro-scroll-line {
  width: 1px;
  height: 36px;
  background: #523D33;
  opacity: 0.5;
  animation: scrollLineDown 1.6s ease-in-out infinite;
  transform-origin: top center;
}

@keyframes scrollLineDown {
  0% {
    transform: scaleY(0);
    opacity: 0;
  }

  30% {
    opacity: 0.5;
  }

  70% {
    transform: scaleY(1);
    opacity: 0.5;
  }

  100% {
    transform: scaleY(1);
    opacity: 0;
  }
}