/* Lusite (루사이트) - 하위 페이지: 미리보기(preview), 의뢰·결제(checkout), 약관·처리방침(terms, privacy)
   style.css의 토큰·버튼·푸터·라디오 카드(.care__opt/.care__box)·입력칸(.field)을 그대로 쓰고, 여기에는 페이지 고유 배치만 둔다. */

/* ---------- 공통 상단 바 (고정하지 않음) ---------- */
.subnav { display: flex; justify-content: center; padding: 12px 0 0; }
.subpage .footer { margin-top: clamp(64px, 8vw, 112px); }
.footer--sub .footer__copy { margin-top: 20px; }

/* ---------- 약관·처리방침 자리 ---------- */
.legal { padding-block: clamp(48px, 6vw, 88px) 0; }
.legal__wrap { max-width: 820px; }
.legal__title { margin: 0; font-size: clamp(2rem, 4vw, 3rem); line-height: 1.2; letter-spacing: -0.035em; font-weight: 720; }
.legal__draft {
  margin: 20px 0 0; padding: 14px 18px; border-radius: 14px;
  background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--line); font-size: 15px;
}
.legal__toc { margin-top: 32px; padding: 20px 24px; border-radius: 18px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.legal__toc ol { margin: 0; padding-left: 1.4em; display: grid; gap: 6px; font-size: 15px; columns: 2; column-gap: 32px; }
.legal__toc li { break-inside: avoid; }
.legal__toc a { color: var(--ink-2); }
.legal__toc a:hover { color: var(--ink); }
.legal__body { margin-top: 40px; display: grid; gap: 28px; }
.legal__item { scroll-margin-top: 24px; min-width: 0; padding-block: 0; } /* min-width: 그리드 항목이 표(.ck-table-wrap) 폭만큼 늘어나 375px에서 넘치지 않게. padding-block: style.css 전역 section 여백(--sec)을 끄고 .legal__body gap으로만 띄운다 */
.legal__h { margin: 0; font-size: 19px; font-weight: 720; letter-spacing: -0.02em; }
.legal__ph { margin: 8px 0 0; color: var(--ink-3); }
.legal__meta { margin: 40px 0 0; font-size: 14px; color: var(--ink-2); }

/* ---------- 미리보기 래퍼 ---------- */
/* 열 너비를 화면에 고정한다. 'auto'면 상단 바의 줄바꿈 없는 템플릿 이름 길이만큼 열이 넓어져, 이름이 긴 템플릿은 iframe이 화면보다 넓어지고
   오른쪽 6~14px가 잘렸다(모바일 375px 실측: interior-film 381px, music-academy 389px, 2026-10-28) */
.pv { margin: 0; height: 100dvh; display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); overflow: hidden; background: var(--bg); }
.pv__bar {
  display: flex; align-items: center; gap: 14px; min-height: 52px;
  padding: 8px max(12px, env(safe-area-inset-right)) 8px max(12px, env(safe-area-inset-left));
  padding-top: max(8px, env(safe-area-inset-top));
  background: var(--surface); border-bottom: 1px solid var(--line);
}
.pv__back {
  flex: none; display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 16px 0 12px;
  border-radius: 999px; font-size: 14px; font-weight: 650; color: var(--ink); text-decoration: none;
  box-shadow: inset 0 0 0 1px var(--line-2);
  transition: box-shadow 0.25s var(--ease), background-color 0.25s var(--ease);
}
.pv__back:hover { background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--ink); }
.pv__back svg { width: 14px; height: 14px; fill: currentColor; transform: rotate(180deg); }
.pv__name { min-width: 0; margin: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 14px; color: var(--ink-2); }
.pv__name strong { color: var(--ink); font-weight: 700; }
.pv__main { position: relative; min-height: 0; }
.pv__frame { display: block; width: 100%; height: 100%; border: 0; background: #fff; /* 템플릿 로드 전 빈 화면이 번쩍이지 않게 흰 바탕(템플릿 대부분이 밝다) */ }
.pv__noscript { margin: 0; padding: 48px var(--gutter); }
/* 데스크톱: 화면 아래 가운데에 떠 있는 버튼 */
.pv__dock {
  position: fixed; left: 50%; bottom: calc(24px + env(safe-area-inset-bottom)); z-index: 10;
  transform: translateX(-50%);
}
.pv__cta { box-shadow: 0 20px 40px -18px rgba(0, 0, 0, 0.55); }
/* 모바일: 템플릿 위를 덮지 않게 아래에 따로 띠를 두고 그 안에 버튼을 놓는다(iframe은 띠 위까지만) */
/* 하단 띠의 '목록' 버튼은 모바일에서만(데스크톱은 상단 바의 '템플릿 목록'을 쓴다) */
.pv__back-m { display: none; }
@media (max-width: 640px) {
  /* 모바일은 상단 바를 없애고(오너 결정 2026-10-28) 템플릿이 화면 위까지 차게 한다. 목록으로 돌아가기는 하단 띠 왼쪽 */
  .pv { grid-template-rows: minmax(0, 1fr) auto; }
  .pv__bar { display: none; }
  .pv__dock {
    position: static; transform: none; display: flex; gap: 8px;
    padding: 10px max(12px, env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
    background: var(--surface); border-top: 1px solid var(--line);
  }
  .pv__back-m {
    flex: none; display: inline-flex; align-items: center; gap: 6px; height: 48px; padding: 0 16px 0 12px;
    border-radius: 999px; font-size: 15px; font-weight: 650; color: var(--ink); text-decoration: none;
    box-shadow: inset 0 0 0 1px var(--line-2);
  }
  .pv__back-m svg { width: 14px; height: 14px; fill: currentColor; transform: rotate(180deg); }
  .pv__cta { flex: 1; min-width: 0; height: 48px; justify-content: space-between; box-shadow: none; }
}

/* ---------- 의뢰·결제 ---------- */
.ck { padding-block: clamp(40px, 5vw, 72px) 0; }
.ck__head { max-width: 760px; }
.ck__title { margin: 0; font-size: clamp(2rem, 4vw, 3rem); line-height: 1.2; letter-spacing: -0.035em; font-weight: 720; }
.ck__noscript { margin: 20px 0 0; padding: 14px 18px; border-radius: 14px; background: var(--accent-soft); }
.ck__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 380px); gap: clamp(20px, 3vw, 40px); align-items: start; margin-top: 36px; }
.ck__form { display: grid; gap: 14px; min-width: 0; }

