/* =================================================================
   patent-engine-section.css
   §1c AI ANALYSIS ENGINE — Signal Flow 섹션

   원칙:
     - 모든 클래스 patent-engine- prefix → 다른 섹션과 충돌 없음
     - 화이트 + 라이트그린, 충분한 breathing space
     - Stripe / Linear / Apple Developer 톤
     - 시각적 흐름이 메인. 카드 그라디언트·glow·neon 일절 X
     - 애니메이션: 매우 미세한 pulse + 데이터 흐름 dot 만
   ================================================================= */

.patent-engine-section {
  position: relative;
  padding: 120px 0;
  background: #ffffff;
  color: var(--ink);
  overflow: hidden;
}
/* 상하단 1px hairline — main.css 다른 섹션과 동일 톤 */
.patent-engine-section::before,
.patent-engine-section::after {
  content: '';
  position: absolute;
  left: 0; right: 0; height: 1px;
  background: var(--line);
  pointer-events: none;
}
.patent-engine-section::before { top: 0; }
.patent-engine-section::after  { bottom: 0; }
/* 배경에 아주 은은한 라이트그린 wash — overdone하지 않게 */
.patent-engine-section > .patent-engine-inner::before {
  content: '';
  position: absolute;
  inset: -120px 0 -120px 0;
  background:
    radial-gradient(ellipse 70% 60% at 50% 50%, rgba(26,174,119,0.04), transparent 70%);
  pointer-events: none;
  z-index: 0;
}
.patent-engine-inner {
  position: relative;
  z-index: 1;
}

/* ── Header ───────────────────────────────────────────────── */
.patent-engine-head {
  text-align: center;
  margin-bottom: 80px;
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
}
.patent-engine-kicker {
  display: inline-block;
  margin: 0 0 18px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.18em;
  color: var(--green-700);
  text-transform: uppercase;
}
.patent-engine-title {
  margin: 0 0 18px;
  font-size: 44px;
  font-weight: 800;
  line-height: 1.18;
  letter-spacing: -0.028em;
  color: var(--green-ink);
  word-break: keep-all;
  text-wrap: balance;
}
.patent-engine-title em {
  font-style: normal;
  position: relative;
  display: inline-block;
  color: var(--green-ink);
}
.patent-engine-title em::after {
  content: '';
  position: absolute;
  left: -2px; right: -2px; bottom: 4px;
  height: 14px;
  background: var(--green-100);
  z-index: -1;
  border-radius: 2px;
}
.patent-engine-sub {
  margin: 0;
  font-size: 17px;
  line-height: 1.7;
  color: var(--muted);
  letter-spacing: -0.005em;
  word-break: keep-all;
  text-wrap: pretty;
}

/* =================================================================
   FLOW: Signal Sources → AI Engine → Report
   ================================================================= */
.patent-engine-flow {
  display: grid;
  grid-template-columns: minmax(180px, 230px) minmax(60px, 1fr) minmax(280px, 360px) minmax(48px, 0.8fr) minmax(220px, 280px);
  align-items: stretch;
  gap: 0;
  margin-bottom: 80px;
  position: relative;
}

/* ── Zone wrapper ─────────────────────────────────────────── */
.patent-engine-zone {
  position: relative;
  display: flex;
  flex-direction: column;
}
.patent-engine-zone-label {
  display: block;
  margin-bottom: 18px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.18em;
  color: var(--muted-2);
  text-transform: uppercase;
}

/* =================================================================
   Zone 1 — Signal Sources
   ================================================================= */
