.process { width: var(--width); margin-inline: auto; padding-block: clamp(36px, 5vw, 58px) clamp(28px, 4vw, 48px); scroll-margin-top: 70px; }
.process h2 { font-size: clamp(2.25rem, 5.2vw, 4rem); font-weight: 700; line-height: 1.05; letter-spacing: -.015em; }
.process ol { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin: 32px 0 0; padding: 0; }
.process li { min-width: 0; }
.process-visual {
  position: relative;
  isolation: isolate;
  display: grid;
  place-items: center;
  min-height: 180px;
  overflow: hidden;
  margin-block-end: 16px;
  border-radius: 22px;
  background: #dfe6de;
}
.process-review { background: #e3e8df; }
.process-share { background: #dde6e1; }
.step-number { position: absolute; inset: 12px auto auto; inset-inline-start: 14px; color: var(--muted); font-size: .8rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.process-photo {
  width: min(76%, 144px);
  height: auto;
  aspect-ratio: 1.45;
  object-fit: cover;
  border: 4px solid var(--surface);
  border-radius: 9px;
  background: var(--surface);
  box-shadow: 0 5px 14px #252D2922;
  transform: rotate(-5deg);
}
.process-window {
  width: min(86%, 172px);
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface);
}
.process-window-bar { display: flex; gap: 4px; padding: 7px; direction: ltr; }
.process-window-bar i { width: 4px; height: 4px; border-radius: 50%; background: var(--muted); }
.process-window img { width: 100%; height: auto; aspect-ratio: 2 / 1; object-fit: cover; }
.process-link-preview {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px;
  padding-inline-end: 14px;
  border-radius: 11px;
  background: var(--surface);
  box-shadow: 0 5px 14px #252D291a;
}
.process-link-preview img { width: 44px; height: 44px; border-radius: 6px; object-fit: cover; }
.process-link-preview strong, .process-link-preview span span { display: block; }
.process-link-preview strong { font-size: .84rem; }
.process-link-preview span span { font-size: .72rem; color: var(--muted); }
.process-symbol {
  position: absolute;
  inset-block-end: 13px;
  inset-inline-end: 13px;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--ink);
  color: #fff;
}
.process-symbol svg { width: 20px; height: 20px; }
.process h3 { font-size: 1.35rem; }
.process li p { margin-top: 8px; color: var(--muted); }
.process-start { margin-block-start: 26px; }

@media (max-width: 860px) {
  .process ol { grid-template-columns: 1fr; gap: 32px; }
}
@media (max-width: 640px) {
  .process { scroll-margin-top: 116px; }
}
@media (prefers-reduced-motion: no-preference) {
  .process { --process-ease: cubic-bezier(.22, .61, .36, 1); }
  .process li:nth-child(1) { --step-delay: 0ms; }
  .process li:nth-child(2) { --step-delay: 1400ms; }
  .process li:nth-child(3) { --step-delay: 2800ms; }
  .process-share { --link-entry: 14px; }
  [dir="ltr"] .process-share { --link-entry: -14px; }

  .process[data-process-pending] :is(ol, .process-start) { opacity: 0; }
  .process[data-process-pending] .process-start { pointer-events: none; }

  .process[data-playing] .process-visual {
    animation: process-rise 650ms var(--process-ease) var(--step-delay) both;
  }
  .process[data-playing] li > :is(h3, p) {
    animation: process-rise 650ms var(--process-ease) calc(var(--step-delay) + 250ms) both;
  }
  .process[data-playing] .process-symbol {
    animation: process-pop 420ms var(--process-ease) calc(var(--step-delay) + 850ms) both;
  }
  .process[data-playing] .process-photo {
    animation: process-land 750ms var(--process-ease) 250ms both;
  }
  .process[data-playing] .process-window {
    animation: process-rise 600ms var(--process-ease) 1600ms both;
  }
  .process[data-playing] .process-window img {
    animation: process-load 650ms var(--process-ease) 1850ms both;
  }
  .process[data-playing] .process-check {
    animation: process-draw 380ms var(--process-ease) 2400ms both;
  }
  .process[data-playing] .process-link-preview {
    animation: process-slide 650ms var(--process-ease) 3050ms both;
  }
  .process[data-playing] :is(.process-upload, .process-share) .process-symbol::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    animation: process-ring 800ms ease-out calc(var(--step-delay) + 1100ms) both;
  }
  .process[data-playing] .process-start {
    animation: process-rise 600ms var(--process-ease) 4300ms both;
  }
}
@keyframes process-rise {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}
@keyframes process-pop {
  from { opacity: 0; transform: scale(.85); }
  to { opacity: 1; transform: none; }
}
@keyframes process-land {
  from { opacity: 0; transform: translateY(-14px); }
  to { opacity: 1; transform: rotate(-5deg); }
}
@keyframes process-load {
  from { clip-path: inset(0 0 100% 0); }
  to { clip-path: inset(0); }
}
@keyframes process-draw {
  from { stroke-dashoffset: 1; }
  to { stroke-dashoffset: 0; }
}
@keyframes process-slide {
  from { opacity: 0; transform: translateX(var(--link-entry)); }
  to { opacity: 1; transform: none; }
}
@keyframes process-ring {
  from { box-shadow: 0 0 0 0 #252d2959; }
  to { box-shadow: 0 0 0 12px transparent; }
}