.ck-step { padding: clamp(20px, 2.6vw, 30px); border-radius: 22px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.ck-step__title { display: flex; align-items: center; gap: 12px; margin: 0 0 18px; font-size: 19px; font-weight: 720; letter-spacing: -0.02em; }
.ck-step__num {
  flex: none; display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%;
  background: var(--accent); color: var(--accent-ink); font-family: var(--f-disp); font-size: 13px; font-weight: 600;
}
.ck-hint { margin: 10px 0 0; font-size: 13px; color: var(--ink-2); }
.opt-tag { font-weight: 500; color: var(--ink-3); }

.ck-opts { display: grid; gap: 8px; }
.ck-opts--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ck-opts--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ck-opts .care__box { height: 100%; }
.ck-opts .care__box em { white-space: nowrap; }

.ck-fs { margin: 0; padding: 0; border: 0; min-width: 0; }
.ck-care, .ck-biztype, .ck-sub { margin-top: 22px; }
.ck-legend { float: left; width: 100%; margin-bottom: 10px; padding: 0; font-size: 15px; font-weight: 700; }
.ck-legend + * { clear: left; } /* legend를 띄워 테두리 위에 걸치지 않게(일반 제목처럼 보이게) */
.ck-legend span { font-size: 13px; font-weight: 500; color: var(--ink-3); }
.ck-sub { padding-top: 20px; border-top: 1px solid var(--line); }

/* 2지선다(개인사업자/법인사업자, 현금영수증): 알약 선택지. 카드(.ck-step) 안에서 또 하나의 채운 판이 되지 않게
   바깥 트랙(배경·테두리)은 두지 않고 알약마다 가는 테두리만 둔다 */
.ck-seg { display: inline-flex; flex-wrap: wrap; gap: 8px; }
.ck-seg label { position: relative; cursor: pointer; }
.ck-seg input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.ck-seg span {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border-radius: 999px;
  font-size: 14px; font-weight: 600; color: var(--ink-2); box-shadow: inset 0 0 0 1px var(--line-2);
  transition: background-color 0.25s var(--ease), color 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.ck-seg label:hover span { box-shadow: inset 0 0 0 1px var(--ink); color: var(--ink); }
.ck-seg input:checked + span { background: var(--ink); color: var(--bg); box-shadow: none; }
.ck-seg input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }

.ck-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }

