@import "tailwindcss";

@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;500;700;900&family=Zen+Kaku+Gothic+New:wght@500;700;900&display=swap");

@theme {
  --font-sans: "Noto Sans JP", system-ui, -apple-system, "Segoe UI",
               Roboto, "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN",
               "BIZ UDPGothic", "Yu Gothic UI", "YuGothic", Meiryo, sans-serif;

  --font-display: "Zen Kaku Gothic New", "Noto Sans JP", system-ui, sans-serif;
}

@utility fontDisplay {
  font-family: var(--font-display);
}

h1, h2, h3, h4 {
  font-family: var(--font-display);
}

@layer components {
  .flash-stack {
    top: var(--flash-visible-top, 5.25rem);
  }

  .flash-message {
    animation: flash-slide var(--flash-duration, 3.0s) ease-in-out forwards;
    will-change: transform, opacity;
  }

  .nav-stack-button {
    @apply block w-full rounded-xl bg-white px-5 py-3 text-left font-semibold text-slate-900 shadow-sm ring-1 ring-slate-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-slate-500;
  }

  .interactive-lift {
    @apply transition duration-150 ease-out touch-manipulation hover:-translate-y-0.5 hover:shadow-md active:-translate-y-0.5 active:shadow-md;
  }

  .is-touch-active {
    @apply -translate-y-0.5 shadow-md;
  }

  @screen sm {
    .interactive-lift {
      @apply hover:-translate-y-1 hover:shadow-lg active:-translate-y-1 active:shadow-lg;
    }

    .is-touch-active {
      @apply -translate-y-1 shadow-lg;
    }
  }
}

@keyframes flash-slide {
  0% {
    opacity: 0;
    transform: translateY(calc(-1 * var(--flash-visible-top, 5.25rem)));
  }

  10% {
    opacity: 1;
    transform: translateY(0);
  }

  90% {
    opacity: 1;
    transform: translateY(0);
  }

  100% {
    opacity: 0;
    transform: translateY(calc(-1 * var(--flash-visible-top, 5.25rem)));
  }
}
