:root {
  /* Font System */
  --display-font: 'Syne', sans-serif;
  --body-font: 'Satoshi', sans-serif;
  --mono-font: 'Space Mono', monospace;

  /* "Smoked Glass" (Monochromatic) Color Scheme */
  --bg-color: #18171A;
  --text-color: #F0EFEF;
  --text-color-rgb: 240, 239, 239;
  
  --error-bg: #8C3A4B;
  --focus-outline-color: var(--text-color);
  
  --sheet-bg: rgba(40, 38, 42, 0.9);
  --interactive-bg: rgba(40, 38, 42, 0.7);
  --interactive-bg-hover: rgba(40, 38, 42, 0.9);
  
  /* Plyr variable override for the monochromatic theme */
  --plyr-color-main: var(--text-color);
}

html, body {
  margin: 0;
  padding: 0;
  height: 100%;
  overflow: hidden;
  font-size: 100%; 
  background-color: var(--bg-color);
  color: var(--text-color);
  font-family: var(--body-font);
  font-weight: 400;
  overscroll-behavior-y: contain;
}

body.experience-started {
  cursor: none;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* === OVERLAYS & CORE UI === */
#unmute-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.75);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  color: var(--text-color);
  text-align: center;
  cursor: pointer;
  opacity: 1;
  transition: opacity 0.5s ease-in-out;
}
#unmute-overlay.hidden {
  opacity: 0;
  pointer-events: none;
}
#unmute-overlay p {
  font-family: var(--display-font);
  font-weight: 700;
  letter-spacing: 0.125rem;
  font-size: 2.125rem;
  padding: 0 1.25rem;
  text-transform: uppercase;
  margin: 0;
  /* NEW: Pulsing animation */
  animation: pulse 2s ease-in-out infinite;
}

/* NEW: Pulsing animation for ENTER button */
@keyframes pulse {
  0%, 100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.7;
    transform: scale(1.05);
  }
}

@media (max-width: 768px) {
  #unmute-overlay p { font-size: 1.5rem; }
}

#color-revealer {
  position: fixed;
  border-radius: 50%;
  border: 1px solid rgba(var(--text-color-rgb), 0.4);
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 9998;
  opacity: 0;
  transition: opacity 0.3s ease;
  overflow: hidden;
}
body.experience-started #color-revealer {
    opacity: 1;
}

/* === GALLERY & SLIDES === */
.gallery { display: flex; height: 100vh; width: 100vw; position: relative; }
.slide { width: 100vw; height: 100vh; position: absolute; top: 0; left: 0; opacity: 0; visibility: hidden; transition: opacity 0.5s ease-in-out, visibility 0.5s ease-in-out; overflow: hidden; }
.slide.current-slide { opacity: 1; visibility: visible; z-index: 1; }
.background-canvas { display: block; width: 100%; height: 100%; position: absolute; top: 0; left: 0; z-index: -1; }

.menu-button, .nav-button, .sheet-close, .plyr, #work-track-list li, button[type="submit"] { cursor: pointer; }
input, textarea { cursor: text; }

/* === BUTTONS & NAVIGATION === */
.nav-button {
  position: fixed;
  background: var(--interactive-bg);
  color: var(--text-color);
  border: none;
  padding: 0.9375rem;
  font-size: 1.5rem;
  font-family: var(--body-font);
  font-weight: 500;
  opacity: 0;
  animation: fadeIn 0.5s ease-out 1s forwards;
  transition: background 0.3s, color 0.3s, transform 0.2s ease-out, opacity 0.3s ease-out;
  z-index: 100;
}

@media (hover: hover) {
  .nav-button:hover {
    background: var(--interactive-bg-hover);
    transform: scale(1.1);
  }
}

.nav-button:active {
  background: var(--interactive-bg-hover);
  color: var(--text-color);
  transform: scale(0.95);
}
@keyframes fadeIn { to { opacity: 1; } }
#prev { left: 1.25rem; }
#next { right: 1.25rem; }
@media (max-width: 768px) {
  .nav-button { 
    font-size: 2.25rem;
    padding: 0.9375rem;
    bottom: 12%; 
    top: auto; 
    animation: fadeIn 0.4s ease-out forwards; 
    transform: none;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
  }

  .nav-button:active {
    transform: scale(0.95);
  }
  
  #prev { left: 1.25rem; }
  #next { right: 1.25rem; }

  body.sheet-is-open .nav-button {
    opacity: 0;
    pointer-events: none;
    animation: none; 
  }
}