.ck-tpl { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.ck-tpl:focus { outline: none; }
.ck-tpl:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; border-radius: 14px; }
.ck-tpl__empty { margin: 0; color: var(--ink-2); }
.ck-tpl__img { width: 200px; height: auto; aspect-ratio: 16 / 10; object-fit: cover; object-position: top; border-radius: 12px; box-shadow: 0 0 0 1px var(--line), 0 16px 32px -24px rgba(var(--shadow-tint), 0.5); }
.ck-tpl__meta { min-width: 0; flex: 1 1 200px; }
.ck-tpl__cat { margin: 0; font-size: 13px; font-weight: 650; color: var(--accent-text); }
.ck-tpl__name { margin: 2px 0 0; font-size: 20px; font-weight: 720; letter-spacing: -0.02em; }
.ck-tpl__links { margin: 8px 0 0; display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 14px; }
.ck-tpl__links a { display: inline-flex; align-items: center; min-height: 44px; color: var(--ink-2); }
.ck-tpl__links a:hover { color: var(--ink); }

.ck-consents { display: grid; gap: 14px; }
.ck-consent { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; }
.ck-consent > .field__err, .ck-consent > .ck-hint, .ck-consent > details { flex-basis: 100%; }
.ck-consent > .ck-hint { margin: 0 0 0 30px; }
.ck-check { display: flex; align-items: flex-start; gap: 10px; min-height: 28px; font-size: 15px; cursor: pointer; }
.ck-check input { flex: none; width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--accent); }
.ck-check b { font-weight: 700; }
.ck-consent__link { display: inline-flex; align-items: center; min-height: 44px; font-size: 14px; color: var(--ink-2); }
.ck-consent__more { margin-left: 30px; }
.ck-consent__more summary { width: fit-content; padding: 8px 0; font-size: 13px; color: var(--ink-2); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.ck-table-wrap { margin-top: 10px; overflow-x: auto; border-block: 1px solid var(--line-2); } /* 둥근 테두리 상자 대신 위아래 선(카드 안 카드 방지) */
.ck-table { width: 100%; min-width: 520px; border-collapse: collapse; font-size: 13px; }
.ck-table th, .ck-table td { padding: 10px 12px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); }
.ck-table thead th { background: var(--bg); font-weight: 650; color: var(--ink-2); }
.ck-table tbody th { font-weight: 650; white-space: nowrap; }
.ck-table tbody tr:last-child > * { border-bottom: 0; }

