/* ── 토큰 = docs/2026-09-26-homepage-content-plan.md §4 ── */
:root {
  --chart: #EEF3F1;
  --ink: #14213D;
  --ink-soft: #4A5670;
  --route: #B0247A;
  --sky: #CFE3EA;
  --contour: #9FB8A8;
  --strip: #F6EBC8;
  --paper: #FBFCFB;
  --display: "Archivo", "Pretendard Variable", Pretendard, system-ui, sans-serif;
  --body: "Archivo", "Pretendard Variable", Pretendard, system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, monospace;
  --gutter: clamp(16px, 4vw, 40px);
  --max: 1120px;
}
:lang(ko) { --display: "Pretendard Variable", Pretendard, system-ui, sans-serif; --body: "Pretendard Variable", Pretendard, system-ui, sans-serif; }
/* 한국어는 단어 단위로 줄바꿈 — 기본값(글자 단위)이면 단어 한가운데서 끊긴다 */
:lang(ko) body { word-break: keep-all; overflow-wrap: anywhere; line-height: 1.7; }

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0; background: var(--chart); color: var(--ink);
  font-family: var(--body); font-size: 17px; line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; }
:focus-visible { outline: 3px solid var(--route); outline-offset: 3px; border-radius: 4px; }
.wrap { max-width: var(--max); margin: 0 auto; padding: 0 var(--gutter); }
.mono { font-family: var(--mono); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; }

h1, h2, h3 { font-family: var(--display); font-stretch: 75%; font-weight: 800; line-height: 1.02; margin: 0; letter-spacing: -.01em; }
:lang(ko) h1, :lang(ko) h2, :lang(ko) h3 { font-weight: 800; line-height: 1.22; letter-spacing: -.035em; }
h1 { font-size: clamp(44px, 7.4vw, 92px); }
h2 { font-size: clamp(32px, 4.6vw, 54px); }
h3 { font-size: 24px; font-stretch: 85%; }
:lang(ko) h1 { font-size: clamp(36px, 5.6vw, 68px); }
:lang(ko) h2 { font-size: clamp(28px, 3.8vw, 44px); }
p { margin: 0; }