.side-buttons {
  position: fixed;
  left: 1.25rem;
  top: 15%;
  display: flex;
  flex-direction: column;
  gap: 0.9375rem;
  z-index: 100;
  transition: transform 0.2s ease-out;
  transform-origin: top left;
}
@media (max-width: 768px) {
  .side-buttons {
    width: 100%; 
    flex-direction: row; 
    flex-wrap: wrap; 
    justify-content: center;
    gap: 0.125rem;
    top: 0; left: 0; 
    padding: 0.5rem 0.125rem;
    background: rgba(40, 38, 42, 0.8); 
    z-index: 1000;
  }
}

.menu-button {
  background: var(--interactive-bg);
  color: var(--text-color);
  border: none;
  padding: 0.9375rem 1.5625rem;
  border-radius: 0.25rem;
  transition: background 0.3s, color 0.3s, transform 0.2s ease-out, box-shadow 0.2s ease-out;
  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.2);
  opacity: 0;
  transform: translateX(-1.25rem);
  animation: slideIn 0.5s ease-out forwards;
  
  font-family: var(--body-font);
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: lowercase;
  font-size: 0.85rem;
}
@keyframes slideIn { to { opacity: 1; transform: translateX(0); } }
.menu-button:nth-child(1) { animation-delay: 0.2s; }
.menu-button:nth-child(2) { animation-delay: 0.4s; }
.menu-button:nth-child(3) { animation-delay: 0.6s; }
.menu-button:nth-child(4) { animation-delay: 0.8s; }
.menu-button:hover {
  background: var(--interactive-bg-hover);
  transform: scale(1.05);
  box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.3);
}
.menu-button:active {
  background: var(--interactive-bg-hover);
  color: var(--text-color);
  transform: scale(0.98);
  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.2);
}
@media (max-width: 768px) {
  .menu-button {
    flex: 0 1 auto; 
    padding: 0.625rem 0.3125rem;
    text-align: center;
    white-space: nowrap; 
    overflow: hidden; 
    text-overflow: ellipsis; 
    font-size: clamp(0.7rem, 3.5vw, 0.85rem);
    transform: none; 
    animation: none; 
    opacity: 1;
    background: transparent; 
    box-shadow: none;
  }
  .menu-button:hover { 
    background: rgba(var(--text-color-rgb), 0.1); 
    transform: none; 
    box-shadow: none; 
  }
}

/* === PLYR AUDIO PLAYER === */

.plyr-positioner {
  position: fixed;
  z-index: 100;
  bottom: 1.25rem;
  right: 1.25rem;
  width: 28.125rem;
  max-width: 90%;
  display: flex;
  justify-content: flex-end;
  transition: width 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), 
              left 0.4s cubic-bezier(0.25, 0.8, 0.25, 1),
              transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1),
              opacity 0.4s ease;
}

.plyr {
  background: var(--interactive-bg);
  border-radius: 0.5rem;
  color: var(--text-color);
  font-family: var(--mono-font);
  width: 100%;
  transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), opacity 0.4s ease;
  transform-origin: center right;
}

@media (min-width: 769px) {
  body.sheet-is-open .plyr {
    opacity: 0.7;
    pointer-events: none;
  }
  
  body.sheet-is-open .plyr-positioner:hover .plyr {
    opacity: 1;
    pointer-events: auto;
  }
}

.plyr--audio .plyr__controls { background: transparent; }
.plyr--audio .plyr__controls, .plyr--audio .plyr__controls * { cursor: pointer; }
.plyr--audio .plyr__control svg { color: var(--text-color); }
.plyr--audio .plyr__progress__buffer { background: rgba(var(--text-color-rgb), 0.3); }
.plyr--audio .plyr__volume--display { background: var(--plyr-color-main); }
.plyr--audio .plyr__progress--played, .plyr--audio .plyr__volume--value { background: var(--plyr-color-main); }
.plyr--audio .plyr__control:hover, .plyr--audio .plyr__control[aria-expanded="true"] { background: rgba(0, 0, 0, 0.3); color: var(--text-color); }
.plyr--audio .plyr__control:hover svg, .plyr--audio .plyr__control[aria-expanded="true"] svg { color: var(--text-color); }

@media (max-width: 768px) {
  body.sheet-is-open .plyr-positioner {
    transform: translateY(120%);
    opacity: 0;
    pointer-events: none;
  }

  .plyr-positioner { 
    width: 90%; 
    bottom: 0.625rem;
    right: 5%; 
    z-index: 1000;
  }
}

@media (max-width: 380px) {
  .plyr--audio .plyr__progress__container {
    flex: 0 1 4.375rem;
    min-width: 3.125rem;
  }
}

