/*
 * Wish Ring (ì ì ëª) â ìíì´ì§ ëë© ì¤íì¼ìí¸
 * íë í¸/íì´í¬/ì¤íì´ì± í í° ê°ì app/src/theme/tokens.cssë¥¼ ë¨ì¼ ì§ì¤ë¡ ì¼ì ê·¸ëë¡ ë³µì¬í¨
 * (site/ í´ëë self-containedì´ì´ì¼ íë¯ë¡ importê° ìë ê° ë³µì ).
 */

:root {
  color-scheme: light dark;

  /* ---- Warm Paper Â· Light ---- */
  --canvas: #FAF6F1;
  --surface: #FFFDFB;
  --surface-2: #F3ECE3;
  --ink-900: #241F1B;
  --ink-700: #6B615A;
  --ink-500: #8C8078; /* 텍스트 금지: 배경 위 3.3~3.8:1 AA 실패. 소자 텍스트는 --ink-700 */
  --hairline: #E9E0D7;

  --primary: #E1614C;           /* ëí í/ë§ ì ì© â íì¤í¸/ë²í¼ ë°°ê²½ ê¸ì§ (3.49:1) */
  --primary-text-safe: #C64E3B; /* ë²í¼/ë§í¬/ë¼ë²¨ â AA 4.61:1 */
  --primary-press: #C64E3B;
  --on-primary: #FFFFFF;

  --positive: #1F9A63;
  --celebrate: #E0A83C;

  --ring-track-opacity: 0.14;

  --shadow-card: 0 6px 16px rgba(80, 50, 30, 0.08);

  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --screen-margin: 20px;

  --radius-card: 20px;
  --radius-button: 14px;
  --radius-pill: 999px;

  --ease-emph-decel: cubic-bezier(0.05, 0.7, 0.1, 1.0);
  --dur-ring: 1.2s;
}

@media (prefers-color-scheme: dark) {
  :root {
    --canvas: #161210;
    --surface: #211B16;
    --surface-2: #2C251F;
    --ink-900: #F5EFE8;
    --ink-700: #B9AEA3;
    --ink-500: #948879; /* 텍스트 금지(위 경고 참조) */
    --hairline: #372F29;

    --primary: #FF7D66;
    --primary-text-safe: #FF7D66;
    --primary-press: #E96B52;
    --on-primary: #241F1B;

    --positive: #57C892;
    --celebrate: #EEC16A;

    --ring-track-opacity: 0.24;

    --shadow-card: 0 6px 18px rgba(0, 0, 0, 0.35);
  }
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --dur-ring: 0.01ms;
  }
}

/* ---- Reset / base ---- */
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--canvas);
  color: var(--ink-900);
  font-family: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", Roboto, sans-serif;
  line-height: 1.6;
  font-size: 16px;
  overflow-x: hidden;
}

img, svg { max-width: 100%; display: block; }

/* NOTE: --primary-text-safe (#C64E3B light) is documented as 4.61:1 AA
   against pure white (#FFFFFF) â that's true for the solid button fill
   below (white text on it), but measured against our warm-paper canvas/
   surface-2 backgrounds it drops to 3.9-4.3:1 (fails AA). So inline link
   text uses the ink tokens (guaranteed AA on every warm-paper surface)
   and reserves coral strictly for the button fill + hero ring, per brand
   rule Â§3 (large fill/ring only). */
a {
  color: var(--ink-700);
  text-underline-offset: 2px;
}

a:hover,
a:focus-visible {
  color: var(--ink-900);
}

.container {
  max-width: 720px;
  margin-inline: auto;
  padding-inline: var(--screen-margin);
}

/* ---- Skip link ---- */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  background: var(--surface);
  color: var(--ink-900);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-inset, 12px);
  z-index: 100;
}
.skip-link:focus {
  left: var(--space-4);
  top: var(--space-4);
}

/* ---- Focus states (AA) ---- */
a:focus-visible,
button:focus-visible {
  outline: 3px solid var(--primary-text-safe);
  outline-offset: 3px;
  border-radius: 4px;
}

/* ---- Hero ---- */
.hero {
  padding-block: var(--space-10) var(--space-8);
  text-align: center;
  background: var(--canvas);
}

.hero__visual {
  width: 168px;
  margin: 0 auto var(--space-6);
}

.hero__ring-arc {
  stroke-dasharray: 490.09;
  stroke-dashoffset: 490.09;
  animation: fill-ring var(--dur-ring) var(--ease-emph-decel) 0.15s forwards;
}

