/* ==========================================================================
   Base — design tokens (Figma: Style page) / reset / utilities
   SP first. PC layout starts at 768px.
   ========================================================================== */

:root {
  /* Color: Thema */
  --primary-700: #003c7e;
  --primary-500: #0056b3;
  --primary-100: #e9f3ff;
  --secondary-700: #00893e;
  --secondary-500: #10b75c;
  --secondary-100: #e3f7ec;
  --tertiary-700: #ab7616;
  --tertiary-500: #d99822;
  --tertiary-100: #fbf3e4;

  /* Color: Base */
  --black: #333333;
  --white: #ffffff;
  --grey-1: #f7f5ef;
  --gray-2: #ededed;
  --attention: #e5484d;
  --highlight: #fffd89;

  /* Gradients */
  --grad-fv: linear-gradient(78.46deg, #064c97 2.26%, #0062ed 98.94%);
  --grad-line: linear-gradient(106.79deg, #24d0b9 0%, #10b75c 100.37%);

  /* Space (sds) */
  --space-050: 2px;
  --space-100: 4px;
  --space-150: 6px;
  --space-200: 8px;
  --space-300: 12px;
  --space-400: 16px;
  --space-600: 24px;
  --space-800: 32px;
  --space-1200: 48px;
  --space-1600: 64px;

  /* Radius */
  --radius-100: 4px;
  --radius-200: 8px;
  --radius-400: 16px;
  --radius-full: 999px;

  /* Effect: Drop Shadow/400 */
  --shadow-400: 0 4px 2px -4px rgba(12, 12, 13, 0.05), 0 16px 16px -4px rgba(12, 12, 13, 0.1);

  /* Typography */
  --font-jp: "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
  /* DIN 2014 はAdobe Fonts等のライセンスが必要。未導入時は Barlow で代替 */
  --font-num: "DIN 2014", "Barlow", var(--font-jp);

  --container: 1000px;
  --gutter: 24px;
}

/* --- Reset --------------------------------------------------------------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background: var(--white);
  color: var(--black);
  font-family: var(--font-jp);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.7;
  letter-spacing: 0.04em;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

h1, h2, h3, h4, p, ul, ol, dl, dd, figure {
  margin: 0;
}

ul, ol {
  padding: 0;
  list-style: none;
}

img, svg {
  display: block;
  max-width: 100%;
}

/* width/height 属性はCLS対策の比率指定として使い、実寸はCSSで決める */
img {
  height: auto;
}

a {
  color: inherit;
  text-decoration: none;
}

button {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}

:focus-visible {
  outline: 2px solid var(--primary-500);
  outline-offset: 2px;
}

/* --- Utilities ----------------------------------------------------------- */
.container {
  width: 100%;
  max-width: calc(var(--container) + var(--gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

.u-pc { display: none !important; }
.u-sp { display: revert; }

@media (min-width: 768px) {
  .u-pc { display: revert !important; }
  .u-sp { display: none !important; }
}

/* --- Artboard ------------------------------------------------------------
   Figmaの座標をそのまま使い、幅に合わせて等倍縮小する装飾パーツ用。
   子孫では calc(N * var(--u)) で Figma の px 値 N を指定する。
   ------------------------------------------------------------------------ */
.ab {
  container-type: inline-size;
  position: relative;
  width: 100%;
}

.ab__canvas {
  position: absolute;
  inset: 0;
}

.ab__canvas > *,
.ab__abs {
  position: absolute;
}

/* --- Text stroke（js/main.js が data-stroke の文字を複製して背面に敷く） ---- */
.tx-stroke {
  -webkit-text-stroke: var(--stroke-w, 2px) var(--stroke-c, var(--white));
  pointer-events: none;
  user-select: none;
}

.tx-stroke,
.tx-stroke * {
  color: var(--stroke-c, var(--white)) !important;
  -webkit-text-fill-color: var(--stroke-c, var(--white));
  background: none !important;
}

.tx-stack {
  display: inline-grid;
}

.tx-stack > span {
  grid-area: 1 / 1;
  position: relative;
}

/* --- Scroll reveal ------------------------------------------------------- */
/* 参考LPをベースに「フェード＋ぼかし解除＋40px上昇」（動きが分かるよう少し強め）。
   transform を持つ要素にも付けられるよう、個別プロパティ translate を使う */
.js-reveal {
  opacity: 0;
  filter: blur(4px);
  translate: 0 40px;
  transition: opacity 1s ease, filter 1s ease, translate 1.2s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--delay, 0s);
}

.js-reveal.is-visible,
.no-js .js-reveal {
  opacity: 1;
  filter: none;
  translate: none;
}

/* カードの並び：1枚ずつ（遅延 --stagger は JS が付ける）。
   位置指定に translate を使う要素があるため、こちらは transform で動かす */
.js-stagger-item {
  opacity: 0;
  filter: blur(4px);
  transform: translateY(32px);
  transition: opacity 0.8s ease, filter 0.8s ease, transform 1s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--stagger, 0s);
}

.js-stagger-item.is-visible {
  opacity: 1;
  filter: none;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .js-stagger-item {
    opacity: 1;
    filter: none;
    transform: none;
    transition: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js-reveal {
    opacity: 1;
    filter: none;
    translate: none;
    transition: none;
  }
}

/* 検証用: ?static でアニメーション・追従CTAを止める（撮影・比較用） */
.is-static *,
.is-static *::before,
.is-static *::after {
  animation: none !important;
  transition: none !important;
}

.is-static .js-reveal { opacity: 1; filter: none; translate: none; }
.is-static .js-stagger-item { opacity: 1; filter: none; transform: none; }
.is-static .sticky-cta { display: none; }
