/* 학생용 사용 설명서(templates/app/guide.html).

   앱 화면들과 같은 토큰(tokens.css 의 --app-*)을 씁니다. 설명서가 앱과 같은
   색이어야 "같은 것" 으로 읽힙니다. 폰으로 한 번 훑는 문서라 한 줄 칼럼입니다.

   common.css 를 부르지 않습니다. 그쪽은 앱 화면용 헤더·하단바 규칙이 함께
   있는데, 이 화면은 로그인 전에도 열려서 그 둘이 없습니다. */

body {
    margin: 0;
    background-color: var(--app-bg);
    color: var(--app-ink);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}

.guide {
    max-width: 620px;
    margin: 0 auto;
    padding: 0 20px calc(60px + env(safe-area-inset-bottom, 0px));
}

/* ── 위 줄 ────────────────────────────────────────────── */
.guide__top {
    display: flex;
    align-items: center;
    gap: 4px;
    height: 56px;
    margin-bottom: 18px;
    padding-top: env(safe-area-inset-top, 0px);
}

.guide__back {
    display: flex;
    align-items: center;
    justify-content: center;
    /* 손가락으로 누르는 것이라 44px 를 지킵니다. */
    width: 44px;
    height: 44px;
    margin-left: -12px;
    color: var(--app-ink);
}

.guide__top span {
    font-size: calc(16px * var(--font-scale, 1));
    font-weight: 700;
    letter-spacing: -0.02em;
}

/* ── 머리 ─────────────────────────────────────────────── */
.guide__hero { margin-bottom: 26px; }

.guide__hero h1 {
    margin: 0 0 10px;
    font-size: calc(30px * var(--font-scale, 1));
    font-weight: 900;
    line-height: 1.25;
    letter-spacing: -0.04em;
}

.guide__hero p {
    margin: 0;
    max-width: 42ch;
    color: var(--app-mid);
}

/* ── 단계 ─────────────────────────────────────────────── */
.guide__steps {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.step {
    padding: 24px 22px;
    border-radius: var(--app-r);
    background-color: var(--app-surface);
    box-shadow: var(--app-shadow);
}

/* 번호는 실제로 순서가 있는 것에만 붙입니다. 로그인 -> 홈 화면 추가 ->
   예약 -> 확인은 반드시 이 차례로 일어납니다. */
.step__no {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    margin-bottom: 11px;
    border-radius: 9px;
    background-color: var(--app-accent-tint);
    color: var(--app-accent);
    font-size: calc(14px * var(--font-scale, 1));
    font-weight: 800;
}

.step h2 {
    margin: 0 0 8px;
    font-size: calc(21px * var(--font-scale, 1));
    font-weight: 800;
    line-height: 1.35;
    letter-spacing: -0.03em;
}

.step p { margin: 0 0 13px; }
.step p:last-child { margin-bottom: 0; }
.step__lead { margin-top: 20px; }
.step em { font-style: normal; font-weight: 700; }

.muted {
    color: var(--app-mid);
    font-size: calc(14px * var(--font-scale, 1));
}

/* ── 화면 그림 ────────────────────────────────────────
   사진 대신 그립니다. 선명하고, 앱 색이 바뀌면 토큰만 따라옵니다. */
.shot {
    margin: 15px 0;
    padding: 15px;
    border: 1px solid var(--app-line);
    border-radius: var(--app-rs);
    background-color: var(--app-bg);
}

.shot--flush { padding: 13px 11px; }

.kakao-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 50px;
    border-radius: 15px;
    /* 카카오 자체 표기 규정 색입니다. 토큰을 쓰지 않습니다. */
    background-color: #FEE500;
    color: #191600;
    font-weight: 700;
    font-size: calc(15px * var(--font-scale, 1));
}

.field {
    display: flex;
    align-items: center;
    height: 50px;
    padding: 0 15px;
    border: 1px solid var(--app-line);
    border-radius: 15px;
    background-color: var(--app-surface);
    color: var(--app-mid);
    font-size: calc(14px * var(--font-scale, 1));
}