/* 결제 금액 요약: 데스크톱은 오른쪽에 붙어 따라오고, 모바일은 같은 요소가 하단 고정 바가 된다(버튼을 복제하지 않는다) */
/* 한 겹 카드(예전 회색 껍데기 + 속판 이중 베젤은 카드 속 카드라 걷어 냄). .ck-sum은 sticky·모바일 고정만 맡는다 */
.ck-sum { position: sticky; top: 20px; }
.ck-sum__core { padding: clamp(22px, 2.6vw, 30px); border-radius: 26px; background: var(--surface-hi); box-shadow: inset 0 1px 0 var(--hi), inset 0 0 0 1px var(--line), 0 30px 60px -44px rgba(var(--shadow-tint), 0.5); }
.ck-sum__title { margin: 0 0 16px; font-size: 15px; font-weight: 650; color: var(--ink-2); }
.ck-sum__rows { margin: 0; display: grid; gap: 10px; }
.ck-sum__rows > div { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; font-size: 15px; }
.ck-sum__rows dt { color: var(--ink-2); }
.ck-sum__rows dt span { margin-left: 4px; font-size: 12px; color: var(--ink-3); }
.ck-sum__rows dd { margin: 0; font-weight: 650; text-align: right; font-variant-numeric: tabular-nums; }
.ck-sum__note { margin: 10px 0 0; font-size: 13px; color: var(--ink-2); }
.ck-sum__bar { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line); display: grid; gap: 14px; }
.ck-sum__toggle { display: none; }
.ck-sum__today { margin: 0; display: grid; gap: 2px; }
.ck-sum__today span { font-size: 14px; font-weight: 650; }
.ck-sum__today strong {
  font-family: var(--f-disp); font-weight: 600; font-size: clamp(1.6rem, 2.4vw, 2rem);
  letter-spacing: -0.04em; font-variant-numeric: tabular-nums; white-space: nowrap;
}
.ck-sum__pay { width: 100%; }
.ck-sum__status { margin: 0; font-size: 13px; font-weight: 600; color: var(--danger); }
.ck-sum__status:empty { display: none; }
.ck-sum__demo { margin: 12px 0 0; font-size: 12px; color: var(--ink-3); }

