/* November in Japan - Expo Styles */

/* ========================================
   SELF-HOSTED FONT
   ======================================== */

@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300 400;
  font-display: swap;
  src: url('../fonts/ibm-plex-sans-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300 400;
  font-display: swap;
  src: url('../fonts/ibm-plex-sans-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ========================================
   EXPO LAYOUT
   ======================================== */

html {
  scroll-behavior: smooth;
}

.expo-layout {
  display: block;
  padding: 0;
  margin: 0;
  width: 100%;
  height: auto;
}

.expo-section {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 80px 40px;
}

/* ========================================
   INTRO SECTION
   ======================================== */

.expo-intro {
  padding-left: 80px;
  padding-right: 80px;
  justify-content: flex-start;
  align-items: flex-start;
  padding-top: 120px;
}

.intro-layout {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  width: 100%;
}

.expo-content {
  font-family: 'IBM Plex Sans', sans-serif;
  width: 50%;
  flex-shrink: 0;
  padding-right: 40px;
}

.floor-plan {
  width: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding-top: 170px; /* Align with description text */
}

.expo-title {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 42px;
  font-weight: 300;
  letter-spacing: 1px;
  margin-bottom: 20px;
  color: #1a1a1a;
}

.expo-subtitle {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 16px;
  font-weight: 400;
  letter-spacing: 0.5px;
  color: #666;
  margin-bottom: 40px;
}

/* Language Selector */
.lang-selector {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 12px;
  font-weight: 300;
  letter-spacing: 0.5px;
  color: #999;
  margin-bottom: 15px;
  margin-top: -10px;
}

.lang-selector .lang-link {
  color: #666;
  text-decoration: none;
  transition: color 0.3s ease;
}

.lang-selector .lang-link:hover {
  color: #1a1a1a;
}

.room-intro-title {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 28px;
  font-weight: 300;
  margin-top: 0;
  margin-bottom: 10px;
}

.room-intro-subtitle {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 16px;
  font-weight: 400;
  letter-spacing: 0.5px;
  color: #666;
  margin-bottom: 20px;
}

.expo-description {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.9;
  color: #444;
  margin-bottom: 60px;
  text-align: justify;
}

/* Room Navigation */
.room-nav {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.room-link {
  font-family: 'Courier New', Courier, monospace;
  font-size: 12px;
  letter-spacing: 2px;
  color: #666;
  text-decoration: none;
  padding: 8px 0;
  border-bottom: 1px solid transparent;
  transition: all 0.3s ease;
  display: inline-block;
  width: fit-content;
}

.room-link:hover {
  color: #1a1a1a;
  border-bottom: 1px solid #1a1a1a;
}

/* ========================================
   FLOOR PLAN (Museum Map) - Isometric SVG
   ======================================== */

.floor-plan-title {
  font-family: 'Courier New', Courier, monospace;
  font-size: 10px;
  letter-spacing: 2px;
  color: #999;
  text-transform: uppercase;
  margin-bottom: 15px;
}

.floor-plan-svg {
  width: 100%;
  max-width: 350px;
  height: auto;
}

#floor-plan-container {
  width: 350px;
  height: 440px;
}

#floor-plan-container canvas {
  display: block;
}

.floor-svg-link {
  cursor: pointer;
}

.floor-level-iso {
  transition: all 0.3s ease;
}

.floor-level-iso:hover .floor-shape {
  fill: rgba(0, 0, 0, 0.05);
}

/* Floor shape */
.floor-shape {
  fill: transparent;
  stroke: #1a1a1a;
  stroke-width: 1;
  transition: all 0.3s ease;
}

/* Labels */
.floor-label {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 11px;
  font-weight: 400;
  fill: #1a1a1a;
  text-anchor: middle;
  pointer-events: none;
}

.floor-sublabel {
  font-family: 'Courier New', Courier, monospace;
  font-size: 8px;
  fill: #666;
  text-anchor: middle;
  text-transform: uppercase;
  letter-spacing: 1px;
  pointer-events: none;
}

/* ========================================
   TEXT SPACER SECTIONS
   ======================================== */

.text-spacer {
  min-height: auto;
  padding: 25px 250px;
  background: transparent;
}

.text-content {
  max-width: 800px;
  font-family: 'IBM Plex Sans', sans-serif;
}

.room-description {
  font-size: 14px;
  font-weight: 300;
  line-height: 2;
  color: #666;
  letter-spacing: 0.5px;
  text-align: justify;
}

/* ========================================
   ROOM SECTIONS
   ======================================== */

.room {
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
  padding-left: 250px;
  padding-top: 60px;
  padding-bottom: 30px;
}

#space-room {
  padding-bottom: 0;
  min-height: 100vh;
}

