/* Contbot 사용자 화면 셸. 색·서체·간격·모션은 tokens.css 변수만 쓴다(값 직접 지정 금지, 폴백만 허용). 렌더러 스타일은 answer-kit.css. */
@font-face { font-family: "Pretendard Variable"; font-weight: 45 920; font-style: normal; font-display: swap; src: url("/fonts/PretendardVariable.woff2") format("woff2-variations"); }

html { background: var(--surface-sunken); }
[hidden] { display: none !important; } /* display:flex 등이 hidden 속성을 덮어쓰지 않게 */
body.cb { margin: 0; font-family: var(--font-sans); color: var(--ink-900); background: var(--surface-sunken); font-size: var(--fs-body); line-height: 1.6; word-break: keep-all; }
/* 레이아웃 기준(디자인 목업 1920 아트보드): 콘텐츠 컨테이너 최대 1600px, 좌우 여백 max(40px, 남는 폭/2). 히어로·질문창 960px, 답변 요약 1040px, 사이드 340px */
.cb-wrap { box-sizing: border-box; width: 100%; padding-inline: max(var(--space-10, 40px), calc((100% - 1600px) / 2)); }
.cb-skip { position: absolute; left: -999px; top: var(--space-2, 8px); background: var(--surface-inverse); color: var(--surface); padding: var(--space-2, 8px) var(--space-4, 16px); border-radius: var(--radius-sm); z-index: 10; }
.cb-skip:focus { left: var(--space-2, 8px); outline: var(--focus-width) solid var(--focus); }
:focus-visible { outline: var(--focus-width) solid var(--focus); outline-offset: var(--focus-offset); }

/* 헤더 */
.cb-header { background: var(--surface); border-bottom: 1px solid var(--line); }
.cb-header__in { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4, 16px); min-height: 64px; }
.cb-brand { display: inline-flex; align-items: center; gap: var(--space-3, 12px); color: inherit; text-decoration: none; font-size: var(--fs-title-sm); }
.cb-brand__mark { width: 28px; height: 28px; border-radius: 50%; background: var(--brand); box-shadow: inset 0 0 0 6px var(--brand-subtle); }
.cb-brand__sub { color: var(--ink-500); font-size: var(--fs-label); font-weight: var(--fw-regular); }
.cb-nav { display: flex; gap: var(--space-1, 4px); }
.cb-nav__a { display: inline-flex; align-items: center; min-height: var(--touch-min); padding: 0 var(--space-3, 12px); border-radius: var(--radius-sm); color: var(--ink-700); text-decoration: none; font-size: var(--fs-label); font-weight: 600; }
.cb-nav__a.is-on { background: var(--brand-subtle); color: var(--brand-strong); }
.cb-demo { margin: 0; padding: var(--space-2, 8px) 0; color: var(--ink-500); font-size: var(--fs-caption); }

/* 메인·히어로 */
.cb-main { padding-block: var(--space-8, 40px) var(--space-12, 64px); display: flex; flex-direction: column; gap: var(--space-8, 40px); }
.cb-hero { text-align: center; max-width: 1200px; margin-inline: auto; } /* 목업 960 → 형 지시(2026-10-18)로 1200 */
.cb-hero__t { margin: 0 0 var(--space-3, 12px); font-size: var(--fs-heading-lg); line-height: 1.2; letter-spacing: var(--tracking-tight); font-weight: 800; }
.cb-hero__s { margin: 0 0 var(--space-6, 24px); color: var(--ink-500); font-size: var(--fs-body); }