/* 예약 4단계 — 앱의 실제 모양 */
.crumbs {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    padding: 11px 12px;
    border-radius: 15px;
    background-color: var(--app-surface);
    color: var(--app-accent);
    font-size: calc(14px * var(--font-scale, 1));
    font-weight: 700;
}

.crumbs span {
    padding: 3px 10px;
    border-radius: 9px;
    background-color: var(--app-accent-tint);
    color: var(--app-ink);
}

.crumbs i { font-style: normal; color: var(--app-mid); }

/* 시간 칸 — 이 설명서에서 제일 중요한 그림입니다.
   학생이 막히는 지점이 "왜 이 시간은 못 누르지" 하나입니다.

   색은 실제 앱(templates/app/reservation.html 의 .time-selection)과 같게
   셋뿐입니다. 흰 칸 = 고를 수 있음, 회색 칸 = 못 고름, 남색 = 고른 것.
   왜 못 고르는지는 색이 아니라 칸 안의 글씨가 말합니다. */
.slots {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
}

.slot {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 62px;
    padding: 8px 5px;
    border-radius: var(--app-rs);
    text-align: center;
    background-color: var(--app-surface);
    box-shadow: var(--app-shadow);
}

.slot b {
    display: block;
    font-size: calc(15px * var(--font-scale, 1));
    font-weight: 800;
    letter-spacing: -0.01em;
    font-variant-numeric: tabular-nums;
}

.slot small {
    display: block;
    margin-top: 3px;
    font-size: calc(11px * var(--font-scale, 1));
    line-height: 1.35;
    color: var(--app-mid);
}

.slot.is-off {
    background-color: var(--app-sunken);
    box-shadow: inset 0 0 0 1px rgba(22, 32, 43, 0.07);
}

.slot.is-off b { font-weight: 500; color: var(--app-mid); }

.slot.is-pick {
    background-color: var(--app-accent);
    color: var(--app-on-accent);
    box-shadow: 0 6px 16px rgba(74, 98, 184, 0.32);
}

.slot.is-pick b { font-weight: 900; }

/* 범례 */
.legend {
    display: flex;
    flex-direction: column;
    gap: 9px;
    margin: 15px 0 0;
}

.legend > div {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 4px 9px;
    font-size: calc(14px * var(--font-scale, 1));
}

.legend dt { font-weight: 700; }
.legend dd { margin: 0; color: var(--app-mid); }
.legend dd::before { content: "— "; }

.swatch {
    flex: none;
    width: 15px;
    height: 15px;
    border-radius: 5px;
    transform: translateY(2px);
}

.swatch.open { background-color: var(--app-surface); box-shadow: 0 0 0 1px var(--app-line); }
.swatch.off { background-color: var(--app-sunken); }
.swatch.pick { background-color: var(--app-accent); }

/* 회색 칸에 적히는 세 가지 이유 */
.reasons {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin: 0 0 13px;
    padding: 14px 15px;
    border-radius: var(--app-rs);
    background-color: var(--app-bg);
}

.reasons > div {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 3px 8px;
    font-size: calc(14px * var(--font-scale, 1));
}

.reasons dt { font-weight: 700; }
.reasons dd { margin: 0; color: var(--app-mid); }
.reasons dd::before { content: "— "; }

/* 이용권 카드 — 앱 홈의 실제 모양 */
.pass {
    padding: 16px 17px;
    border-radius: var(--app-rs);
    background-color: var(--app-surface);
}

.pass__chip {
    display: inline-block;
    padding: 3px 11px;
    border-radius: 999px;
    background-color: var(--app-accent-tint);
    color: var(--app-accent);
    font-size: calc(12px * var(--font-scale, 1));
    font-weight: 700;
}

.pass__n {
    display: flex;
    align-items: baseline;
    gap: 5px;
    margin: 10px 0 9px;
}

.pass__n b {
    font-size: calc(34px * var(--font-scale, 1));
    font-weight: 900;
    line-height: 1;
    letter-spacing: -0.03em;
    color: var(--app-accent);
    font-variant-numeric: tabular-nums;
}