/* === SHEETS (ABOUT, WORK, CONTACT) === */
.bottom-sheet { 
  position: fixed; 
  bottom: -100%; 
  left: 50%; 
  transform: translateX(-50%); 
  background: var(--sheet-bg); 
  color: var(--text-color); 
  padding: 1.875rem;
  transition: bottom 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), 
              width 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
  z-index: 1000; 
  width: 50rem;
  max-width: 95vw; 
  height: 23.75rem;
  max-height: 65vh;
  border-radius: 0; 
  box-shadow: 0 -0.3125rem 0.9375rem rgba(0,0,0,0.3);
  box-sizing: border-box; 
  display: flex; 
  flex-direction: column; 
}
.bottom-sheet.visible { bottom: 0; }
@media (max-width: 768px) {
  .bottom-sheet { 
    width: 100%; 
    max-width: 100%; 
    height: 55vh;
    padding: 0.9375rem;
    left: 0; transform: none; 
    z-index: 1100; 
    background: var(--sheet-bg); 
    border-radius: 0;
    transition: bottom 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), height 0.3s ease-in-out; 
  }
}

.sheet-content { 
  flex-grow: 1; 
  overflow-y: auto; 
  position: relative; 
  padding: 0.625rem 0.9375rem 1.25rem;
  height: 100%;
}
.sheet-content h2 {
  margin-top: 0; 
  margin-bottom: 1.25rem;
  font-family: var(--display-font);
  font-weight: 700;
  font-size: clamp(2rem, 4vw, 3.2rem);
  letter-spacing: -0.03em;
  line-height: 0.9;
  text-transform: lowercase;
}
.sheet-content p { line-height: 1.7; font-weight: 300; margin-bottom: 0.9375rem; }
@media (max-width: 768px) {
  .sheet-content { 
    padding: 0.3125rem 0.625rem 2.5rem;
  }
  .sheet-content h2 { margin-bottom: 0.9375rem; }
  .sheet-content p, .sheet-content li { font-size: 1rem; }
}

.sheet-close {
  position: absolute;
  top: 0.625rem;
  right: 0.625rem;
  width: 1.875rem;
  height: 1.875rem;
  background: transparent;
  border: none;
  color: var(--text-color);
  font-size: 1.25rem;
  display: flex; 
  align-items: center; 
  justify-content: center; 
  z-index: 1001; 
  padding: 0;
  transition: color 0.2s;
}
.sheet-close:hover { color: white; opacity: 0.8; }
@media (max-width: 768px) {
  .sheet-close { 
    top: 0.625rem;
    right: 0.625rem;
    bottom: auto;
    left: auto;
    width: 2.5rem;
    height: 2.5rem;
    font-size: 0; 
    background: transparent; 
  }

  .sheet-close:hover {
    opacity: 1;
  }
  
  .sheet-close::before {
    content: '';
    width: auto;
    height: auto;
    background-color: transparent;
    border-radius: 0;
    border: solid rgba(var(--text-color-rgb), 0.7);
    border-width: 0 2px 2px 0; 
    display: inline-block;
    padding: 0.3125rem;
    transform: rotate(45deg); 
    transition: border-color 0.2s ease;
  }

  .sheet-close:hover::before {
    border-color: var(--text-color);
  }
}

.sheet-content::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 0;
  height: 1px;
  background-color: var(--text-color);
  opacity: 0;
  transition: opacity 0.3s, width 0.3s;
  pointer-events: none;
  z-index: 10;
}

.bottom-sheet:hover .sheet-content::after {
  opacity: 1;
  width: 100%;
}

@media (max-width: 768px) {
  .sheet-content::after {
    display: none;
  }
}

/* === WORK SHEET SPECIFIC STYLES === */
#work-sheet .sheet-content { display: flex; flex-direction: column; overflow-y: hidden; }
#work-sheet .sheet-content h2 { margin-bottom: 0.25rem; }
#track-title-info { 
  font-weight: 400; 
  margin-bottom: 0.75rem;
  text-transform: lowercase;
}
#track-title { 
  font-style: italic; 
  font-family: var(--mono-font);
}
#work-track-list { 
  list-style: none; padding: 0; margin: 0; flex-grow: 1; 
  overflow-y: auto; min-height: 0; 
}
#work-track-list li { 
  padding: 0.625rem 0;
  margin: 0; 
  border-bottom: 1px solid rgba(var(--text-color-rgb), 0.1); 
  transition: background-color 0.2s ease, color 0.2s ease;
  font-family: var(--mono-font);
  font-size: 0.9rem;
  letter-spacing: 0.02em;
  text-transform: lowercase;
}
#work-track-list li:last-child { border-bottom: none; }
#work-track-list li:hover:not(.current-track-item) { background-color: rgba(0, 0, 0, 0.2); }

#work-track-list li.current-track-item,
#work-track-list li.current-track-item:hover {
  background-color: rgba(0, 0, 0, 0.2);
  color: var(--text-color);
  font-weight: 700;
  cursor: default;
}

@media (max-width: 768px) {
  #track-title-info { font-size: 1rem; }
  #work-track-list li { 
    padding: 0.75rem 0;
  }
}

