/* 조선궁서체 — 라이선스는 static/fonts/chosun/LICENSE.txt. Windows 기본 Gungsuh 는
   굵은 자체가 없어 합성 굵게가 가늘게 나온다. 받아오기 전에는 Gungsuh 로 버틴다. */
@font-face{font-family:'Woldam Chosun Gungseo';src:url("../fonts/chosun/ChosunGs-subset.bd827614d8b5.woff2") format('woff2');font-weight:400;font-style:normal;font-display:swap;unicode-range:U+AC00-D7A3}@font-face{font-family:'Woldam Chosun Gungseo';src:url("../fonts/chosun/ChosunGs-ks.b01a01b159b9.woff2") format('woff2');font-weight:400;font-style:normal;font-display:swap}
/* 무료 결과(일부 공개) + 깊은 풀이. 기존 흰 화면과 캐릭터별 --reading-accent 를 그대로 쓴다. */
.v2{--v2-line:#ebe6de;--v2-soft:#f7f4ef;--v2-sub:#6f6a63;--v2-good:#25744c;--v2-warn:#ad4533}
.v2 [data-el="목"]{--el:var(--el-1)}.v2 [data-el="화"]{--el:var(--el-2)}.v2 [data-el="토"]{--el:var(--el-3)}.v2 [data-el="금"]{--el:var(--el-4)}.v2 [data-el="수"]{--el:var(--el-5)}
.v2-preview{padding-bottom:96px}
.v2-hero{padding:28px 20px 22px;background:var(--reading-wash);border-bottom:1px solid var(--v2-line)}
.v2-kicker{margin:0 0 8px;font-size:14px;font-weight:700;color:var(--reading-accent);letter-spacing:.04em}
.v2-hero h1{margin:0;font-size:26px;line-height:1.3;word-break:keep-all}
.v2-born{margin:10px 0 0;font-size:14px;line-height:1.7;color:var(--v2-sub)}
.v2-journey{list-style:none;display:flex;gap:6px;margin:18px 0 0;padding:0;font-size:14px;color:#8c867e}
.v2-journey li{display:flex;align-items:center;gap:6px;flex:1;padding:8px 0;border-top:2px solid #ddd6cc}
.v2-journey li span{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#e9e3da;font-size:14px;font-weight:700;color:#6f6a63}
.v2-journey li span svg{width:10px;height:10px}
.v2-journey .is-done{border-color:var(--reading-accent);color:var(--reading-accent)}
.v2-journey .is-done span{background:var(--reading-accent);color:#fff}
.v2-journey [aria-current]{border-color:var(--ink);color:var(--ink);font-weight:700}
.v2-journey [aria-current] span{background:var(--ink);color:#fff}

.v2-card{position:relative;margin:14px 16px 0;padding:22px 18px;border:1px solid var(--v2-line);border-radius:14px;background:#fff}
.v2-eyebrow,.v2 .eyebrow{margin:0 0 6px;font-size:14px;font-weight:700;letter-spacing:.06em;color:var(--reading-accent)}
.v2-card h2{margin:0 0 14px;font-size:19px;line-height:1.4;word-break:keep-all}
.v2-card>p,.v2 .report-section>p{font-size:15px;line-height:1.85;word-break:keep-all;overflow-wrap:anywhere}
.v2-lead{margin:0 0 14px;color:var(--v2-sub);font-size:14px!important}
.v2-note{margin:12px 0 0;font-size:14px!important;line-height:1.7!important;color:#6f6a63}
.v2-sub{margin:26px 0 12px;font-size:15px}
.v2-guide{margin:18px 16px 0}
.v2-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* 가림 — 실제 값이 아닌 자리 채움 문장만 흐린다 */
.v2-blur{filter:blur(7px);user-select:none;pointer-events:none;color:#555}
.v2-when .v2-blur,.v2-teaser b.v2-blur{display:inline-block;padding:0 2px;color:var(--ink);filter:blur(5px)}
.v2-lock-ico{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* 원국표 */
.v2-natal{display:grid;gap:0;border:1px solid var(--v2-line);border-radius:10px;overflow:hidden;font-size:14px}
.v2-natal-row{display:grid;grid-template-columns:66px repeat(4,1fr);border-top:1px solid var(--v2-line)}
.v2-natal-row:first-child{border-top:0}
.v2-natal-row>span{display:flex;align-items:center;justify-content:center;min-height:32px;padding:4px 2px;text-align:center;word-break:keep-all;line-height:1.35}
.v2-natal-row>span[role=rowheader]{justify-content:flex-start;padding-left:8px;background:var(--v2-soft);color:var(--v2-sub);font-size:14px}
.v2-natal-head>span{background:var(--v2-soft);font-weight:700;color:#444}
.v2-natal-glyph>span{padding:6px 3px}
.v2-natal-glyph b{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:62px;aspect-ratio:1;border-radius:10px;background:color-mix(in srgb,var(--el,#999) 14%,#fff);border:1px solid color-mix(in srgb,var(--el,#999) 45%,#fff);color:color-mix(in srgb,var(--el,#333) 80%,#000);font-family:'Woldam Chosun Gungseo','Gungsuh','궁서',serif;font-weight:700;font-size:24px;line-height:1.1}
.v2-natal-glyph b small{font-family:inherit;font-family:Pretendard Variable,sans-serif;font-size:14px;color:#6b665f;margin-top:3px}
.v2-natal-glyph b.is-unknown{background:#f3f3f3;border-color:#e2e2e2;color:#aaa}

/* 오행 · 강약 · 용신 */
.v2-elements{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.v2-elements li{display:grid;grid-template-columns:22px 1fr 50px 30px;align-items:center;gap:8px;font-size:14px}
.v2-el-name{font-weight:700;color:var(--el)}
.v2-el-bar{height:9px;border-radius:9px;background:#f0ece6;overflow:hidden}
.v2-el-bar i{display:block;height:100%;border-radius:inherit;background:var(--el)}
.v2-elements b{text-align:right;font-variant-numeric:tabular-nums}
.v2-elements small{color:var(--v2-sub);font-size:14px}
.v2-strength{margin-top:22px;padding-top:18px;border-top:1px dashed var(--v2-line)}
.v2-strength p{font-size:14px;line-height:1.8;margin:12px 0 0;word-break:keep-all}
.v2-strength-title{margin:0!important;font-size:15px!important}
.v2-strength-title b{color:var(--reading-accent)}
.v2-gauge{display:grid;grid-template-columns:repeat(7,1fr);margin-top:12px;border-radius:8px;overflow:hidden;border:1px solid var(--v2-line)}
.v2-gauge span{padding:8px 0;text-align:center;font-size:14px;color:#6f6a63;background:#faf8f5;border-left:1px solid var(--v2-line)}
.v2-gauge span:first-child{border-left:0}
.v2-gauge .is-here{background:var(--reading-accent);color:#fff;font-weight:700}
.v2-useful{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px}
.v2-useful>div{padding:12px 6px;border-radius:10px;background:var(--v2-soft);text-align:center}
.v2-useful small{display:block;font-size:14px;color:var(--v2-sub);line-height:1.4;word-break:keep-all}
.v2-useful small>span{display:block}
.v2-useful b{display:inline-block;margin-top:6px;font-size:20px;color:var(--el,var(--ink))}
/* 2026-11-04 정렬: 설명이 두 줄로 꺾인 칸만 이름 · 값이 아래로 밀렸다. 칸을 세로 flex 로, 설명 줄이 남는 높이를 먹는다 */
.v2-useful>div{display:flex;flex-direction:column}
.v2-useful small{flex:1 0 auto;display:flex;flex-direction:column}
.v2-useful small>span:first-child{flex:1 0 auto}
.v2-useful b{align-self:center}
.v2-useful.is-locked b{font-size:20px;color:var(--ink);filter:blur(5px)}
.v2-samjae{margin-top:16px!important;padding:12px 14px;border-radius:10px;background:#fbf1ee;color:#7c3b2d;font-size:14px!important}

/* 대운 */
.v2-daeun{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.v2-daeun li{display:flex;flex-direction:column;align-items:center;padding:10px 4px;border-radius:10px;background:var(--v2-soft);font-size:14px}
.v2-daeun b{font-size:14px;color:var(--v2-sub)}
.v2-daeun span{margin:4px 0 2px;font-size:16px;font-weight:700}
.v2-daeun small{font-size:14px;color:var(--reading-accent)}

/* 시점 · 고비 */
.v2-moments{list-style:none;margin:0;padding:0 0 0 6px;border-left:2px solid var(--v2-line)}
.v2-moments li{position:relative;padding:4px 0 18px 18px}
.v2-moments li:last-child{padding-bottom:4px}
.v2-dot{position:absolute;left:-8px;top:8px;width:12px;height:12px;border-radius:50%;background:var(--reading-accent);box-shadow:0 0 0 4px #fff}
.v2-moments li[data-domain="연애"] .v2-dot{background:#c2577a}
/* 2026-11-04 사장님: 연애 쪽(재회 · 연애 · 궁합) 시점 점은 동그라미 대신 하트 */
.v2-moments li[data-domain="연애"] .v2-dot{left:-11px;top:6px;width:18px;height:16px;border-radius:0;box-shadow:none;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 22'%3E%3Cpath d='M12 21.6 10.3 20C4.2 14.5 0 10.7 0 6.1 0 2.7 2.7 0 6.1 0c1.9 0 3.8.9 5.9 3 2.1-2.1 4-3 5.9-3C21.3 0 24 2.7 24 6.1c0 4.6-4.2 8.4-10.3 13.9z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 22'%3E%3Cpath d='M12 21.6 10.3 20C4.2 14.5 0 10.7 0 6.1 0 2.7 2.7 0 6.1 0c1.9 0 3.8.9 5.9 3 2.1-2.1 4-3 5.9-3C21.3 0 24 2.7 24 6.1c0 4.6-4.2 8.4-10.3 13.9z'/%3E%3C/svg%3E") center/contain no-repeat}.v2-moments li[data-domain="직업"] .v2-dot{background:#3b6fa8}
.v2-when{margin:0;font-size:14px;color:var(--v2-sub)}
.v2-when b{color:var(--ink)}
.v2-what{margin:3px 0 0;font-size:16px;font-weight:700;word-break:keep-all}
.v2-moments small{display:block;margin-top:4px;font-size:14px;color:#8a847c}
.v2-cautions{list-style:none;margin:0;padding:0;border-top:1px solid var(--v2-line)}
.v2-cautions li{display:flex;gap:12px;align-items:flex-start;padding:13px 2px;border-bottom:1px solid var(--v2-line);font-size:14.5px;line-height:1.6;word-break:keep-all}
.v2-cautions li>b{flex:none;min-width:22px;color:var(--reading-accent);font-variant-numeric:tabular-nums}
.v2-cautions li>span,.v2-cautions li>div{flex:1;min-width:0}
.v2-cautions.is-open small{display:block;font-size:14px;color:#8a847c;margin-top:2px}
.v2-cautions.is-open p{margin:6px 0 0;font-size:14px;color:#4d4943}
.v2-cautions.is-open li>div>p:first-child{margin-top:0}
/* 달 이름(9월 · 12월) 칸은 두 자리 달도 같은 폭. 행마다 본문 시작 x 가 달랐다 */
.v2-cautions li>b.v2-key-month{min-width:2.4em}
.v2-cautions li.is-locked{position:relative}
/* 묶음 한눈에 보기 (studio/bundle_glance.py) — 결과 카드 목록(v2-cautions)을 그대로 쓰고 글자만 키운다 */
.bundle-glance .v2-sub:first-of-type{margin-top:0}
.bundle-glance-list li{font-size:15px}
.bundle-glance-list li span b{font-size:16px}
.bundle-glance-list.is-good li span b{color:var(--v2-good)}
.bundle-glance-list.is-warn li span b{color:var(--v2-warn)}
html[data-theme="dark"] .bundle-glance-list.is-good li span b{color:#86d6a8}
html[data-theme="dark"] .bundle-glance-list.is-warn li span b{color:#f2a593}

/* 이어서 읽기 */
.v2-teaser{overflow:hidden}
.v2-lock-block{margin-top:-4px;-webkit-mask-image:linear-gradient(#000,transparent);mask-image:linear-gradient(#000,transparent)}
.v2-lock-block p{margin:0;font-size:15px;line-height:1.85}
.v2-lock-card{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:6px;padding:18px 16px;border-radius:12px;background:var(--reading-wash);border:1px solid color-mix(in srgb,var(--reading-accent) 30%,#fff);text-align:center}
.v2-lock-card .v2-lock-ico{width:22px;height:22px;color:var(--reading-accent)}
.v2-lock-card p{margin:0;font-size:14px;line-height:1.6;word-break:keep-all}
.v2-lock-card .btn{min-width:160px}

/* 주간 · 일진 */
.v2-badge{display:inline-block;margin:0 0 10px;padding:4px 10px;border-radius:99px;font-size:14px!important;font-weight:700;line-height:1.5!important;background:#f0ede8;color:#5c5750}
.v2-badge.is-good{background:#e7f4ec;color:var(--v2-good)}
.v2-badge.is-caution{background:#fbece8;color:var(--v2-warn)}
.v2-days{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:6px}
.v2-days li{display:grid;grid-template-columns:40px 1fr auto;grid-template-areas:"date ganji tag" "date line tag";column-gap:10px;align-items:center;padding:9px 10px;border-radius:10px;background:#faf9f7;border:1px solid transparent}
.v2-days li.is-good{background:#f1f8f4;border-color:#d6ecdf}
.v2-days li.is-caution{background:#fcf3f1;border-color:#f2dcd6}
.v2-day-date{grid-area:date;display:flex;flex-direction:column;align-items:center;font-size:14px;color:var(--v2-sub)}
.v2-day-date b{font-size:17px;color:var(--ink)}
.v2-day-ganji{grid-area:ganji;font-size:14px;color:var(--v2-sub)}
.v2-day-line{grid-area:line;font-size:14px;font-weight:600;word-break:keep-all}
.v2-day-date+.v2-day-line{grid-row:1/3}
.v2-days em{grid-area:tag;font-style:normal;font-size:14px;font-weight:700;color:#8a847c}
.v2-days .is-good em{color:var(--v2-good)}.v2-days .is-caution em{color:var(--v2-warn)}
/* 2026-11-06 사장님: 「1」 「금」만 세로로 두면 뭔지 모른다 → 「1월 1일 (금)」 한 줄 머리 + 간지 옆 · 풀이 아랫줄(간지 있는 표만) */
.v2-days.is-md li{grid-template-columns:auto 1fr auto;grid-template-areas:"date ganji tag" "line line tag";column-gap:8px;row-gap:2px}
.v2-days.is-md .v2-day-date{display:block;font-size:15px;font-weight:800;color:var(--ink);white-space:nowrap}
.v2-locked-rows{list-style:none;margin:14px 0 0;padding:0}
.v2-locked-rows li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 4px;border-top:1px solid var(--v2-line);font-size:14px}
.v2-locked-rows li>span:first-child{font-weight:600}
/* 2026-11-04 가림 칸이 라벨을 밀어 「11월 4주차 / (16일~22일)」로 꺾였다 — 가림은 남는 자리만, 넘치면 잘린다 */
.v2-locked-rows li>.v2-blur{flex:1 1 0;min-width:0;overflow:hidden;white-space:nowrap;text-align:right}
.v2-locked-rows .v2-lock-ico{color:#a39c92}
.v2-week{border-top:1px solid var(--v2-line);padding:4px 0}
.v2-week summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 0;cursor:pointer;font-size:15px;list-style:none}
.v2-week summary::-webkit-details-marker{display:none}
.v2-week summary .v2-badge{margin:0}
.v2-week>p{font-size:14px;line-height:1.8;margin:0 0 4px}
.v2-week[open]{padding-bottom:14px}

/* 그래프 */
.v2-graph{position:relative;margin:4px 0 0;padding:14px 8px 10px;border-radius:12px;background:var(--v2-soft)}
.v2-graph>svg{display:block;width:100%;height:auto;overflow:visible}
.v2-graph-hidden{fill:none;stroke:#9d9487;stroke-width:2.4;filter:blur(2.4px);opacity:.75}
.v2-graph-shown{fill:none;stroke:var(--reading-accent);stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round}
.v2-graph-focus{fill:none;stroke:#c2577a;stroke-width:1.6;stroke-dasharray:4 3;opacity:.85}
.v2-graph-mid{stroke:#d9d2c7;stroke-dasharray:2 4}
.v2-graph>svg circle{fill:#fff;stroke:var(--reading-accent);stroke-width:2}
.v2-graph text{font-size:8px;fill:#8a847c;text-anchor:middle}
.v2-graph-lock{position:absolute;left:62%;top:50%;transform:translate(-50%,-60%);display:flex;align-items:center;gap:6px;padding:8px 12px;border-radius:99px;background:#fff;box-shadow:0 4px 14px rgba(0,0,0,.08);font-size:14px;font-weight:600;white-space:nowrap}
.v2-graph.is-open figcaption{display:flex;gap:14px;justify-content:flex-end;margin-top:6px;font-size:14px;color:var(--v2-sub)}
.v2-legend::before{content:"";display:inline-block;width:14px;height:2px;margin-right:5px;vertical-align:middle;background:var(--reading-accent)}
.v2-legend.is-focus::before{background:#c2577a}
.v2-mini-months{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0 0;padding:0}
.v2-mini-months li{display:flex;flex-direction:column;gap:2px;padding:10px;border-radius:10px;border:1px solid var(--v2-line);font-size:14px}
.v2-mini-months small{font-size:14px;color:var(--v2-sub)}
.v2-mini-months b{font-size:16px;color:var(--reading-accent)}
.v2-mini-months span{line-height:1.4;word-break:keep-all}

/* 연운 목록(미리보기) */
.v2-years{list-style:none;margin:0;padding:0}
.v2-years li{display:grid;grid-template-columns:44px 1fr auto;grid-template-areas:"y g s" "t t t";gap:4px 10px;align-items:center;padding:12px 2px;border-top:1px solid var(--v2-line);font-size:14px}
.v2-years li>b{grid-area:y}.v2-years li>span:nth-of-type(1){grid-area:g;color:#4d4943}
.v2-years em,.v2-month-head em.is-warn,.v2-tag.is-warn{font-style:normal;font-size:14px;font-weight:700;padding:2px 8px;border-radius:99px;background:#fbece8;color:var(--v2-warn)}
.v2-years em{grid-area:s}
.v2-years .v2-blur{grid-area:t;font-size:14px}

/* 전체 풀이 목록 · 하단 고정 */
.v2-inventory ul{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:15px}
.v2-inventory li{display:flex;gap:10px;align-items:flex-start}
.v2-inventory li>svg{width:22px;height:22px;margin-top:0;flex:none;color:var(--reading-accent)}
.v2-inventory b{display:block;font-size:14.5px;line-height:22px}
.v2-inventory small{display:block;font-size:14px;color:var(--v2-sub);margin-top:1px}
.v2-sticky{position:fixed;left:50%;bottom:0;z-index:20;width:min(100%,var(--app-w));transform:translateX(-50%);padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:linear-gradient(transparent,#fff 28%)}
.v2-sticky .btn{box-shadow:0 6px 18px rgba(0,0,0,.14)}

/* 결과 — 시기별 · 월별 · 연도별 */
.v2-stages{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.v2-stages li{padding:14px;border-radius:12px;background:var(--v2-soft)}
.v2-stage-head{display:flex;align-items:baseline;gap:8px}
.v2-stage-head b{font-size:16px}.v2-stage-head small{font-size:14px;color:var(--v2-sub)}
.v2-stages p{margin:8px 0 0;font-size:14px;line-height:1.8;word-break:keep-all}
.v2-score-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}
.v2-score-row span{display:grid;gap:3px;font-size:14px;color:var(--v2-sub)}
.v2-score-row i,.v2-domains dt i{position:relative;display:block;height:6px;border-radius:6px;background:#ece6dd;overflow:hidden}
.v2-score-row i::after,.v2-domains dt i::after{content:"";position:absolute;inset:0 auto 0 0;width:calc(var(--v)*1%);border-radius:inherit;background:var(--reading-accent);transform-origin:left;transition:transform 1.1s cubic-bezier(.2,.7,.2,1) .2s}
.v2-score-row b{font-size:14px;color:var(--ink)}
.v2-year-group{border-top:1px solid var(--v2-line)}
.v2-year-group>summary{display:flex;justify-content:space-between;align-items:center;padding:14px 0;cursor:pointer;font-size:17px;list-style:none}
.v2-year-group>summary::-webkit-details-marker{display:none}
.v2-year-group>summary{gap:12px}.v2-year-group>summary b{flex:none}.v2-year-group>summary span{flex:1;text-align:right;font-size:14px;color:var(--v2-sub)}
.v2-year-group>summary::after{content:"＋";color:var(--reading-accent)}
.v2-year-group[open]>summary::after{content:"－"}
.v2-months,.v2-year-cards{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:12px}
.v2-month,.v2-year-cards>li{padding:16px 14px;border:1px solid var(--v2-line);border-radius:12px;background:#fff;scroll-margin-top:80px}
.v2-month.is-current{border-color:var(--reading-accent);box-shadow:0 0 0 3px var(--reading-wash)}
.v2-month.is-past{opacity:.72}
.v2-month-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.v2-month-head h3{margin:0;font-size:18px}
.v2-month-head>span{font-size:14px;color:var(--v2-sub)}
.v2-month-head em{font-style:normal;font-size:14px;font-weight:700;padding:2px 8px;border-radius:99px;background:var(--reading-accent);color:#fff}
/* 2026-11-04 사장님: 「11월 [학업운이 좋은 달] [이번 달]」 배지가 아래 여백(10px)에 밀려 위로 뜨고 알약보다 컸다 */
.v2-month-head .v2-badge,.v2-month-head em,.v2-month-head em.is-warn{margin:0;padding:2px 8px;line-height:1.5}
.v2-month-score{margin-left:auto;display:grid;place-items:center;min-width:38px;height:38px;border-radius:50%;background:var(--reading-wash);color:var(--reading-accent);font-size:15px}
.v2-month-score.v2-ring{background:none;min-width:0}
.v2-month-key{margin:8px 0 0!important;font-size:14px!important;font-weight:700;color:var(--reading-accent)}
.v2-tag{font-style:normal;font-size:14px;font-weight:600;padding:2px 7px;border-radius:99px;background:var(--v2-soft);color:#5c5750}
/* 2026-11-04 사장님: 해 두면 좋은 일 칩도 피할 일(빨강)처럼 초록 배지로 */
.v2-tag.is-good{background:#e8f4ec;color:#25744c}
.v2-month>p,.v2-year-cards>li>p{font-size:14.5px;line-height:1.85;margin:10px 0 0;word-break:keep-all}
.v2-domains{margin:12px 0 0;display:grid;gap:10px}
.v2-domains>div{padding:10px 12px;border-radius:10px;background:#faf9f7}
.v2-domains>div.is-focus{background:var(--reading-wash)}
.v2-domains dt{display:grid;grid-template-columns:34px 1fr 30px;align-items:center;gap:8px;font-size:14px;font-weight:700}
.v2-domains dt b{text-align:right;font-variant-numeric:tabular-nums}
.v2-domains dd{margin:6px 0 0;font-size:14px;line-height:1.75;color:#3f3b36;word-break:keep-all}
.v2-tip{margin-top:12px!important;padding:10px 12px;border-radius:10px;border:1px dashed color-mix(in srgb,var(--reading-accent) 45%,#fff);font-size:14px!important}
.v2-tip b{margin-right:6px;color:var(--reading-accent)}
@media (max-width:360px){.v2-natal-row{grid-template-columns:62px repeat(4,1fr)}.v2-natal-row>span[role=rowheader]{padding-left:5px}.v2-natal-glyph b{font-size:20px}.v2-daeun{grid-template-columns:repeat(3,1fr)}.v2-mini-months{grid-template-columns:1fr}}
@media print{.v2-sticky{display:none}.v2-year-group:not([open])>*:not(summary){display:block}}

/* ---- 고급 카드 · 애니메이션 ---- */
@property --ring{syntax:'<number>';inherits:true;initial-value:0}
.v2-card{box-shadow:0 1px 0 rgba(0,0,0,.02),0 10px 26px -18px rgba(60,45,20,.28)}
.v2-hero{position:relative;overflow:hidden}
.v2-hero-glyph{position:absolute;right:-6px;top:6px;font-family:'Woldam Chosun Gungseo','Gungsuh','궁서',serif;font-weight:700;font-size:132px;line-height:1;color:var(--el,var(--reading-accent));opacity:.1;pointer-events:none}
.v2-hero>*:not(.v2-hero-glyph){position:relative}

.v2-ring{--ring:var(--v);--ring-c:var(--reading-accent);--ring-bg:#ece6dd;transition:--ring 1.4s cubic-bezier(.2,.7,.2,1) .15s;position:relative;display:inline-grid;place-items:center;width:54px;height:54px;flex:none}
.v2-ring::before{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(var(--ring-c) calc(var(--ring)*1%),var(--ring-bg) 0);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 calc(100% - 4px));mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 calc(100% - 4px))}
.v2-ring>*{position:relative}
.v2-ring b{font-size:17px;font-variant-numeric:tabular-nums}
.v2-ring.is-small{width:40px;height:40px;font-size:14px}
.v2-ring.is-small::before{-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3px));mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3px))}
.v2-ring.is-big{width:116px;height:116px;display:inline-flex;flex-direction:column;justify-content:center;align-items:center}
.v2-ring.is-big::before{-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 8px),#000 calc(100% - 7px));mask:radial-gradient(farthest-side,transparent calc(100% - 8px),#000 calc(100% - 7px))}
.v2-ring.is-big b{font-size:38px;line-height:1;font-weight:800}
.v2-ring.is-big small{margin-top:4px;font-size:14px;letter-spacing:.08em;opacity:.7}

.v2-dash-wrap{margin:14px 16px 0}
.v2-dash{position:relative;overflow:hidden;margin:4px 0 6px;padding:22px 20px 20px;border-radius:18px;color:#f3ecdf;background:radial-gradient(120% 80% at 100% 0%,rgba(217,183,121,.26),transparent 55%),radial-gradient(90% 60% at 0% 100%,rgba(90,140,150,.18),transparent 60%),linear-gradient(160deg,#1b2b33,#0d171c 72%);box-shadow:0 18px 36px -16px rgba(13,23,28,.55)}
.v2-dash::before{content:"";position:absolute;right:-40px;top:-40px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff7e3,#d9b779 45%,rgba(217,183,121,0) 72%);opacity:.18}
.v2-dash::after{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.5) .6px,transparent .8px);background-size:22px 22px;opacity:.08;pointer-events:none}
.v2-dash>*{position:relative;z-index:1}
/* 2026-10-18 이달의 천간(일간과 같으면 지지)을 머리말처럼 크게 — 달무리 대신 */
.v2-dash.has-glyph::before{display:none}
.v2-dash>.v2-dash-glyph{position:absolute;z-index:0;right:-8px;top:-6px;font-family:'Woldam Chosun Gungseo','Gungsuh','궁서',serif;font-weight:700;font-size:150px;line-height:1;color:var(--el,var(--reading-accent));opacity:.13;pointer-events:none}
.v2-dash-head small{font-size:14px;font-weight:700;letter-spacing:.08em;color:#d9b779}
.v2-dash-head h3{margin:6px 0 4px;font-size:22px;color:#fff}
.v2-dash-head p{margin:0;font-size:14px;font-weight:600;color:#ecd7a8}
.v2-dash-head p span{margin-left:8px;font-size:14px;font-weight:400;color:rgba(243,236,223,.6)}
.v2-dash-body{display:flex;align-items:center;gap:18px;margin-top:18px}
.v2-dash .v2-ring{--ring-c:#d9b779;--ring-bg:rgba(255,255,255,.1);color:#fff}
.v2-dash-rings{list-style:none;flex:1;display:grid;grid-template-columns:repeat(2,1fr);gap:12px 10px;margin:0;padding:0}
.v2-dash-rings li{display:flex;align-items:center;gap:8px}
.v2-dash-rings small{font-size:14px;color:rgba(243,236,223,.8)}
.v2-dash-rings li:nth-child(1) .v2-ring{--ring-c:#e6c27a}.v2-dash-rings li:nth-child(2) .v2-ring{--ring-c:#ee9db6}
.v2-dash-rings li:nth-child(3) .v2-ring{--ring-c:#8fb9ea}.v2-dash-rings li:nth-child(4) .v2-ring{--ring-c:#95d3ad}
.v2-dash-rings .v2-ring{width:46px;height:46px}.v2-dash-rings .v2-ring b{font-size:15px}
.v2-dash-note{margin:16px 0 0;padding-top:12px;border-top:1px solid rgba(255,255,255,.1);font-size:14px;color:rgba(243,236,223,.6)}
@media (max-width:360px){.v2-dash-body{flex-direction:column;align-items:stretch}.v2-dash .v2-ring.is-big{align-self:center}}

.v2-graph-area{opacity:1;transition:opacity .9s ease 1.1s}
.v2-area-top{stop-color:var(--reading-accent);stop-opacity:.28}.v2-area-bottom{stop-color:var(--reading-accent);stop-opacity:0}
.v2-draw{transition:stroke-dashoffset 1.9s cubic-bezier(.45,.05,.25,1)}
.v2-graph-now{stroke:var(--reading-accent);stroke-width:1;stroke-dasharray:2 3;opacity:.6}
.v2-graph-pulse{fill:var(--reading-accent);stroke:#fff;stroke-width:2;transform-box:fill-box;transform-origin:center;animation:v2-pulse 1.8s ease-in-out infinite}
@keyframes v2-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.45)}}
.v2-el-bar i{transform-origin:left;transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.v2-elements li:nth-child(2) .v2-el-bar i{transition-delay:.08s}.v2-elements li:nth-child(3) .v2-el-bar i{transition-delay:.16s}.v2-elements li:nth-child(4) .v2-el-bar i{transition-delay:.24s}.v2-elements li:nth-child(5) .v2-el-bar i{transition-delay:.32s}
.v2-gauge span{transition:background .5s ease .6s,color .5s ease .6s}

/* 애니메이션 모드: JS 가 .v2-anim 을 붙였을 때만 처음 상태를 숨긴다 */
.v2-anim .v2-will{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
.v2-anim .v2-will.is-in{opacity:1;transform:none}
.v2-anim .v2-days li.v2-will:nth-child(2){transition-delay:.06s}.v2-anim .v2-days li.v2-will:nth-child(3){transition-delay:.12s}.v2-anim .v2-days li.v2-will:nth-child(4){transition-delay:.18s}.v2-anim .v2-days li.v2-will:nth-child(5){transition-delay:.24s}.v2-anim .v2-days li.v2-will:nth-child(6){transition-delay:.3s}.v2-anim .v2-days li.v2-will:nth-child(7){transition-delay:.36s}
.v2-anim .v2-domains>div.v2-will:nth-child(2){transition-delay:.08s}.v2-anim .v2-domains>div.v2-will:nth-child(3){transition-delay:.16s}.v2-anim .v2-domains>div.v2-will:nth-child(4){transition-delay:.24s}
.v2-anim .v2-will:not(.is-in) .v2-ring,.v2-anim .v2-ring.v2-will:not(.is-in){--ring:0}
.v2-anim .v2-will:not(.is-in) .v2-graph-area{opacity:0}
.v2-anim .v2-score-row.v2-will:not(.is-in) i::after,.v2-anim .v2-domains>div.v2-will:not(.is-in) dt i::after{transform:scaleX(0)}
.v2-anim .v2-elements.v2-will:not(.is-in) .v2-el-bar i{transform:scaleX(0)}
.v2-anim .v2-strength.v2-will:not(.is-in) .v2-gauge .is-here{background:#faf8f5;color:#6f6a63}
@media (prefers-reduced-motion:reduce){.v2-graph-pulse{animation:none}.v2 *{transition:none!important}}
@media print{.v2-anim .v2-will{opacity:1!important;transform:none!important}.v2-anim .v2-will:not(.is-in) .v2-ring{--ring:var(--v)}.v2-anim .v2-will:not(.is-in) i::after,.v2-anim .v2-will:not(.is-in) .v2-el-bar i{transform:none}.v2-draw{stroke-dashoffset:0!important}}

/* ---- 사주 등급 ---- */
.v2-grade{position:relative;overflow:hidden;margin:8px 0 6px;padding:24px 20px 18px;border-radius:18px;border:1px solid #e3cf9f;background:radial-gradient(90% 70% at 50% 0%,#fffaf0,#f7ecd6 70%,#f1e2c2);box-shadow:0 16px 34px -20px rgba(140,100,30,.45);text-align:center}
.v2-grade::before{content:"";position:absolute;inset:8px;border:1px solid rgba(176,138,62,.35);border-radius:12px;pointer-events:none}
.v2-grade>*{position:relative}
.v2-grade-head small{font-size:14px;font-weight:700;letter-spacing:.1em;color:#9a7430}
.v2-grade-name{display:block;margin:8px 0 2px;font-family:'Woldam Chosun Gungseo','Gungsuh','궁서',serif;font-weight:700;font-size:34px;line-height:1.2;color:#5b3f12}
.v2-grade-top{margin:0;font-size:15px;font-weight:700;color:#7a5520}
.v2-grade-top span{font-size:26px;color:#b3122e;font-variant-numeric:tabular-nums}
.v2-grade-line{margin:6px 0 0;font-size:14px;color:#6f5a36;word-break:keep-all}
.v2-grade-ladder{list-style:none;display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:16px 0 0;padding:0}
.v2-grade-ladder li{display:flex;flex-direction:column;gap:2px;padding:7px 0;border-radius:8px;background:rgba(255,255,255,.55);font-size:14px;color:#9b8a6c}
.v2-grade-ladder b{font-size:14px;color:#7d6a48}
.v2-grade-ladder small{font-size:14px;letter-spacing:-.04em}
.v2-grade-ladder .is-here{background:linear-gradient(160deg,#c89a45,#8f6320);color:#fff;box-shadow:0 6px 14px -6px rgba(143,99,32,.8);transform:translateY(-2px)}
.v2-grade-ladder .is-here b{color:#fff}
.v2-grade-parts{list-style:none;display:grid;gap:7px;margin:16px 0 0;padding:14px 12px 4px;border-top:1px dashed rgba(176,138,62,.4);text-align:left}
.v2-grade-parts li{display:grid;grid-template-columns:62px 1fr 44px;align-items:center;gap:8px;font-size:14px;color:#5f4c2c}
.v2-grade-parts i{position:relative;display:block;height:6px;border-radius:6px;background:rgba(160,120,50,.15);overflow:hidden}
.v2-grade-parts i::after{content:"";position:absolute;inset:0 auto 0 0;width:calc(var(--v)*1%);border-radius:inherit;background:#c4973f;transform-origin:left;transition:transform 1.1s cubic-bezier(.2,.7,.2,1) .2s}
.v2-grade-parts b{text-align:right;font-variant-numeric:tabular-nums}
.v2-grade-parts b small{color:#a8977a;font-weight:400}
.v2-anim .v2-grade-parts.v2-will:not(.is-in) i::after{transform:scaleX(0)}
.v2-grade-note{margin:12px 0 0;font-size:14px;line-height:1.7;color:#8e7c5d;text-align:left;word-break:keep-all}
.v2 .report-section .v2-grade{margin-top:14px}

/* ---- 건강 · 가족 · 투자 ---- */
.v2-care-tips{display:grid;gap:8px;margin:12px 0 0}
.v2-care-tips>div{padding:12px 14px;border-radius:10px;background:#eef6f1}
.v2-care-tips dt{font-size:14px;font-weight:700;color:#25744c}
.v2-care-tips dd{margin:4px 0 0;font-size:14px;line-height:1.6}
.v2-care-months{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}
.v2-care-months li{display:grid;gap:3px;padding:12px 14px;border-radius:12px;border:1px solid #e3efe7;background:#f7fbf8;font-size:14px;line-height:1.6}
.v2-care-months li.is-warn{border-color:#f2dcd6;background:#fcf3f1}
.v2-care-months.is-money li{border-color:#efe3cc;background:#fbf7ef}
.v2-care-when{font-size:14px;color:var(--v2-sub)}
.v2-care-when b{font-size:15px;color:var(--ink)}
.v2-care-months p{margin:4px 0 0;font-size:14px;line-height:1.75;color:#3f3b36}
.v2-family{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.v2-family>li{padding:12px;border-radius:12px;background:var(--v2-soft);font-size:14px;line-height:1.6}
.v2-family-head{display:flex;flex-direction:column;margin-bottom:6px}
.v2-family-head b{font-size:14.5px}.v2-family-head small{font-size:14px;color:var(--v2-sub)}
.v2-family p{margin:4px 0 0}
.v2-family-months{display:grid;gap:3px;font-weight:600;color:#9a4b3a}
.v2-invest-style{margin:0!important;font-size:15px!important}
.v2-invest-style b:first-child{display:inline-block;padding:3px 12px;border-radius:99px;background:#f3e6c9;color:#7a5520}
@media (max-width:360px){.v2-family{grid-template-columns:1fr}.v2-grade-ladder small{display:none}}
@media print{.v2-anim .v2-grade-parts i::after{transform:none}}

/* ---- 건강운 상세 · 대운 ---- */
.v2-health-summary{margin:0 0 12px!important;padding:12px 14px;border-radius:12px;background:#eef6f1;color:#23704a;font-weight:700;font-size:14.5px!important}
.v2-health-part{margin-top:14px;padding:16px 14px;border-radius:12px;border:1px solid var(--v2-line);background:#fff}
.v2-health-part h4,.v2-health-h{margin:0 0 8px;font-size:15px}
.v2-health-h{margin-top:22px}
.v2-health-part p{margin:6px 0 0;font-size:14px;line-height:1.85;word-break:keep-all}
.v2-health-label{margin-top:12px!important;font-size:14px!important;font-weight:700;color:var(--v2-sub)}
.v2-health-list{margin:6px 0 0;padding:0;list-style:none;display:grid;gap:6px}
.v2-health-list li{position:relative;padding-left:16px;font-size:14px;line-height:1.65;word-break:keep-all}
.v2-health-list li::before{content:"";position:absolute;left:3px;top:.62em;width:6px;height:6px;border-radius:50%;background:#d7a58f}
.v2-health-list.is-care li::before{background:#6fb68d}
.v2-health-guide{font-size:14px!important;line-height:1.8!important;color:#4d4943}
.v2-health-dates{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.v2-health-dates li{display:flex;flex-direction:column;gap:2px;padding:11px 12px;border-radius:12px;border:1px solid #e3efe7;background:#f7fbf8}
.v2-health-dates li.is-low{border-color:#f0e2cf;background:#fcf8f1}
.v2-health-dates li.is-warn{border-color:#f2dcd6;background:#fcf3f1}
.v2-health-dates em{font-style:normal;font-size:14px;font-weight:700;color:#a0703a}
.v2-health-dates .is-warn em{color:var(--v2-warn)}.v2-health-dates .is-good em{color:var(--v2-good)}
.v2-health-dates b{font-size:16px}
.v2-health-dates small{font-size:14px;color:var(--v2-sub);line-height:1.5}
.v2-daeun li.is-current{background:var(--reading-accent);color:#fff}
.v2-daeun li.is-current b,.v2-daeun li.is-current small{color:#fff}
.v2-daeun-now{margin-top:14px;padding:16px 14px;border-radius:12px;background:var(--reading-wash);border:1px solid color-mix(in srgb,var(--reading-accent) 30%,#fff)}
.v2-daeun-now h3{margin:4px 0 6px;font-size:17px}
.v2-daeun-now p{margin:4px 0 0;font-size:14px;line-height:1.8}
.v2-daeun-cards{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:12px}

/* ---- 가족 · 투자 상세 ---- */
.v2-family{display:grid;grid-template-columns:1fr;gap:12px}
.v2-family-card .v2-family-head{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}
.v2-family-card .v2-family-head h4{margin:0;font-size:16px}
.v2-family-card .v2-family-head small{font-size:14px;color:var(--v2-sub)}
.v2-family-guide{font-size:14px!important;color:#6b5f4f}
.v2-health-dates.is-compact{margin-top:10px}
.v2-health-dates.is-compact li{padding:9px 11px}
.v2-health-dates.is-compact b{font-size:14.5px}
.v2-rules{margin:6px 0 0;padding-left:20px;display:grid;gap:6px;font-size:14px;line-height:1.65}
.v2-rules li::marker{color:var(--reading-accent);font-weight:700}
.v2-flow-bars{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}
.v2-flow-bars li{display:grid;grid-template-columns:40px 1fr 30px 40px;align-items:center;gap:8px;font-size:14px}
.v2-flow-bars i{position:relative;display:block;height:8px;border-radius:8px;background:#efe7d8;overflow:hidden}
.v2-flow-bars i::after{content:"";position:absolute;inset:0 auto 0 0;width:calc(var(--v)*1%);border-radius:inherit;background:#c4973f;transform-origin:left;transition:transform 1.1s cubic-bezier(.2,.7,.2,1) .2s}
.v2-anim .v2-flow-bars.v2-will:not(.is-in) i::after{transform:scaleX(0)}
.v2-flow-bars li.is-best span,.v2-flow-bars li.is-best b{color:#9a6a1c;font-weight:800}
.v2-flow-bars small{font-size:14px;color:var(--v2-sub)}
.v2-causes{display:grid;gap:8px;margin:8px 0 0}
.v2-causes p{margin:0!important;padding:10px 12px;border-radius:10px;background:#fcf3f1;font-size:14px!important;line-height:1.7!important}
.v2-causes b{display:block;font-size:14px;color:var(--v2-warn)}
@media print{.v2-anim .v2-flow-bars i::after{transform:none}}

/* ---- 상담가 말풍선 · 편지 ---- */
.v2-guide-inline{margin:4px 0 16px}
.v2-letter{position:relative;padding:22px 20px 8px;border-radius:14px;background:#fffdf8;border:1px solid #eadfca;box-shadow:inset 0 0 0 5px #fbf6ec;font-family:'Woldam Chosun Gungseo','Gungsuh','궁서',serif;font-weight:700}
.v2-letter p{margin:0 0 14px;font-size:15.5px;font-weight:700;line-height:2;color:#3a3226;word-break:keep-all}
.v2-letter p:first-child{font-size:17px;font-weight:700;color:var(--reading-accent)}

/* ---- 영역별 색 (대시보드 링과 같은 색) ---- */
.v2{--c-money:#c99a3f;--c-love:#e0829f;--c-work:#5f93d6;--c-health:#5cb383}
.v2-domains>[data-domain="재물"]{--dc:var(--c-money)}.v2-domains>[data-domain="연애"]{--dc:var(--c-love)}
.v2-domains>[data-domain="직업"]{--dc:var(--c-work)}.v2-domains>[data-domain="건강"]{--dc:var(--c-health)}
.v2-domains>div dt i::after{background:var(--dc)}
.v2-domains>div dt span{color:var(--dc)}
.v2-score-row>span:nth-child(1){--dc:var(--c-money)}.v2-score-row>span:nth-child(2){--dc:var(--c-love)}
.v2-score-row>span:nth-child(3){--dc:var(--c-work)}.v2-score-row>span:nth-child(4){--dc:var(--c-health)}
.v2-score-row>span i::after{background:var(--dc)}
.v2-score-row>span small{color:var(--dc);font-weight:700}
.v2-graph-now-label{font-size:14px;font-weight:800;fill:var(--reading-accent);paint-order:stroke;stroke:#f7f4ef;stroke-width:3px}
.v2 section.v2-dash-wrap{padding-top:0}
/* 연애 상품 전용 풀이 */
.love-moments{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.love-moments>li{padding:16px;border:1px solid var(--v2-line);border-radius:14px;background:linear-gradient(160deg,color-mix(in srgb,var(--c-love) 9%,#fff),#fff 60%)}
.love-when{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.love-when b{font-size:18px;color:var(--c-love)}
.love-score{font-size:14px;font-weight:700;color:var(--c-love);background:color-mix(in srgb,var(--c-love) 12%,#fff);padding:2px 9px;border-radius:99px;font-variant-numeric:tabular-nums;white-space:nowrap}
h2 .love-score{font-size:14px;vertical-align:middle;margin-left:6px}
.love-reasons{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 10px!important}
.love-scene{margin:0;display:grid;gap:8px}
.love-scene>div{display:grid;grid-template-columns:86px 1fr;gap:10px;font-size:14px;line-height:1.6}
.love-scene dt{color:var(--v2-sub);font-size:14px}
.love-scene dd{margin:0;word-break:keep-all}
.love-chips{margin:0 0 12px;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.love-chips>div{padding:11px 12px;border-radius:12px;background:var(--v2-soft);font-size:14px;line-height:1.5}
.love-chips>div:last-child:nth-child(odd){grid-column:1/-1}
.love-chips dt{font-size:14px;color:var(--c-love);font-weight:700;margin-bottom:3px}
.love-chips dd{margin:0;word-break:keep-all}
.love-chips .is-locked{position:relative}
.love-types{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.love-types>div{padding:13px;border-radius:12px;border:1px solid var(--v2-line)}
.love-types small{display:block;font-size:14px;font-weight:700;margin-bottom:4px}
.love-types .is-pull small{color:var(--v2-warn)}
.love-types .is-fit small{color:var(--c-love)}
.love-types p{margin:0;font-size:14px;line-height:1.55;word-break:keep-all}
.love-block{padding:14px 0;border-bottom:1px solid var(--v2-line)}
.love-block h3{margin:0 0 6px;font-size:15px}
.love-people{margin:0;padding-left:18px;font-size:14px;line-height:1.7}
.love-days{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:8px}
.love-days li{display:flex;flex-direction:column;gap:2px;padding:11px 13px;border-radius:12px;background:color-mix(in srgb,var(--c-love) 8%,#fff)}
.love-days b{font-size:14.5px}
.love-days small{font-size:14px;color:var(--v2-sub);word-break:keep-all}
.love-month-list{list-style:none;margin:0;padding:0}
.love-month-list li{display:grid;grid-template-columns:44px 40px 1fr;gap:8px;align-items:baseline;padding:10px 0;border-bottom:1px solid var(--v2-line);font-size:14px;line-height:1.55}
.love-month-list li.is-current{background:color-mix(in srgb,var(--c-love) 7%,#fff)}
.love-month-list li.is-past{opacity:.55}
.love-month-list p{margin:0;word-break:keep-all}
.love-mark{fill:var(--c-love);stroke:#fff;stroke-width:1.5}
.love-legend-mark::before{background:var(--c-love)!important;border-radius:50%}
@media (max-width:360px){.love-chips,.love-types{grid-template-columns:1fr}.love-scene>div{grid-template-columns:1fr;gap:2px}}
/* 연애 편지도 조선궁서체로 쓴다. 분홍 바탕과 글자 크기만 달리한다. */
.v2-letter.is-love{font-family:'Woldam Chosun Gungseo','Gungsuh','궁서',serif;background:#fffafc;border-color:#f1d9e4;box-shadow:inset 0 0 0 5px #fdf3f7}
.v2-letter.is-love p{font-size:17px;line-height:1.85}
.v2-letter.is-love p:first-child{font-size:18.5px;color:var(--c-love)}
.love-year+.love-year{margin-top:6px}
.love-weeks li.is-past{opacity:.6}
.love-weeks p{margin:4px 0 0;font-size:14.5px;line-height:1.6;word-break:keep-all}
/* 결과 상단 배너: 그림 위에 제목을 얹는다 */
.res-top.has-banner{position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:min(92vw,420px);padding:24px 20px 26px;background:linear-gradient(180deg,#0000 38%,#2a0b14cc 78%,#1e0810f2),var(--banner) center 22%/cover no-repeat,#2a0b14}
.res-top.has-banner .who,.res-top.has-banner h1,.res-top.has-banner .born{text-shadow:0 1px 3px #000a,0 2px 14px #0008}
.res-top.has-banner h1{font-size:26px}
/* 2026-11-07 연홍(연애 · 재회) 말고는 붉은 기운 없이 어두운 회색으로 내린다. */
.res-top.has-banner:not(.is-love):not(.is-reunion){background:linear-gradient(180deg,#0000 38%,#141414cc 78%,#141414f2),var(--banner) center 22%/cover no-repeat,#141414}
.love-deepen{margin:10px 0 0!important;padding:8px 11px;border-radius:10px;background:#fff;border:1px dashed color-mix(in srgb,var(--c-love) 40%,#fff);font-size:14px!important}
.love-deepen b{color:var(--c-love)}

/* 대운 — 금전·직장·연애.
   십성 이름(편재·정관…)은 손님이 모르는 말이다. 10년마다 어느 자리가 세게
   들어오는지를 영역 이름으로 보여주고, 지금 머무는 대운만 점수를 연다. */
.v2-daeun-domains{list-style:none;margin:10px 0 0;padding:0;
  display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.v2-daeun-domains li{display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:9px 4px;border-radius:10px;background:#fff;
  border:1px solid color-mix(in srgb,var(--reading-accent) 22%,#fff)}
.v2-daeun-domains small{font-size:14px;color:var(--v2-sub)}
.v2-daeun-domains b{font-size:19px;font-weight:700;color:var(--reading-accent);
  font-variant-numeric:tabular-nums}

/* 명식 읽는 법 — 한자 표만 덜렁 두면 모르는 글자에서 읽기가 멈춘다. */
.v2-natal-help{margin-top:16px;padding-top:15px;border-top:1px solid var(--v2-line)}
.v2-natal-help h3{margin:0 0 12px;font-size:14px;color:var(--v2-sub);font-weight:700}
.v2-natal-help dl{margin:0;display:flex;flex-direction:column;gap:11px}
.v2-natal-help dt{font-size:14px;font-weight:700;margin-bottom:3px}
.v2-natal-help dd{margin:0;font-size:14px;line-height:1.75;color:var(--v2-sub)}

/* 앞으로 1년을 석 달씩.
   넷을 가로로 쪼개면 칸이 좁아 정작 읽어야 할 키워드가 두 줄로 잘린다.
   세로로 세우면 기간은 왼쪽에 고정폭으로 서고 키워드가 한 줄에 들어온다. */
.v2-quarters{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column}
.v2-quarters li{display:grid;grid-template-columns:minmax(0,112px) minmax(0,1fr);
  gap:16px;align-items:baseline;padding:14px 2px;border-top:1px solid var(--v2-line)}
.v2-quarters li:first-child{border-top:0}
.v2-q-span{margin:0;font-size:14px;color:var(--v2-sub);
  font-variant-numeric:tabular-nums}
/* 2026-11-06 해를 넘는 기간은 「~」 뒤에서 두 줄로. 조각 안에서는 줄을 바꾸지 않는다. */
.v2-q-span i{font-style:normal;white-space:nowrap;display:inline-block}
.v2-quarters span{font-size:15.5px;line-height:1.55;font-weight:600;word-break:keep-all}
/* 지금 서 있는 분기 하나만 눈에 먼저 들어오게. */
.v2-quarters .is-now span{color:var(--reading-accent)}
.v2-quarters .is-now .v2-q-span{color:var(--reading-accent);font-weight:600}
@media (max-width:380px){
  .v2-quarters li{grid-template-columns:1fr;gap:3px}
  .v2-q-span{font-size:14px}
}

/* 깃발 앞에서 고른 궁금한 것, 그리고 그 자리에 대고 하는 답.
   지어낸 말은 없다 — 이미 계산해 둔 월운에서 꺼낸 시점이다. */
.v2-asked{margin:0 0 14px;padding:18px 20px;border-radius:12px;
  background:var(--v2-soft);border:1px solid var(--v2-line)}
.v2-asked-q{margin:0;font-size:16px;font-weight:700;word-break:keep-all;line-height:1.5}
.v2-asked-a{margin:11px 0 0;font-size:14.5px;line-height:1.75;word-break:keep-all}
.v2-asked-a b{color:var(--reading-accent)}
.v2-asked-note{margin:10px 0 0;font-size:14px;line-height:1.7;color:var(--v2-sub)}
/* 결제 전 세 줄 목록 + 타이머 (2026-10-14) — studio/offers.py */
.offer-sheet{margin-top:16px}
/* 결제창 금액 위 「담긴 것」(2026-11-12) — partials/offer_sheet.html. 숫자 칸은 gap-common.css .pv-gap-stats 를 줄여 쓴다 */
.offer-got{margin-top:14px}
.offer-got-title{margin:0 0 8px;font-size:15px;font-weight:800;line-height:1.4}
.offer-got .pv-gap-stats{margin:0 0 10px;gap:6px}
.offer-got .pv-gap-stats div{padding:7px 4px}
.offer-got .pv-gap-stats dd{font-size:16px}
.offer-got-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px 10px}
.offer-got-list li{display:flex;align-items:flex-start;gap:5px;min-width:0;font-size:14px;line-height:20px;word-break:keep-all}
.offer-got-list li>svg{width:18px;height:18px;margin-top:1px;flex:none;color:var(--reading-accent)}
.offer-got+.offer-sheet{margin-top:6px}
.offer-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding:12px 14px;border:1px solid var(--v2-line,#e6e1d8);border-radius:14px;cursor:pointer;background:#fff}
.offer-row.is-on{border-color:var(--reading-accent);box-shadow:0 0 0 1px var(--reading-accent)}
.offer-row input{position:absolute;opacity:0;pointer-events:none}
.offer-main{min-width:0;display:flex;flex-direction:column;gap:6px}
.offer-main b{display:flex;align-items:flex-start;gap:6px;font-size:15px;line-height:1.4;word-break:keep-all}
.offer-badge{display:inline-block;flex:none;white-space:nowrap;padding:1px 7px;border-radius:6px;font-style:normal;font-size:14px;font-weight:700;background:#f1ece2;color:#6b5a35;vertical-align:1px}
.offer-badge.is-hot{background:#3ee6a8;color:#0d2a1f}
.offer-chips{display:flex;flex-wrap:wrap;gap:4px}
.offer-chips i{font-style:normal;font-size:14px;padding:2px 8px;border-radius:7px;background:#ece6d8;border:1px solid #ddd3bf;color:#4a443a}
.offer-price{flex:0 0 auto;text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.offer-price s{font-size:14px;color:#9a948a}
.offer-price b{font-size:17px}
.offer-rate{font-style:normal;font-weight:800;color:var(--reading-accent);font-size:15px}
.offer-foot{display:flex;align-items:center;gap:12px;margin-top:14px}
.offer-foot .btn{flex:1}
.offer-timer{flex:0 0 auto;display:flex;flex-direction:column;line-height:1.3}
.offer-timer small{font-size:14px;color:#8c867e}
.offer-clock{font-size:18px;font-weight:800;line-height:1.2;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.v2-sticky .offer-timer{margin-right:12px}
.v2-sticky{display:flex;align-items:center}
.v2-sticky .btn{flex:1}
/* 결제 전 맨 위 캐릭터 영상 + 가린 첫 한 줄, 풀이 중 덮개 (2026-10-14) — studio/reveal.py */
.reveal-hero{position:relative;margin:-1px 0 0;aspect-ratio:9/13;max-height:620px;overflow:hidden;background:#151a3a}
.reveal-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 18%}
.reveal-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,12,40,.55) 0,rgba(10,12,40,0) 34%,rgba(10,12,40,0) 70%,var(--reveal-fade,#fff) 100%);pointer-events:none}
html[data-theme="dark"] .reveal-hero{--reveal-fade:#141414}
.reveal-line{position:absolute;z-index:1;left:0;right:0;top:28px;margin:0;text-align:center;color:#fff;font:400 28px/1.4 'Woldam Chosun Gungseo','Gungsuh','궁서',serif;text-shadow:0 2px 14px rgba(0,0,0,.6);word-break:keep-all}
.reveal-line span{display:block}
.reveal-line .reveal-end{color:#cfe0ff}
.reveal-mask{font-style:normal;display:inline-block;min-width:1.4em;padding:0 .15em;margin:0 .1em;color:#fff;filter:blur(3px);background:rgba(18,22,64,.62);box-shadow:0 0 12px rgba(18,22,64,.5);border-radius:8px;user-select:none}
.reveal-loading{position:fixed;top:0;bottom:0;left:0;right:0;margin:0 auto;width:min(100%,var(--app-w,448px));z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;background:#0c0e22;transition:opacity .5s ease}
.reveal-loading.is-out{opacity:0;pointer-events:none}
.reveal-loading video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.reveal-loading p{position:relative;margin:0 20px 64px;padding:12px 18px;border-radius:14px;background:rgba(10,12,34,.6);color:#fff;font-size:16px;font-weight:600;text-align:center;backdrop-filter:blur(6px)}
.reveal-dots b{display:inline-block;animation:reveal-dot 1.2s infinite}
.reveal-dots b:nth-child(2){animation-delay:.2s}.reveal-dots b:nth-child(3){animation-delay:.4s}
@keyframes reveal-dot{0%,60%,100%{opacity:.2}30%{opacity:1}}
html.reveal-busy{overflow:hidden}
/* 결제 선택 시트 — 아래에서 올라옴 (2026-10-14). 스크립트가 없으면 .is-modal 이 붙지 않아 화면 안 칸으로 남는다 */
.offer-card.is-modal{position:fixed;left:0;right:0;bottom:0;margin:0 auto;width:min(100%,var(--app-w,448px));max-height:88vh;overflow-y:auto;z-index:160;border-radius:22px 22px 0 0;padding-top:8px;padding-bottom:calc(18px + env(safe-area-inset-bottom));transform:translateY(105%);transition:transform .32s cubic-bezier(.2,.8,.2,1),visibility 0s .32s;box-shadow:0 -12px 40px rgba(0,0,0,.25);visibility:hidden}
.offer-card.is-modal.is-open{transform:none;visibility:visible;transition:transform .32s cubic-bezier(.2,.8,.2,1),visibility 0s}
.offer-grip{display:block;width:44px;height:5px;margin:2px auto 14px;padding:0;border:0;border-radius:99px;background:#d4d4d8;cursor:pointer}
.offer-backdrop{position:fixed;inset:0;z-index:150;background:rgba(0,0,0,.5);opacity:0;transition:opacity .3s}
.offer-backdrop.is-on{opacity:1}
html.offer-open{overflow:hidden}
@media (prefers-reduced-motion:reduce){.offer-card.is-modal,.offer-backdrop{transition:none}}
/* 2026-11-06 비회원 결제 팝업(offer_sheet.html #pay-login). 결제창(z 160) 위에 가운데 카드. 2026-11-12 바로 이름 · 번호 칸 */
.pay-login{position:fixed;inset:0;z-index:180;display:flex;align-items:flex-end;justify-content:center;padding:0 12px calc(12px + env(safe-area-inset-bottom));background:rgba(0,0,0,.55);opacity:0;transition:opacity .2s}
.pay-login[hidden]{display:none}
.pay-login.is-on{opacity:1}
.pay-login-card{position:relative;width:min(100%,424px);border-radius:20px;background:#fff;padding:26px 20px 20px;transform:translateY(16px);transition:transform .22s cubic-bezier(.2,.8,.2,1);box-shadow:0 18px 50px rgba(0,0,0,.35)}
.pay-login.is-on .pay-login-card{transform:none}
.pay-login-card h3{margin:0;font-size:20px;line-height:1.35;letter-spacing:-.03em;text-align:center}
.pay-login-pick{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:16px 0 0;padding:13px 14px;border-radius:12px;background:#f4f4f5;font-size:15px}
.pay-login-pick span{min-width:0}
.pay-login-pick b{white-space:nowrap;font-size:17px}
.pay-login-close{position:absolute;top:10px;right:10px;width:40px;height:40px;display:grid;place-items:center;border:0;background:none;padding:0;cursor:pointer;color:#8b8b93}
.pay-login-close svg{width:22px;height:22px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round}
@media (prefers-reduced-motion:reduce){.pay-login,.pay-login-card{transition:none}}
.pay-guest{padding:4px 0 0}
.pay-guest-note{margin:14px 0 0;font-size:15px;line-height:1.55;color:#52525b}
.pay-guest-note b{color:#a16207;font-weight:700}
.pay-guest-sure{display:block;text-align:right;color:#a16207;font-weight:700;margin-top:2px}
.pay-guest .fld{margin:14px 0 0}
.pay-guest .fld label{font-size:15px}
.pay-guest-error{margin:10px 0 0;min-height:0;font-size:15px;color:#dc2626}
.pay-guest-error:empty{display:none}
.pay-guest-pay{width:100%;margin:18px 0 0;min-height:54px;font-size:17px}
/* 2026-11-12 사장님: 카카오 · 네이버 로그인은 결제 버튼 아래 글자 한 줄(쿠폰 쓰는 회원용). 버튼처럼 크게 만들지 않는다 */
.pay-login-member{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:0 2px;margin:8px 0 -6px;font-size:15px;color:#71717a}
.pay-login-member span{margin-right:6px}
.pay-login-member form{margin:0;display:flex;align-items:center}
.pay-login-member form+form::before{content:'·';margin:0 2px}
.pay-login-link{min-height:44px;padding:0 6px;border:0;background:none;color:#3f3f46;font:inherit;font-size:15px;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
/* 캐릭터별 결 — 연홍(재회): 끝 문장 연분홍, 가림은 짙은 진홍 */
.reveal-hero.is-yeonhong{background:#3a0d12}
.reveal-hero.is-yeonhong .reveal-end{color:#ffc4c4}
.reveal-hero.is-yeonhong .reveal-mask{background:rgba(70,10,18,.66);box-shadow:0 0 12px rgba(70,10,18,.5)}
.reveal-hero.is-yeonhong::after{background:linear-gradient(180deg,rgba(40,6,10,.55) 0,rgba(40,6,10,0) 34%,rgba(40,6,10,0) 70%,var(--reveal-fade,#fff) 100%)}
.reveal-loading.is-yeonhong{background:#2a080c}
/* 2026-11-04 평생(쌀순)·신년(서하)·학업(해온): 끝 문장만 그림 빛에 맞춘 따뜻한 색. 직장(지운)은 기본 하늘색 */
.reveal-hero.is-ssalsun .reveal-end,.reveal-hero.is-haeon .reveal-end{color:#ffe2ad}
.reveal-hero.is-seoha .reveal-end{color:#ffcdbd}

/* 결제창 안에서 바로 결제 (2026-10-15) */
.offer-pay{margin:14px 0 4px}
.offer-pay #offer-methods,.offer-pay #offer-agreement{margin:0 -8px}
/* 동의는 버튼에 포함 — 토스처럼 「필수 약관 전체 동의」 한 줄, 누르면 체크가 켜진다.
   2026-11-03 사장님 「동그라미도 선택할 수 있게」 → 동그라미 · 문구가 label 이라 눌러서 켜고 끈다(체크박스는 숨김, 키보드 Space) */
.offer-agree{display:flex;align-items:center;gap:10px;margin-top:12px;padding:12px 2px;font-size:15px;border-top:1px solid #e4e4e7}
.offer-agree b{flex:1;font-weight:600}
.offer-agree-pick{position:relative;flex:1;min-width:0;display:flex;align-items:center;gap:10px;min-height:32px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.offer-agree-pick input{position:absolute;left:0;top:50%;width:1px;height:1px;margin:0;opacity:0;pointer-events:none}
.offer-check{flex:0 0 auto;width:22px;height:22px;border-radius:50%;border:1.5px solid #c4c4cc;position:relative;transition:background .2s,border-color .2s}
.offer-check::after{content:'';position:absolute;left:7px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);opacity:0;transition:opacity .2s}
.offer-agree-pick input:checked+.offer-check{background:#3182f6;border-color:#3182f6}
.offer-agree-pick input:checked+.offer-check::after{opacity:1}
.offer-agree-pick input:focus-visible+.offer-check{outline:2px solid #3182f6;outline-offset:2px}
.offer-agree-more{font-size:14px;color:#8b8b93;text-decoration:underline;background:none;border:0;padding:4px}
/* 펼친 약관 내용은 약관 안내처럼 작게(입력 화면 .consent-fine 과 같은 예외, 사용자 허락) */
.offer-consent{margin:10px 0 0;font-size:11px;line-height:1.55;color:#8b8b93}
.offer-consent b{font-weight:600;color:inherit}
.offer-consent a{text-decoration:underline}
.offer-error{min-height:0;margin:6px 0 0;font-size:14px;color:#c2302f}
.offer-error:empty{display:none}
/* 타이머 10% 가 위 가격에 이미 들어가 있다는 줄(2026-11-03 사장님) — 고른 묶음에서 덜 내는 돈. 색은 상담역 강조색이라 다크도 그대로 */
.offer-extra{display:flex;align-items:center;gap:10px;margin-top:12px;padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--reading-accent,#3182f6) 13%,transparent);font-size:15px}
.offer-extra[hidden]{display:none}
.offer-extra b{flex:1;font-weight:700}
.offer-extra-tag{flex:0 0 auto;font-size:14px;font-weight:700;padding:1px 8px;border-radius:6px;border:1px solid var(--reading-accent,#3182f6);color:var(--reading-accent,#3182f6)}
.offer-extra.is-event+.offer-extra{margin-top:8px}
.offer-extra-off{flex:0 0 auto;font-weight:800;color:var(--reading-accent,#3182f6);font-variant-numeric:tabular-nums}
.offer-coupon-tag{flex:0 0 auto;font-size:14px;font-weight:700;padding:2px 8px;border-radius:6px;background:#ffcf40;color:#141414}
/* 2026-11-06 쿠폰 여러 장 — 「쿠폰 선택」 버튼 줄 + 고른 쿠폰을 한 장씩 한 줄로(studio/coupons.py, offer-pay.js) */
.offer-coupons{margin-top:12px;border-radius:12px;background:#fff7e0;overflow:hidden}
.offer-coupons[hidden]{display:none}
.offer-coupon-open{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;margin:0;padding:12px 10px 12px 14px;border:0;background:none;color:inherit;font:inherit;font-size:15px;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.offer-coupon-open b{flex:1;min-width:0;font-weight:700}
.offer-coupon-count{flex:0 0 auto;font-weight:700;color:#8a5a00;font-variant-numeric:tabular-nums}
.offer-coupon-open svg{flex:0 0 auto;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:.7}
.offer-coupon-lines{list-style:none;margin:0;padding:0 14px}
.offer-coupon-lines:empty{display:none}
.offer-coupon-lines li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid rgba(20,20,20,.08);font-size:15px;line-height:1.4}
.offer-coupon-lines li span{min-width:0;word-break:keep-all}
.offer-coupon-lines li b{flex:0 0 auto;font-weight:800;color:#c2302f;font-variant-numeric:tabular-nums}
/* 쿠폰 선택 팝업 — 결제창(z 160) 위, 로그인 팝업(.pay-login)과 같은 모양. 체크 칸은 여러 장 고르기라 네모 */
.coupon-pick{position:fixed;inset:0;z-index:180;display:flex;align-items:flex-end;justify-content:center;padding:0 12px calc(12px + env(safe-area-inset-bottom));background:rgba(0,0,0,.55);opacity:0;transition:opacity .2s}
.coupon-pick[hidden]{display:none}
.coupon-pick.is-on{opacity:1}
.coupon-pick-card{position:relative;width:min(100%,424px);max-height:82vh;overflow-y:auto;border-radius:20px;background:#fff;padding:22px 16px 16px;transform:translateY(16px);transition:transform .22s cubic-bezier(.2,.8,.2,1);box-shadow:0 18px 50px rgba(0,0,0,.35)}
.coupon-pick.is-on .coupon-pick-card{transform:none}
.coupon-pick-card h3{margin:0 44px 14px 4px;font-size:20px;line-height:1.35;letter-spacing:-.03em}
.coupon-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.coupon-item{position:relative;display:flex;align-items:center;gap:12px;min-height:60px;padding:12px 14px;border:1px solid #e4e4e7;border-radius:14px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.coupon-item input{position:absolute;left:14px;top:50%;width:1px;height:1px;margin:0;opacity:0;pointer-events:none}
.coupon-item .offer-check{border-radius:6px}
.coupon-item .offer-check::after{left:7px;top:3px}
.coupon-item input:checked+.offer-check{background:#3182f6;border-color:#3182f6}
.coupon-item input:checked+.offer-check::after{opacity:1}
.coupon-item input:focus-visible+.offer-check{outline:2px solid #3182f6;outline-offset:2px}
.coupon-item:has(input:checked){border-color:#3182f6;box-shadow:0 0 0 1px #3182f6}
.coupon-item:has(input:disabled){opacity:.5;cursor:default}
.coupon-item-main{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.coupon-item-main b{font-size:15px;font-weight:700;line-height:1.4;word-break:keep-all}
.coupon-item-main small{font-size:14px;line-height:1.4;color:#8b8b93;font-variant-numeric:tabular-nums}
.coupon-solo{margin-top:4px;padding:1px 8px;border-radius:6px;font-style:normal;font-size:14px;font-weight:700;background:#fde8e8;color:#b42318}
.coupon-item-off{flex:0 0 auto;font-size:15px;font-weight:800;color:#c2302f;font-variant-numeric:tabular-nums;white-space:nowrap}
.coupon-done{margin-top:14px}
@media (prefers-reduced-motion:reduce){.coupon-pick,.coupon-pick-card{transition:none}}
/* 결과 화면 리뷰 (2026-10-15) */
.review-box textarea{width:100%;margin:12px 0;padding:12px;border-radius:10px;border:1.5px solid #d4d4d8;font-size:15px;line-height:1.6}
.review-perk{font-size:15px}
.star-pick{display:inline-flex;flex-direction:row-reverse;gap:4px;margin-top:8px}
.star-pick input{position:absolute;opacity:0;pointer-events:none}
.star-pick label{font-size:34px;line-height:1;color:#d4d4d8;cursor:pointer}
.star-pick input:checked~label,.star-pick label:hover,.star-pick label:hover~label{color:#ffb400}
.rv-stars{font-size:22px;color:#ffb400}.rv-stars .star-off{color:#d4d4d8}
/* 2026-11-04 성격 다른 묶음은 칸을 나눈다(사장님 규칙: 좋은 것 / 조심할 것을 한 줄 · 한 덩어리에 섞지 않기).
   신년운세 「해 두면 좋은 일 / 피할 일」 두 칸(newyear-act)과 같은 모양: 칸 위에 이름표, 좋은 쪽 초록 테두리 · 조심할 쪽 빨강 테두리 */
.v2-split{display:grid;gap:8px;margin:12px 0 0}
.v2-split-box{border:1px solid var(--v2-line);border-radius:12px;padding:10px 12px}
.v2-split-box>b{display:block;margin:0 0 6px;font-size:15px;font-weight:700}
.v2-split-box.is-good{border-color:#cfe6d8}.v2-split-box.is-good>b{color:var(--v2-good)}
.v2-split-box.is-warn{border-color:#f2dcd6}.v2-split-box.is-warn>b{color:var(--v2-warn)}
.v2-split-box>p{margin:0 0 6px!important;font-size:14px!important;line-height:1.75!important;word-break:keep-all}
.v2-split-list{list-style:none;margin:0;padding:0}
.v2-split-list li{display:grid;grid-template-columns:1fr auto;column-gap:10px;row-gap:2px;padding:8px 0;border:0;border-top:1px solid var(--v2-line);border-radius:0;background:none;font-size:14.5px;line-height:1.6;word-break:keep-all}
.v2-split-list li:first-child{border-top:0;padding-top:2px}
.v2-split-list li:last-child{padding-bottom:2px}
.v2-split-list li>b{font-size:15px;white-space:nowrap}
.v2-split-list li>em{font-style:normal;font-size:14px;color:var(--v2-sub);white-space:nowrap;text-align:right}
.v2-split-list li>small,.v2-split-list li>p{grid-column:1/-1;margin:0;font-size:14px;line-height:1.65;color:var(--v2-sub)}
.v2-split-list li>p{color:inherit}
.v2-split-dates{list-style:none;display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;padding:0;font-size:15px;font-weight:600}
.v2-split-dates li{white-space:nowrap;padding:0;border-radius:0;background:none}
/* 한 줄 요약을 좋은 쪽 · 조심할 쪽 행으로 */
.v2-split-lines{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:4px}
.v2-split-lines li{padding:1px 0 1px 10px;border-left:3px solid var(--v2-line);font-size:14px;line-height:1.65;color:var(--v2-sub);word-break:keep-all}
.v2-split-lines li.is-good{border-left-color:#8fcca9}
.v2-split-lines li.is-warn{border-left-color:#e8a597}
/* 종류별 개수 행(학업 「공부가 잘되는 달 · 24개월 중 6달」) */
.v2-count-rows{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:6px}
.v2-count-rows li{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:8px 12px;border:1px solid var(--v2-line);border-radius:10px;font-size:14.5px}
.v2-count-rows li>b{font-weight:700;word-break:keep-all}
.v2-count-rows li>span{flex:none;white-space:nowrap;color:var(--v2-sub)}
.v2-count-rows li.is-good{border-color:#cfe6d8}.v2-count-rows li.is-good>b{color:var(--v2-good)}
.v2-count-rows li.is-warn{border-color:#f2dcd6}.v2-count-rows li.is-warn>b{color:var(--v2-warn)}
/* 해 묶음 머리의 개수 요약: 좋은 달 줄 · 조심할 달 줄을 나누고 항목은 꺾지 않는다 */
.v2-year-group>summary .v2-year-counts{display:grid;justify-items:end;gap:2px}
.v2-year-counts>span{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:0 10px}
.v2-year-counts i{font-style:normal;white-space:nowrap}
.v2-year-counts .is-good i{color:var(--v2-good)}.v2-year-counts .is-warn i{color:var(--v2-warn)}
/* 굵은 이름표는 본문 위 한 줄로 */
.v2-labeled>b{display:block;margin:0 0 2px}
/* 학업 달 배지: 실전 · 복습은 무색이라 다른 달과 갈리지 않았다 */
.v2-badge.is-steady{background:#eef1fa;color:#4a5f9c}
/* 직장 「일 조심할 달」 이름표가 좋은 달과 같은 색이었다 */
.v2-month-key.is-warn{color:var(--v2-warn)}
/* 묶음 한눈에 보기: 360 에서 이름표가 날짜 밑으로 꺾였다. 날짜는 왼쪽 고정 칸, 이름표가 꺾이면 날짜 오른쪽 칸 안에서 꺾인다 */
.bundle-glance-list li>div>span{display:block;padding-left:104px;text-indent:-104px}
.bundle-glance-list li>div>span>b{display:inline-block;min-width:96px;text-indent:0;white-space:nowrap}
/* 라이트 대비(2.4~2.6) — 분야 색 글자는 같은 색을 어둡게 */
.v2-domains>div dt span,.v2-score-row>span small{color:color-mix(in srgb,var(--dc) 68%,#000)}
.love-score,.love-chips dt{color:color-mix(in srgb,var(--c-love) 68%,#000)}
html[data-theme="dark"] .v2-domains>div dt span,html[data-theme="dark"] .v2-score-row>span small{color:var(--dc)}
html[data-theme="dark"] .love-score,html[data-theme="dark"] .love-chips dt{color:var(--c-love)}
.v2-split-box .v2-locked-rows{margin:0}.v2-split-box .v2-locked-rows li{border-top:0;padding:2px 0}.v2-split-box .v2-locked-rows li>.v2-blur{text-align:left}
/* 2026-11-08 결제 전 캐릭터 컷 + 쯔꾸르식 대사창(templates/partials/dialogue_cut.html) */
.dlg-cut{position:relative;margin:22px 16px 6px;aspect-ratio:4/5;overflow:hidden;border-radius:14px;background:#15151b}
.dlg-cut img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 12%}
.dlg-cut.without-portrait{aspect-ratio:auto;min-height:0}.dlg-cut.without-portrait .dlg-box{position:static;margin:0}
.dlg-box{position:absolute;left:10px;right:10px;bottom:10px;margin:0;padding:14px 16px;background:rgba(12,12,18,.86);border:1px solid rgba(255,236,200,.55);border-radius:10px;box-shadow:0 0 0 3px rgba(12,12,18,.45)}
.dlg-line{margin:0;font-size:16px;line-height:1.7;color:#fff;word-break:keep-all}
@media(min-width:600px){.dlg-cut{margin-left:auto;margin-right:auto;max-width:416px}}
/* 2026-11-08 꼬마 캐릭터 짚기: 표시할 칸에 cb-mark-box(박스) · cb-mark-ring(동그라미), 바로 아래 partials/chibi_cut.html */
.cb-mark-box,.cb-mark-ring{position:relative}
.cb-mark-box::after,.cb-mark-ring::after{content:'';position:absolute;pointer-events:none;border:3px solid #ff3b3b;z-index:1}
.cb-mark-box::after{inset:-6px -8px;border-radius:8px}
/* 11/08 타원은 글자 끝을 가로질러 겹침 → 글자 폭에 맞춘 알약 모양(모서리 반원이 글자 네 귀퉁이를 다 품음). 사장님: 사선 X, 반듯하게 */
.cb-mark-ring{width:fit-content;max-width:100%}
.cb-mark-ring::after{inset:-9px -16px;border-radius:999px}
.cb-cut{display:flex;align-items:flex-end;gap:2px;margin:6px -6px 4px -10px;position:relative;z-index:2}
.cb-cut img{width:104px;height:104px;object-fit:contain;flex:0 0 auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}
.cb-cut.side-right{flex-direction:row-reverse;margin:6px -10px 4px -6px}
.cb-cut.side-right img{transform:scaleX(-1)}
/* 11/09 사장님: 말풍선 여백 최소 · 글자 가운데. 폭은 reading-v2.js 가 가장 긴 줄에 맞춰 줄인다(줄바꿈된 글은 CSS 로 못 줄임) */
.cb-say{position:relative;flex:0 1 auto;min-width:0;display:flex;align-items:center;margin:0 0 22px;background:#fff;color:#1a1a1a;border-radius:14px;padding:8px 12px;font-size:15px;line-height:1.5;font-weight:600;word-break:keep-all;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.cb-say::before{content:'';position:absolute;bottom:14px;border:8px solid transparent}
.cb-cut.side-left .cb-say::before{left:-8px;border-right-color:#fff;border-left:0}
.cb-cut.side-right .cb-say::before{right:-8px;border-left-color:#fff;border-right:0}
.cb-cut.without-chibi{margin-left:0;margin-right:0}.cb-cut.without-chibi .cb-say::before{display:none}
/* 글자 사이에 낀 작은 칸(○○점 등)은 옆 글자를 덮지 않게 좁게 */
:is(b,span,em,i,small,strong).cb-mark-ring::after{inset:-5px -7px}
/* 2026-11-09 결과 화면 꼬마(partials/speaking_guide.html): 섹션 안내 문장이 길어 말풍선은 두세 줄, 주제 이름표는 위에 작게 */
.cb-result{margin:18px -6px 18px -10px}.cb-result.side-right{margin:18px -10px 18px -6px}
.cb-result .cb-say{display:block;font-weight:500;line-height:1.6}
.cb-result .cb-topic{display:block;font-size:14px;font-weight:700;color:#b0413e;margin-bottom:2px}
/* 2026-11-09 사장님: 꼬마 150px, 꼬마와 말풍선 사이를 좁힌다(그림 안 투명 여백 10~20px을 겹쳐 덮는다) */
.cb-cut{gap:0}
.cb-cut img{width:150px;height:150px;margin-right:-14px}
.cb-cut.side-right img{margin-right:0;margin-left:-14px}
