/* 세 페이지가 함께 쓰는 최소한의 스타일.
   폰트 파일도, 외부 스크립트도 불러오지 않는다. 개인정보 처리방침 페이지가
   제3자에게 접속 기록을 넘기면 그 자체로 방침과 어긋난다.

   색은 전부 토큰으로만 정한다. 개별 규칙에서 색을 직접 쓰지 않으면 배경이 바뀌는
   곳(다크 모드, 랜딩의 검정 띠)에서 글자만 따로 남아 사라지는 사고가 나지 않는다.
   모든 글자/배경 조합은 WCAG AA(4.5:1) 이상이다.

   강조색은 앱 아이콘의 코랄이다. 앱 화면의 인디고는 스크린샷 안에만 둔다. */

/* 지원·개인정보 처리방침 같은 문서 페이지는 시스템 라이트/다크를 따른다. */
:root {
	color-scheme: light dark;

	--bg: #faf8f5;
	--card: #ffffff;
	--ink: #171415;
	--muted: #5f5857;
	--line: #ebe5df;

	--brand: #c0403a;
	--brand-hover: #a8352f;
	--accent: #c0403a;
	--accent-hover: #a8352f;
	--accent-ink: #ffffff;

	/* 로고 타일 테두리. 아이콘 자체 배경이 흰색에 가까워 모드별로 테두리만 바꾼다. */
	--mark-ring: #1714151a;
	--mark-shadow: #1e121024;
}

@media (prefers-color-scheme: dark) {
	:root {
		--bg: #121013;
		--card: #1c191c;
		--ink: #f4f0ef;
		--muted: #b0a5a3;
		--line: #302b2e;

		/* 어두운 배경에서는 밝은 코랄이 읽힌다. 코랄 위 글자는 어두운 잉크로 뒤집는다. */
		--brand: #ff9c93;
		--brand-hover: #ffb3ab;
		--accent: #ff8a80;
		--accent-hover: #ffa39b;
		--accent-ink: #241619;

		--mark-ring: #ffffff24;
		--mark-shadow: #00000080;
	}
}

* { box-sizing: border-box; }

body {
	margin: 0;
	background: var(--bg);
	color: var(--ink);
	font: 16px/1.7 -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo",
		"Pretendard", "Segoe UI", sans-serif;
	word-break: keep-all;
	overflow-wrap: anywhere;
}

.wrap { max-width: 720px; margin: 0 auto; padding: 56px 22px 96px; }

header.site { margin-bottom: 40px; }

/* 브랜드: 앱 아이콘 타일 + 워드마크 */
.brand {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-size: 15px;
	font-weight: 700;
	color: var(--brand);
	text-decoration: none;
	letter-spacing: -.01em;
}
.brand-mark {
	flex: 0 0 auto;
	width: 30px;
	height: 30px;
	border-radius: 8px;
	box-shadow: 0 0 0 1px var(--mark-ring), 0 1px 3px var(--mark-shadow);
}

h1 { font-size: 30px; line-height: 1.35; margin: 14px 0 6px; }
h2 { font-size: 19px; margin: 40px 0 10px; }
h3 { font-size: 16px; margin: 24px 0 6px; }

.lede { color: var(--muted); margin: 0 0 8px; }
.updated { color: var(--muted); font-size: 14px; margin: 0; }

p, li { color: var(--ink); }
ul { padding-left: 20px; }
li { margin: 6px 0; }

.card {
	background: var(--card);
	border: 1px solid var(--line);
	border-radius: 16px;
	padding: 20px 22px;
	margin: 18px 0;
}

.card h3:first-child, .card h2:first-child { margin-top: 0; }
/* CSP가 인라인 style 속성을 막으므로(default-src 'self') 여백도 클래스로 준다. */
.tight { margin: 0; }

table { width: 100%; border-collapse: collapse; margin: 14px 0; font-size: 15px; }
th, td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--line); vertical-align: top; }
th { color: var(--muted); font-weight: 600; }
.scroll { overflow-x: auto; }

a { color: var(--brand); }
code { font-size: 14px; background: var(--bg); padding: 2px 6px; border-radius: 6px; }

footer.site {
	margin-top: 64px;
	padding-top: 22px;
	border-top: 1px solid var(--line);
	color: var(--muted);
	font-size: 14px;
	display: flex;
	gap: 18px;
	flex-wrap: wrap;
}