.room-header {
  margin-bottom: 40px;
}

.room-label {
  font-family: 'Courier New', Courier, monospace;
  font-size: 11px;
  letter-spacing: 3px;
  color: #999;
  text-transform: uppercase;
  display: block;
  margin-bottom: 0px;
}

.room-title {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 32px;
  font-weight: 300;
  color: #1a1a1a;
  letter-spacing: 1px;
}

.room-content {
  width: 100%;
  max-width: 800px;
  
}

.room-placeholder {
  font-family: 'Courier New', Courier, monospace;
  font-size: 12px;
  letter-spacing: 2px;
  color: #999;
  
}

/* Fullscreen room (for map) */
.room-fullscreen {
  position: relative;
  padding: 0;
  min-height: 100vh;
  margin-bottom: 15vh;
}

.room-fullscreen:last-child {
  margin-bottom: 0;
}

.room-header-overlay {
  position: absolute;
  top: 50%;
  left: 40px;
  transform: translateY(-50%);
  z-index: 100;
  background: transparent;
  padding: 0;
}

.room-header-overlay .room-title {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  transform: rotate(180deg);
  font-size: 14px;
  letter-spacing: 3px;
  text-transform: uppercase;
}

/* ========================================
   SOUND ROOM - Spatial Audio
   ======================================== */

#sound-room-canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

#sound-room-canvas canvas {
  display: block;
}

.sound-start-btn {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 200;
  background: #1a1a1a;
  color: #faf8f4;
  border: none;
  padding: 20px 40px;
  font-family: 'Courier New', Courier, monospace;
  font-size: 12px;
  letter-spacing: 3px;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s ease;
}

.sound-start-btn:hover {
  background: #333;
}

.sound-start-btn.hidden {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.5s ease;
}

.sound-exit-btn {
  position: absolute;
  top: 100px;
  right: 30px;
  z-index: 200;
  background: transparent;
  color: #1a1a1a;
  border: 1px solid #1a1a1a;
  padding: 10px 20px;
  font-family: 'Courier New', Courier, monospace;
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.3s ease;
}

.sound-exit-btn:hover {
  background: #1a1a1a;
  color: #faf8f4;
}

.sound-exit-btn.hidden {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.5s ease;
}

.audio-indicator {
  position: absolute;
  bottom: 80px;
  z-index: 100;
  font-family: 'Courier New', Courier, monospace;
  font-size: 10px;
  letter-spacing: 2px;
  color: #666;
  text-transform: uppercase;
}

#audio-left {
  left: 40px;
}

#audio-right {
  right: 40px;
  text-align: right;
}

.volume-bar {
  width: 100px;
  height: 3px;
  background: #e5e5e5;
  margin-top: 8px;
  overflow: hidden;
}

#audio-right .volume-bar {
  margin-left: auto;
}

.volume-fill {
  height: 100%;
  width: 0%;
  transition: width 0.1s ease;
}

#vol-left {
  background: #e6c744;
}

#vol-right {
  background: #e67c44;
  float: right;
}

.hidden {
  display: none !important;
}

/* ========================================
   TIME ROOM - CSS flip card
   ======================================== */

#time-text {
  flex-direction: column;
  align-items: center;
}

.time-room-photo-container {
  margin-top: 40px;
  text-align: center;
  perspective: 1000px;
}

.time-room-card {
  position: relative;
  display: inline-block;
  cursor: pointer;
  transform-style: preserve-3d;
  transition: transform 0.6s ease;
}

.time-room-card.flipped {
  transform: rotateY(180deg);
}

.time-room-card-front,
.time-room-card-back {
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

.time-room-card-front {
  display: block;
}

.time-room-card-back {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  transform: rotateY(180deg);
}

#time-room-img {
  display: block;
  max-width: 80vw;
  max-height: 60vh;
  object-fit: contain;
}

#time-room-img.transitioning {
  opacity: 0;
  transition: opacity 0.1s ease;
}

#time-room-back-text {
  font-family: 'IBM Plex Sans', sans-serif;
  font-weight: 300;
  font-size: 15px;
  color: #000;
  padding: 20px;
}

