/* =========================================================
   UTC Inc. — shared visual effects
   Loaded after page layout styles to preserve cascade order.
   ========================================================= */

/* ===================================================
   Luxury FX — 箔押し / 墨入れ / 落款 / 金糸
   =================================================== */

/* One-shot gold-foil highlight. */
.hero__title .accent,
.philosophy__big .gold,
.interlude__quote em {
  background: linear-gradient(115deg,
    #B98F3C 0%, #CBA34A 18%, #E9BE62 34%, #FFE9A8 46%, #F7C95F 54%, #CBA34A 72%, #A97F2E 100%);
  background-size: 280% 100%;
  background-position: 118% 0;
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: none;
  transition: background-position 2.1s var(--ease);
}
/* The hero accent receives one highlight after loading. */
.hero__title .accent {
  background-size: 320% 100%;
  background-position: 118% 0;
  transition: none;
}
.hero__title .line:nth-child(2) > .accent {
  animation:
    reveal-up 1.1s var(--ease) .52s forwards,
    hero-foil-arrival 1.45s cubic-bezier(.16, 1, .3, 1) 1.55s both;
}
@keyframes hero-foil-arrival {
  0% { background-position: 118% 0; }
  46% { background-position: 54% 0; }
  100% { background-position: 18% 0; }
}
.philosophy__big .gold { transition-delay: .7s; }
.interlude__quote em { transition-delay: .9s; }
.philosophy__big.in .gold,
.interlude__quote.in em {
  background-position: 18% 0;
}

/* Directional heading reveal. */
.philosophy__phrase,
.journey__title-line {
  clip-path: inset(-0.3em 100% -0.3em -0.15em);
  transition: clip-path 1.15s var(--ease);
}
.reveal.in .philosophy__phrase,
.reveal.in .journey__title-line {
  clip-path: inset(-0.3em -0.15em -0.3em -0.15em);
}
.reveal.in .philosophy__line:nth-child(1) .philosophy__phrase:nth-of-type(2) { transition-delay: .26s; }
.reveal.in .philosophy__line:nth-child(2) .philosophy__phrase:nth-of-type(1) { transition-delay: .52s; }
.reveal.in .philosophy__line:nth-child(2) .philosophy__phrase:nth-of-type(2) { transition-delay: .78s; }
.reveal.in .journey__title-line--core { transition-delay: .28s; }
.reveal.in .journey__title-line--tail { transition-delay: .56s; }

/* Interlude thread reveal. */
.interlude__quote::after {
  content: "";
  display: block;
  width: min(340px, 64%);
  height: 1px;
  margin: clamp(30px, 4vw, 48px) auto 0;
  background: linear-gradient(90deg,
    rgba(203,163,74,.06), rgba(203,163,74,.82) 28%, #F7C95F 50%, rgba(203,163,74,.82) 72%, rgba(203,163,74,.06));
  opacity: .85;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 1.9s var(--ease) .55s;
}
.interlude__quote.in::after {
  transform: scaleX(1);
  animation:
    gold-thread-glint 2.4s ease-out 2.3s 1,
    heartbeat-soft var(--pulse-cycle) ease-in-out 4.9s infinite;
}
@keyframes gold-thread-glint {
  0% { filter: brightness(1); }
  32% { filter: brightness(1.7) drop-shadow(0 0 7px rgba(247,201,95,.55)); }
  100% { filter: brightness(1); }
}

/* ===================================================
   Heartbeat — サイト共通の鼓動（トク、トク…休のリズム）
   =================================================== */

/* Shared low-cost opacity pulse. */
@keyframes heartbeat-soft {
  0%, 34%, 100% { opacity: .85; }
  6% { opacity: 1; }
  14% { opacity: .88; }
  20% { opacity: .96; }
}

/* Section index pulse. */
.eyebrow::after {
  content: "";
  align-self: center;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 6px rgba(203,163,74,.4);
  animation: heartbeat-dot var(--pulse-cycle) ease-in-out infinite;
}
@keyframes heartbeat-dot {
  0%, 34%, 100% { opacity: .38; transform: scale(1); }
  6% { opacity: .95; transform: scale(1.5); }
  14% { opacity: .48; transform: scale(1); }
  20% { opacity: .8; transform: scale(1.3); }
}

/* Founder portrait frame highlight. */
@keyframes frame-breath {
  0%, 34%, 100% { border-color: rgba(203,163,74,.44); }
  6% { border-color: rgba(203,163,74,.74); }
  14% { border-color: rgba(203,163,74,.50); }
  20% { border-color: rgba(203,163,74,.64); }
}
.founder__portrait,
.founder__portrait::after {
  animation: none;
}

/* Gold foil runs once when the element enters view. */
.philosophy__big.in .gold,
.interlude__quote.in em {
  animation: none;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001s !important;
    animation-delay: 0s !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001s !important;
  }
  .site-breath,
  .home-atmosphere-canvas,
  .journey__atmosphere-stage,
  body::after { display: none; }
  .journey::after { display: none; }
  .journey__glow {
    opacity: .28 !important;
    transform: scale(.94) translate3d(0,0,0) !important;
    animation: none !important;
    transition: none !important;
  }
  .journey-bridge__node,
  .journey-bridge__rail::after,
  .journey-bridge__rail span {
    animation: none !important;
  }
  .reveal { opacity: 1; transform: none; filter: none; }
  .hero__title .line > span { transform: none; }
  .philosophy__phrase,
  .journey__title-line { clip-path: none; }
  .interlude__quote::after { transform: scaleX(1); }
  .work__creed::before { transform: scaleY(1); }
  .founder__portrait img { transform: none; }
  .founder__portrait::before { opacity: .32; }
  .eyebrow::after,
  .founder__portrait,
  .founder__portrait::after,
  .interlude__quote.in::after,
  .interlude__quote.in em,
  .philosophy__big.in .gold,
  .network__mote,
  .signal-line::after,
  .footer::before,
  .creative-entry__cta-state,
  .creative-entry__cta-state::before,
  .creative-entry__cta-state::after,
  .creative-closing__afterglow span { animation: none !important; }
  .creative-entry__cta-state::before { display: none; }
  .creative-closing__afterglow span { opacity: 0; }
}