/* ───────────────────────── 랜딩 페이지 ─────────────────────────
   랜딩은 시스템 다크 모드를 따르지 않고 한 가지 모습으로 고정한다. 흰 바탕에
   검정 띠를 중간중간 넣어 리듬을 만드는 디자인이라, 통째로 검게 뒤집히면 그 대비가
   사라지고 페이지 전체가 어둡게 가라앉는다.

   띠마다 같은 이름의 토큰을 다시 정의한다. 그 안의 카드·글자·버튼은 토큰만 보므로
   흰 띠에 두든 검정 띠에 두든 알아서 맞는 색이 된다. */

:root:has(body.landing) { color-scheme: light; }

body.landing,
.band-paper {
	--bg: #ffffff;
	--card: #f8f4ee;
	--ink: #171415;
	--muted: #5f5857;
	--line: #ece6e0;
	--brand: #c0403a;
	--brand-hover: #a8352f;
	/* 흰 띠의 주 버튼은 검정. 코랄은 강조 글자와 빛번짐에만 아껴 쓴다. */
	--accent: #171415;
	--accent-hover: #3a3334;
	--accent-ink: #ffffff;
	--mark-ring: #1714151a;
	--mark-shadow: #1e121024;
	--glow-strength: .62;
}
.band-cream {
	--bg: #f8f4ee;
	--card: #ffffff;
	--ink: #171415;
	--muted: #5f5857;
	--line: #e8e0d7;
	--brand: #b83b35;
	--brand-hover: #a8352f;
	--accent: #171415;
	--accent-hover: #3a3334;
	--accent-ink: #ffffff;
	--glow-strength: .62;
}
.band-night {
	--bg: #171415;
	--card: #221e1f;
	--ink: #f5f1ed;
	--muted: #bdb4b1;
	--line: #3a3334;
	--brand: #ff9c93;
	--brand-hover: #ffb3ab;
	--accent: #ffffff;
	--accent-hover: #ece6e0;
	--accent-ink: #171415;
	--glow-strength: .78;
}

.band { background: var(--bg); color: var(--ink); }
/* 빛번짐이 화면 밖으로 번져 가로 스크롤을 만들지 않게 띠 단위로 자른다.
   clip 을 모르는 브라우저를 위해 hidden 을 먼저 둔다. */
.band { overflow-x: hidden; overflow-x: clip; }

.wrap-wide { width: min(1120px, calc(100% - 44px)); margin: 0 auto; }
.nav-wrap { width: min(1120px, calc(100% - 44px)); margin: 0 auto; height: 74px; display: flex; align-items: center; gap: 28px; }
.nav-wrap nav { display: flex; gap: 26px; margin-left: auto; }
.nav-wrap nav a, .footer-links a { color: var(--muted); text-decoration: none; font-size: 14px; font-weight: 600; letter-spacing: -.005em; }
.nav-wrap nav a:hover, .footer-links a:hover { color: var(--ink); }
.nav-cta { background: var(--accent); color: var(--accent-ink); border-radius: 9px; padding: 8px 14px; text-decoration: none; font-size: 13px; font-weight: 700; }
.nav-cta:hover { background: var(--accent-hover); }

/* 언어 선택기. 모바일에서는 주메뉴가 숨지만 이건 남아야 하므로 <nav> 바깥에 둔다.
   좁은 화면에서는 긴 이름 대신 KO/EN 약어만 보여 헤더가 넘치지 않게 한다. */
.nav-right { display: flex; align-items: center; gap: 12px; }
.lang { display: inline-flex; align-items: center; gap: 2px; padding: 3px; border-radius: 10px; border: 1px solid var(--line); }
.lang a { padding: 5px 10px; border-radius: 7px; font-size: 12.5px; font-weight: 700; color: var(--muted); text-decoration: none; white-space: nowrap; }
.lang a:hover { color: var(--ink); }
.lang a[aria-current] { background: var(--ink); color: var(--bg); }
.lang-abbr { display: none; }

/* 문서 페이지(지원·처리방침) 머리말: 브랜드와 언어 선택기를 한 줄에 */
.doc-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; }

.hero { min-height: 660px; display: grid; grid-template-columns: 1.05fr .95fr; align-items: center; gap: 72px; padding: 56px 0 76px; }
/* 그리드 아이템의 기본값 min-width:auto 는 긴 제목을 줄바꿈하는 대신 칼럼을 넓혀,
   좁은 화면에서 가로 스크롤을 만든다. 0으로 낮춰 제목이 줄바꿈되게 한다. */