@media (max-width: 900px) {
  .ck-page { padding-bottom: calc(92px + env(safe-area-inset-bottom)); }
  .ck__grid { grid-template-columns: minmax(0, 1fr); }
  .ck-sum {
    position: fixed; left: 0; right: 0; bottom: 0; top: auto; z-index: 30;
    padding: 0; border-radius: 20px 20px 0 0; background: transparent; box-shadow: none;
  }
  .ck-sum__core {
    padding: 12px max(16px, env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
    border-radius: 20px 20px 0 0; box-shadow: 0 -1px 0 var(--line), 0 -18px 40px -24px rgba(var(--shadow-tint), 0.5);
  }
  .ck-sum__title, .ck-sum__demo { display: none; }
  .ck-sum__details { display: none; padding-bottom: 12px; max-height: 50vh; overflow-y: auto; }
  .ck-sum.is-open .ck-sum__details { display: block; }
  .ck-sum__bar { margin: 0; padding: 0; border: 0; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; }
  .ck-sum.is-open .ck-sum__bar { padding-top: 12px; border-top: 1px solid var(--line); }
  .ck-sum__toggle {
    display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 12px; border: 0; border-radius: 999px;
    background: var(--accent-soft); color: var(--ink); font-size: 13px; font-weight: 650; cursor: pointer;
  }
  .ck-sum__toggle svg { width: 10px; height: 10px; fill: currentColor; transform: rotate(45deg); transition: transform 0.3s var(--ease); }
  .ck-sum.is-open .ck-sum__toggle svg { transform: rotate(0deg); }
  .ck-sum__today span { font-size: 12px; font-weight: 600; color: var(--ink-2); }
  .ck-sum__today strong { font-size: 1.25rem; }
  .ck-sum__pay { width: auto; height: 48px; padding: 0 20px; }
  .ck-sum__status { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  .ck-opts--2, .ck-opts--3, .ck-fields { grid-template-columns: minmax(0, 1fr); }
  .ck-tpl__img { width: 100%; }
  .ck-consent > .ck-hint, .ck-consent__more { margin-left: 0; }
  .legal__toc ol { columns: 1; }
}

/* ---------- 결제 데모 모달 (payment.js) ---------- */
.paydemo {
  width: min(100% - 32px, 440px); padding: 6px; border: 0; border-radius: 28px;
  background: var(--shell); color: var(--ink); box-shadow: 0 40px 80px -30px rgba(var(--shadow-tint), 0.6);
}
.paydemo::backdrop { background: rgba(10, 12, 16, 0.45); }
.paydemo__core { padding: 26px; border-radius: 22px; background: var(--surface-hi); }
.paydemo__title { margin: 0; font-size: 20px; font-weight: 720; letter-spacing: -0.02em; }
.paydemo__msg { margin: 10px 0 0; font-size: 15px; color: var(--ink-2); }
.paydemo__rows { margin: 18px 0 0; display: grid; gap: 8px; padding-top: 14px; border-top: 1px solid var(--line); }
.paydemo__rows > div { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; }
.paydemo__rows dt { color: var(--ink-2); }
.paydemo__rows dd { margin: 0; font-weight: 650; text-align: right; }
.paydemo__foot { margin: 20px 0 0; }
.paydemo__foot .btn { width: 100%; }
.ck-sum__rows > .ck-sum__total { padding-bottom: 10px; border-bottom: 1px solid var(--line); }
.ck-sum__total dd { font-family: var(--f-disp); font-weight: 600; letter-spacing: -0.03em; }

/* ---------- 앱·윈도우 개발 상담 (custom.html) ---------- */
.cu-hero { padding-block: clamp(48px, 7vw, 104px) clamp(24px, 4vw, 56px); }
.cu-hero__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(28px, 5vw, 72px); align-items: center; }
.cu-hero__title { margin: 0; font-size: clamp(2.2rem, 4.4vw, 3.8rem); line-height: 1.12; letter-spacing: -0.04em; font-weight: 760; text-wrap: balance; }
.cu-hero__cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.cu-kinds { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; border-top: 1px solid var(--line-2); }
.cu-kinds li { display: grid; gap: 2px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.cu-kinds strong { font-size: clamp(1.2rem, 1.8vw, 1.5rem); font-weight: 720; letter-spacing: -0.025em; }
.cu-kinds span { font-size: 14px; color: var(--ink-2); }
.cu-kinds__note { margin: 12px 0 0; font-size: 13px; color: var(--ink-3); }
.cu-terms { padding-block: clamp(56px, 7vw, 104px); }
.cu-terms__list { margin: 36px 0 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; }
/* 견적·일정·결제 3칸, 전달 범위 한 줄 전체, 스토어 출시·계정·유지보수 3칸(빈칸 없이) */
.cu-terms__list > div { grid-column: span 2; }
.cu-terms__list > div { padding: 22px 24px; border-radius: 20px; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.cu-terms__list dt { font-size: 15px; font-weight: 720; }
.cu-terms__list dd { margin: 6px 0 0; color: var(--ink-2); font-size: 15px; }
.cu-terms__list > .cu-terms__key { grid-column: 1 / -1; background: var(--ink); box-shadow: none; }
.cu-terms__key dt { color: var(--bg); }
.cu-terms__key dd { color: color-mix(in srgb, var(--bg) 82%, var(--ink)); font-size: 16px; }
.cu-case { padding-block: clamp(56px, 7vw, 104px); }
.cu-faq { padding-block: clamp(56px, 7vw, 104px); }
.cu-contact { padding-block: clamp(56px, 7vw, 104px) 0; }
.cu-fs { margin: 0; padding: 0; border: 0; min-width: 0; }
.cu-legend { float: left; width: 100%; margin-bottom: 8px; padding: 0; font-size: 14px; font-weight: 650; }
.cu-legend + * { clear: left; }
.cu-checks { display: flex; flex-wrap: wrap; gap: 8px; }
.cu-check { position: relative; cursor: pointer; }
.cu-check input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.cu-check span {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border-radius: 999px;
  font-size: 14px; font-weight: 600; color: var(--ink-2); box-shadow: inset 0 0 0 1px var(--line-2);
  transition: background-color 0.25s var(--ease), color 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.cu-check:hover span { box-shadow: inset 0 0 0 1px var(--ink); color: var(--ink); }
.cu-check input:checked + span { background: var(--ink); color: var(--bg); box-shadow: none; }
.cu-check input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.cu-check input[aria-invalid="true"] + span { box-shadow: inset 0 0 0 1px var(--danger); }
@media (max-width: 900px) {
  .cu-hero__grid, .cu-terms__list { grid-template-columns: minmax(0, 1fr); }
  .cu-terms__list > div { grid-column: 1 / -1; }
}