.time-room-label {
  margin-top: 15px;
  font-family: 'Courier New', Courier, monospace;
  font-size: 14px;
  letter-spacing: 3px;
  color: #1a1a1a;
  text-transform: uppercase;
}

.time-room-info {
  margin-top: 10px;
  font-family: 'Courier New', Courier, monospace;
  font-size: 12px;
  letter-spacing: 2px;
  color: #1a1a1a;
  text-transform: uppercase;
}

.time-room-info .time-label {
  font-size: 14px;
  letter-spacing: 3px;
  margin-bottom: 8px;
}

.time-room-info .countdown {
  font-size: 11px;
  color: #666;
}

@media (max-width: 768px) {
  #time-room-img {
    max-width: 90vw;
    max-height: 50vh;
  }

  .time-room-label {
    font-size: 12px;
  }

  .time-room-info {
    margin-top: 30px;
    font-size: 11px;
  }

  .time-room-info .countdown {
    font-size: 10px;
  }
}

/* ========================================
   MIRROR ROOM - Face swap with self-portrait
   ======================================== */

#mirror-room-canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

#mirror-room-canvas canvas {
  display: block;
}

.room-closed-message {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-family: 'Courier New', Courier, monospace;
  font-size: 14px;
  letter-spacing: 2px;
  color: #1a1a1a;
  text-transform: uppercase;
  text-align: center;
  z-index: 10;
}

#mirror-text {
  flex-direction: column;
  align-items: center;
  padding-bottom: 120px;
}

.mirror-enter-btn {
  display: inline-block;
  margin-top: 80px;
  background: #1a1a1a;
  color: #faf8f4;
  border: none;
  padding: 20px 40px;
  font-family: 'Courier New', Courier, monospace;
  font-size: 12px;
  letter-spacing: 3px;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: all 0.3s ease;
}

.mirror-enter-btn:hover {
  background: #333;
}

.mirror-enter-btn.hidden {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.5s ease;
}

/* ========================================
   MIRROR ROOM - 3D Experience (mirror-room.html)
   ======================================== */

.mirror-room-main {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
  overflow: hidden;
}

.mirror-scene-container {
  width: 100%;
  height: 100%;
  cursor: grab;
  touch-action: none;
}

.mirror-scene-container:active {
  cursor: grabbing;
}

.mirror-scene-container canvas {
  display: block;
}

.mirror-loading {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #0a0a0a;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 500;
  transition: opacity 0.8s ease;
}

.mirror-loading.hidden {
  opacity: 0;
  pointer-events: none;
}

.mirror-loading-text {
  font-family: 'Courier New', Courier, monospace;
  font-size: 11px;
  letter-spacing: 4px;
  color: rgba(255, 255, 255, 0.6);
  text-transform: uppercase;
}

.mirror-loading-progress {
  font-family: 'Courier New', Courier, monospace;
  font-size: 10px;
  letter-spacing: 2px;
  color: rgba(255, 255, 255, 0.25);
  margin-top: 12px;
}

.mirror-instructions {
  position: fixed;
  bottom: 80px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 300;
  font-family: 'Courier New', Courier, monospace;
  font-size: 10px;
  letter-spacing: 3px;
  color: rgba(255, 255, 255, 0.5);
  text-transform: uppercase;
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  padding: 12px 28px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 6px;
  transition: opacity 1s ease;
}

.mirror-instructions.hidden {
  display: none;
}

.mirror-instructions.fade-out {
  opacity: 0;
  pointer-events: none;
}

.exit-widget {
  position: fixed;
  bottom: 30px;
  right: 30px;
  z-index: 400;
  display: flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
  cursor: pointer;
}

.exit-key {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8px 14px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 6px;
  font-family: 'Courier New', Courier, monospace;
  font-size: 10px;
  color: rgba(255, 255, 255, 0.4);
  background: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: all 0.2s ease;
}

.exit-label {
  font-family: 'Courier New', Courier, monospace;
  font-size: 9px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.3);
  transition: color 0.2s ease;
}

.exit-widget:hover .exit-key {
  background: rgba(255, 255, 255, 0.15);
  color: rgba(255, 255, 255, 0.8);
  border-color: rgba(255, 255, 255, 0.25);
}

.exit-widget:hover .exit-label {
  color: rgba(255, 255, 255, 0.6);
}

@media (max-width: 768px) {
  .exit-widget {
    bottom: 15px;
    right: 15px;
    gap: 4px;
  }

  .exit-key {
    font-size: 9px;
    padding: 3px 7px;
  }

  .exit-label {
    font-size: 9px;
  }

  .mirror-instructions {
    font-size: 10px;
    padding: 10px 18px;
    bottom: 60px;
  }
}