.hero-copy { min-width: 0; }
.eyebrow { margin: 0 0 16px; color: var(--brand); font-size: 11px; line-height: 1.2; letter-spacing: .12em; font-weight: 800; }
.hero h1, .section-heading h2, .download h2 { margin: 0; color: var(--ink); font-size: clamp(40px, 5vw, 66px); line-height: 1.08; letter-spacing: -.06em; }
.hero-lede { max-width: 510px; margin: 24px 0 0; color: var(--muted); font-size: 18px; line-height: 1.72; }
/* flex-wrap 이 없으면 버튼 두 개의 합이 그대로 최소 너비가 되어,
   좁은 화면에서 히어로 칼럼을 밀어내고 가로 스크롤을 만든다. */
.hero-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; }
.button { display: inline-flex; min-height: 50px; align-items: center; justify-content: center; border-radius: 12px; padding: 0 20px; font-size: 15px; font-weight: 750; text-decoration: none; }
.button-primary { background: var(--accent); color: var(--accent-ink); box-shadow: 0 10px 26px #17141526; }
.button-primary:hover { background: var(--accent-hover); color: var(--accent-ink); }
.button-quiet { border: 1px solid var(--line); color: var(--ink); background: var(--bg); }
.button-quiet:hover { border-color: var(--ink); }
.availability { margin: 12px 0 0; color: var(--muted); font-size: 13px; }

/* 스크린샷 뒤 빛번짐. 로고의 코랄·피치에 사진 속 하늘색을 조금 섞어, 사진으로 시선이 모이게 한다.
   isolation 으로 새 쌓임 맥락을 만들어 z-index:-1 이 띠 배경 뒤로 숨지 않게 한다. */
.glow { position: relative; isolation: isolate; }
.glow::before {
	content: "";
	position: absolute;
	inset: -8% -32% -6%;
	z-index: -1;
	/* 투명도는 색 자체에 두지 않고 --glow-strength 로 한 번에 조절한다.
	   흰 바탕에서는 옅은 파스텔이 되고, 검정 바탕에서는 빛처럼 번진다. */
	background:
		radial-gradient(58% 44% at 30% 30%, #ff7a6b 0%, #ff7a6b00 70%),
		radial-gradient(54% 44% at 72% 60%, #ffb38a 0%, #ffb38a00 70%),
		radial-gradient(48% 32% at 50% 92%, #7cc8ff 0%, #7cc8ff00 72%);
	filter: blur(44px);
	opacity: var(--glow-strength, .6);
	pointer-events: none;
}
/* 퍼진 빛만으로는 사진 윤곽이 흐려서, 바로 아래에 코랄 그림자를 한 겹 더 깐다. */
.glow .shot { box-shadow: 0 0 0 1px #ffffff26, 0 34px 70px -22px #ff6f6173, 0 18px 40px #17141526; }

/* <figure> 기본 여백(1em 40px)을 지우지 않으면 좁은 화면에서 히어로 칼럼을 80px 밀어낸다.
   베젤은 어느 띠에서든 같은 짙은 색으로 두어 밝은 앱 화면의 경계를 만든다. */
.shot { margin: 0; border: 8px solid #1d1a1b; border-radius: 40px; background: #1d1a1b; overflow: hidden; box-shadow: 0 0 0 1px #ffffff14, 0 26px 56px #17141533; }
.shot img { display: block; width: 100%; height: auto; border-radius: 32px; }
.hero-stage { margin: 0; width: min(300px, 76vw); justify-self: center; }
.hero-stage .shot { transform: rotate(3deg); }

.showcase { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 34px; margin-top: 56px; justify-items: center; }
.showcase-item { margin: 0; width: min(272px, 100%); }
.showcase-item figcaption { margin-top: 26px; color: var(--muted); font-size: 14px; line-height: 1.6; text-align: center; }
.showcase-item figcaption b { display: block; color: var(--ink); font-size: 15px; margin-bottom: 2px; }

.section { padding: 128px 0; }
.section-heading { max-width: 690px; }
.section-heading h2, .download h2 { font-size: clamp(32px, 4vw, 49px); }
.section-lede { max-width: 620px; margin: 20px 0 0; color: var(--muted); font-size: 17px; line-height: 1.72; }

/* 핵심 세 줄. 흰 첫 화면 바로 아래 검정 막대로 두어 첫 번째 시선 포인트가 되게 한다. */
.trust-wrap { padding-bottom: 8px; }
.trust { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-radius: 20px; background: var(--bg); overflow: hidden; }
.trust p { margin: 0; padding: 26px 28px; color: var(--muted); font-size: 15px; line-height: 1.6; }
.trust p + p { border-left: 1px solid var(--line); }
.trust b { display: block; margin-bottom: 4px; color: var(--ink); font-size: 17px; font-weight: 750; letter-spacing: -.02em; }
.trust b::before { content: ""; display: inline-block; width: 7px; height: 7px; margin: 0 9px 2px 0; border-radius: 50%; background: var(--brand); vertical-align: middle; }

.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 48px; }
.feature-card { min-height: 234px; padding: 26px; border-radius: 18px; background: var(--card); border: 1px solid var(--line); }
.feature-number { color: var(--brand); font-weight: 800; font-size: 13px; }
.feature-card h3 { margin: 42px 0 8px; font-size: 20px; letter-spacing: -.035em; }
.feature-card p { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.65; }

/* 어떤 데이터가 어디로 가는지 한눈에 */
.dest-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; list-style: none; margin: 44px 0 0; padding: 0; }
.dest-grid li { margin: 0; padding: 18px 20px; border-radius: 14px; background: var(--card); border: 1px solid var(--line); }
.dest-grid b { display: block; color: var(--brand); font-size: 13px; font-weight: 800; letter-spacing: .02em; }
.dest-grid span { display: block; margin-top: 7px; color: var(--muted); font-size: 14px; line-height: 1.55; }

.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; list-style: none; margin: 52px 0 0; padding: 0; }
.steps li { display: flex; gap: 14px; margin: 0; }
.steps li > span { display: grid; place-items: center; flex: 0 0 34px; height: 34px; border-radius: 50%; background: var(--accent); color: var(--accent-ink); font-size: 13px; font-weight: 800; }
.steps h3 { margin: 3px 0 7px; font-size: 18px; letter-spacing: -.02em; }
.steps p { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.65; }

.safety-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-top: 46px; }
.safety-grid .feature-card { min-height: 0; }
.safety-grid h3 { margin: 0 0 10px; font-size: 20px; letter-spacing: -.035em; }
.card-link { display: inline-block; margin-top: 14px; font-size: 14px; font-weight: 700; }

.download { display: flex; align-items: flex-end; justify-content: space-between; gap: 30px; padding: 120px 0; }
.download p:not(.eyebrow) { margin: 16px 0 0; color: var(--muted); }
.download .button { flex: 0 0 auto; box-shadow: none; }

.landing-footer { padding: 40px 0; border-top: 1px solid var(--line); }
.footer-grid { display: grid; grid-template-columns: 1fr auto; gap: 30px; }
.footer-grid p { margin: 7px 0 0; color: var(--muted); font-size: 13px; }
.footer-links { display: flex; gap: 20px; align-items: start; }
.copyright { grid-column: 1 / -1; padding-top: 18px; border-top: 1px solid var(--line); }

/* 이 구간은 2단 히어로가 이미 비좁으므로 내비게이션은 그대로 둔 채 히어로만 먼저 쌓는다. */
@media (max-width: 860px) {
	.hero { grid-template-columns: 1fr; gap: 56px; min-height: auto; padding: 52px 0 76px; }
	.dest-grid { grid-template-columns: repeat(2, 1fr); }
	.safety-grid { grid-template-columns: 1fr; }
	.trust { grid-template-columns: 1fr; }
	.trust p + p { border-left: 0; border-top: 1px solid var(--line); }
}

@media (max-width: 720px) {
	.wrap-wide, .nav-wrap { width: min(100% - 36px, 560px); }
	.nav-wrap { height: 64px; gap: 10px; }
	.nav-wrap nav { display: none; }
	.nav-right { margin-left: auto; gap: 8px; }
	.lang-full { display: none; }
	.lang-abbr { display: inline; }
	.lang a { padding: 5px 8px; }
	.hero h1 { font-size: clamp(26px, 8.5vw, 45px); }
	.hero-lede { font-size: 16px; }
	.hero-stage .shot { transform: rotate(2deg); }
	.feature-grid, .steps { grid-template-columns: 1fr; }
	.trust p { padding: 20px 22px; }
	.showcase { gap: 48px; margin-top: 44px; }
	.dest-grid { grid-template-columns: 1fr; margin-top: 32px; }
	.section-lede { font-size: 16px; }
	.section { padding: 82px 0; }
	.feature-grid { margin-top: 34px; }
	.steps { gap: 28px; margin-top: 38px; }
	.download { display: block; padding: 82px 0; }
	.download .button { margin-top: 26px; }
	.footer-grid { grid-template-columns: 1fr; gap: 22px; }
	.footer-links { flex-wrap: wrap; gap: 12px 17px; }
}