/* 버튼 */
.btn {
  display: inline-flex; align-items: center; gap: 8px; text-decoration: none; cursor: pointer;
  font: 600 16px/1 var(--body); padding: 14px 22px; border-radius: 999px; border: 2px solid var(--ink);
}
.btn-primary { background: var(--route); border-color: var(--route); color: #fff; }
.btn-primary:hover { background: #951e67; border-color: #951e67; }
.btn-ghost { background: transparent; color: var(--ink); }
.btn-ghost:hover { background: var(--ink); color: var(--chart); }

/* 상단 바 */
header.top { position: sticky; top: 0; z-index: 10; background: color-mix(in srgb, var(--chart) 88%, transparent); backdrop-filter: blur(8px); border-bottom: 1px solid color-mix(in srgb, var(--contour) 55%, transparent); }
.top-in { display: flex; align-items: center; gap: 24px; height: 64px; }
.mark { font-family: "Archivo", sans-serif; font-stretch: 75%; font-weight: 800; font-size: 26px; text-decoration: none; letter-spacing: -.01em; }
.mark b { color: var(--route); font-weight: 800; }
nav.links { display: flex; gap: 22px; margin-left: auto; font-size: 15px; }
nav.links a { text-decoration: none; color: var(--ink-soft); }
nav.links a:hover { color: var(--ink); }
.lang { font-family: var(--mono); font-size: 12px; border: 1px solid var(--ink); color: var(--ink); border-radius: 999px; padding: 6px 12px; text-decoration: none; }
.lang:hover { background: var(--ink); color: var(--chart); }
.top .btn { padding: 10px 16px; font-size: 14px; }
@media (max-width: 860px) { nav.links { display: none; } .top-in { gap: 12px; } .lang { margin-left: auto; } }

/* 히어로 — 등고선은 여기만 */
.hero { position: relative; padding: clamp(56px, 9vw, 110px) 0 56px; overflow: hidden; }
.hero::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5;
  background:
    radial-gradient(ellipse 60% 45% at 85% 20%, transparent 58%, var(--contour) 58.3%, transparent 58.8%),
    radial-gradient(ellipse 60% 45% at 85% 20%, transparent 46%, var(--contour) 46.3%, transparent 46.8%),
    radial-gradient(ellipse 60% 45% at 85% 20%, transparent 34%, var(--contour) 34.3%, transparent 34.8%),
    radial-gradient(ellipse 50% 40% at 5% 95%, transparent 50%, var(--contour) 50.3%, transparent 50.8%),
    radial-gradient(ellipse 50% 40% at 5% 95%, transparent 38%, var(--contour) 38.3%, transparent 38.8%);
}
.hero .wrap { position: relative; }
.eyebrow { color: var(--route); margin-bottom: 22px; }
.hero h1 { max-width: 14ch; }
:lang(ko) .hero h1 { max-width: 16ch; }
.hero .sub { max-width: 60ch; margin-top: 26px; font-size: clamp(17px, 1.6vw, 20px); color: var(--ink-soft); }
.hero .ctas { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 34px; align-items: center; }
.hero .ctas a.more { color: var(--ink-soft); font-size: 15px; }

/* 시그니처 — 비행 계획서 띠 */
.strip {
  margin-top: clamp(48px, 7vw, 80px); background: var(--strip); border: 1.5px solid var(--ink);
  border-radius: 6px; display: grid;
  grid-template-columns: 1fr 1.5fr 1fr 5fr 1.3fr 1fr;
  box-shadow: 6px 6px 0 color-mix(in srgb, var(--ink) 14%, transparent);
}
.cell { padding: 12px 14px 14px; border-right: 1.5px solid var(--ink); min-width: 0; }
.cell:last-child { border-right: 0; }
.cell .k { font-family: var(--mono); font-size: 11px; letter-spacing: .1em; color: var(--ink-soft); }
.cell .v { font-family: var(--mono); font-size: 15px; font-weight: 500; margin-top: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cell.status .v { color: var(--route); }
.route { position: relative; padding-bottom: 12px; }
.route svg { display: block; width: 100%; height: 26px; margin-top: 8px; overflow: visible; }
.route .line { fill: none; stroke: var(--route); stroke-width: 3; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 1; animation: draw 1.4s cubic-bezier(.6,.1,.3,1) .35s forwards; }
.route .wp { fill: var(--strip); stroke: var(--ink); stroke-width: 2; opacity: 0; animation: pop .25s ease-out forwards; }
.route .wp:nth-of-type(1) { animation-delay: .5s; }
.route .wp:nth-of-type(2) { animation-delay: .85s; }
.route .wp:nth-of-type(3) { animation-delay: 1.15s; }
.route .wp:nth-of-type(4) { animation-delay: 1.45s; }
.wps { display: flex; justify-content: space-between; font-family: var(--mono); font-size: 11.5px; font-weight: 500; letter-spacing: .06em; margin-top: 6px; }
.wps span { flex: 1; text-align: center; }
@keyframes draw { to { stroke-dashoffset: 0; } }
@keyframes pop { to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .route .line { animation: none; stroke-dashoffset: 0; }
  .route .wp { animation: none; opacity: 1; }
  html { scroll-behavior: auto; }
}
@media (max-width: 860px) {
  .strip { grid-template-columns: 1fr 1fr; }
  .cell { border-right: 0; border-bottom: 1.5px solid var(--ink); }
  .cell:nth-child(odd):not(.route) { border-right: 1.5px solid var(--ink); }
  .route { grid-column: 1 / -1; order: 10; border-bottom: 0; }
  .cell.arr { border-right: 1.5px solid var(--ink); }
  .cell.status { border-right: 0; }
  .route svg { display: none; }
  .wps { flex-direction: column; gap: 6px; font-size: 13px; }
  .wps span { text-align: left; }
  .wps span::before { content: "→ "; color: var(--route); }
}

/* 섹션 공통 */
section.block { padding: clamp(72px, 10vw, 120px) 0; border-top: 1px solid color-mix(in srgb, var(--contour) 60%, transparent); }
.kicker { color: var(--route); margin-bottom: 16px; }
.lede { max-width: 62ch; margin-top: 18px; color: var(--ink-soft); font-size: 18px; }

/* 대비 */
.versus { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin-top: 44px; border: 1.5px solid var(--ink); border-radius: 6px; overflow: hidden; background: var(--paper); }
.versus > div { padding: 28px clamp(20px, 3vw, 34px); }
.versus > div + div { border-left: 1.5px solid var(--ink); background: #fff; }
.versus ul { list-style: none; margin: 18px 0 0; padding: 0; display: grid; gap: 12px; }
.versus li { display: grid; grid-template-columns: 20px 1fr; gap: 10px; }
.versus .old li { color: #7B8496; }
.versus .old li::before { content: "–"; color: #9AA2B1; }
.versus .new li::before { content: "✓"; color: var(--route); font-weight: 700; }
@media (max-width: 760px) { .versus { grid-template-columns: 1fr; } .versus > div + div { border-left: 0; border-top: 1.5px solid var(--ink); } }

/* 기반 4 경유지 */
.grid4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-top: 44px; }
.card { background: var(--paper); border: 1.5px solid var(--ink); border-radius: 6px; padding: 24px 22px 26px; display: flex; flex-direction: column; gap: 12px; }
.card .sym { width: 34px; height: 34px; }
.card .sym * { fill: none; stroke: var(--route); stroke-width: 2.4; }
.card .n { color: var(--ink-soft); }
.card p { color: var(--ink-soft); font-size: 15.5px; }
@media (max-width: 980px) { .grid4 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .grid4 { grid-template-columns: 1fr; } }

/* 과정 6구간 */
.legs { list-style: none; padding: 0; margin: 48px 0 0; display: grid; grid-template-columns: repeat(6, 1fr); position: relative; }
.legs::before { content: ""; position: absolute; left: 0; right: 0; top: 17px; height: 3px; background: repeating-linear-gradient(90deg, var(--route) 0 14px, transparent 14px 22px); }
.legs li { position: relative; padding-right: 18px; }
.legs .dot { width: 36px; height: 36px; border-radius: 50%; background: var(--chart); border: 2px solid var(--ink); display: grid; place-items: center; font-family: var(--mono); font-size: 13px; font-weight: 500; position: relative; }
.legs h3 { font-size: 21px; margin-top: 18px; }
.legs p { margin-top: 8px; font-size: 15px; color: var(--ink-soft); }
@media (max-width: 980px) {
  .legs { grid-template-columns: 1fr; gap: 26px; }
  .legs::before { left: 17px; right: auto; top: 0; bottom: 0; width: 3px; height: auto; background: repeating-linear-gradient(180deg, var(--route) 0 14px, transparent 14px 22px); }
  .legs li { display: grid; grid-template-columns: 36px 1fr; column-gap: 18px; padding-right: 0; }
  .legs h3 { margin-top: 4px; }
  .legs p { grid-column: 2; }
}

/* 에이전트·조직 두 단 */
.duo { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 72px); align-items: start; }
.duo .lede { margin-top: 16px; }
.rules { margin-top: 26px; display: grid; gap: 10px; }
.rules div { display: grid; grid-template-columns: 90px 1fr; gap: 12px; padding: 12px 14px; border: 1.5px solid var(--ink); border-radius: 6px; background: var(--paper); font-size: 15px; }
.rules .ok { color: #1E6B4F; }
.rules .no { color: var(--route); }
.orgline { margin-top: 22px; color: var(--route); }
@media (max-width: 860px) { .duo { grid-template-columns: 1fr; } }

/* 가격 */
.price { margin-top: 44px; display: grid; grid-template-columns: 1.1fr 1fr; border: 1.5px solid var(--ink); border-radius: 6px; overflow: hidden; background: #fff; }
.price .main { padding: clamp(24px, 4vw, 40px); }
.price .amount { font-family: "Archivo", sans-serif; font-stretch: 75%; font-weight: 800; font-size: clamp(64px, 9vw, 104px); line-height: .9; margin-top: 10px; }
.price .per { font-family: var(--mono); font-size: 14px; color: var(--ink-soft); margin-top: 8px; }
.price ul { list-style: none; padding: 0; margin: 24px 0 0; display: grid; gap: 10px; }
.price li { display: grid; grid-template-columns: 20px 1fr; gap: 10px; }
.price li::before { content: "✓"; color: var(--route); font-weight: 700; }
.price .side { background: var(--sky); border-left: 1.5px solid var(--ink); padding: clamp(24px, 4vw, 40px); display: flex; flex-direction: column; gap: 14px; }
.price .side p { font-size: 15.5px; color: var(--ink-soft); }
.price .side table { border-collapse: collapse; width: 100%; font-size: 14.5px; }
.price .side td { padding: 9px 0; border-top: 1px solid color-mix(in srgb, var(--ink) 25%, transparent); vertical-align: top; }
.price .side td:last-child { text-align: right; font-family: var(--mono); white-space: nowrap; padding-left: 12px; }
@media (max-width: 860px) { .price { grid-template-columns: 1fr; } .price .side { border-left: 0; border-top: 1.5px solid var(--ink); } }

/* 마지막 */
.final { background: var(--ink); color: var(--chart); border-top: 0; }
.final .kicker { color: #E0489F; }
.final .lede { color: #C9D2E3; }
.final .btn-primary { margin-top: 32px; }
footer { background: var(--ink); color: #9BA6BD; font-size: 14px; padding: 28px 0 40px; border-top: 1px solid #2A3857; }
footer .wrap { display: flex; flex-wrap: wrap; gap: 18px 28px; align-items: center; }
footer a { color: #C9D2E3; text-decoration: none; }
footer a:hover { color: #fff; }
footer .runs { margin-right: auto; }

/* ════════════════════════════════════════════════════════════════
   움직임 층 — app.js 가 <html class="js"> 를 붙였을 때만 켜진다.
   스크립트가 없으면 위의 정지 화면 그대로 읽힌다.
   ════════════════════════════════════════════════════════════════ */

/* 버튼 화살표 */
.btn .arr { display: inline-block; transition: transform .25s ease; }
.btn:hover .arr { transform: translateX(4px); }

/* 스크롤 등장 */
.js [data-reveal] { opacity: 0; transform: translateY(18px); transition: opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1); }
.js [data-reveal].in { opacity: 1; transform: none; }

/* 히어로 계획서 — 상태 */
.js .route .line { animation: none; stroke-dashoffset: 0; }
.js .route .wp { animation: none; opacity: 0; transition: opacity .25s ease; }
.js .route .wp.on { opacity: 1; }
.route .plane { opacity: 0; transition: opacity .2s; }
.route .plane.on { opacity: 1; }
.route .plane path { fill: var(--ink); }
.js .wps span { opacity: .28; transition: opacity .25s, color .25s; }
.js .wps span.on { opacity: 1; }
.cell.status .v { transition: color .3s; }
.cell.status .v[data-s="0"] { color: var(--ink-soft); }
.cell.status .v[data-s="1"] { color: var(--route); }
.cell.status .v[data-s="2"] { color: #1E6B4F; }
.cell.status .v[data-s="3"] { color: var(--route); }
.cell.status .v[data-s="3"]::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--route); margin-right: 7px; vertical-align: 1px; animation: blink 1s ease-in-out infinite; }
.strip.filing [data-f="type"]::after { content: "▍"; color: var(--route); animation: blink .8s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }

/* 기반 카드 — 차례로 등장, 기호가 그려진다 */
.js .grid4[data-reveal] { opacity: 1; transform: none; }
.js .grid4 .card { opacity: 0; transform: translateY(22px); transition: opacity .6s ease, transform .6s cubic-bezier(.2,.7,.2,1), box-shadow .25s, border-color .25s; }
.js .grid4.in .card { opacity: 1; transform: none; }
.js .grid4.in .card:nth-child(2) { transition-delay: .1s; }
.js .grid4.in .card:nth-child(3) { transition-delay: .2s; }
.js .grid4.in .card:nth-child(4) { transition-delay: .3s; }
.js .grid4 .sym * { stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 1.1s ease .35s; }
.js .grid4.in .sym * { stroke-dashoffset: 0; }
.card:hover { box-shadow: 6px 6px 0 color-mix(in srgb, var(--route) 30%, transparent); border-color: var(--route); }
.js .grid4.in .card:hover { transform: translateY(-4px); transition-delay: 0s; }

/* 6구간 — 스크롤 진행 */
.legs::after {
  content: ""; position: absolute; left: 0; top: 10px; height: 17px;
  width: calc(var(--p, 0) * 100%); min-width: 16px; pointer-events: none;
  background:
    linear-gradient(var(--route), var(--route)) left center / calc(100% - 12px) 3px no-repeat,
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-8 -8 16 16'%3E%3Cpath d='M8 0 L-6 -5.5 L-2.5 0 L-6 5.5 Z' fill='%23B0247A'/%3E%3C/svg%3E") right center / 16px 16px no-repeat;
}
.legs .dot { transition: background .3s, color .3s, border-color .3s, transform .3s; z-index: 1; }
.legs li.on .dot { background: var(--route); border-color: var(--route); color: #fff; transform: scale(1.08); }
.legs li h3, .legs li p { transition: opacity .3s; }
.js .legs li:not(.on) h3, .js .legs li:not(.on) p { opacity: .45; }
@media (max-width: 980px) {
  .legs::after {
    left: 10px; top: 0; width: 17px; min-width: 0; min-height: 16px;
    height: calc(var(--p, 0) * 100%);
    background:
      linear-gradient(var(--route), var(--route)) center top / 3px calc(100% - 12px) no-repeat,
      url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-8 -8 16 16'%3E%3Cpath d='M0 8 L-5.5 -6 L0 -2.5 L5.5 -6 Z' fill='%23B0247A'/%3E%3C/svg%3E") center bottom / 16px 16px no-repeat;
  }
}

/* 플랜이 움직이는 모습 */
.sim { display: grid; grid-template-columns: 1.7fr 1fr; gap: 18px; margin-top: 44px; }
.board { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.col { background: var(--paper); border: 1.5px solid var(--ink); border-radius: 6px; padding: 12px 10px; min-height: 300px; display: flex; flex-direction: column; }
.colh { color: var(--ink-soft); margin: 0 0 10px 2px; }
.cards { display: flex; flex-direction: column; gap: 8px; }
.story { position: relative; background: #fff; border: 1.5px solid var(--ink); border-radius: 5px; padding: 9px 10px 10px; display: grid; gap: 4px; font-size: 14px; line-height: 1.35; }
.story .sid { font-size: 10.5px; color: var(--ink-soft); }
.story .badge:empty { display: none; }
.story .badge { justify-self: start; font-size: 10.5px; padding: 3px 8px; border-radius: 999px; background: var(--sky); color: var(--ink); }
.story .badge[data-k="run"]::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--route); margin-right: 6px; vertical-align: 1px; animation: blink 1s ease-in-out infinite; }
.story .badge[data-k="ok"] { background: #DCEFE6; color: #1E6B4F; }
.story .stamp { display: none; position: absolute; top: 6px; right: 6px; font-size: 10px; font-weight: 500; color: var(--route); border: 1.5px solid var(--route); border-radius: 3px; padding: 1px 5px; transform: rotate(-8deg); background: #fff; }
.story.stamped .stamp { display: block; }
.js .story.stamped .stamp { animation: stamp .35s cubic-bezier(.3,1.6,.5,1); }
@keyframes stamp { from { transform: rotate(-8deg) scale(1.9); opacity: 0; } to { transform: rotate(-8deg) scale(1); opacity: 1; } }
.story.arrive { animation: arrive .45s cubic-bezier(.2,.8,.2,1); }
@keyframes arrive { from { opacity: 0; transform: translateX(-18px); } to { opacity: 1; transform: none; } }
.log { background: var(--ink); color: #C9D2E3; border-radius: 6px; padding: 14px 16px; font-family: var(--mono); font-size: 12.5px; min-height: 300px; display: flex; flex-direction: column; }
.logh { color: #E0489F; margin-bottom: 10px; }
.log ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 7px; align-content: start; }
.log li { display: grid; grid-template-columns: 74px 1fr; gap: 8px; animation: arrive .35s ease; }
.log .who { color: #8FA0C0; }
.log li.hi .msg { color: #fff; font-weight: 500; }
@media (max-width: 980px) {
  .sim { grid-template-columns: 1fr; }
  .board { grid-template-columns: 1fr 1fr; }
  .col { min-height: 170px; }
  .log { min-height: 230px; }
}

/* 가격 계산기 — 스크립트가 있을 때만 보인다 */
.calc { display: none; }
.js .calc { display: grid; grid-template-columns: 1.2fr 1fr; margin-top: 18px; border: 1.5px solid var(--ink); border-radius: 6px; overflow: hidden; background: var(--paper); }
.calc-in { padding: clamp(22px, 3vw, 32px); display: grid; gap: 16px; align-content: start; }
.calc .apps { display: grid; grid-template-columns: 1fr auto; gap: 10px 12px; align-items: center; font-weight: 600; }
.calc .apps output { font-family: "Archivo", sans-serif; font-stretch: 75%; font-weight: 800; font-size: 34px; line-height: 1; color: var(--route); min-width: 2ch; text-align: right; }
.calc .apps input { grid-column: 1 / -1; width: 100%; accent-color: var(--route); }
.seg { display: flex; flex-wrap: wrap; gap: 6px; }
.seg button { font: 500 14px/1 var(--body); padding: 10px 14px; border-radius: 999px; border: 1.5px solid var(--ink); background: transparent; color: var(--ink); cursor: pointer; transition: background .2s, color .2s; }
.seg button[aria-pressed="true"] { background: var(--ink); color: var(--chart); }
.seg button:hover:not([aria-pressed="true"]) { background: var(--sky); }
.seg-sm button { font-size: 13px; padding: 8px 12px; }
.chk { display: flex; gap: 10px; align-items: center; font-size: 15px; }
.chk input { accent-color: var(--route); width: 18px; height: 18px; }
.sum { background: #fff; border-left: 1.5px solid var(--ink); padding: clamp(22px, 3vw, 32px); display: grid; gap: 10px; align-content: center; }
.sum .row { display: flex; justify-content: space-between; gap: 12px; font-size: 15px; color: var(--ink-soft); padding-bottom: 10px; border-bottom: 1px dashed color-mix(in srgb, var(--ink) 25%, transparent); }
.sum .row span:last-child { font-family: var(--mono); color: var(--ink); }
.sum .total { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-top: 6px; font-weight: 600; }
.sum .total span:last-child { font-family: "Archivo", sans-serif; font-stretch: 75%; font-weight: 800; font-size: clamp(44px, 6vw, 64px); line-height: 1; color: var(--route); }
@media (max-width: 860px) { .js .calc { grid-template-columns: 1fr; } .sum { border-left: 0; border-top: 1.5px solid var(--ink); } }

/* 마지막 섹션 — 흐르는 항로 */
.final { position: relative; overflow: hidden; }
.final::before {
  content: ""; position: absolute; left: -10%; right: -10%; top: 50%; height: 3px; opacity: .35;
  background: repeating-linear-gradient(90deg, #E0489F 0 16px, transparent 16px 28px);
  transform: rotate(-4deg); animation: runway 2.4s linear infinite;
}
.final .wrap { position: relative; }
@keyframes runway { to { background-position: 28px 0; } }

/* 움직임 줄이기 */
@media (prefers-reduced-motion: reduce) {
  .js [data-reveal], .js .grid4 .card { opacity: 1; transform: none; transition: none; }
  .js .grid4 .sym * { stroke-dashoffset: 0; transition: none; }
  .js .route .wp { opacity: 1; }
  .js .wps span { opacity: 1; }
  .final::before, .cell.status .v[data-s="3"]::before, .story .badge[data-k="run"]::before { animation: none; }
  .story.arrive, .log li, .js .story.stamped .stamp { animation: none; }
}

/* ── 히어로 실제 화면 (9/26 Sonny: "우리 실제 디자인 캡처를 hero 에") ──
   Axowl 첫 화면과 같은 방식 — 화면 두 장이 서서히 바뀐다. 배경은 원래 Axowl 히어로의 청록 그라데이션. */
.hero-grid { display: grid; grid-template-columns: 1fr 1.08fr; gap: clamp(28px, 4vw, 60px); align-items: center; }
.hero-grid h1 { font-size: clamp(42px, 5.6vw, 78px); max-width: 12ch; }
:lang(ko) .hero-grid h1 { font-size: clamp(34px, 4.4vw, 58px); max-width: 13ch; }
.shot {
  margin: 0; border: 1.5px solid var(--ink); border-radius: 10px; overflow: hidden;
  background: linear-gradient(135deg, #012d42 0%, #014a6b 40%, #015f87 100%);
  box-shadow: 12px 12px 0 color-mix(in srgb, var(--route) 22%, transparent);
  transform: rotate(1.2deg);
}
.js .shot { animation: shot-float 7s ease-in-out infinite; }
@keyframes shot-float { 50% { transform: rotate(1.2deg) translateY(-8px); } }
.shot-bar { display: flex; gap: 6px; align-items: center; padding: 9px 12px; background: var(--ink); }
.shot-bar > span { width: 9px; height: 9px; border-radius: 50%; background: #E0489F; }
.shot-bar > span:nth-child(2) { background: var(--strip); }
.shot-bar > span:nth-child(3) { background: var(--contour); }
.shot-bar em { font-style: normal; color: #8FA0C0; margin-left: 10px; font-size: 11px; text-transform: none; letter-spacing: .02em; }
.shot-dots { margin-left: auto; display: flex; gap: 6px; }
.shot-dots button { width: 8px; height: 8px; padding: 0; border-radius: 50%; border: 0; background: #4A5A7A; cursor: pointer; transition: background .3s, width .3s; }
.shot-dots button[aria-pressed="true"] { background: #E0489F; width: 20px; border-radius: 4px; }
.shot-view { position: relative; aspect-ratio: 1376 / 768; }
.shot-view img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; object-position: right bottom; opacity: 0; transition: opacity 1.4s ease; }
.shot-view img.on { opacity: 1; }
@media (max-width: 860px) {
  .hero-grid { grid-template-columns: 1fr; }
  .shot, .js .shot { transform: none; animation: none; }
}
@media (prefers-reduced-motion: reduce) {
  .js .shot { animation: none; }
  .shot-view img { transition: none; }
}

/* ════════════════════════════════════════════════════════════════
   히어로 미니 대시보드 — 실제 Axowl 프로젝트 보드를 HTML 로 그린 뒤 통째로 축소한다(9/26 Sonny).
   값은 Axowl.Client 의 app.css(.top-bar·.category-link·.sidebar)·ah-components.css(.pm-*·.btn-create)
   에서 그대로 옮겼다. 가상 화면 = 1680×880, 축소 비율(--s)은 app.js 가 틀 폭에 맞춰 정한다.
   ════════════════════════════════════════════════════════════════ */
.hero-copy h1 { max-width: 14ch; }
:lang(ko) .hero-copy h1 { max-width: 16ch; }
.md-frame {
  position: relative; margin: clamp(40px, 6vw, 64px) 0 0; border: 1.5px solid var(--ink); border-radius: 10px;
  overflow: hidden; background: #fff;
  box-shadow: 14px 14px 0 color-mix(in srgb, var(--route) 20%, transparent);
}
.md-frame .shot-bar em { font-size: 11px; }
.md-viewport { position: relative; aspect-ratio: 1680 / 880; overflow: hidden; background: #fff; }
.md {
  position: absolute; top: 0; left: 0; width: 1680px; height: 880px;
  transform-origin: 0 0; transform: scale(var(--s, .62));
  font-family: "Inter", "Pretendard Variable", Pretendard, -apple-system, "Segoe UI", sans-serif;
  font-size: 16px; line-height: 1.5; color: #0f172a; background: #fff; word-break: normal;
}
.md i.bi { line-height: 1; }
.md-top1 { height: 60px; display: flex; align-items: center; gap: 16px; padding: 0 28px; border-bottom: 1px solid #e2e8f0; }
.md-brand { font-size: 1.6rem; font-weight: 800; letter-spacing: -1.5px; line-height: 1; }
.md-org { display: inline-flex; align-items: center; gap: 6px; font-size: .85rem; color: #334155; border: 1px solid #e2e8f0; border-radius: 6px; padding: 5px 10px; }
.md-grow { flex: 1; }
.md-ico { font-size: 1.15rem; color: #475569; }
.md-me { width: 32px; height: 32px; border-radius: 50%; background: #0f172a; color: #fff; display: grid; place-items: center; font-weight: 700; font-size: .8rem; }
.md-top2 { height: 48px; display: flex; gap: 28px; padding: 0 28px; border-bottom: 1px solid #e2e8f0; }
.md-cat { display: flex; align-items: center; font-size: .9rem; font-weight: 500; color: #334155; border-bottom: 2px solid transparent; white-space: nowrap; }
.md-cat.active { color: #0f172a; font-weight: 700; border-bottom-color: #0f172a; }
.md-body { display: flex; height: calc(880px - 110px); }
.md-side { width: 240px; min-width: 240px; border-right: 1px solid #e2e8f0; padding: 2.5rem .75rem; display: flex; flex-direction: column; }
.md-side-title { font-size: .78rem; font-weight: 800; color: #475569; text-transform: uppercase; letter-spacing: .02em; padding: 0 1rem 1.25rem; }
.md-side-link { display: flex; align-items: center; gap: .65rem; padding: .6rem 1rem; font-size: .875rem; color: #1e293b; border-radius: 8px; margin-bottom: 2px; }
.md-side-link.active { background: #f1f5f9; font-weight: 700; }
.md-main { flex: 1; min-width: 0; padding: 28px 28px 0; overflow: hidden; }
.md-head { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 18px; }
.md-title { font-size: 1.15rem; font-weight: 700; letter-spacing: -.3px; line-height: 1.3; }
.md-sub { font-size: .8rem; color: #475569; margin-top: 4px; }
.md-actions { display: flex; gap: .5rem; }
.md-btn-create { font-size: .75rem; font-weight: 700; color: #fff; background: #0f172a; border: 1px solid #0f172a; padding: .4rem 1.1rem; border-radius: 5px; }
.md-btn-del { font-size: .75rem; font-weight: 600; background: #ede9fe; color: #5b21b6; padding: .4rem .9rem; border-radius: 5px; }
.md-board-wrap { overflow: hidden; }
/* 백로그 칸만큼 옆으로 넘겨 둔 상태 = 실제 보드의 가로 스크롤 위치 */
.md-board { display: flex; gap: 12px; align-items: flex-start; transform: translateX(-276px); }
.md-col { flex: 0 0 264px; min-width: 264px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; padding: 10px; }
.md-col-header { display: flex; align-items: center; gap: 6px; font-size: .78rem; font-weight: 700; margin-bottom: 8px; }
.md-col-count { color: #94a3b8; font-weight: 600; }
.md-col-add { margin-left: auto; color: #64748b; font-size: .8rem; }
.md-cards { min-height: 20px; }
.md-card { position: relative; background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 8px 10px; margin-bottom: 8px; }
.md-card-epic { font-size: .7rem; color: #64748b; margin-bottom: 2px; }
.md-card-title { font-size: .85rem; font-weight: 600; line-height: 1.3; }
.md-card-foot { display: flex; align-items: center; gap: 6px; margin-top: 6px; font-size: .72rem; color: #64748b; }
.md-avatar { width: 20px; height: 20px; border-radius: 50%; background: #4f46e5; color: #fff; font-size: .6rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; margin-left: auto; flex-shrink: 0; }
.md-badge { display: inline-block; background: #f1f5f9; color: #475569; font-size: .62rem; font-weight: 700; padding: .15em .45em; border-radius: 4px; margin-right: 4px; vertical-align: 1px; }
.md-badge--warn { background: #fef3c7; color: #92400e; }
.md-add-story { border: 1px dashed #cbd5e1; border-radius: 8px; color: #64748b; font-size: .75rem; padding: 6px; text-align: center; }
.md-card.md-lift { z-index: 5; border-color: #94a3b8; box-shadow: 0 14px 28px rgba(15, 23, 42, .18); }
.md-card.md-new { animation: md-flash 1.2s ease; }
@keyframes md-flash { 0% { background: #eef2ff; border-color: #4f46e5; } 100% { background: #fff; } }
.md-cursor { position: absolute; left: 0; top: 0; z-index: 10; pointer-events: none; opacity: 0; transition: opacity .3s; }
.md-cursor.on { opacity: 1; }
.md-board.md-reset { transition: opacity .5s; opacity: 0; }
@media (prefers-reduced-motion: reduce) { .md-card.md-new { animation: none; } }

/* ════════════════════════════════════════════════════════════════
   테마 D · Axowl 스타일 (9/26 Sonny 확정) — 위의 기본 층을 덮어쓴다.
   ════════════════════════════════════════════════════════════════ */
:root {
  --chart: #FAFAFA; --ink: #18181B; --ink-soft: #52525B; --route: #16A34A;
  --sky: #F4F4F5; --contour: #E4E4E7; --strip: #FFFFFF; --paper: #FFFFFF;
  --display: "Inter", system-ui, sans-serif;
  --body: "Inter", system-ui, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, monospace;
  --dark: #0A0A0A; --dark-card: #111113; --dark-line: #242424; --dark-text: #9A9A9D;
}
/* 언어별 글꼴 — 라틴 글자는 전 언어 Inter(Axowl 과 같게), 한·중·일 글자만 각 언어 글꼴로 넘어간다.
   글꼴 파일은 그 언어 페이지만 불러온다(src/languages.json 의 fonts). */
:lang(ko) { --cjk: "Pretendard Variable", Pretendard; }
:lang(ja) { --cjk: "Noto Sans JP"; }
:lang(zh-Hant) { --cjk: "Noto Sans TC"; }
:lang(ko), :lang(ja), :lang(zh-Hant) {
  --display: "Inter", var(--cjk), system-ui, sans-serif;
  --body: "Inter", var(--cjk), system-ui, sans-serif;
}
:lang(ja) body, :lang(zh-Hant) body { line-break: strict; overflow-wrap: anywhere; line-height: 1.75; }
:lang(ja) h1, :lang(ja) h2, :lang(ja) h3, :lang(zh-Hant) h1, :lang(zh-Hant) h2, :lang(zh-Hant) h3 { line-height: 1.25; letter-spacing: -.01em; }
:lang(ja) .md, :lang(zh-Hant) .md, :lang(ko) .md { font-family: "Inter", var(--cjk), -apple-system, "Segoe UI", sans-serif; }
/* 독일어 등 긴 합성어가 좁은 화면에서 넘치지 않게 */
:lang(de) h1, :lang(de) h2, :lang(de) h3 { hyphens: auto; overflow-wrap: break-word; }

/* 언어 메뉴 — JS 없이 <details> 로 연다 */
.langs { position: relative; }
.langs > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; user-select: none; }
.langs > summary::-webkit-details-marker { display: none; }
.langs > summary::after { content: ""; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: translateY(-2px) rotate(45deg); opacity: .6; }
.langs[open] > summary { background: var(--sky); }
.langs ul { position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; min-width: 168px; margin: 0; padding: 6px; list-style: none; background: #fff; border: 1px solid var(--contour); border-radius: 8px; box-shadow: 0 12px 32px rgba(24,24,27,.12); }
.langs ul a { display: block; padding: 8px 10px; border-radius: 6px; font: 400 14px/1.2 "Inter", var(--cjk, system-ui), sans-serif; color: var(--ink); text-decoration: none; }
.langs ul a:hover { background: var(--sky); }
.langs ul a[aria-current] { font-weight: 600; }
.langs ul a[aria-current]::after { content: " ✓"; color: var(--route); }
@media (max-width: 860px) { .langs { margin-left: auto; } .langs .lang { margin-left: 0; } }
body { background: #fff; font-size: 16px; }
h1, h2, h3 { font-family: var(--display); font-stretch: normal; letter-spacing: -.035em; }
h1 { font-weight: 800; font-size: clamp(40px, 4.6vw, 64px); line-height: 1.04; letter-spacing: -.04em; }
h2 { font-weight: 700; font-size: clamp(32px, 3.9vw, 56px); line-height: 1.02; max-width: 16ch; }
h3 { font-weight: 700; font-size: 20px; letter-spacing: -.02em; }
.lede { font-size: 17px; line-height: 1.6; color: #57575A; }

/* 헤더 — axowl.com 과 같은 57px 흰 바 */
header.top { background: #fff; backdrop-filter: none; border-bottom: 1px solid var(--contour); }
.top-in { height: 57px; }
.mark { font-family: "Inter", sans-serif; font-stretch: normal; font-size: 22px; font-weight: 800; letter-spacing: -.025em; color: var(--ink); }
.mark b { color: #A1A1AA; font-weight: 800; }
nav.links { font-size: 13px; font-weight: 500; }
nav.links a { color: var(--ink-soft); }
.lang { font-family: "Inter", sans-serif; font-size: 13px; border: 0; box-shadow: 0 0 0 1px var(--contour); border-radius: 6px; padding: 7px 10px; }
.lang:hover { background: var(--sky); color: var(--ink); }

/* 버튼 — btn-kinde-primary 그대로 */
.btn { font: 500 14px/1 "Inter", sans-serif; border-radius: 6px; padding: 11px 16px; border: 0; }
.top .btn { font-size: 13px; padding: 9px 12px; }
.btn-primary {
  background: #27272A; color: rgba(255,255,255,.92);
  box-shadow: inset 0 .75px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.4), 0 0 0 1px #18181B;
}
.btn-primary:hover { background: #3F3F46; }

/* 히어로 — 가운데 정렬 + 세로 가이드 선(rails) */
.hero { background: var(--chart); text-align: center; padding-top: clamp(64px, 8vw, 104px); }
.hero::before {
  inset: auto; top: 0; bottom: 0; left: 50%; width: min(1120px, calc(100% - 32px)); transform: translateX(-50%);
  opacity: 1; background: none; border-left: 1px solid var(--contour); border-right: 1px solid var(--contour);
}
.hero-copy { display: flex; flex-direction: column; align-items: center; }
.hero-copy h1 { max-width: 16ch; }
.hero .eyebrow { font-family: "Inter", sans-serif; font-size: 14px; font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--ink); display: inline-flex; align-items: center; gap: 8px; }
.hero .eyebrow::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--route); box-shadow: 0 0 0 4px rgba(22,163,74,.15); }
.hero .sub { max-width: 680px; margin: 22px auto 0; font-size: 16px; line-height: 1.5; color: var(--ink-soft); }
.hero .ctas { justify-content: center; }
.hero .ctas a.more { font-size: 14px; }

/* 제품 화면 — hs-mockup-card 그대로 */
.md-frame {
  text-align: left; border: 1px solid var(--contour); border-radius: 12px;
  box-shadow: 0 60px 120px -20px rgba(24,24,27,.25), 0 30px 60px -30px rgba(24,24,27,.35), 0 0 0 1px rgba(24,24,27,.04);
}
.md-frame .shot-bar { background: #FAFAFA; border-bottom: 1px solid var(--contour); padding: 10px 14px; }
.md-frame .shot-bar > span { width: 10px; height: 10px; background: #E4E4E7 !important; }
.md-frame .shot-bar em { color: #71717A; font-family: var(--mono); font-size: 12px; }

/* 비행 계획서 — 흰 모노 카드 */
.strip { text-align: left; background: #fff; border: 1px solid var(--contour); border-radius: 12px; box-shadow: 0 1px 2px rgba(0,0,0,.04); overflow: hidden; }
.cell { border-color: var(--contour) !important; border-right-width: 1px !important; }
.cell .k { font-family: var(--mono); color: #71717A; }
.cell .v { font-family: var(--mono); color: var(--ink); }
.route .line { stroke: var(--route); stroke-width: 2.5; }
.route .wp { fill: #fff; stroke: var(--ink); }
.route .plane path { fill: var(--ink); }
.cell.status .v[data-s="1"], .cell.status .v[data-s="2"], .cell.status .v[data-s="3"] { color: var(--route); }

/* 섹션 라벨 — lp-kicker 그대로 */
.kicker { font-family: var(--mono); font-size: 11px; font-weight: 500; letter-spacing: .18em; color: var(--route); }
section.block { border-top: 0; padding: 100px 0 90px; }

/* 섹션 배경 교대: 2 흰 · 3 검정 · 4 미색 · 5 흰 · 6 검정 · 7 흰 · 8 검정 */
main > section:nth-of-type(2), main > section:nth-of-type(5), main > section:nth-of-type(7) { background: #fff; }
main > section:nth-of-type(4) { background: #F4F4F2; }
main > section:nth-of-type(3), main > section:nth-of-type(6), main > section:nth-of-type(8) { background: var(--dark); color: #fff; }
main > section:nth-of-type(3) .lede, main > section:nth-of-type(6) .lede, main > section:nth-of-type(8) .lede { color: var(--dark-text); }
main > section:nth-of-type(3) .kicker, main > section:nth-of-type(6) .kicker, main > section:nth-of-type(8) .kicker { color: #4ADE80; }

/* 대비 */
.versus { background: #fff; border: 1px solid var(--contour); border-radius: 12px; }
.versus > div + div { background: #fff; border-color: var(--contour); }
.versus > div:first-child { background: #FAFAFA; }
.versus .old li { color: #A1A1AA; }
.versus .new li::before { color: var(--route); }
.versus .mono { font-family: var(--mono); color: #71717A; font-size: 11px; letter-spacing: .12em; }

/* 기반 — 검정 섹션 카드 */
.card { background: var(--dark-card); border: 1px solid var(--dark-line); border-radius: 10px; color: #fff; }
.card p { color: var(--dark-text); }
.card .n { color: #71717A; font-family: var(--mono); }
.card .sym * { stroke: #4ADE80; }
.card:hover { border-color: #3F3F46; box-shadow: 0 20px 40px rgba(0,0,0,.5); }

/* 과정 — 미색 섹션 */
.legs::before { background: repeating-linear-gradient(90deg, #D4D4D8 0 12px, transparent 12px 20px); }
@media (max-width: 980px) { .legs::before { background: repeating-linear-gradient(180deg, #D4D4D8 0 12px, transparent 12px 20px); } }
.legs .dot { background: #fff; border: 1px solid #D4D4D8; font-family: var(--mono); }
.legs li.on .dot { background: var(--ink); border-color: var(--ink); color: #fff; }

/* 움직이는 플랜 — 흰 섹션 */
.col { background: #FAFAFA; border: 1px solid var(--contour); border-radius: 10px; }
.colh { font-family: var(--mono); color: #71717A; }
.story { border: 1px solid var(--contour); border-radius: 8px; }
.story .sid, .story .badge, .story .stamp { font-family: var(--mono); }
.story .badge { background: #F4F4F5; }
.story .badge[data-k="ok"] { background: #DCFCE7; color: #15803D; }
.story .stamp { color: var(--route); border-color: var(--route); }
.log { background: var(--dark); border-radius: 12px; font-family: var(--mono); }
.logh { color: #4ADE80; }

/* 에이전트·조직 — 검정 섹션 */
.rules div { background: var(--dark-card); border: 1px solid var(--dark-line); border-radius: 8px; color: #E4E4E7; }
.rules .ok { color: #4ADE80; }
.rules .no { color: #F87171; }
.orgline { color: #4ADE80; font-family: var(--mono); }

/* 가격 — 흰 섹션 */
.price { border: 1px solid var(--contour); border-radius: 12px; }
.price .amount { font-family: "Inter", sans-serif; font-stretch: normal; letter-spacing: -.05em; }
.price .side { background: #FAFAFA; border-color: var(--contour); }
.price .per, .price .side td:last-child { font-family: var(--mono); }
.price li::before { color: var(--route); }
.js .calc { background: #fff; border: 1px solid var(--contour); border-radius: 12px; }
.sum { background: #FAFAFA; border-color: var(--contour); }
.calc .apps output, .sum .total span:last-child { font-family: "Inter", sans-serif; font-stretch: normal; letter-spacing: -.04em; color: var(--ink); }
.seg button { border: 0; box-shadow: 0 0 0 1px var(--contour); border-radius: 6px; font-family: "Inter", sans-serif; }
.seg button[aria-pressed="true"] { background: #27272A; color: #fff; box-shadow: 0 0 0 1px #18181B; }
.calc .apps input, .chk input { accent-color: var(--ink); }

/* 마지막 — 검정 섹션, 흰 버튼 */
.final { background: var(--dark); }
.final::before { opacity: .25; background: repeating-linear-gradient(90deg, #4ADE80 0 14px, transparent 14px 26px); }
.final .btn-primary { background: #fff; color: #0A0A0A; box-shadow: none; font-weight: 600; }
.final .btn-primary:hover { background: #E4E4E7; }
footer { background: var(--dark); border-top-color: var(--dark-line); color: #71717A; }
footer a { color: #A1A1AA; }

@media (max-width: 860px) {
  h2 { max-width: none; }
  .hero::before { display: none; }
}