/* ========================================
   PROGRESS BAR
   ======================================== */

.expo-progress {
  position: fixed;
  right: 30px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1000;
  height: 200px;
}

.progress-track {
  position: relative;
  width: 2px;
  height: 100%;
  background: #e5e5e5;
}

.progress-fill {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 0%;
  background: #1a1a1a;
  transition: height 0.1s ease-out;
}

.progress-marker {
  position: absolute;
  left: 0;
  transform: translateY(-50%);
  cursor: pointer;
}

.progress-marker::before {
  content: '';
  display: block;
  width: 8px;
  height: 1px;
  background: #1a1a1a;
  margin-left: -3px;
}

.marker-label {
  position: absolute;
  right: 15px;
  top: 50%;
  transform: translateY(-50%);
  font-family: 'Courier New', Courier, monospace;
  font-size: 9px;
  letter-spacing: 1px;
  color: #999;
  white-space: nowrap;
  opacity: 1;
  transition: color 0.3s ease;
}

.progress-marker.active .marker-label {
  color: #1a1a1a;
}

/* ========================================
   MAP CONTAINER (Space Room)
   ======================================== */

.november-main {
  display: block;
  padding: 0;
  margin: 0;
  width: 100%;
}

#map-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

#space-room-canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

#space-room-canvas canvas {
  display: block;
}

.november-container {
  display: flex;
  flex-direction: column;
  gap: 80px;
}

#map-container canvas {
  display: block;
}

/* Tooltip for hover */
#tooltip {
  position: fixed;
  padding: 4px 8px;
  font-family: 'Courier New', Courier, monospace;
  font-size: 11px;
  color: #1a1a1a;
  background: rgba(250, 248, 244, 0.9);
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.2s ease;
  z-index: 1000;
  letter-spacing: 1px;
}

#tooltip.visible {
  opacity: 1;
}

/* Day Popup */
.day-popup {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: rgba(250, 248, 244, 0.95);
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.4s ease, visibility 0.4s ease;
}

.day-popup.visible {
  opacity: 1;
  visibility: visible;
}

.popup-close {
  position: absolute;
  top: 30px;
  right: 30px;
  background: none;
  border: none;
  font-size: 32px;
  cursor: pointer;
  color: #1a1a1a;
  line-height: 1;
  padding: 10px;
  transition: opacity 0.3s ease;
}

.popup-close:hover {
  opacity: 0.5;
}

.popup-content {
  max-width: 600px;
  width: 90%;
  max-height: 90vh;
  overflow-y: auto;
  padding: 20px;
}

.popup-header {
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin-bottom: 30px;
}

.popup-day {
  font-family: 'Courier New', Courier, monospace;
  font-size: 12px;
  letter-spacing: 3px;
  color: #666;
}

.popup-location {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 24px;
  font-weight: 300;
  color: #1a1a1a;
  letter-spacing: 2px;
}

.popup-media {
  width: 100%;
  margin-bottom: 20px;
}

.popup-image {
  width: 100%;
  height: auto;
  display: block;
  filter: grayscale(20%);
}

.popup-image[src=""],
.popup-image:not([src]) {
  display: none;
}

.popup-audio {
  display: none;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 20px;
  padding: 15px;
  background: rgba(0, 0, 0, 0.03);
}

.popup-audio.has-audio {
  display: flex;
}

.popup-audio-player {
  width: 100%;
  height: 40px;
}

.popup-audio-title {
  font-family: 'Courier New', Courier, monospace;
  font-size: 11px;
  letter-spacing: 1px;
  color: #666;
}

.popup-description {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.8;
  color: #1a1a1a;
}

/* Map faded state when popup is open */
#map-container.faded {
  opacity: 0.2;
  transition: opacity 0.4s ease;
}

/* Each moment/entry in the timeline */
.moment {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}

.moment.visible {
  opacity: 1;
  transform: translateY(0);
}

.moment-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: center;
}

/* Alternate layout for visual interest */
.moment:nth-child(even) .moment-content {
  direction: rtl;
}

.moment:nth-child(even) .moment-content > * {
  direction: ltr;
}

/* Media container (images, audio players) */
.moment-media {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
}

.moment-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(20%);
  transition: filter 0.4s ease, transform 0.4s ease;
}

.moment-media:hover img {
  filter: grayscale(0%);
  transform: scale(1.02);
}