.pass__n span { font-weight: 700; font-size: calc(15px * var(--font-scale, 1)); }

.bar {
    height: 7px;
    border-radius: 999px;
    background-color: var(--app-sunken);
    overflow: hidden;
}

.bar i { display: block; height: 100%; width: 76%; background-color: var(--app-accent); }

.pass__foot {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-top: 9px;
    font-size: calc(13px * var(--font-scale, 1));
    color: var(--app-mid);
}

/* 예약 한 건 */
.booking {
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 13px;
    border-radius: var(--app-rs);
    background-color: var(--app-surface);
}

.booking__date {
    flex: none;
    width: 52px;
    padding: 6px 0 8px;
    border-radius: 12px;
    background-color: var(--app-accent);
    color: var(--app-on-accent);
    text-align: center;
    line-height: 1.15;
}

.booking__date small { display: block; font-size: calc(10px * var(--font-scale, 1)); opacity: 0.85; }
.booking__date b { font-size: calc(21px * var(--font-scale, 1)); font-weight: 900; }

.booking__what b {
    display: block;
    font-size: calc(17px * var(--font-scale, 1));
    font-weight: 800;
    letter-spacing: -0.02em;
}

.booking__what small { color: var(--app-mid); font-size: calc(13px * var(--font-scale, 1)); }

.cancel {
    display: grid;
    place-items: center;
    height: 40px;
    margin-top: 10px;
    border-radius: 12px;
    background-color: var(--app-sunken);
    font-weight: 600;
    font-size: calc(14px * var(--font-scale, 1));
}

/* ── 주의 ─────────────────────────────────────────────── */
.note {
    display: flex;
    gap: 11px;
    margin: 15px 0;
    padding: 14px 15px;
    border: 1px solid var(--state-warn-line);
    border-radius: var(--app-rs);
    background-color: var(--state-warn-bg);
    color: var(--state-warn);
    font-size: calc(14px * var(--font-scale, 1));
    line-height: 1.6;
}

.note svg { flex: none; margin-top: 3px; }

/* ── 기기별 갈림 ──────────────────────────────────────── */
.split {
    display: grid;
    gap: 11px;
    margin: 15px 0;
}

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

.split > div {
    padding: 14px 15px;
    border: 1px solid var(--app-line);
    border-radius: var(--app-rs);
    background-color: var(--app-bg);
}

.split h3 {
    margin: 0 0 7px;
    font-size: calc(15px * var(--font-scale, 1));
    font-weight: 800;
    letter-spacing: -0.01em;
}

.split ol {
    margin: 0;
    padding-left: 18px;
    color: var(--app-mid);
    font-size: calc(14px * var(--font-scale, 1));
    line-height: 1.65;
}

.split ol b { color: var(--app-ink); font-weight: 700; }

/* ── 막힐 때 ─────────────────────────────────────────── */
.trouble {
    margin-top: 30px;
    border-radius: var(--app-r);
    background-color: var(--app-surface);
    box-shadow: var(--app-shadow);
    overflow: hidden;
}

.trouble h2 {
    margin: 0;
    padding: 22px 22px 14px;
    font-size: calc(19px * var(--font-scale, 1));
    font-weight: 800;
    letter-spacing: -0.03em;
}

.qa {
    padding: 17px 22px;
    border-top: 1px solid var(--app-line2);
}

.qa b {
    display: block;
    margin-bottom: 5px;
    font-size: calc(16px * var(--font-scale, 1));
    font-weight: 800;
    letter-spacing: -0.02em;
}

.qa p { margin: 0; color: var(--app-mid); font-size: calc(15px * var(--font-scale, 1)); }
.qa p + p { margin-top: 6px; }
.qa em { font-style: normal; font-weight: 700; color: var(--app-ink); }

/* ── 꼬리 ─────────────────────────────────────────────── */
.guide__foot {
    margin-top: 30px;
    text-align: center;
    color: var(--app-mid);
    font-size: calc(14px * var(--font-scale, 1));
    line-height: 1.7;
}