.patent-engine-source-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.patent-engine-source {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 18px 14px;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  transition: border-color .2s var(--ease), transform .2s var(--ease);
}
.patent-engine-source:hover {
  border-color: var(--green-100);
  transform: translateX(2px);
}
.patent-engine-source-tag {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--green-700);
  background: var(--green-50);
  padding: 3px 7px;
  border-radius: 4px;
}
.patent-engine-source-name {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: -0.005em;
}
.patent-engine-source-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--green-600);
  position: relative;
  flex-shrink: 0;
}
/* dot ping — 매우 미세, 4개 source가 staggered 로 빛남 */
.patent-engine-source-dot::after {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: 50%;
  border: 1.5px solid var(--green-500);
  opacity: 0;
  animation: patent-engine-ping 2.6s var(--ease) infinite;
}
.patent-engine-source:nth-child(1) .patent-engine-source-dot::after { animation-delay: 0s; }
.patent-engine-source:nth-child(2) .patent-engine-source-dot::after { animation-delay: 0.65s; }
.patent-engine-source:nth-child(3) .patent-engine-source-dot::after { animation-delay: 1.3s; }
.patent-engine-source:nth-child(4) .patent-engine-source-dot::after { animation-delay: 1.95s; }
@keyframes patent-engine-ping {
  0%   { opacity: 0; transform: scale(0.6); }
  20%  { opacity: 0.9; }
  80%  { opacity: 0; transform: scale(2.2); }
  100% { opacity: 0; transform: scale(2.2); }
}

/* =================================================================
   Conduit — 4 lines (left) + 1 line (right)
   ================================================================= */
.patent-engine-conduit {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0 8px;
}
/* 좌측 conduit: 4 lines, 각각 source row 와 수직 정렬 */
.patent-engine-conduit-left {
  padding-top: 28px; /* zone-label 높이 보정 */
  gap: 10px; /* source-list gap 과 동일 */
}
.patent-engine-line {
  position: relative;
  display: block;
  height: 47px; /* source 한 행 높이와 동일 (12+12 padding + 23 content) */
  flex-shrink: 0;
}
.patent-engine-line::before {
  content: '';
  position: absolute;
  left: 0; right: 0; top: 50%;
  height: 1px;
  background: linear-gradient(
    to right,
    var(--green-100) 0%,
    var(--green-500) 80%,
    var(--green-600) 100%
  );
  transform: translateY(-50%);
}
.patent-engine-line::after {
  content: '';
  position: absolute;
  left: -4px; top: 50%;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--green-600);
  box-shadow: 0 0 0 3px rgba(0,155,98,0.16);
  transform: translateY(-50%);
  animation: patent-engine-flow 2.6s linear infinite;
}
.patent-engine-line[style*="--row:0"]::after { animation-delay: 0s; }
.patent-engine-line[style*="--row:1"]::after { animation-delay: 0.65s; }
.patent-engine-line[style*="--row:2"]::after { animation-delay: 1.3s; }
.patent-engine-line[style*="--row:3"]::after { animation-delay: 1.95s; }
@keyframes patent-engine-flow {
  0%   { left: -4px;  opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { left: calc(100% - 4px); opacity: 0; }
}

/* 우측 conduit: 1 line */
.patent-engine-conduit-right {
  padding-top: 28px;
}
.patent-engine-line-out {
  height: 100%;
  min-height: 220px;
}
.patent-engine-line-out::before {
  background: linear-gradient(
    to right,
    var(--green-600) 0%,
    var(--green-500) 20%,
    var(--green-100) 100%
  );
}
.patent-engine-line-out::after {
  animation-duration: 2.6s;
  animation-delay: 0.4s;
}

/* =================================================================
   Zone 2 — AI Engine (center, 핵심)
   ================================================================= */
.patent-engine-engine-zone {
  padding-top: 28px; /* zone-label 부재 보정 */
}
.patent-engine-engine-card {
  position: relative;
  background: #ffffff;
  border: 1px solid var(--green-100);
  border-radius: var(--radius-lg);
  padding: 22px 22px 18px;
  box-shadow:
    0 1px 2px rgba(11,61,46,.04),
    0 8px 28px rgba(11,61,46,.06),
    0 0 0 6px rgba(26,174,119,0.04);
}
/* 매우 미세한 frame pulse — neon 아니라 "연산 중" 느낌만 */
.patent-engine-engine-card::before {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  border: 1px solid var(--green-500);
  opacity: 0;
  animation: patent-engine-frame-pulse 3.2s var(--ease) infinite;
  pointer-events: none;
}
@keyframes patent-engine-frame-pulse {
  0%   { opacity: 0; }
  50%  { opacity: 0.30; }
  100% { opacity: 0; }
}

.patent-engine-engine-head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 14px;
  margin-bottom: 14px;
  border-bottom: 1px solid var(--line);
}
.patent-engine-engine-pulse {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--green-600);
  position: relative;
  flex-shrink: 0;
}
.patent-engine-engine-pulse::after {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: 50%;
  border: 1.5px solid var(--green-500);
  animation: patent-engine-ping 2.2s var(--ease) infinite;
}
.patent-engine-engine-label {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.16em;
  color: var(--green-ink);
  text-transform: uppercase;
  flex: 1;
}
.patent-engine-engine-status {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: var(--green-600);
  background: var(--green-50);
  padding: 3px 7px;
  border-radius: 4px;
}

