:root {
    --orange: #F07A20;
    --orange-light: #FDE8D0;
    --orange-mid: #F9C490;
    --gray-100: #F7F6F4;
    --gray-200: #EDECEA;
    --gray-300: #D8D6D3;
    --gray-400: #B0ADAA;
    --gray-500: #787673;
    --gray-800: #2C2A27;
    --pink-bg: #FDE8EE;
    --pink-mid: #F9C0CC;
    --heart-red: #E85560;
    --heart-pink: #F4A1AB;
    --heart-orange: #F07A20;
    --heart-peach: #FAC08A;
    --heart-light: #FDE8EE;
    --font-display: 'Playfair Display', Georgia, serif;
    --font-body: 'DM Sans', 'Helvetica Neue', sans-serif;
    --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem;
    --space-4: 1rem; --space-6: 1.5rem; --space-8: 2rem;
    --space-10: 2.5rem; --space-12: 3rem; --space-16: 4rem;
    --radius-md: 0.5rem; --radius-lg: 0.75rem; --radius-xl: 1rem;
    --radius-full: 9999px;
    --shadow-md: 0 4px 12px rgba(44,42,39,0.08);
    --shadow-lg: 0 12px 32px rgba(44,42,39,0.12);
  }
  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
  html { -webkit-text-size-adjust: none; text-size-adjust: none; -webkit-font-smoothing: antialiased; scroll-behavior: smooth; }
  body {
    min-height: 100dvh; font-family: var(--font-body); font-size: 1rem;
    color: var(--gray-800); background: var(--gray-100);
    overflow-x: hidden;
  }
  img, canvas, svg { display: block; max-width: 100%; }
  button { cursor: pointer; background: none; border: none; font: inherit; color: inherit; }
  h1,h2,h3 { font-family: var(--font-display); line-height: 1.2; text-wrap: balance; }

  /* ============= SCREEN BASE ============= */
  .screen {
    position: fixed; inset: 0; display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    padding: var(--space-6); opacity: 0; pointer-events: none;
    transition: opacity 0.5s cubic-bezier(0.16,1,0.3,1);
    z-index: 1;
  }
  .screen.active { opacity: 1; pointer-events: all; }
  .screen.hidden { display: none; }

  /* ============= VERIFY SCREEN ============= */
  #screen-verify { background: var(--gray-100); }
  .verify-card {
    background: white; border-radius: var(--radius-xl); padding: var(--space-8) var(--space-8);
    box-shadow: var(--shadow-lg); width: 100%; max-width: 420px;
    border: 1px solid var(--gray-200);
  }
  .verify-logo {
    width: 48px; height: 48px; margin: 0 auto var(--space-6);
    background: var(--orange-light); border-radius: var(--radius-full);
    display: flex; align-items: center; justify-content: center; font-size: 1.5rem;
  }
  .verify-title {
    font-family: var(--font-display); font-size: clamp(1.4rem, 4vw, 1.8rem);
    text-align: center; margin-bottom: var(--space-6); color: var(--gray-800);
  }
  .verify-question { font-size: 0.9rem; font-weight: 500; color: var(--gray-500); margin-bottom: var(--space-2); letter-spacing: 0.02em; }
  .verify-input {
    width: 100%; padding: var(--space-3) var(--space-4); border-radius: var(--radius-md);
    border: 1.5px solid var(--gray-300); font-size: 1rem; font-family: var(--font-body);
    background: var(--gray-100); color: var(--gray-800); margin-bottom: var(--space-4);
    transition: border-color 0.2s, box-shadow 0.2s; outline: none;
  }
  .verify-input:focus { border-color: var(--orange); box-shadow: 0 0 0 3px rgba(240,122,32,0.15); }
  .verify-input.error { border-color: #E85560; box-shadow: 0 0 0 3px rgba(232,85,96,0.15); }
  .verify-error { color: #E85560; font-size: 0.85rem; margin-top: calc(-1 * var(--space-3)); margin-bottom: var(--space-4); display: none; }
  .verify-error.show { display: block; }
  .btn-primary {
    width: 100%; padding: var(--space-3) var(--space-6);
    background: var(--orange); color: white; border-radius: var(--radius-full);
    font-size: 1rem; font-weight: 500; letter-spacing: 0.01em;
    transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
    box-shadow: 0 2px 8px rgba(240,122,32,0.3);
  }
  .btn-primary:hover { background: #D46A10; box-shadow: 0 4px 16px rgba(240,122,32,0.4); }
  .btn-primary:active { transform: scale(0.98); }
  .btn-secondary {
    padding: var(--space-3) var(--space-10); background: var(--orange);
    color: white; border-radius: var(--radius-full); font-size: 1.05rem; font-weight: 500;
    transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
    box-shadow: 0 2px 8px rgba(240,122,32,0.3); letter-spacing: 0.01em;
  }
  .btn-secondary:hover { background: #D46A10; }
  .btn-secondary:active { transform: scale(0.98); }
  .divider { width: 40px; height: 2px; background: var(--orange-mid); border-radius: 2px; margin: var(--space-4) auto; }

  /* ============= INTRO SCREEN ============= */
  #screen-intro { background: var(--gray-100); flex-direction: column; gap: var(--space-8); text-align: center; }
  .intro-text {
    font-family: var(--font-display); color: var(--gray-800);
    font-size: clamp(2rem, 6vw, 3.2rem); opacity: 0;
    transform: translateY(20px); transition: opacity 0.7s cubic-bezier(0.16,1,0.3,1), transform 0.7s cubic-bezier(0.16,1,0.3,1);
    position: absolute; width: 90%; text-align: center;
  }
  .intro-text.visible { opacity: 1; transform: translateY(0); }
  .intro-text.fade-out { opacity: 0; transform: translateY(-20px); transition: opacity 0.5s ease, transform 0.5s ease; }
  .intro-container { position: relative; min-height: 120px; display: flex; align-items: center; justify-content: center; width: 100%; }
  .intro-btn-wrap { opacity: 0; transition: opacity 0.6s; position: absolute; top: 0; left: 50%; transform: translateX(-50%); white-space: nowrap; }
  .intro-btn-wrap.visible { opacity: 1; position: relative; top: auto; left: auto; transform: none; }

  /* ============= COUNTER SCREEN ============= */
  #screen-counter { background: white; text-align: center; gap: var(--space-6); }
  .counter-unit { font-size: 0.8rem; color: var(--gray-500); margin-left: 4px; }
  .counter-title {
    font-family: var(--font-display); font-size: clamp(2.2rem, 7vw, 4rem);
    color: var(--gray-800); line-height: 1.1; opacity: 0;
    animation: fadeUp 0.8s cubic-bezier(0.16,1,0.3,1) 0.1s forwards;
  }
  .counter-subtitle { font-size: 2.1rem; color: var(--gray-500); opacity: 0; animation: fadeUp 0.8s cubic-bezier(0.16,1,0.3,1) 0.3s forwards; }
  .counter-number-wrap { opacity: 0; animation: fadeUp 0.8s cubic-bezier(0.16,1,0.3,1) 0.5s forwards; }
  .counter-number {
    font-family: var(--font-display); font-size: clamp(4rem, 18vw, 9rem);
    font-weight: 700; color: var(--orange); line-height: 1;
    letter-spacing: -0.02em;
  }
  .counter-days { font-size: 1.3rem; color: var(--gray-500); margin-top: var(--space-2); }
  .counter-btn-wrap { opacity: 0; animation: fadeUp 0.8s cubic-bezier(0.16,1,0.3,1) 0.7s forwards; margin-top: var(--space-4); }
  .heart-deco { font-size: 1.5rem; display: inline-block; animation: heartbeat 1.8s ease-in-out infinite; }
  @keyframes heartbeat { 0%,100%{transform:scale(1)} 50%{transform:scale(1.2)} }
  @keyframes fadeUp {
    from { opacity: 0; transform: translateY(24px); }
    to   { opacity: 1; transform: translateY(0); }
  }

  /* ============= TREE SCREEN ============= */
  #screen-tree { background: var(--pink-bg); padding: 0; overflow: hidden; }
  #tree-canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
  .tree-caption {
    position: absolute; bottom: 10%; left: 50%; transform: translateX(-50%);
    font-family: var(--font-display); font-size: clamp(1.3rem, 4vw, 2rem);
    color: var(--gray-800); text-align: center; opacity: 0;
    transition: opacity 1s; white-space: nowrap;
    text-shadow: 0 2px 12px rgba(253,232,238,0.9);
    padding: var(--space-3) var(--space-6); background: rgba(253,232,238,0.75);
    border-radius: var(--radius-full); backdrop-filter: blur(4px);
  }
  .tree-caption.show { opacity: 1; }

  /* ============= POLAROID ALBUM ============= */
.photos-title {
  text-align: center;
  margin-top: 5vh;
  font-family: var(--font-display);
  color: var(--gray-800);
  font-size: 2rem;
}

#photo-album {
  position: relative;
  width: 100%;
  height: 65vh;
  display: flex;
  align-items: center;
  justify-content: center;
  perspective: 1000px;
  margin-top: 2vh;
}

.photo-card {
  position: absolute;
  width: 75%;
  max-width: 320px;
  background: #fff;
  padding: 15px 15px 25px 15px;
  box-shadow: 0 15px 35px rgba(0,0,0,0.15);
  border-radius: 6px;
  opacity: 0;
  transform: scale(0.8) translateY(50px) rotate(5deg);
  transition: all 0.7s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
  user-select: none;
}

/* Aktivní fotka uprostřed */
.photo-card.active {
  opacity: 1;
  transform: scale(1) translateY(0) rotate(-2deg);
  z-index: 10;
}

/* Fotka, co už odletěla doleva */
.photo-card.prev {
  opacity: 0;
  transform: scale(0.9) translateX(-150px) rotate(-15deg);
  z-index: 5;
}

/* Fotka, co čeká napravo */
.photo-card.next {
  opacity: 0;
  transform: scale(0.9) translateX(150px) rotate(15deg);
  z-index: 5;
}

.photo-card img, .photo-card video {
  width: 100%;
  height: auto;
  aspect-ratio: 4/5;
  object-fit: cover;
  border-radius: 4px;
  pointer-events: none;
}

.photo-caption {
  margin-top: 15px;
  font-family: var(--font-display);
  font-size: 1.3rem;
  color: var(--gray-800);
  text-align: center;
}

.photo-hint {
  text-align: center;
  color: var(--gray-500);
  font-size: 0.95rem;
  animation: pulse 2s infinite;
  margin-top: 20px;
}

@keyframes pulse {
  0%, 100% { opacity: 0.6; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.05); }
}

  /* ============= LETTER SCREEN ============= */
  #screen-letter { background: var(--gray-100); padding: var(--space-8) var(--space-6); overflow-y: auto; align-items: flex-start; justify-content: flex-start; }
  .letter-wrap { width: 100%; max-width: 560px; margin: 0 auto; padding-bottom: var(--space-16); }
  .letter-title {
    font-family: var(--font-display); font-size: clamp(1.8rem, 5vw, 2.8rem);
    color: var(--gray-800); margin-bottom: var(--space-8);
    border-bottom: 2px solid var(--orange-mid); padding-bottom: var(--space-4);
    opacity: 0; animation: fadeUp 0.8s cubic-bezier(0.16,1,0.3,1) 0.2s forwards;
  }
  .letter-text {
    font-size: 1.05rem; line-height: 1.85; color: var(--gray-800);
    white-space: pre-wrap; font-family: var(--font-body);
    border-right: 2px solid var(--orange); overflow: hidden; width: 0;
    animation: none;
  }
  .letter-text.typing { animation: typewriter 8s steps(400, end) 0.5s forwards; white-space: pre-wrap; }
  @keyframes typewriter { to { width: 100%; } }
  .letter-cursor { display: inline-block; width: 2px; height: 1.1em; background: var(--orange); animation: blink 0.8s step-end infinite; vertical-align: text-bottom; }
  @keyframes blink { 0%,100%{opacity:1} 50%{opacity:0} }

  /* popup window - music */
  .popup {
    position: fixed; inset: 0; display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    background: rgba(0,0,0,0.6); color: white; text-align: center;
    padding: var(--space-6); z-index: 200; opacity: 0; pointer-events: none;
  }



  /* ============= MUSIC PLAYER ============= */
  .music-btn {
    position: fixed; top: var(--space-4); right: var(--space-4);
    width: 44px; height: 44px; border-radius: var(--radius-full);
    background: white; box-shadow: var(--shadow-md);
    display: flex; align-items: center; justify-content: center;
    z-index: 100; font-size: 1.2rem; transition: transform 0.2s, box-shadow 0.2s;
    border: 1.5px solid var(--gray-200);
  }
  .music-btn:hover { transform: scale(1.08); box-shadow: var(--shadow-lg); }
  .music-btn.playing { animation: musicPulse 1.5s ease-in-out infinite; }
  @keyframes musicPulse { 0%,100%{box-shadow:0 0 0 0 rgba(240,122,32,0.4)} 50%{box-shadow:0 0 0 8px rgba(240,122,32,0)} }

  /* iPad optimizations */
  @media (min-width: 768px) {
    .verify-card { padding: var(--space-10) var(--space-12); }
    .counter-number { font-size: clamp(5rem, 12vw, 9rem); }
  }