/* 질문 입력(Composer) */
.cb-composer { display: flex; gap: var(--space-2, 8px); background: var(--surface); border: 1px solid var(--line-strong); border-radius: var(--radius-md); padding: var(--space-2, 8px); box-shadow: 0 1px 2px rgba(0,0,0,.04); }
.cb-composer:focus-within { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-subtle); }
.cb-composer__in { flex: 1; min-width: 0; min-height: 56px; border: 0; padding: 0 var(--space-4, 16px); font: inherit; font-size: var(--fs-title-sm); color: inherit; background: transparent; }
.cb-composer__in:focus { outline: none; }
.cb-composer__btn { flex: none; min-height: 56px; padding-inline: var(--space-6, 24px); }
.cb-roles { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-2, 8px); margin-top: var(--space-4, 16px); }
.cb-role { min-height: 36px; padding: 0 var(--space-3, 12px); border: 1px solid var(--line-strong); border-radius: 999px; background: var(--surface); color: var(--ink-700); font: inherit; font-size: var(--fs-label); font-weight: 600; cursor: pointer; }
.cb-role.is-on { background: var(--brand); border-color: var(--brand); color: var(--surface); }
.cb-suggest { list-style: none; margin: var(--space-5, 20px) 0 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-2, 8px); }
.cb-suggest__btn { min-height: var(--touch-min); padding: 0 var(--space-4, 16px); border: 1px solid var(--line); border-radius: 999px; background: var(--surface); color: var(--ink-900); font: inherit; font-size: var(--fs-label); cursor: pointer; transition: background var(--dur-fast) var(--ease-standard); }
.cb-suggest__btn:hover { background: var(--brand-subtle); border-color: var(--brand-line); }

/* 단계 표시(J1) · 스켈레톤(J2) */
.cb-stage { max-width: 1200px; margin-inline: auto; width: 100%; }
.cb-stage__in { display: flex; align-items: center; gap: var(--space-3, 12px); padding: var(--space-3, 12px) var(--space-4, 16px); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); color: var(--ink-700); font-size: var(--fs-label); font-weight: 600; }
.cb-spin { width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--brand-line); border-top-color: var(--brand); animation: cb-spin var(--dur-slow) linear infinite; }
.cb-stage__dots { display: inline-flex; gap: var(--space-1, 4px); }
.cb-stage__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--line-strong); }
.cb-stage__dot.is-done { background: var(--brand-line); }
.cb-stage__dot.is-on { background: var(--brand); }
@keyframes cb-spin { to { transform: rotate(360deg); } }
.cb-skel { display: grid; gap: var(--space-3, 12px); padding: var(--space-5, 20px); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); }
.cb-skel > * { background: linear-gradient(90deg, var(--surface-sunken), var(--brand-subtle), var(--surface-sunken)); background-size: 200% 100%; border-radius: var(--radius-xs); animation: cb-shimmer var(--dur-slow) ease-in-out infinite alternate; }
.cb-skel__h { height: 22px; width: 45%; } .cb-skel__l { height: 14px; width: 90%; } .cb-skel__l--s { width: 70%; } .cb-skel__card { height: 120px; } .cb-skel__card--s { height: 72px; }
@keyframes cb-shimmer { from { background-position: 0 0; } to { background-position: 100% 0; } }
@media (prefers-reduced-motion: reduce) { .cb-spin, .cb-skel > * { animation: none; } }

/* 답변 영역 */
.cb-answer { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); }
.cb-answer:empty { display: none; }
.cb-answer .ak--page { padding: var(--space-5, 20px); max-width: none; } /* 렌더러 기본 1200px 상한을 목업 기준(컨테이너 1600)으로 해제 */
.cb-answer .ak-summary { max-width: 1040px; }
.cb-ask-again { max-width: 1200px; }
.cb-degraded { margin: var(--space-5, 20px) var(--space-5, 20px) 0; }
.cb-share { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2, 8px); padding: var(--space-3, 12px) var(--space-4, 16px); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); font-size: var(--fs-label); }
.cb-share__l { font-weight: 700; color: var(--ink-700); }
.cb-share__in { flex: 1; min-width: 200px; min-height: 36px; padding: 0 var(--space-3, 12px); border: 1px solid var(--line); border-radius: var(--radius-sm); font: inherit; font-size: var(--fs-label); color: var(--ink-700); background: var(--surface-sunken); }
.cb-ask-again .cb-roles { justify-content: flex-start; }

