* {
  box-sizing: border-box;
}

:root {
  --ink: #13263d;
  --muted: #62758c;
  --blue: #1677d2;
  --deep-blue: #0e4f91;
  --navy: #10243d;
  --green: #128957;
  --purple: #4b0a63;
  --line: #d4e3f2;
  --panel: #ffffff;
}

body {
  margin: 0;
  min-height: 100vh;
  background:
    linear-gradient(110deg, rgba(247, 241, 255, 0.74), transparent 42%),
    linear-gradient(160deg, transparent 55%, rgba(229, 255, 248, 0.88) 55%, rgba(229, 255, 248, 0.88) 75%, transparent 75%),
    linear-gradient(180deg, #ffffff 0%, #f3faff 52%, #f3efff 100%);
  color: var(--ink);
  font-family: "Malgun Gothic", "Apple SD Gothic Neo", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  overflow: hidden;
}

.page {
  width: min(100vw, 1920px);
  margin: 0 auto;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 40px 60px;
  position: relative;
}

.copy {
  display: none;
}

.eyebrow {
  margin: 0 0 34px;
  color: var(--blue);
  font-size: 18px;
  font-weight: 800;
  letter-spacing: 0;
}

h1 {
  margin: 0;
  color: var(--ink);
  font-size: clamp(56px, 4.6vw, 82px);
  line-height: 0.98;
  letter-spacing: 0;
  word-break: keep-all;
}

.lead {
  max-width: 430px;
  margin: 48px 0 0;
  color: var(--muted);
  font-size: 23px;
  line-height: 1.42;
  letter-spacing: 0;
  word-break: keep-all;
}

.result-card {
  position: absolute;
  right: 3.5%;
  top: 7%;
  width: 330px;
  padding: 22px 26px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: rgba(255, 255, 255, 0.97);
  box-shadow: 0 18px 40px rgba(16, 36, 61, 0.18);
  z-index: 10;
}

.result-card span {
  display: block;
  color: var(--muted);
  font-size: 18px;
  font-weight: 700;
}

.result-card strong {
  display: block;
  margin-top: 14px;
  font-size: 34px;
  line-height: 1.1;
}

.result-card small {
  display: block;
  margin-top: 10px;
  color: var(--muted);
  font-size: 16px;
}

.stage {
  width: 100%;
  aspect-ratio: 1.52;
  filter: drop-shadow(0 28px 36px rgba(16, 36, 61, 0.18));
}

svg {
  display: block;
  width: 100%;
  height: 100%;
}

.window-fill {
  fill: var(--panel);
  stroke: #c7d8ea;
  stroke-width: 1.4;
}

.window-top {
  fill: var(--navy);
}

.muted {
  fill: var(--muted);
}

.title {
  fill: var(--ink);
  font-size: 32px;
  font-weight: 800;
}

.caption {
  fill: var(--muted);
  font-size: 16px;
}

.step-card {
  fill: #edf2f7;
  stroke: #d7e0ea;
  stroke-width: 1;
  transition: fill 240ms ease, stroke 240ms ease, opacity 240ms ease, transform 240ms ease;
}

.step-label,
.step-desc,
.step-num {
  transition: fill 240ms ease, opacity 240ms ease;
}

.step-label {
  fill: #7b8998;
  font-size: 24px;
  font-weight: 800;
}

.step-desc {
  fill: #8b98a7;
  font-size: 15px;
}

.step-badge {
  fill: #d6dee8;
  transition: fill 240ms ease;
}

.step-num {
  fill: #7b8998;
  font-size: 16px;
  font-weight: 800;
}

.step.active .step-card {
  fill: #eaf5ff;
  stroke: #9ecaf3;
}

.step.active .step-badge {
  fill: var(--blue);
}

.step.active .step-num {
  fill: white;
}

.step.active .step-label {
  fill: var(--deep-blue);
}

.step.complete .step-card {
  fill: #eef7f2;
  stroke: #bce3cf;
}

.step.complete .step-badge {
  fill: var(--green);
}

.step.complete .step-num {
  fill: white;
}

.step.complete .step-label {
  fill: var(--green);
}

.step.final .step-card {
  fill: var(--navy);
  stroke: var(--navy);
}

.step.final .step-badge {
  fill: var(--green);
}

.step.final .step-num,
.step.final .step-label {
  fill: white;
}

.step.final .step-desc {
  fill: #d7e6f6;
}

.step-hit {
  fill: transparent;
  cursor: pointer;
}

.section-label {
  fill: var(--ink);
  font-size: 18px;
  font-weight: 800;
}

.review-tab-bg {
  fill: #f8fbff;
  stroke: #cfe0f4;
  stroke-width: 1;
  transition: fill 180ms ease, stroke 180ms ease;
}

.review-tab-text {
  fill: var(--muted);
  font-size: 15px;
  font-weight: 800;
  pointer-events: none;
}

.review-tab {
  cursor: pointer;
}

.review-tab.active .review-tab-bg {
  fill: var(--blue);
  stroke: var(--blue);
}

.review-tab.active .review-tab-text {
  fill: white;
}

.doc-card-bg {
  fill: #ffffff;
  stroke: #dbe6f1;
  stroke-width: 1;
}

.doc-title {
  fill: var(--ink);
  font-size: 16px;
  font-weight: 800;
}

.doc-status {
  fill: var(--green);
  font-size: 13px;
  font-weight: 800;
}

.connector {
  stroke: #c8d6e4;
  stroke-width: 4;
  stroke-linecap: round;
}

.connector.active {
  stroke: var(--blue);
}

.dash-card {
  fill: #ffffff;
  stroke: #cfe0f4;
  stroke-width: 1.2;
}

.artifact-card {
  fill: transparent;
  stroke: transparent;
}

.artifact-title {
  fill: var(--ink);
  font-size: 24px;
  font-weight: 800;
}

.artifact-desc {
  fill: var(--muted);
  font-size: 15px;
}

.dashboard-title {
  fill: var(--ink);
  font-size: 30px;
  font-weight: 800;
}

.dash-row {
  fill: #f8fbff;
  stroke: #e5eef7;
}

.dash-label {
  fill: var(--ink);
  font-size: 16px;
  font-weight: 700;
}

.dash-value {
  fill: var(--green);
  font-size: 14px;
  font-weight: 800;
}

.progress-bg {
  fill: #eef5ff;
  stroke: #cde1f7;
}

.progress-fill {
  fill: var(--blue);
  transition: width 260ms ease;
}

.pulse-arrow {
  animation: pulseArrow 1.4s ease-in-out infinite;
}

.float-file {
  animation: floatFile 2.4s ease-in-out infinite;
}

.fade-cycle {
  transition: opacity 260ms ease, transform 260ms ease;
}

@keyframes pulseArrow {
  0%, 100% { opacity: 0.55; transform: translateX(0); }
  50% { opacity: 1; transform: translateX(8px); }
}

@keyframes floatFile {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

@media (max-width: 1180px) {
  body {
    overflow: auto;
  }

  .page {
    height: auto;
    grid-template-columns: 1fr;
    padding: 36px 24px;
  }

  .result-card {
    margin-top: 40px;
  }

  .stage {
    max-height: none;
  }
}