/* Placeholder for media */
.media-placeholder {
  width: 100%;
  height: 100%;
  min-height: 200px;
  border: 1px dashed #ccc;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #999;
  font-size: 12px;
  letter-spacing: 1px;
}

/* Text content */
.moment-text {
  padding: 20px 0;
}

.moment-text time {
  display: block;
  font-size: 11px;
  letter-spacing: 3px;
  color: #999;
  margin-bottom: 12px;
}

.moment-text p {
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.8;
  color: #1a1a1a;
  max-width: 400px;
}

/* Audio player within moment */
.moment-audio {
  display: flex;
  align-items: center;
  gap: 15px;
  padding: 20px;
  background: rgba(250, 248, 244, 0.8);
  border: 1px solid #e5e5e5;
}

.moment-audio .play-btn {
  width: 40px;
  height: 40px;
  border: 1px solid #1a1a1a;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  transition: all 0.3s ease;
}

.moment-audio .play-btn:hover {
  background: #1a1a1a;
  color: #faf8f4;
}

.moment-audio .audio-info {
  font-size: 11px;
  letter-spacing: 1px;
  color: #666;
}

/* Interactive hover effects */
.moment {
  cursor: default;
}

.moment-media {
  cursor: pointer;
}

/* ========================================
   MOBILE RESPONSIVE
   ======================================== */

@media (max-width: 768px) {
  .expo-section {
    padding: 60px 20px 40px;
  }

  .text-spacer {
    padding: 100px 20px 30px;
  }

  .room-description {
    font-size: 13px;
    line-height: 1.9;
  }

  .expo-intro {
    padding-left: 20px;
    padding-right: 20px;
    padding-top: 80px;
  }

  .intro-layout {
    flex-direction: column;
    gap: 40px;
  }

  .expo-content {
    width: 100%;
    padding-right: 0;
  }

  .floor-plan {
    width: 100%;
    align-items: flex-start;
    padding-top: 0;
    margin-bottom: 70px;
  }

  .expo-title {
    font-size: 28px;
  }

  .expo-subtitle {
    font-size: 14px;
    margin-bottom: 30px;
  }

  .expo-description {
    font-size: 13px;
    margin-bottom: 40px;
  }

  .room {
    padding-left: 20px;
    padding-right: 20px;
    padding-bottom: 15px;
  }

  #space-room {
    padding-bottom: 0px;
  }

  .room-title {
    font-size: 12px;
  }

  /* Room titles vertical on mobile */
  .room-header-overlay {
    left: 15px;
  }

  .room-header-overlay .room-title {
    font-size: 11px;
    letter-spacing: 2px;
  }

  /* Floor plan mobile */
  .floor-plan {
    margin-top: 0;
  }

  #floor-plan-container {
    width: 280px;
    height: 350px;
  }

  .floor-plan-svg {
    max-width: 250px;
  }

  .floor-label {
    font-size: 9px;
  }

  .floor-sublabel {
    font-size: 6px;
  }

  .room-nav {
    gap: 8px;
  }

  /* Hide progress bar on mobile */
  .expo-progress {
    display: none;
  }

  /* Room spacing mobile */
  .room-fullscreen {
    margin-bottom: 10vh;
  }

  /* Sound room mobile */
  .sound-start-btn {
    padding: 15px 30px;
    font-size: 11px;
  }

  .sound-exit-btn {
    top: 80px;
    right: 20px;
    padding: 8px 15px;
    font-size: 9px;
  }

  .audio-indicator {
    bottom: 60px;
    font-size: 9px;
  }

  #audio-left {
    left: 20px;
  }

  #audio-right {
    right: 20px;
  }

  .volume-bar {
    width: 60px;
  }

  /* Popup mobile */
  .popup-close {
    top: 15px;
    right: 15px;
    font-size: 28px;
  }

  .popup-content {
    padding: 15px;
  }

  .popup-header {
    margin-bottom: 20px;
  }

  .popup-day {
    font-size: 11px;
  }

  .popup-location {
    font-size: 20px;
  }

  .popup-description {
    font-size: 13px;
  }

  /* Moments mobile */
  .november-container {
    gap: 60px;
  }

  .moment-content {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .moment:nth-child(even) .moment-content {
    direction: ltr;
  }

  .moment-text {
    padding: 10px 0;
  }

  .moment-text p {
    font-size: 13px;
    max-width: 100%;
  }

  .media-placeholder {
    min-height: 180px;
  }
}

