* {
      box-sizing: border-box;
      -webkit-tap-highlight-color: transparent;
    }

    html,
    body {
      width: 100%;
      height: 100%;
      margin: 0;
      overflow: hidden;
      background: #050505;
      color: #fff;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      overscroll-behavior: none;
      touch-action: none;
    }

    .ad {
      position: fixed;
      inset: 0;
      width: 100vw;
      height: 100vh;
      height: 100dvh;
      overflow: hidden;
      background: #050505;
      touch-action: none;
      -webkit-user-select: none;
      user-select: none;
    }

    .slides {
      display: flex;
      flex-direction: column;
      width: 100%;
      height: 100%;
      transform: translate3d(0, 0, 0);
      transition: transform 650ms cubic-bezier(.22, .78, .25, 1);
      will-change: transform;
    }

    .slide {
      position: relative;
      flex: 0 0 100%;
      width: 100%;
      height: 100%;
      min-height: 100dvh;
      overflow: hidden;
      display: grid;
      place-items: center;
      background: #050505;
    }

    .slide-bg {
      position: absolute;
      inset: -60px;
      z-index: 0;
      background-position: center;
      background-size: cover;
      filter: brightness(.72) saturate(1.08) blur(28px);
      transform: scale(1.08);
    }

    .slide-bg::after {
      content: "";
      position: absolute;
      inset: 0;
      background: rgba(0, 0, 0, .24);
    }

    .slide img {
      position: relative;
      z-index: 1;
      display: block;
      width: min(100vw, calc(100dvh * .5625));
      height: min(100dvh, calc(100vw * 1.7777778));
      max-width: 100vw;
      max-height: 100dvh;
      object-fit: contain;
      object-position: center;
      user-select: none;
      -webkit-user-drag: none;
      box-shadow: 0 18px 48px rgba(0, 0, 0, .22);
      transform: scale(1);
      transition: transform 900ms cubic-bezier(.22, .78, .25, 1), filter 900ms ease;
    }

    .slide[aria-hidden="true"] img {
      transform: scale(.985);
      filter: brightness(.86);
    }

    .dots {
      position: fixed;
      z-index: 5;
      top: 50%;
      right: max(12px, env(safe-area-inset-right));
      display: grid;
      gap: 8px;
      transform: translateY(-50%);
    }

    .dot {
      width: 6px;
      height: 6px;
      border: 0;
      border-radius: 999px;
      padding: 0;
      background: rgba(255, 255, 255, .42);
      transition: height 260ms ease, background 260ms ease;
    }

    .dot.is-active {
      height: 18px;
      background: #fff;
    }

    .hint {
      position: fixed;
      z-index: 5;
      left: 50%;
      bottom: calc(18px + env(safe-area-inset-bottom));
      width: 34px;
      height: 34px;
      margin-left: -17px;
      border: 1px solid rgba(255, 255, 255, .45);
      border-radius: 999px;
      opacity: .86;
      pointer-events: none;
      animation: floatHint 1.25s ease-in-out infinite;
    }

    .hint::before {
      content: "";
      position: absolute;
      left: 50%;
      top: 50%;
      width: 9px;
      height: 9px;
      border-top: 2px solid #fff;
      border-left: 2px solid #fff;
      transform: translate(-50%, -35%) rotate(45deg);
    }

    .hint.is-hidden {
      opacity: 0;
      pointer-events: none;
      animation: none;
    }

    .music-toggle {
      position: fixed;
      z-index: 6;
      top: calc(14px + env(safe-area-inset-top));
      right: max(14px, env(safe-area-inset-right));
      width: 40px;
      height: 40px;
      border: 1px solid rgba(255, 255, 255, .5);
      border-radius: 999px;
      padding: 0;
      background: rgba(0, 0, 0, .28);
      backdrop-filter: blur(8px);
      cursor: pointer;
    }

    .music-toggle::before,
    .music-toggle::after {
      content: "";
      position: absolute;
      top: 11px;
      width: 4px;
      height: 18px;
      border-radius: 3px;
      background: #fff;
      transform-origin: center bottom;
    }

    .music-toggle::before {
      left: 15px;
    }

    .music-toggle::after {
      right: 15px;
    }

    .music-toggle.is-paused::before {
      left: 16px;
      width: 0;
      height: 0;
      border-top: 9px solid transparent;
      border-bottom: 9px solid transparent;
      border-left: 14px solid #fff;
      border-radius: 0;
      background: transparent;
    }

    .music-toggle.is-paused::after {
      opacity: 0;
    }

    @keyframes floatHint {
      0%, 100% { transform: translate3d(0, 4px, 0); }
      50% { transform: translate3d(0, -4px, 0); }
    }

    @media (prefers-reduced-motion: reduce) {
      .slides,
      .slide img,
      .dot,
      .hint {
        transition: none;
        animation: none;
      }
    }

    .slide-bg-1 { background-image: url('1.jpg'); }
    .slide-bg-2 { background-image: url('2.jpg'); }
    .slide-bg-3 { background-image: url('3.jpg'); }
    .slide-bg-4 { background-image: url('4.jpg'); }