/* === CONTACT FORM SPECIFIC STYLES === */
#contact-sheet .sheet-content {
  display: grid; 
  grid-template-rows: auto 1fr; 
  gap: 0.75rem;
  height: 100%;
  padding-bottom: 1.5rem;
  box-sizing: border-box;
}
#contact-sheet h2 { margin: 0; }
#contact-sheet form { 
  display: grid; 
  gap: 0.3rem;
  align-content: start;
  min-height: 0; 
  padding: 0;
  box-sizing: border-box;
}

/* Form row for side-by-side fields on desktop */
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem;
}

@media (max-width: 768px) {
  .form-row {
    grid-template-columns: 1fr;
    gap: 0.3rem;
  }
}

.form-field {
  display: contents;
}

#contact-sheet input, #contact-sheet textarea { 
  padding: 0.5rem 0.625rem;
  border: 1px solid rgba(var(--text-color-rgb), 0.2);
  background: rgba(0, 0, 0, 0.2);
  color: var(--text-color);
  border-radius: 0.25rem;
  font-family: var(--mono-font);
  font-size: 0.9rem;
  font-weight: 400;
  line-height: 1.4;
}
#contact-sheet input { 
  min-height: 2.25rem;
}
#contact-sheet textarea {
  min-height: 2.25rem;
  resize: none;
  display: flex;
  align-items: center;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

#contact-sheet textarea::placeholder {
  line-height: 1.25rem;
}

/* Honeypot field (hidden from real users) */
.honeypot {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  opacity: 0;
}

#contact-sheet button[type="submit"] {
  min-height: 2.25rem;
  padding: 0.5rem 0.75rem;
  background: rgba(0, 0, 0, 0.2);
  color: var(--text-color);
  border: 1px solid rgba(var(--text-color-rgb), 0.2);
  border-radius: 0.25rem;
  font-family: var(--body-font);
  font-weight: 700;
  text-transform: lowercase; 
  transition: background-color 0.2s, color 0.2s, border-color 0.2s;
  white-space: normal;
  line-height: 1.3;
}
#contact-sheet button[type="submit"]:hover:not(:disabled) {
  background-color: rgba(0, 0, 0, 0.3);
  border-color: rgba(var(--text-color-rgb), 0.3);
}
#contact-sheet button[type="submit"]:active:not(:disabled) {
  background-color: var(--text-color);
  color: var(--bg-color);
  border-color: var(--text-color);
}
#contact-sheet button[type="submit"].feedback-active {
  background: rgba(0, 0, 0, 0.2);
  color: var(--text-color);
  border-color: rgba(var(--text-color-rgb), 0.2);
  text-transform: none; 
  font-weight: 300; 
  cursor: default;
}

#contact-sheet input::placeholder, #contact-sheet textarea::placeholder { 
  color: rgba(var(--text-color-rgb), 0.7);
  text-transform: lowercase; 
}

.form-feedback {
  padding: 0.75rem 0.9375rem;
  margin: 0;
  border-radius: 0.25rem;
  text-align: center; font-weight: 400; opacity: 0;
  transform: translateY(-0.625rem);
  max-height: 0; overflow: hidden;
  transition: all 0.3s ease;
  order: 1;
}
.form-feedback.visible { opacity: 1; transform: translateY(0); max-height: 6.25rem; }
.form-feedback.success { background-color: var(--text-color); color: var(--bg-color); }
.form-feedback.error { background-color: var(--error-bg); color: white; }
@media (max-width: 768px) {
  #contact-sheet .sheet-content { 
    gap: 0.9375rem;
  }
  #contact-sheet form { gap: 0.375rem; }
  #contact-sheet input, #contact-sheet button[type="submit"] { min-height: 2.8125rem; font-size: 1rem; }
  #contact-sheet textarea { min-height: 3.75rem; font-size: 1rem; }
}

body.keyboard-active {
  & #contact-sheet.visible {
    height: 100%; 
    height: 100vh;
  }
  & #contact-sheet.visible .sheet-content {
    overflow-y: auto;
  }
}

/* === ACCESSIBILITY FOCUS STYLES === */
:is(button, input, textarea, [tabindex="0"]):focus-visible {
  outline: 1px solid var(--focus-outline-color);
  outline-offset: 0.125rem;
  box-shadow: none;
}

#contact-sheet :is(input, textarea):focus-visible {
  outline-color: rgba(var(--text-color-rgb), 0.3);
}

.plyr--focused, .plyr__control--forward:focus-visible,
.plyr__control[data-plyr="play"]:focus-visible,
.plyr__control[data-plyr="pause"]:focus-visible,
.plyr__control[data-plyr="fullscreen"]:focus-visible {
  outline: 2px solid var(--focus-outline-color) !important;
  outline-offset: 1px !important;
}