.patent-engine-engine-steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}
.patent-engine-engine-step {
  display: grid;
  grid-template-columns: 36px 1fr;
  gap: 12px;
  padding: 12px 0;
  align-items: start;
  border-top: 1px dashed var(--line);
}
.patent-engine-engine-step:first-child { border-top: none; padding-top: 4px; }
.patent-engine-engine-step:last-child  { padding-bottom: 4px; }
.patent-engine-engine-step-num {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--green-600);
  font-variant-numeric: tabular-nums;
  padding-top: 1px;
}
.patent-engine-engine-step-title {
  font-size: 14.5px;
  font-weight: 700;
  letter-spacing: -0.005em;
  color: var(--ink);
  margin-bottom: 2px;
}
.patent-engine-engine-step-desc {
  font-size: 12.5px;
  font-weight: 500;
  color: var(--muted);
  letter-spacing: -0.005em;
  line-height: 1.5;
}

/* =================================================================
   Zone 3 — Report Output
   ================================================================= */
.patent-engine-output-card {
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(11,61,46,.04), 0 8px 22px rgba(11,61,46,.05);
}
.patent-engine-output-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 12px 14px;
  background: var(--green-ink);
  color: #fff;
}
.patent-engine-output-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  letter-spacing: 0.04em;
}
.patent-engine-output-week {
  color: rgba(255,255,255,0.6);
}
.patent-engine-output-region {
  font-weight: 700;
  color: #fff;
  padding: 2px 7px;
  background: rgba(255,255,255,0.10);
  border-radius: 4px;
}
.patent-engine-output-status {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.12em;
  color: var(--green-500);
  text-transform: uppercase;
}
.patent-engine-output-body { padding: 16px 14px 14px; }
.patent-engine-output-title {
  font-size: 16px;
  font-weight: 800;
  letter-spacing: -0.018em;
  color: var(--green-ink);
  margin-bottom: 12px;
  line-height: 1.3;
}
.patent-engine-output-rows {
  display: flex;
  flex-direction: column;
}
.patent-engine-output-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 9px 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-2);
  border-top: 1px dashed var(--line);
}
.patent-engine-output-row:first-child { border-top: none; }
.patent-engine-output-tag {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  padding: 3px 8px;
  border-radius: 4px;
  text-transform: uppercase;
}
.patent-engine-output-tag-buy  { background: var(--green-50);  color: var(--green-700); }
.patent-engine-output-tag-sell { background: #FFF4E5;          color: #B86E00; }
.patent-engine-output-tag-wait { background: var(--surface);   color: var(--muted); }
.patent-engine-output-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  border-top: 1px solid var(--line);
  background: var(--green-50);
  font-size: 11px;
  color: var(--muted);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  letter-spacing: 0.04em;
}
.patent-engine-output-foot-num {
  color: var(--green-700);
  font-weight: 700;
}

/* =================================================================
   Trust Strip — 특허는 보조 장치
   ================================================================= */
.patent-engine-trust {
  max-width: 720px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px 18px;
  background: var(--green-50);
  border: 1px solid var(--green-100);
  border-radius: var(--radius);
}
.patent-engine-trust-mark {
  flex-shrink: 0;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.14em;
  color: var(--green-700);
  background: #fff;
  padding: 5px 9px;
  border-radius: 4px;
  border: 1px solid var(--green-100);
  text-transform: uppercase;
}
.patent-engine-trust-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.patent-engine-trust-text {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--green-ink);
  letter-spacing: -0.005em;
}
.patent-engine-trust-meta {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0.02em;
  font-variant-numeric: tabular-nums;
}