/* Extra small screens (phones portrait) */
@media (max-width: 480px) {
  .expo-intro {
    padding-top: 70px;
  }

  .expo-title {
    font-size: 24px;
  }

  .expo-subtitle {
    font-size: 13px;
  }

  .expo-description {
    font-size: 12px;
    line-height: 1.7;
  }

  #floor-plan-container {
    width: 240px;
    height: 300px;
  }

  .room-header-overlay {
    left: 10px;
  }

  .room-header-overlay .room-title {
    font-size: 10px;
    letter-spacing: 1px;
  }

  .sound-start-btn {
    padding: 12px 24px;
    font-size: 10px;
    letter-spacing: 2px;
  }

  .audio-indicator {
    font-size: 8px;
  }

  .volume-bar {
    width: 50px;
  }

  .popup-location {
    font-size: 18px;
  }
}

/* ========================================
   DAY NAVIGATOR
   ======================================== */

.day-navigator {
  position: fixed;
  bottom: 30px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1000;
  display: flex;
  align-items: center;
  gap: 12px;
  background: rgba(26, 26, 26, 0.7);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  padding: 12px 20px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  opacity: 1;
  transition: opacity 0.8s ease-in-out, background 0.3s ease;
}

.day-navigator:hover {
  background: rgba(26, 26, 26, 0.85);
}

.day-nav-btn {
  background: transparent;
  border: none;
  font-family: 'Courier New', Courier, monospace;
  font-size: 12px;
  letter-spacing: 3px;
  color: #faf8f4;
  cursor: pointer;
  padding: 2px 4px;
  transition: opacity 0.3s ease;
}

.day-nav-btn:hover {
  opacity: 0.5;
}

.day-nav-btn:disabled {
  opacity: 0.2;
  cursor: not-allowed;
}

.day-nav-label {
  font-family: 'Courier New', Courier, monospace;
  font-size: 10px;
  letter-spacing: 3px;
  color: #faf8f4;
  text-transform: uppercase;
  display: flex;
  align-items: baseline;
  gap: 4px;
}

.day-nav-current {
  font-size: 12px;
  font-weight: 400;
  min-width: 18px;
  text-align: center;
}

.day-nav-separator {
  color: inherit;
}

.day-nav-total {
  color: inherit;
}

/* Hide navigator on intro/footer */
.day-navigator.hidden {
  opacity: 0;
  pointer-events: none;
}

@media (max-width: 768px) {
  .day-navigator {
    bottom: 15px;
    padding: 8px 16px;
    gap: 14px;
  }

  .day-nav-btn {
    font-size: 14px;
    padding: 5px 8px;
  }

  .day-nav-label {
    font-size: 11px;
  }

  .day-nav-current {
    font-size: 14px;
  }
}

/* ========================================
   MAP POPUP
   ======================================== */

#map-popup {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2000;
  animation: fadeIn 0.3s ease;
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.map-popup-content {
  background: #faf8f4;
  padding: 30px;
  max-width: 500px;
  width: 90%;
  position: relative;
  animation: slideUp 0.3s ease;
}

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.map-popup-close {
  position: absolute;
  top: 10px;
  right: 15px;
  background: none;
  border: none;
  font-size: 24px;
  cursor: pointer;
  color: #666;
  transition: color 0.2s ease;
}

.map-popup-close:hover {
  color: #1a1a1a;
}

.map-popup-title {
  font-family: 'Courier New', Courier, monospace;
  font-size: 18px;
  font-weight: normal;
  letter-spacing: 2px;
  text-transform: uppercase;
  margin: 0 0 5px 0;
  color: #1a1a1a;
}

.map-popup-coords {
  font-family: 'Courier New', Courier, monospace;
  font-size: 11px;
  color: #666;
  margin: 0 0 20px 0;
  letter-spacing: 1px;
}

.map-popup-iframe {
  width: 100%;
  height: 300px;
  border: 1px solid #ddd;
}

.map-popup-link {
  display: block;
  margin-top: 15px;
  font-family: 'Courier New', Courier, monospace;
  font-size: 11px;
  color: #666;
  text-decoration: none;
  letter-spacing: 1px;
  transition: color 0.2s ease;
}

.map-popup-link:hover {
  color: #1a1a1a;
}

@media (max-width: 768px) {
  .map-popup-content {
    padding: 20px;
    max-width: 95%;
  }

  .map-popup-title {
    font-size: 14px;
  }

  .map-popup-iframe {
    height: 250px;
  }
}
