#page-loader {
    position: fixed; inset: 0; z-index: 9999;
    background: #12100A;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 1.5rem;
    transition: opacity 0.5s ease;
  }
  #page-loader.loader-hidden { opacity: 0; pointer-events: none; }
  .loader-cup-wrap { position: relative; width: 90px; height: 100px; }
  .loader-steam { position: absolute; bottom: 78px; width: 2.5px; height: 22px; background: linear-gradient(to top, rgba(250,246,238,0.55), transparent); border-radius: 3px; animation: loaderSteamRise 2.1s ease-in-out infinite; opacity: 0; }
  .loader-steam:nth-child(1) { left: 32px; animation-delay: 0s; }
  .loader-steam:nth-child(2) { left: 44px; animation-delay: 0.5s; height: 26px; }
  .loader-steam:nth-child(3) { left: 56px; animation-delay: 1s; }
  @keyframes loaderSteamRise {
    0% { opacity: 0; transform: translateY(0) scaleX(1); }
    35% { opacity: 0.6; }
    100% { opacity: 0; transform: translateY(-26px) scaleX(1.6); }
  }
  .loader-cup { position: absolute; bottom: 0; left: 15px; width: 60px; height: 46px; }
  .loader-liquid { animation: loaderLiquidBob 1.8s ease-in-out infinite; transform-origin: bottom; }
  @keyframes loaderLiquidBob {
    0%, 100% { transform: scaleY(0.82); }
    50% { transform: scaleY(1); }
  }
  .loader-brand { font-family: 'Fraunces', Georgia, serif; font-style: italic; font-size: 1.3rem; color: #A9895C; letter-spacing: 0.02em; }
  .loader-sub { font-family: 'Space Mono', monospace; font-size: 0.65rem; letter-spacing: 0.25em; text-transform: uppercase; color: rgba(250,246,238,0.35); }
  .loader-dots { display: flex; gap: 6px; }
  .loader-dots span { width: 5px; height: 5px; border-radius: 50%; background: #A9895C; animation: loaderDotPulse 1.4s ease-in-out infinite; }
  .loader-dots span:nth-child(2) { animation-delay: 0.2s; }
  .loader-dots span:nth-child(3) { animation-delay: 0.4s; }
  @keyframes loaderDotPulse {
    0%, 80%, 100% { opacity: 0.25; transform: scale(0.85); }
    40% { opacity: 1; transform: scale(1.15); }
  }