/* 기존 current.css 뒤에 추가. 내용 상자·배경색·머리말은 원형 유지. */
@font-face{font-family:Pretendard;src:url('fonts/Pretendard-Regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Pretendard;src:url('fonts/Pretendard-Bold.woff2') format('woff2');font-weight:600 900;font-display:swap}
@font-face{font-family:MaeumHanja;src:url('fonts/MaeumHanja-report.otf') format('opentype');font-weight:100 900;font-display:swap;unicode-range:U+3400-9FFF}
body{font-family:Pretendard,MaeumHanja,system-ui,sans-serif}.prose{font-family:inherit}.snap-wrap{max-width:720px;margin:0 auto;padding:0 18px}.snap-note{display:none}
.preview-tools{max-width:690px;margin:18px auto 28px;padding:14px 16px;border:1px dashed var(--line);border-radius:12px;font-size:13px;line-height:1.7}.preview-tools summary{cursor:pointer;font-weight:700}.preview-tools p{color:var(--muted);margin:10px 0}.control-row{display:flex;gap:8px;flex-wrap:wrap}.control-row button{min-height:44px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink)}.control-row button[aria-pressed=true]{border-color:var(--my-accent);background:var(--blue-soft)}
.share-cover{margin-top:24px}.share-cover .recipient{padding-bottom:0}.share-cover .character-guide{justify-content:center;padding:0;margin:12px auto 20px;max-width:440px;text-align:left}.share-cover .guide-characters img{height:48px;width:44px}
.character-guide{display:flex;gap:14px;align-items:center;margin:48px 0 0;padding:16px 0}.character-guide p{font-size:15px;line-height:1.75;color:var(--muted)}.guide-characters{display:inline-flex;flex:none;align-items:flex-end}.guide-characters img{width:44px;height:48px;object-fit:contain;opacity:1;mix-blend-mode:normal}.guide-characters img+img{margin-left:2px}.v2-person{padding-top:20px}.v2-cells{gap:38px}.v2-cell{scroll-margin-top:24px}.v2-cell h4{margin-bottom:14px}.landing{font-size:23px;line-height:1.7;font-weight:700;letter-spacing:-.45px;margin:0 0 16px;word-break:keep-all;text-wrap:pretty}.evidence{border:0!important;border-radius:0!important;padding:0!important;background:transparent!important;margin-top:14px!important}.evidence summary{font-size:14px;color:var(--muted);padding:9px 0;cursor:pointer;min-height:44px;list-style:revert}.evidence[open] summary{margin-bottom:12px}.evidence .prose{padding-left:14px;border-left:2px solid var(--line)}.evidence .prose p{font-size:16px;line-height:1.95}.prose strong{font-weight:700}.scenes p+p{margin-top:14px}.pair-mark{margin-bottom:10px}.pair-mark .guide-characters img{width:27px;height:30px}.cell-chat{padding:8px 0;margin-top:10px;min-height:0;text-decoration:underline;text-underline-offset:5px;font-size:13px;font-weight:400}.print-source{display:none}.practice-items h5{font-size:23px;line-height:1.6;letter-spacing:-.45px;margin:0 0 16px}.practice-items>li{padding:26px 0;scroll-margin-top:24px}.source-chip{display:block;width:fit-content;border-left:2px solid var(--line);padding:8px 12px;line-height:1.7;font-size:13px;margin:0 0 17px;text-decoration:none;color:var(--muted);background:var(--blue-soft);border-radius:0 6px 6px 0}.source-chip span{display:block}.source-chip span:first-child{font-weight:700}.source-chip:hover{text-decoration:underline}.v2-overview{border-bottom:0}.v2-overview .landing{font-size:24px}.person-meta{margin:0 0 24px}.report-section h3{margin-bottom:26px}.closing-door .character-guide{margin:0 0 14px;padding:0}.closing-door h3{margin-bottom:20px}
.card-selector{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin:20px 0 5px}.card-selector button{padding:10px 18px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:14px;min-height:44px}.card-selector button[aria-pressed=true]{border-color:var(--my-accent);color:var(--ink);background:var(--blue-soft)}.v3-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:20px;max-width:760px;margin:auto}.v3-card{position:relative;min-width:0;margin:0}.v3-card.our-card{grid-column:1/-1;width:calc(50% - 10px);justify-self:center}.v3-card canvas{display:block;width:100%;height:auto;border-radius:20px}.card-save{display:block;width:calc(100% - 36px);margin:6px auto 0;padding:13px;border:1px solid var(--line);border-radius:12px;color:var(--ink);font-weight:700;background:var(--surface);min-height:48px}.card-help{text-align:center;font-size:13px;color:var(--muted);line-height:1.8;margin:14px 0 28px}.card-placeholder{aspect-ratio:9/16;display:grid;place-content:center;background:var(--surface);border:1px solid var(--line);border-radius:20px;color:var(--muted)}
.calc-fold{margin:30px 0;border:1px solid var(--line);border-radius:14px;padding:0 20px;background:var(--surface)}.calc-fold>summary{padding:20px 0;cursor:pointer;font-size:17px;font-weight:700}.calc-fold .helper{font-size:14px;line-height:1.9;padding-bottom:20px}.calc-placeholder{padding:22px 0;color:var(--muted);font-size:15px;line-height:1.8}.display-bridge{font-size:13px;color:var(--muted);padding:0 0 18px}.report-tail{padding:36px 0 60px}.report-tail p{font-size:13px;color:var(--muted);line-height:1.9;margin:16px 0}.feedback{margin-top:60px}.preview-end-note{font-size:12px;color:var(--muted);margin:20px 0;text-align:center;line-height:1.8}.v3-dialog{border:1px solid var(--line);border-radius:18px;max-width:480px;width:calc(100% - 40px);padding:26px;background:var(--paper);color:var(--ink)}.v3-dialog::backdrop{background:#30323855}.v3-dialog h2{font-size:21px;line-height:1.6;margin-bottom:14px}.v3-dialog p{font-size:15px;line-height:1.8;margin:12px 0 20px}.v3-dialog .dialog-title{font-weight:700;font-size:17px}.v3-toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--button);color:white;padding:12px 20px;border-radius:10px;max-width:calc(100% - 30px);width:max-content;z-index:30;font-size:14px;line-height:1.7;pointer-events:none}
@media(max-width:600px){.preview-tools{margin:12px 16px 20px}.v3-cards{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:8px 18px 14px;scroll-padding-left:18px;overscroll-behavior-x:contain}.v3-card,.v3-card.our-card{flex:0 0 calc(100vw - 48px);width:calc(100vw - 48px);scroll-snap-align:start}.snap-wrap{padding:0 22px}.share-cover{margin-left:16px;margin-right:16px}.landing{font-size:22px}.practice-items h5{font-size:22px}.v2-overview .landing{font-size:23px}.report-section{padding-bottom:36px}.character-guide{margin-top:35px}.v2-cells{gap:34px}.share-cover h1{font-size:30px}.brand{height:72px;padding:18px 22px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.v3-cards{scroll-behavior:auto}}
@media print{.preview-tools,.card-selector,.card-save,.card-help,.preview-end-note,.v3-toast,dialog,.cell-chat,.closing-door,.feedback,.report-tail,.character-guide{display:none!important}.screen-reading{display:none!important}.print-source{display:block!important}.v2-cell,.practice-items>li{break-inside:auto}.v2-cell h4,.practice-items h5{break-after:avoid}.pair-mark{display:none}.v3-cards{display:grid;grid-template-columns:1fr 1fr;overflow:visible;max-width:165mm}.v3-card,.v3-card.our-card{width:auto;min-width:0;break-inside:avoid}.v3-card.our-card{grid-column:auto;max-width:75mm}.snap-wrap{max-width:none;padding:0}.calc-fold>:not(summary){display:block!important}.calc-fold{break-inside:auto}.prose p{font-size:11pt;line-height:1.85;orphans:3;widows:3}.v3-cell h4{font-size:14pt}.source-chip{background:none}body{background:white!important}.v3-card canvas{width:100%}.share-cover{margin:auto}.prose{white-space:normal}}

/* ★★ 2026-09-26 이관 보정 — 시안은 카드 한 장을 「100vw - 48px」로 잡는데, 운영에서는 이 자리가
   .share-cover 안쪽이라 담는 칸이 305px 뿐이다(390px 실측). 342px 카드가 넘쳐 오른쪽이 잘렸다.
   ★ 그래서 가로 스크롤 줄만 «화면 전폭»으로 빼낸다. 카드 크기는 시안 값 그대로 둔다.
   ★★ margin-inline 의 calc(50% - 50vw) 는 부모 안쪽 여백을 몰라도 되는 꼴이다. */
@media(max-width:600px){
 .v3-cards{width:100vw;max-width:100vw;margin-inline:calc(50% - 50vw)}
}

/* ★★ 2026-09-26 P3a — 안내 덩이의 얼굴이 «마음이»로 바뀌었다(web/maeumi.js · 아스트라 v5e).
   ★ 커플 화면은 maeum.css 를 싣지 않는다 — .maeumi 기본 크기를 여기에 둔다.
   ★ 두 사람 캐릭터(.guide-characters · .pair-mark)는 그대로다. 바꾼 것은 «말을 거는 자리»뿐이다.
   ★ 최종 그림은 정사각(1024×1024)이다 — 정사각 상자에 담고 세로로 늘이지 않는다. */
.character-guide{align-items:flex-start}
.character-guide .maeumi{display:block;flex:none;width:48px;height:48px;object-fit:contain;opacity:1;mix-blend-mode:normal}
.character-guide .maeumi-name{display:block;font-size:13px;font-weight:700;color:var(--button);margin-bottom:4px}
.share-cover .character-guide .maeumi{width:44px;height:44px}

/* ══ 기다리는 화면 (2026-09-27) ══
   ★★ 파운더 지시 — 「늦게 걸린다는 안내를 작게 말고 «크게»」. 작은 회색 글씨로 적지 않는다.
   ★ 가짜 진행 막대·퍼센트는 두지 않는다 — 우리는 진행률을 모른다. 대신 «지난 시간»을 보여 준다. */
.writing{text-align:center}
.writing-art{display:flex;justify-content:center;margin-bottom:14px}
.writing-art .maeumi.lg{width:72px;height:72px}
/* ★★ 선택자를 한 칸 올렸다 — index.html 인라인의 «.writing p» 가 (0,1,1) 이라 14px 로 덮는다.
   ★ 실측으로 밟았다(보통 2분 줄이 14px 로 그려졌다). 결과 화면에서도 같은 함정이 있었다. */
.writing #writing-title{font-size:22px;font-weight:700;line-height:1.5;color:var(--button)}
.writing .writing-when{font-size:18px;font-weight:600;color:var(--ink);margin-top:10px}
.writing .writing-elapsed{font-size:17px;color:var(--ink);margin-top:6px;font-variant-numeric:tabular-nums}
.writing #writing-copy{font-size:16px;color:var(--ink);margin-top:12px;line-height:1.8}
.writing #writing-copy:empty{display:none}
.writing .writing-leave{font-size:15px;color:var(--muted);margin-top:14px;line-height:1.7}
@media(max-width:600px){.writing #writing-title{font-size:20px}.writing .writing-when{font-size:17px}.writing .writing-elapsed{font-size:17px}.writing-art .maeumi.lg{width:64px;height:64px}}

/* ★★ ?r= 로 다시 들어왔는데 아직 만드는 중일 때 — 기다리는 덩이만 보인다(2026-09-27).
   ★ #writing 은 #preview-content 의 자식이라 그 상자를 열어야 하고,
     그러면 아직 비어 있는 표·카드 자리까지 따라 나온다. 한 줄로 그것만 감춘다. */
body.couple-waiting #preview-content > *:not(#writing){display:none}

/* ★ 「← 관계로」 — 커플 결과에서 «소유자에게만» (2026-09-28 · P3b-2②).
   ★★ 커플 자체 머리줄을 그대로 두고 그 안에 링크 하나만 더한다 — 공용 머리줄을 넣지 않는다(요청문 §0).
   ★★★ 보이고 안 보이고는 CSS 가 아니라 «서버 판정»이 정한다 — 이 규칙은 모양만 맡는다. */
.brand .couple-back{margin-right:auto;font-size:14px;color:inherit;text-decoration:none;
  padding:8px 10px;border-radius:20px;opacity:.85}
.brand .couple-back:hover{opacity:1;text-decoration:underline}
/* ★ 내 보고서로 저장 (2026-10-12) — 「← 관계로」와 같은 자리에 선다. 둘은 동시에 안 나온다 */
.brand .couple-save{margin-right:auto;font-size:14px;font-weight:600;cursor:pointer;
  padding:8px 12px;border-radius:20px;border:1px solid currentColor;background:transparent;color:inherit;opacity:.9}
.brand .couple-save:hover{opacity:1}
.brand .couple-save[disabled]{opacity:.5;cursor:default}
.couple-save-note{margin:0;padding:8px 18px;font-size:14px;color:var(--muted)}

/* ★★★ 2026-10-12 — 본문 칸을 «나 리포트와 같은 꼴»으로 (화면 통일).
   수치는 src/web/result.html 의 .report-card / h3 / .evidence 에서 그대로 옮겨 올렸다.
   ★ 핵심 문장 상자(.key-line)는 만들지 않는다 — 커플 저장본에 그 칸이 없다.
   ★★ 표지의 두 사람 카드는 그대로다. 여기서 바꾸는 것은 «본문 칸»뿐이다.
   ★★★ --teal / --shadow 는 이 쪽 :root 에 «없다» — 값을 직접 두고 있으면 그걸 쓴다(나 리포트 result.html:12 원문). */
.report-section .v2-cells{gap:0}
.report-section .v2-cell{
  border:1px solid var(--line);border-radius:23px;background:var(--paper);
  box-shadow:var(--shadow,0 16px 48px #123a4408);
  padding:33px 35px 20px;margin-bottom:32px;scroll-margin-top:86px;position:relative;overflow:hidden;
}
.report-section .v2-cell:before{content:"";position:absolute;top:0;left:35px;width:42px;height:3px;background:var(--teal,#123a44)}
.report-section .v2-cell h4{font-size:27px;line-height:1.45;font-weight:720;letter-spacing:-.3px;margin:0 0 22px;text-wrap:balance}
.report-section .v2-cell .landing{font-size:17px;line-height:1.85;font-weight:650;letter-spacing:0;margin:0 0 24px}
.report-section .v2-cell .prose p{font-size:16px;line-height:1.95}
/* 근거 접기 — 나 리포트 .evidence 와 같은 위 구분선·여백. ★ 여는 표시(▶)는 그대로 둔다 */
.report-section .v2-cell .evidence{border-top:1px solid var(--line)!important;margin-top:25px!important;padding-top:16px!important}
.report-section .v2-cell .evidence summary{letter-spacing:.02em}
.report-section .v2-cell .evidence .prose{padding-left:0;border-left:0}
@media(max-width:760px){
  .report-section .v2-cell{padding:26px 22px 14px;border-radius:21px;margin-bottom:26px}
  .report-section .v2-cell:before{left:22px;width:32px}
  .report-section .v2-cell h4{font-size:24px;line-height:1.5;margin-bottom:18px}
}
@media(max-width:480px){
  .report-section .v2-cell{padding:24px 19px 13px}
  .report-section .v2-cell h4{font-size:23px}
}


/* ★ 2026-10-12 — 카드에서 이어지는 대화. 색·선은 이 화면의 변수를 그대로 쓴다 */
/* ★ 2026-10-12 — 리포트 «안»의 대화 시트를 걷었다. 대화는 별도 쪽(/couple/<열쇠>/chat)이 맡는다.
   그 쪽의 꼴은 chatShell.css 한 벌을 나 대화·관계 대화와 함께 쓴다. */

/**
 * ★★★ 2026-10-15 — 줄바꿈 다듬기 (커플 화면 몫 · 글은 한 글자도 안 바꾼다)
 *
 * ★ 왜 여기에 따로 두나 — 커플 화면(index.html)은 «maeum.css 를 안 싣는다».
 *   한 자리에서 못 쥐는 이유가 그것이다. 나·관계 쪽은 maeum.css 끝에 같은 뜻의 규칙이 있다.
 *   ★★ 이 파일은 index.html 의 <style> «뒤»에 실린다(index.html:308) — 그래서 여기서 덮을 수 있다.
 *
 * ★ 실측으로 잡은 것(360·390·1280px · 가상 인물 벼리·새봄 · scratch/qa_1014i/before/scan.json)
 *   · 제목 들쭉날쭉 2~4건 — 「시작은 신중하고 마무리는 / 느린 사람」(13자/5자)
 *   · 고아 줄 1~3건 — 「… 상관 · / 정인」
 *   · 낱말 가운데 1건 — 「궁금해진 것 / 이 있나요?」(label 은 keep-all 밖이었다)
 *   · 부호 줄머리 1건 — 「생성·열람 / ·PDF」
 */
body, input, button, select, textarea, label, dt, dd, span, small, strong, em, summary {
  word-break: keep-all;
}
h1, h2, h3, h4, h5, h6, .landing, .key-line, .v2-cell h4, .v3-cell h4, .practice-items h5,
.relation-position {
  text-wrap: balance;
}
p, dd, li, .prose p, .body-copy {
  text-wrap: pretty;
}
/* ★ anywhere 는 낱말 한가운데도 끊는다 — 그 낱말 혼자서도 안 들어갈 때만 끊게 내린다.
   ★★ 넘침 방어가 목적이던 자리라, 고친 뒤 X(칸 넘침) 건수를 다시 세어 늘지 않은 것을 확인했다. */
.shishen-grid dd, .relation-name { overflow-wrap: break-word; }
/* ★ 가운뎃점으로 묶인 낱말 무리가 부호로 줄을 시작하지 않게 */
.m-nowrap { white-space: nowrap; }

/**
 * ★★ 2026-10-15 ㉣ — 사주표가 칸을 넘던 것 (줄바꿈과 «따로» 커밋한다. 되돌리려면 이 커밋만)
 *
 * ★ 실측 — 세 폭 모두 table.pillars 와 그 안의 td·tbody·tr 이 담은 칸보다 9~25px 넓었다.
 *   X(칸 넘침) 360px 16 · 390px 19 · 1280px 12.
 * ★★ 원인은 .pillar-element 의 white-space:nowrap(index.html:4) 이었다 —
 *   기운 이름이 한 줄을 고집해 칸이 그만큼 벌어지고, 그 폭이 표 전체를 밀었다.
 * ★★★ 후보 넷을 심어 재 봤다(scratch/qa_1014i/tryX.js):
 *     표를 칸에 맞추기(table-layout:fixed)  → 16/19/12 그대로. 원인이 아니었다
 *     기운 이름 줄바꿈 허용                → ★ 1/1/0 으로 떨어졌다
 *   그래서 한 줄만 바꾼다. 글자·크기·색은 그대로다(글자 지문 3190/3187 변화 없음).
 * ★ 남는 1건은 section.share-cover 자신(360·390px 에서 17px) — 표 때문이 아니다.
 *   overflow-x:auto 를 더하면 0 이 되지만 «가로 스크롤 막대»가 새로 생긴다. 안 넣고 보고한다.
 */
.pillar-element { white-space: normal; }