/* 시기별 카드(01) */
.cb-h2 { margin: 0 0 var(--space-4, 16px); font-size: var(--fs-title); display: flex; align-items: baseline; gap: var(--space-3, 12px); }
.cb-h2__sub { font-size: var(--fs-label); color: var(--ink-500); font-weight: var(--fw-regular); }
.cb-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: var(--space-4, 16px); }
.cb-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); overflow: hidden; }
.cb-card__period { margin: 0; padding: var(--space-2, 8px) var(--space-4, 16px); background: var(--brand-subtle); color: var(--brand-strong); font-size: var(--fs-caption); font-weight: 700; letter-spacing: .02em; }
.cb-card .ak--compact { border: 0; border-radius: 0; box-shadow: none; width: auto; max-width: none; }
.cb-muted { color: var(--ink-500); margin: 0; }

/* 임베드(12) */
.cb--embed { background: transparent; }
.cb-embed { padding: var(--space-2, 8px); display: flex; justify-content: center; }

/* 푸터 */
.cb-footer { border-top: 1px solid var(--line); background: var(--surface); padding: var(--space-6, 24px) 0; color: var(--ink-500); font-size: var(--fs-label); }
.cb-footer p { margin: 0 0 var(--space-1, 4px); }
.cb-footer a { color: inherit; }

@media (max-width: 600px) {
  .cb-wrap { padding-inline: var(--space-4, 16px); }
  .cb-main { padding-block: var(--space-5, 20px) var(--space-8, 40px); gap: var(--space-5, 20px); }
  .cb-hero__t { font-size: var(--fs-heading); }
  .cb-composer { flex-direction: column; }
  .cb-composer__btn { width: 100%; }
  .cb-answer .ak--page { padding: var(--space-4, 16px); }
  .cb-header__in { min-height: 56px; }
  .cb-brand__sub { display: none; }
}

/* 질문 기록 띠(하이브리드안 1) + 고정 입력창(2) — 2026-10-18 형 결정 */
.cb-history { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2, 8px); margin-top: var(--space-3, 12px); padding: var(--space-2, 8px) var(--space-3, 12px); background: var(--surface); border: 1px dashed var(--line-strong); border-radius: var(--radius-md); font-size: var(--fs-label); }
.cb-history__l { font-weight: 700; color: var(--ink-500); margin-right: var(--space-1, 4px); }
.cb-history__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--space-2, 8px); flex: 1; min-width: 0; }
.cb-history__btn { max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-height: 36px; padding: 0 var(--space-3, 12px); border: 1px solid var(--line); border-radius: 999px; background: var(--surface); color: var(--ink-900); font: inherit; font-size: var(--fs-label); cursor: pointer; }
.cb-history__btn[aria-current="true"] { background: var(--brand); border-color: var(--brand); color: var(--surface); font-weight: 700; }
.cb-history__btn .cb-history__n { color: var(--ink-500); margin-right: var(--space-1, 4px); font-variant-numeric: var(--num); }
.cb-history__btn[aria-current="true"] .cb-history__n { color: var(--brand-subtle); }
.cb-history__clear { min-height: 36px; padding: 0 var(--space-3, 12px); border: 0; background: transparent; color: var(--ink-500); font: inherit; font-size: var(--fs-caption); cursor: pointer; text-decoration: underline; }
.cb-composer-wrap { text-align: left; }
/* 고정은 .cb-main의 직계 자식(히어로·다시 묻기 영역)에 건다 — sticky는 부모 박스 안에서만 유효하므로 */
.is-answered .cb-hero, .is-answered .cb-ask-again { position: sticky; top: 0; z-index: 5; background: var(--surface-sunken); padding-block: var(--space-3, 12px); box-shadow: 0 8px 12px -12px rgba(0,0,0,.25); }
.is-answered .cb-hero__t, .is-answered .cb-hero__s, .is-answered .cb-suggest { display: none; }
.is-answered .cb-hero { max-width: none; width: 100%; box-sizing: border-box; } /* 고정 블록은 컨테이너 전체 폭으로 배경을 깔고 */
.is-answered .cb-hero > *, .is-answered .cb-ask-again > * { max-width: 1200px; margin-inline: auto; } /* 안의 입력창·역할·기록 띠만 1200 가운데 */
.is-answered .cb-ask-again { max-width: none; }
.is-answered .cb-roles { margin-top: var(--space-2, 8px); }
.is-answered .cb-main { padding-top: var(--space-4, 16px); }
@media (max-width: 600px) { .is-answered .cb-roles { display: none; } .cb-history__btn { max-width: 200px; } }