/* =================================================================
   Reveal — entrance 애니메이션 (JS 측에서 .is-visible)
   ================================================================= */
.patent-engine-section .reveal {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .6s var(--ease), transform .6s var(--ease);
}
.patent-engine-section .reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.patent-engine-ip-notice {
  max-width: 720px;
  margin: 14px auto 0;
  text-align: center;
  font-size: 12.5px;
  line-height: 1.6;
  color: var(--muted-2);
  letter-spacing: -0.005em;
  word-break: keep-all;
}

@media (max-width: 680px) {
  .patent-engine-ip-notice {
    margin-top: 12px;
    padding: 0 12px;
    font-size: 11.5px;
  }
}

/* =================================================================
   Responsive
   ================================================================= */
@media (max-width: 1080px) {
  .patent-engine-flow {
    grid-template-columns: minmax(170px, 220px) 56px minmax(260px, 1fr) 56px minmax(200px, 250px);
  }
}

@media (max-width: 920px) {
  /* 4-zone 가로 레이아웃 → 세로 스택. conduit 는 vertical 로 변환 */
  .patent-engine-flow {
    grid-template-columns: 1fr;
    gap: 0;
    max-width: 480px;
    margin-left: auto;
    margin-right: auto;
  }
  .patent-engine-zone {
    padding-top: 0 !important;
  }
  .patent-engine-zone-label {
    margin-bottom: 12px;
  }

  /* conduit: 가로선 → 세로선 (수직 흐름) */
  .patent-engine-conduit {
    flex-direction: row;
    justify-content: center;
    gap: 12px;
    padding: 14px 0;
    height: 36px;
    align-items: stretch;
  }
  .patent-engine-conduit-left {
    padding-top: 14px;
  }
  .patent-engine-line {
    height: auto;
    width: 1px;
    flex: 0 0 1px;
  }
  .patent-engine-line::before {
    left: 50%; right: auto; top: 0; bottom: 0;
    width: 1px; height: 100%;
    background: linear-gradient(to bottom,
      var(--green-100) 0%,
      var(--green-500) 80%,
      var(--green-600) 100%);
    transform: translateX(-50%);
  }
  .patent-engine-line::after {
    left: 50%; top: -4px;
    transform: translateX(-50%);
    animation: patent-engine-flow-vertical 2.6s linear infinite;
  }
  .patent-engine-line-out::before {
    background: linear-gradient(to bottom,
      var(--green-600) 0%,
      var(--green-500) 20%,
      var(--green-100) 100%);
  }
  .patent-engine-line-out {
    min-height: 0;
  }
  @keyframes patent-engine-flow-vertical {
    0%   { top: -4px;  opacity: 0; }
    10%  { opacity: 1; }
    90%  { opacity: 1; }
    100% { top: calc(100% - 4px); opacity: 0; }
  }
}

@media (max-width: 680px) {
  .patent-engine-section { padding: 80px 0; }
  .patent-engine-head    { margin-bottom: 56px; }
  .patent-engine-title   { font-size: 30px; }
  .patent-engine-title em::after { height: 10px; bottom: 3px; }
  .patent-engine-sub     { font-size: 15px; }

  .patent-engine-flow { margin-bottom: 56px; }

  .patent-engine-engine-card { padding: 18px 18px 14px; }
  .patent-engine-engine-step-title { font-size: 13.5px; }
  .patent-engine-engine-step-desc  { font-size: 12px; }

  .patent-engine-trust {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    padding: 14px 16px;
  }
  .patent-engine-trust-text { font-size: 13px; }
  .patent-engine-trust-meta { font-size: 10.5px; }
}

/* =================================================================
   Reduced motion
   ================================================================= */
@media (prefers-reduced-motion: reduce) {
  .patent-engine-source-dot::after,
  .patent-engine-line::after,
  .patent-engine-engine-pulse::after,
  .patent-engine-engine-card::before {
    animation: none;
    opacity: 0;
  }
  .patent-engine-section .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