@media (prefers-reduced-motion: reduce) {
  .hero__ring-arc {
    animation: none;
    stroke-dashoffset: 0;
  }
}

@keyframes fill-ring {
  to { stroke-dashoffset: 0; }
}

.eyebrow {
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--ink-700);
  margin: 0 0 var(--space-3);
}

.eyebrow span {
  font-weight: 400;
  color: var(--ink-700); /* ink-500 measures 3.3-3.8:1 on warm-paper
    surfaces here (below AA 4.5:1 for sub-18px text) â use ink-700 instead */
}

.hero h1 {
  font-size: clamp(28px, 6vw, 40px);
  font-weight: 700;
  letter-spacing: -0.01em;
  margin: 0 0 var(--space-4);
  color: var(--ink-900);
}

.hero__sub {
  font-size: 17px;
  color: var(--ink-700);
  max-width: 44ch;
  margin: 0 auto var(--space-6);
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 0 var(--space-8);
  border-radius: var(--radius-button);
  font-size: 16px;
  font-weight: 600;
  text-decoration: none;
  border: none;
  cursor: pointer;
}

.btn--primary {
  background: var(--primary-text-safe);
  color: var(--on-primary);
}

.btn--primary:hover {
  background: var(--primary-press);
}

.hero__micro {
  margin: var(--space-4) auto 0;
  font-size: 13px;
  color: var(--ink-700); /* AA fix, see .eyebrow span note above */
  max-width: 40ch;
}

/* ---- Sections ---- */
section {
  padding-block: var(--space-10);
}

section:nth-of-type(odd) {
  background: var(--surface);
}

.section-heading {
  font-size: clamp(22px, 4vw, 28px);
  font-weight: 700;
  text-align: center;
  margin: 0 0 var(--space-8);
  color: var(--ink-900);
}

/* ---- How it works ---- */
.steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--space-6);
  counter-reset: step;
}

.steps li {
  counter-increment: step;
  display: flex;
  gap: var(--space-4);
  align-items: flex-start;
  background: var(--surface);
  border: 1px solid var(--hairline);
  border-radius: var(--radius-card);
  padding: var(--space-5);
}

section:nth-of-type(odd) .steps li {
  background: var(--surface-2);
}

.steps li::before {
  content: counter(step);
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--primary-text-safe);
  color: var(--on-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 15px;
}

.step-label {
  display: block;
  font-weight: 700;
  margin: 0 0 var(--space-1);
  color: var(--ink-900);
}

.steps p {
  margin: 0;
  color: var(--ink-700);
}

/* ---- Features grid ---- */
.features-grid {
  display: grid;
  gap: var(--space-5);
  grid-template-columns: 1fr;
}

@media (min-width: 768px) {
  .features-grid {
    grid-template-columns: 1fr 1fr;
  }
}

.feature-card {
  background: var(--surface);
  border: 1px solid var(--hairline);
  border-radius: var(--radius-card);
  padding: var(--space-6);
  box-shadow: var(--shadow-card);
}

section:nth-of-type(odd) .feature-card {
  background: var(--surface-2);
  box-shadow: none;
}

.feature-card h3 {
  font-size: 18px;
  margin: 0 0 var(--space-2);
  color: var(--ink-900);
}

.feature-card p {
  margin: 0;
  color: var(--ink-700);
}

/* ---- Promise ---- */
.promise {
  text-align: center;
}

.promise p {
  max-width: 56ch;
  margin: 0 auto;
  color: var(--ink-700);
  font-size: 17px;
}

/* ---- FAQ ---- */
.faq-list {
  display: grid;
  gap: var(--space-5);
  max-width: 640px;
  margin: 0 auto;
}

.faq-item {
  border-bottom: 1px solid var(--hairline);
  padding-bottom: var(--space-5);
}

.faq-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.faq-item h3 {
  font-size: 17px;
  margin: 0 0 var(--space-2);
  color: var(--ink-900);
}

.faq-item p {
  margin: 0;
  color: var(--ink-700);
}

/* ---- Footer ---- */
footer {
  padding-block: var(--space-8);
  text-align: center;
  border-top: 1px solid var(--hairline);
  background: var(--canvas);
}

footer p {
  margin: 0 0 var(--space-2);
  font-size: 14px;
  color: var(--ink-700); /* AA fix, see .eyebrow span note above */
}

footer a {
  color: var(--ink-700);
  text-decoration: underline;
}

footer a:hover {
  color: var(--ink-900);
}
