:root{
  --o00:#FFFFFF;--o01:#FAFAF6;--o02:#F0F1E8;--o03:#E2E5D3;
  --o04:#CBD1B2;--o05:#AEB88B;--o06:#8E9A63;--o07:#6F7B47;
  --o08:#565F36;--o09:#3A4127;
  --ink:#2E3120;--soft:#9DA088;--line:#EAEDE0;
  --gold:#C4956A;--gold-bg:#FDF3E7;--gold-border:#EDE0D0;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:'Pretendard',sans-serif;background:#DEE0D4;color:var(--ink);display:flex;justify-content:center;overflow:hidden;}
.app-frame{position:relative;width:100%;max-width:480px;height:100dvh;background:var(--o01);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 0 40px rgba(0,0,0,0.08);}
.app-header{flex-shrink:0;border-bottom:1px solid var(--line);background:var(--o01);}
.header-chat{display:flex;align-items:center;padding:12px 18px;gap:12px;}
.chat-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--o05),var(--o08));display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:18px;}
.chat-header-info{flex:1;}
.chat-header-name{font-size:16px;font-weight:700;color:var(--ink);}
.chat-header-status{font-size:11px;color:var(--soft);display:flex;align-items:center;gap:4px;margin-top:2px;}
.status-dot{width:5px;height:5px;border-radius:50%;background:#7DB87D;animation:pulse 3s ease-in-out infinite;flex-shrink:0;}
@keyframes pulse{0%,100%{opacity:.4}50%{opacity:1}}
.chat-header-cred{font-size:13px;font-weight:700;color:var(--o08);background:var(--o02);padding:5px 10px;border-radius:20px;}
.chat-header-cred small{font-size:10px;font-weight:500;color:var(--soft);}
.header-page{padding:16px 18px 14px;display:flex;align-items:center;justify-content:space-between;}
.page-title{font-size:22px;font-weight:800;color:var(--ink);letter-spacing:-0.5px;}
.page-sub{font-size:12px;color:var(--soft);margin-top:4px;}
.page-deco{font-size:20px;letter-spacing:2px;}
.page-badge{font-size:12px;font-weight:600;color:var(--o07);background:var(--o02);padding:4px 10px;border-radius:20px;}
.gear-btn{width:40px;height:40px;border-radius:12px;background:var(--o02);display:flex;align-items:center;justify-content:center;}
.gear-btn svg{width:22px;height:22px;color:var(--o07);}
.tab-content{flex:1;overflow-y:auto;display:none;flex-direction:column;position:relative;}
.tab-content.active{display:flex;}
.tab-content::-webkit-scrollbar{width:0}
.chat-body{flex:1;overflow-y:auto;padding:14px 14px 8px;display:flex;flex-direction:column;gap:8px;}
.chat-body::-webkit-scrollbar{width:0}
.sua-group{display:flex;flex-direction:column;gap:4px;}
.sua-header{display:flex;align-items:center;gap:7px;}
.sua-avatar-sm{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--o05),var(--o08));display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0;}
.sua-name{font-size:11px;color:var(--soft);font-weight:500;}
.sua-messages{display:flex;flex-direction:column;gap:4px;padding-left:33px;}
.bubble-sua{font-size:14.5px;line-height:1.7;background:var(--o00);padding:10px 14px;border-radius:4px 16px 16px 16px;box-shadow:0 1px 4px rgba(70,80,50,0.07);color:var(--ink);word-break:keep-all;align-self:flex-start;max-width:88%;animation:fadeIn 0.25s ease}
.bubble-sua+.bubble-sua{border-radius:16px}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.sua-time{font-size:10px;color:var(--soft);padding-left:2px;margin-top:2px;}
.user-group{display:flex;flex-direction:column;align-items:flex-end;gap:3px;}
.bubble-user{font-size:14.5px;line-height:1.7;background:var(--o08);color:#fff;padding:10px 14px;border-radius:16px 4px 16px 16px;max-width:78%;word-break:keep-all;}
.user-time{font-size:10px;color:var(--soft);padding-right:2px;margin-top:2px;}
.typing-indicator{display:flex;gap:8px;align-items:center;}
.typing-dots{background:var(--o00);padding:13px 16px;border-radius:4px 16px 16px 16px;box-shadow:0 1px 4px rgba(70,80,50,0.07);display:flex;gap:4px;align-self:flex-start;}
.typing-dots span{width:6px;height:6px;border-radius:50%;background:var(--o05);animation:bounce 1.3s ease-in-out infinite;}
.typing-dots span:nth-child(2){animation-delay:0.15s}
.typing-dots span:nth-child(3){animation-delay:0.3s}
@keyframes bounce{0%,60%,100%{transform:translateY(0);opacity:0.5}30%{transform:translateY(-4px);opacity:1}}
.chat-input-wrap{padding:10px 14px;display:flex;gap:8px;align-items:center;border-top:1px solid var(--line);flex-shrink:0;background:var(--o01);padding-bottom:max(10px,env(safe-area-inset-bottom));}
.input-field{flex:1;background:var(--o00);border:1.5px solid var(--line);border-radius:22px;padding:11px 16px;font-family:'Pretendard',sans-serif;font-size:14px;color:var(--ink);outline:none;resize:none;max-height:100px;}
.input-field:focus{border-color:var(--o05);}
.send-btn{width:42px;height:42px;border-radius:50%;background:var(--o08);border:none;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:opacity 0.15s;}
.send-btn:active{opacity:0.85}
.send-btn:disabled{background:var(--o04);cursor:default;}
.send-btn svg{width:16px;height:16px;}
.error-banner{background:#FCE8E6;color:#C0392B;font-size:12px;padding:8px 14px;text-align:center;display:none;}
.error-banner.show{display:block;}
.fortune-body{padding:16px;display:flex;flex-direction:column;gap:10px;overflow-y:auto;}
.fortune-section-label{font-size:11px;color:var(--soft);font-weight:600;letter-spacing:1.5px;margin:4px 0 2px 2px;}
.fortune-card{background:var(--o00);border-radius:16px;padding:16px;box-shadow:0 1px 6px rgba(70,80,50,0.06);display:flex;align-items:center;gap:14px;cursor:pointer;}
.fortune-card:active{opacity:0.85;}
.fortune-icon{width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;}
.fi-tojung{background:#F0EDF8;}.fi-compat{background:#FDF0F0;}.fi-saju{background:#FDF3E7;}.fi-month{background:#F0F4FF;}.fi-year{background:#F0F8F0;}
.fortune-info{flex:1;}
.fortune-name{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:3px;}
.fortune-desc{font-size:12px;color:var(--soft);}
.fortune-badge{font-size:11px;font-weight:600;padding:4px 10px;border-radius:20px;white-space:nowrap;}
.badge-free{background:var(--o02);color:var(--o07);}
.badge-paid{background:#FDF3E7;color:#C4956A;}
.fortune-divider{height:1px;background:var(--line);margin:4px 0;}
.fortune-period{font-size:11px;color:var(--soft);opacity:.75;margin-top:3px;}
.fortune-notice{font-size:11px;color:var(--soft);opacity:.75;line-height:1.6;padding:10px 16px 4px;}
.moment-body{padding:16px;flex:1;overflow-y:auto;}
.moment-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;padding:40px 20px;}
.moment-empty-art{font-size:56px;margin-bottom:20px;opacity:0.25;}
.moment-empty-title{font-size:17px;font-weight:700;color:var(--ink);margin-bottom:10px;}
.moment-empty-desc{font-size:13px;color:var(--soft);line-height:1.7;}
.moment-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.moment-card{border-radius:16px;aspect-ratio:2/3;overflow:hidden;background:var(--o03);cursor:pointer;position:relative;}
.moment-card img{width:100%;height:100%;object-fit:cover;}
.settings-body{padding:16px;display:flex;flex-direction:column;gap:10px;overflow-y:auto;}
.settings-section{background:var(--o00);border-radius:16px;box-shadow:0 1px 6px rgba(70,80,50,0.06);}
.settings-row{display:flex;align-items:center;padding:14px 16px;gap:12px;cursor:pointer;border-bottom:1px solid var(--line);}
.settings-row:last-child{border-bottom:none;}
.settings-row-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0;}
.si-cred{background:#FDF3E7;}.si-charge{background:#F0F8F0;}.si-saju{background:#F0EDF8;}.si-doc{background:var(--o02);}.si-logout{background:#FDF0F0;}
.settings-row-text{flex:1;}
.settings-row-title{font-size:14px;font-weight:500;color:var(--ink);}
.settings-row-desc{font-size:12px;color:var(--soft);margin-top:2px;}
.settings-row-value{font-size:13px;font-weight:700;color:var(--o07);}
.settings-row-arrow{font-size:14px;color:var(--o04);}
.danger{color:#C05050 !important;}
.settings-version{text-align:center;padding:20px;font-size:12px;color:var(--o04);}

/* 모달 공통 */
.sheet-modal{position:fixed;inset:0;z-index:1000;display:flex;justify-content:center;align-items:flex-end;}
.sheet-modal.hidden{display:none;}
.sheet-backdrop{position:absolute;inset:0;background:rgba(0,0,0,0.4);}
.sheet-body{position:relative;width:100%;max-width:480px;background:#EDEBE7;border-radius:24px 24px 0 0;max-height:92vh;overflow-y:auto;z-index:1;}
.sheet-body::-webkit-scrollbar{width:0}
.pm-steps{display:flex;align-items:center;justify-content:center;padding:16px 20px 0;gap:8px;}
.pm-dot{width:6px;height:6px;border-radius:50%;background:#D4C9BE;}
.pm-dot.active{width:20px;border-radius:3px;background:#C4956A;}
.pm-header{padding:16px 24px 0;}
.pm-sub{font-size:11px;color:#8C7B6B;margin-bottom:6px;letter-spacing:1px;}
.pm-title{font-size:22px;font-weight:700;color:#2C2420;line-height:1.3;}
.pm-form{padding:24px 24px 0;}
.pm-field{margin-bottom:20px;}
.pm-label{font-size:12px;font-weight:600;color:#6B5B4E;margin-bottom:8px;display:flex;align-items:center;gap:4px;}
.pm-required{color:#C4956A;font-size:10px;}
.pm-optional{color:#BDB0A4;font-size:10px;font-weight:400;}
.pm-input{width:100%;background:white;border:1.5px solid #E8E2DA;border-radius:12px;padding:14px 16px;font-size:15px;font-family:'Pretendard',sans-serif;color:#2C2420;outline:none;}
.pm-input:focus{border-color:#C4956A;}
.pm-gender{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.pm-gender-btn{background:white;border:1.5px solid #E8E2DA;border-radius:12px;padding:13px;font-size:14px;font-weight:500;color:#8C7B6B;cursor:pointer;font-family:'Pretendard',sans-serif;}
.pm-gender-btn.selected{border-color:#C4956A;background:#FDF3E7;color:#C4956A;font-weight:600;}
.pm-date{display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px;}
.pm-time{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.pm-sel-wrap{position:relative;}
.pm-sel{width:100%;background:white;border:1.5px solid #E8E2DA;border-radius:12px;padding:13px 32px 13px 14px;font-size:14px;font-family:'Pretendard',sans-serif;color:#2C2420;appearance:none;outline:none;cursor:pointer;}
.pm-sel:focus{border-color:#C4956A;}
.pm-sel:disabled{background:#F5F2EE;color:#BDB0A4;cursor:not-allowed;}
.pm-sel.unsel{color:#BDB0A4;}
.pm-arr{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:10px;color:#8C7B6B;pointer-events:none;}
.pm-consent{margin:24px 24px 0;background:#FDF8F3;border:1px solid #EDE0D0;border-radius:16px;padding:16px;}
.pm-consent-desc{font-size:12px;color:#8C7B6B;line-height:1.6;}
.pm-bottom{padding:24px 24px 40px;margin-top:24px;}
.pm-btn-primary{width:100%;background:#2C2420;color:white;border:none;border-radius:14px;padding:16px;font-size:15px;font-weight:600;cursor:pointer;font-family:'Pretendard',sans-serif;}
.pm-btn-primary:disabled{background:#D4C9BE;cursor:not-allowed;}
.pm-btn-skip{width:100%;background:none;border:none;color:#8C7B6B;font-size:13px;padding:12px;cursor:pointer;font-family:'Pretendard',sans-serif;margin-top:8px;}

/* 궁합 결과 */
.compat-result{padding:20px;display:flex;flex-direction:column;gap:14px;}
.compat-back{width:36px;height:36px;border-radius:50%;background:var(--o02);border:none;cursor:pointer;font-size:18px;color:var(--ink);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.compat-header{display:flex;align-items:center;gap:12px;padding:16px 20px 0;}
.compat-title{font-size:16px;font-weight:700;color:var(--ink);}
.score-card{background:white;border-radius:20px;padding:24px;text-align:center;box-shadow:0 2px 12px rgba(0,0,0,0.06);}
.score-label{font-size:11px;letter-spacing:2px;color:#8C7B6B;margin-bottom:14px;}
.score-ring-wrap{position:relative;width:120px;height:120px;margin:0 auto 16px;}
.score-ring-wrap svg{transform:rotate(-90deg);}
.score-ring-bg{stroke:#F0EBE4;stroke-width:8;fill:none;}
.score-ring-fill{stroke:#C4956A;stroke-width:8;fill:none;stroke-linecap:round;}
.score-num{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:32px;font-weight:800;color:#2C2420;}
.score-num span{font-size:14px;font-weight:400;color:#8C7B6B;}
.score-tag{display:inline-block;background:#FDF3E7;color:#C4956A;font-size:13px;font-weight:600;padding:6px 16px;border-radius:20px;margin-bottom:10px;}
.score-desc{font-size:13px;color:#6B5B4E;line-height:1.6;}
.result-section-title{font-size:11px;letter-spacing:2px;color:#8C7B6B;margin-bottom:8px;}
.rel-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.rel-card{background:white;border-radius:16px;padding:14px;box-shadow:0 2px 8px rgba(0,0,0,0.04);}
.rel-emoji{font-size:22px;margin-bottom:8px;display:block;}
.rel-main{font-size:13px;font-weight:700;color:#2C2420;margin-bottom:3px;}
.rel-desc{font-size:11px;color:#6B5B4E;line-height:1.5;}
.rel-badge{display:inline-block;font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px;margin-top:6px;}
.badge-best{background:#FFF0E0;color:#C4956A;}
.badge-good{background:#F0F7F2;color:#4A8A5C;}
.badge-caution{background:#FDF0F0;color:#C05050;}
.badge-warn{background:#FFF8E0;color:#A07830;}
.sinsal-wrap{background:white;border-radius:16px;padding:16px;box-shadow:0 2px 8px rgba(0,0,0,0.04);}
.sinsal-person-label{font-size:12px;font-weight:600;color:#8C7B6B;margin-bottom:8px;}
.sinsal-tags{display:flex;flex-wrap:wrap;gap:6px;}
.sinsal-tag{padding:5px 10px;border-radius:10px;font-size:11px;font-weight:600;}
.tag-good{background:#FDF3E7;color:#C4956A;}
.tag-neutral{background:#F0F4FF;color:#5060B0;}
.tag-bad{background:#FDF0F0;color:#C05050;}
.sinsal-divider{height:1px;background:#F5F0EB;margin:12px 0;}
.compat-point{font-size:12px;color:#6B5B4E;line-height:1.6;padding-top:4px;}
.compat-cta{background:linear-gradient(135deg,#2C2420,#4A3830);border-radius:20px;padding:20px;text-align:center;}
.compat-cta-title{font-size:15px;font-weight:700;color:white;margin-bottom:6px;}
.compat-cta-desc{font-size:12px;color:rgba(255,255,255,0.6);margin-bottom:16px;line-height:1.5;}
.compat-cta-btn{width:100%;background:#C4956A;color:white;border:none;border-radius:12px;padding:13px;font-size:14px;font-weight:600;cursor:pointer;font-family:'Pretendard',sans-serif;}

/* 탭 바 */
.tab-bar{display:flex;border-top:1px solid var(--line);background:var(--o01);flex-shrink:0;padding-bottom:max(16px,env(safe-area-inset-bottom));}
.tab-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 4px 6px;gap:3px;border:none;background:none;cursor:pointer;color:var(--o04);transition:color 0.15s;}
.tab-btn.active{color:var(--o08);}
.tab-btn svg{width:22px;height:22px;}
.tab-btn span{font-size:12px;font-weight:500;font-family:'Pretendard',sans-serif;}
.tab-btn.active span{font-weight:700;}
.tab-dot{width:4px;height:4px;border-radius:50%;background:var(--o06);margin-top:1px;opacity:0;transition:opacity 0.15s;}
.tab-btn.active .tab-dot{opacity:1;}
.wuxing-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.wuxing-card{background:white;border-radius:16px;padding:14px;box-shadow:0 2px 8px rgba(0,0,0,0.04);}
.wuxing-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;}
.wuxing-label{font-size:12px;color:#8C7B6B;}
.wuxing-bar-bg{height:5px;background:#F0EBE4;border-radius:3px;margin-bottom:8px;overflow:hidden;}
.wuxing-bar{height:100%;border-radius:3px;}
.wuxing-score{font-size:20px;font-weight:700;color:#2C2420;}
.wuxing-score span{font-size:11px;color:#8C7B6B;font-weight:400;}
.pillar-card{background:white;border-radius:16px;padding:16px;box-shadow:0 2px 8px rgba(0,0,0,0.04);display:flex;flex-direction:column;gap:8px;}
.pillar-row{display:grid;grid-template-columns:1fr 40px 1fr;gap:8px;align-items:center;}
.pillar-cell{background:#F7F4F0;border-radius:10px;padding:10px;text-align:center;}
.pillar-label{font-size:10px;color:#8C7B6B;margin-bottom:4px;}
.pillar-char{font-size:20px;font-weight:700;color:#2C2420;line-height:1;margin-bottom:2px;}
.pillar-elem{font-size:10px;font-weight:600;color:#8C7B6B;}
.pillar-mid{text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px;}
.pillar-rel{font-size:11px;font-weight:700;color:#C4956A;}
.pillar-emoji{font-size:14px;}

/* 띠별 운세 */
.zodiac-section{padding:16px 16px 0;}
.zodiac-section-label{font-size:11px;color:var(--soft);font-weight:600;letter-spacing:1.5px;margin-bottom:10px;}
.zodiac-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.zodiac-btn{background:var(--o00);border:1.5px solid var(--line);border-radius:14px;padding:10px 4px 8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;font-family:'Pretendard',sans-serif;transition:background 0.12s;}
.zodiac-btn:active{opacity:0.8;}
.zodiac-btn.zsel{border-color:var(--o06);background:var(--o02);}
.zodiac-emoji{font-size:30px;line-height:1;}
.zodiac-name{font-size:11px;color:var(--soft);}
.zodiac-detail{margin:12px 16px 0;background:var(--o00);border-radius:16px;padding:16px;box-shadow:0 1px 6px rgba(70,80,50,0.06);display:none;}
.zodiac-detail.show{display:block;}
.zd-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.zd-emoji{font-size:40px;line-height:1;}
.zd-title{font-size:17px;font-weight:700;color:var(--ink);}
.zd-grade{font-size:11px;font-weight:600;padding:3px 10px;border-radius:20px;margin-top:4px;display:inline-block;}
.zg-good{background:#F0F8F0;color:#4A7A50;}
.zg-normal{background:var(--o02);color:var(--o07);}
.zg-bad{background:#FDF3E7;color:#C4956A;}
.zd-rep{font-size:14px;line-height:1.7;color:var(--ink);margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--line);}
.zd-year-item{display:flex;gap:10px;align-items:flex-start;padding:7px 0;border-bottom:1px solid var(--line);}
.zd-year-item:last-child{border-bottom:none;}
.zd-year-label{font-size:12px;font-weight:600;color:var(--o07);white-space:nowrap;min-width:44px;padding-top:1px;}
.zd-year-text{font-size:13px;color:var(--ink);line-height:1.6;}
.zodiac-banner{margin:12px 16px 16px;padding:12px 14px;background:var(--o02);border-radius:12px;border:1px solid var(--line);font-size:12px;color:var(--o08);text-align:center;line-height:1.6;cursor:pointer;width:100%;font-family:'Pretendard',sans-serif;}
.fi-today{background:#FFF8E7;}
.fi-dangsaju{background:#F0EDF8;}
.fi-tarot{background:#F8F0F5;}

/* 당사주 뷰 */
.dangsaju-view{position:absolute;inset:0;background:var(--o01);z-index:10;display:none;flex-direction:column;}
.dangsaju-view.show{display:flex;}
.dangsaju-header{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);flex-shrink:0;background:var(--o01);}
.dangsaju-back{background:none;border:none;font-size:14px;color:var(--o07);cursor:pointer;font-family:'Pretendard',sans-serif;padding:0;margin-right:12px;}
.dangsaju-header-info{flex:1;}
.dangsaju-header-title{font-size:17px;font-weight:700;color:var(--ink);}
.dangsaju-header-sub{font-size:12px;color:var(--soft);margin-top:1px;}
.dangsaju-body{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:0;}
  .sp-hero{background:var(--o01);padding:44px 28px 40px;border-bottom:1px solid var(--line);}
  .sp-hero-from{font-size:10px;font-weight:600;letter-spacing:2px;color:var(--soft);margin-bottom:20px;}
  .sp-hero-quote{font-family:Georgia,'Times New Roman',serif;font-size:23px;font-weight:400;color:var(--ink);line-height:1.55;}
  .sp-hero-qm{font-size:28px;color:var(--o04);display:inline;}
  .sp-hero-sign{margin-top:28px;font-size:12px;color:var(--soft);display:flex;align-items:center;gap:8px;}
  .sp-hero-sign-line{width:24px;height:1px;background:var(--o04);}
  .sp-sua-comment{padding:26px 24px;border-bottom:1px solid var(--line);}
  .sp-sua-comment p{font-size:14px;line-height:1.9;color:var(--soft);margin-bottom:14px;}
  .sp-sua-comment p:last-child{margin-bottom:0;}
  .sp-sua-comment em{color:var(--ink);font-style:normal;font-weight:600;}
  .sp-origin{padding:20px;background:var(--o02);border-bottom:1px solid var(--line);}
  .sp-sec-lbl{font-size:10px;font-weight:600;letter-spacing:2px;color:var(--soft);margin-bottom:14px;}
  .sp-pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:18px;}
  .sp-pillar{text-align:center;}
  .sp-pillar-lbl{font-size:10px;color:var(--soft);margin-bottom:5px;}
  .sp-pillar-gz{font-size:24px;font-weight:700;color:var(--ink);line-height:1.2;}
  .sp-pillar-gz.sp-me{color:var(--o07);}
  .sp-sub-lbl{font-size:11px;font-weight:600;color:var(--soft);margin-bottom:10px;}
  .sp-card-inner{padding:14px 18px 16px;border-top:1px solid var(--line);}
  .sp-income-row{display:flex;align-items:center;gap:8px;margin-bottom:7px;}
  .sp-income-lbl{font-size:12px;color:var(--soft);width:52px;}
  .sp-income-bg{flex:1;height:7px;background:var(--o02);border-radius:4px;overflow:hidden;}
  .sp-income-bar{height:100%;border-radius:4px;}
  .sp-income-txt{font-size:11px;color:var(--soft);width:28px;text-align:right;}
  .sp-invest-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-top:4px;}
  .sp-invest-item{display:flex;align-items:center;justify-content:space-between;background:var(--o02);border-radius:10px;padding:8px 12px;}
  .sp-invest-name{font-size:12px;color:var(--soft);}
  .sp-invest-mark{font-size:15px;font-weight:700;}
  .sp-mark-o{color:var(--o06);}
  .sp-mark-t{color:#C4956A;}
  .sp-mark-x{color:#C47070;}
  .sp-gauge-row{display:flex;align-items:center;gap:8px;margin-bottom:14px;}
  .sp-gauge-lbl{font-size:11px;color:var(--soft);width:44px;}
  .sp-gauge-lbl-r{font-size:11px;color:var(--soft);width:44px;text-align:right;}
  .sp-gauge-bg{flex:1;height:8px;background:var(--o02);border-radius:4px;overflow:hidden;position:relative;}
  .sp-gauge-fill{height:100%;border-radius:4px;background:var(--o05);}
  .sp-gauge-dot{position:absolute;top:50%;transform:translate(-50%,-50%);width:14px;height:14px;border-radius:50%;background:var(--o07);border:2px solid #fff;}
  .sp-job-tags{display:flex;flex-wrap:wrap;gap:6px;}
  .sp-job-tag{font-size:11px;padding:5px 12px;border-radius:20px;background:var(--o02);color:var(--o08);font-weight:500;}
  .sp-health-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;}
  .sp-health-item{display:flex;align-items:center;justify-content:space-between;background:var(--o02);border-radius:10px;padding:8px 12px;}
  .sp-health-name{font-size:12px;color:var(--soft);}
  .sp-health-lv{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;}
  .sp-lv-danger{background:#F5EDE8;color:#8B5A3A;}
  .sp-lv-caution{background:#FDF0E8;color:#C4784A;}
  .sp-lv-warning{background:#F0EDF8;color:#7B62A3;}
  .sp-lv-good{background:#EEF3E8;color:var(--o07);}
  .sp-sinsal-list{display:flex;flex-direction:column;gap:8px;}
  .sp-sinsal-item{display:flex;align-items:flex-start;gap:10px;border-radius:12px;padding:12px 14px;}
  .sp-sinsal-icon{font-size:20px;flex-shrink:0;}
  .sp-sinsal-name{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:2px;}
  .sp-sinsal-desc{font-size:12px;color:var(--soft);line-height:1.5;}
  .sp-sinsal-bdg{font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600;margin-top:5px;display:inline-block;}
  .sp-gwiin-list{display:flex;flex-direction:column;gap:8px;}
  .sp-gwiin-card{background:var(--o00);border:1px solid #E8D5A3;border-radius:14px;overflow:hidden;display:flex;align-items:stretch;}
  .sp-gwiin-accent{width:4px;background:linear-gradient(180deg,#C4956A,#E8C87A);flex-shrink:0;}
  .sp-gwiin-content{flex:1;padding:13px 15px;}
  .sp-gwiin-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:5px;}
  .sp-gwiin-hanja{font-size:10px;color:#B8935A;font-weight:600;letter-spacing:1px;margin-bottom:2px;}
  .sp-gwiin-name{font-size:14px;font-weight:700;color:var(--ink);}
  .sp-gwiin-badge{font-size:10px;padding:3px 10px;border-radius:20px;background:#FDF3E7;color:#C4956A;font-weight:600;flex-shrink:0;margin-left:8px;margin-top:2px;}
  .sp-gwiin-desc{font-size:12px;color:var(--soft);line-height:1.6;}
  .sp-swatch-row{display:flex;gap:12px;margin-bottom:14px;}
  .sp-swatch-wrap{text-align:center;}
  .sp-swatch{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);}
  .sp-swatch-lbl{font-size:10px;color:var(--soft);margin-top:4px;}
  .sp-dir-row{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap;}
  .sp-dir-badge{font-size:12px;padding:5px 14px;border-radius:20px;background:var(--o02);color:var(--o08);font-weight:600;}
  .sp-habit-list{display:flex;flex-direction:column;gap:7px;}
  .sp-habit-item{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--soft);}
  .sp-habit-dot{width:5px;height:5px;border-radius:50%;background:var(--o05);flex-shrink:0;}
  .sp-reading-card{background:var(--o00);border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-bottom:10px;}
  .sp-reading-head{display:flex;align-items:center;gap:10px;padding:14px 18px 12px;border-bottom:1px solid var(--line);}
  .sp-reading-icon{font-size:16px;}
  .sp-reading-title{font-size:14px;font-weight:700;color:var(--ink);flex:1;}
  .sp-reading-hot{font-size:10px;padding:2px 8px;border-radius:10px;background:var(--o02);color:var(--o07);font-weight:600;}
  .sp-reading-body{padding:16px 18px;font-size:14px;line-height:1.85;color:var(--soft);}
  .sp-reading-body em{color:var(--ink);font-style:normal;font-weight:600;}
  .sp-card-love{border-color:var(--o05);}
  .sp-card-love .sp-reading-head{background:var(--o02);}

/* 히어로 */
.ds-hero{background:var(--o02);border-bottom:1px solid var(--line);padding:16px;}
.ds-hero-label{font-size:11px;color:var(--soft);letter-spacing:1.5px;margin-bottom:12px;font-weight:600;}
.ds-pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:14px;}
.ds-pillar{background:var(--o00);border:1px solid var(--line);border-radius:10px;padding:10px 4px;text-align:center;}
.ds-pillar-lbl{font-size:10px;color:var(--soft);margin-bottom:4px;}
.ds-pillar-gz{font-size:17px;font-weight:700;color:var(--ink);line-height:1;}
.ds-pillar-yun{font-size:10px;font-weight:600;margin-top:5px;padding:2px 6px;border-radius:6px;display:inline-block;}
.ds-pillar-star{font-size:10px;color:var(--soft);margin-top:3px;}
.ds-reading-body em{color:var(--ink);font-style:normal;font-weight:700;font-size:15px;}
.ds-yun-g{background:#E8F5E9;color:#388E3C;}
.ds-yun-m{background:#FFF8E1;color:#F57C00;}
.ds-yun-b{background:#FFEBEE;color:#D32F2F;}
.ds-ring-row{display:flex;align-items:center;gap:14px;}
.ds-ring-outer{position:relative;width:90px;height:90px;flex-shrink:0;}
.ds-ring-outer svg{display:block;transform:rotate(-90deg);}
.ds-ring-inner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;}
.ds-ring-score{font-size:28px;font-weight:700;color:var(--ink);line-height:1;}
.ds-ring-info{flex:1;}
.ds-ring-tag{font-size:12px;font-weight:600;padding:4px 12px;border-radius:20px;display:inline-block;margin-bottom:8px;}
.ds-ring-desc{font-size:13px;color:var(--soft);line-height:1.6;}

/* 분야별 */
.ds-sec{padding:14px 16px;}
.ds-sec-label{font-size:11px;color:var(--soft);letter-spacing:1.5px;margin-bottom:10px;font-weight:600;}
.ds-yun-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;}
.ds-yun-card{background:var(--o00);border:1px solid var(--line);border-radius:12px;padding:12px;}
.ds-yun-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px;}
.ds-yun-name{font-size:12px;color:var(--soft);}
.ds-yun-bar-bg{height:3px;background:var(--line);border-radius:2px;overflow:hidden;margin-bottom:7px;}
.ds-yun-bar{height:100%;border-radius:2px;}
.ds-yun-score{font-size:22px;font-weight:700;color:var(--ink);}
.ds-yun-score span{font-size:11px;color:var(--soft);font-weight:400;}

/* 풀이 카드 */
.ds-divider{height:1px;background:var(--line);margin:0 16px;}
.ds-reading-list{padding:14px 16px;display:flex;flex-direction:column;gap:10px;}
.ds-reading-card{background:var(--o00);border:1px solid var(--line);border-radius:14px;overflow:hidden;}
.ds-reading-head{padding:11px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;}
.ds-reading-icon{font-size:15px;}
.ds-reading-title{font-size:14px;font-weight:700;color:var(--ink);flex:1;}
.ds-reading-yun{font-size:10px;font-weight:600;padding:2px 7px;border-radius:6px;}
.ds-reading-body{padding:12px 14px;font-size:14px;color:var(--soft);line-height:1.8;}
.ds-reading-body em{color:var(--ink);font-style:normal;font-weight:600;}

/* 신살 */
.ds-sinsal-list{padding:0 16px 14px;display:flex;flex-direction:column;gap:8px;}
.ds-sinsal-card{background:var(--o00);border:1px solid var(--line);border-radius:12px;padding:13px 14px;display:flex;flex-direction:column;gap:8px;}
.ds-sinsal-head{display:flex;align-items:center;gap:8px;}
.ds-sinsal-icon{font-size:18px;flex-shrink:0;line-height:1;}
.ds-sinsal-name{font-size:14px;font-weight:700;color:var(--ink);}
.ds-sinsal-desc{font-size:13px;color:var(--soft);line-height:1.6;}
.ds-sinsal-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px;display:inline-block;}

/* 공망 */
.ds-gongmang{margin:0 16px 14px;background:var(--o00);border:1px solid var(--line);border-radius:14px;padding:14px;}
.ds-gongmang-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
.ds-gongmang-title{font-size:14px;font-weight:700;color:var(--ink);}
.ds-gongmang-pills{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;}
.ds-gongmang-pill{padding:4px 11px;border-radius:20px;font-size:12px;font-weight:600;}
.ds-pill-hit{background:#FFEBEE;color:#D32F2F;border:1px solid #FFCDD2;}
.ds-pill-norm{background:var(--o02);color:var(--soft);border:1px solid var(--line);}
.ds-gongmang-desc{font-size:13px;color:var(--soft);line-height:1.7;}
.ds-gongmang-desc em{color:var(--ink);font-style:normal;font-weight:600;}

/* 푸터 */
.ds-footer{margin:0 16px 20px;padding:14px;background:var(--o02);border-radius:12px;text-align:center;}
.ds-footer-title{font-size:13px;font-weight:700;color:var(--o08);margin-bottom:4px;}
.ds-footer-sub{font-size:12px;color:var(--soft);}

/* 스트리밍 로딩 */
.ds-loading{padding:32px 16px;text-align:center;display:none;}
.ds-loading.show{display:block;}
.ds-loading-icon{font-size:32px;margin-bottom:12px;animation:pulse 2s ease-in-out infinite;}
.ds-loading-text{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:6px;}
.ds-loading-sub{font-size:13px;color:var(--soft);}
.ds-streaming-text{font-size:14px;color:var(--soft);line-height:1.8;padding:0 16px 16px;white-space:pre-wrap;}

/* HIG 폰트 체계 - Apple Human Interface Guidelines */
.fortune-body, .zodiac-view-body, .settings-body, .moment-body{font-size:17px;}
.fortune-name{font-size:17px;font-weight:700;}
.fortune-desc{font-size:15px;color:var(--soft);}
.fortune-section-label{font-size:13px;font-weight:600;color:var(--soft);letter-spacing:1px;padding:16px 16px 6px;}
.daily-section-title{font-size:17px !important;font-weight:700 !important;color:var(--ink) !important;letter-spacing:0 !important;margin-bottom:10px !important;}
.daily-bazi-title{font-size:20px !important;font-weight:800 !important;color:var(--ink) !important;letter-spacing:-0.3px !important;margin-bottom:4px !important;}
.daily-score-label{font-size:15px !important;color:var(--soft) !important;}
.daily-yun-label{font-size:14px !important;}
.daily-yun-score{font-size:24px !important;font-weight:700 !important;}
.zd-title{font-size:22px !important;font-weight:700 !important;}
.zd-rep{font-size:17px !important;line-height:1.7 !important;}
.zd-year-label{font-size:15px !important;}
.zd-year-text{font-size:15px !important;}
.zodiac-name{font-size:13px !important;}
.zodiac-view-title{font-size:18px !important;}
.zodiac-intro{font-size:15px !important;}
.daily-rel-main{font-size:17px !important;font-weight:700 !important;}
.daily-rel-desc{font-size:14px !important;line-height:1.6 !important;}
.daily-rel-badge{font-size:12px !important;}
.daily-rel-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.daily-sinsal-name{font-size:16px !important;font-weight:700 !important;}
.daily-sinsal-desc{font-size:14px !important;line-height:1.6 !important;}
.zd-grade{font-size:13px !important;}
.daily-luck-label{font-size:13px !important;}
.daily-luck-value{font-size:16px !important;font-weight:700 !important;}
.fortune-card .fortune-name{font-size:17px;font-weight:700;}
.fortune-card .fortune-desc{font-size:14px;}

/* 행운 정보 */
.daily-luck-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;}
.daily-luck-card{background:var(--o00);border-radius:14px;padding:14px 10px;box-shadow:0 1px 6px rgba(70,80,50,0.06);text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px;}
.daily-luck-icon{font-size:24px;}
.daily-luck-label{font-size:11px;color:var(--soft);}
.daily-luck-value{font-size:15px;font-weight:700;color:var(--ink);}
.daily-luck-sub{font-size:11px;color:var(--soft);}

/* 신살 카드 개선 */
.daily-sinsal-list{display:flex;flex-direction:column;gap:8px;}
.daily-sinsal-item{background:var(--o00);border-radius:14px;padding:14px;box-shadow:0 1px 6px rgba(70,80,50,0.06);display:flex;align-items:flex-start;gap:12px;}
.daily-sinsal-icon{font-size:22px;flex-shrink:0;}
.daily-sinsal-info{flex:1;}
.daily-sinsal-name{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:3px;}
.daily-sinsal-desc{font-size:12px;color:var(--soft);line-height:1.5;}
.daily-sinsal-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px;margin-top:6px;display:inline-block;}
.daily-bazi{margin:14px 16px 0;display:flex;flex-direction:column;gap:12px;}
.daily-bazi-title{font-size:11px;color:var(--soft);font-weight:600;letter-spacing:1.5px;margin-bottom:2px;}
.daily-section-title{font-size:11px;letter-spacing:2px;color:var(--soft);margin-bottom:8px;}
.daily-score-card{background:var(--o00);border-radius:16px;padding:20px;box-shadow:0 1px 6px rgba(70,80,50,0.06);text-align:center;}
.daily-score-label{font-size:11px;letter-spacing:2px;color:var(--soft);margin-bottom:12px;}
.daily-score-ring{position:relative;width:110px;height:110px;margin:0 auto 12px;}
.daily-score-ring svg{transform:rotate(-90deg);}
.daily-score-num{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:800;color:var(--ink);}
.daily-score-num span{font-size:12px;font-weight:400;color:var(--soft);}
.daily-score-tag{display:inline-block;font-size:12px;font-weight:600;padding:4px 14px;border-radius:20px;margin-bottom:6px;}
.daily-score-desc{font-size:12px;color:var(--soft);line-height:1.6;margin-top:4px;}
.daily-yun-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.daily-yun-card{background:var(--o00);border-radius:14px;padding:14px;box-shadow:0 1px 6px rgba(70,80,50,0.06);}
.daily-yun-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.daily-yun-label{font-size:12px;color:var(--soft);}
.daily-yun-bar-bg{height:5px;background:var(--line);border-radius:3px;overflow:hidden;margin-bottom:6px;}
.daily-yun-bar{height:100%;border-radius:3px;}
.daily-yun-score{font-size:20px;font-weight:700;color:var(--ink);}
.daily-yun-score span{font-size:11px;color:var(--soft);font-weight:400;}
.daily-rel-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.daily-rel-card{background:var(--o00);border-radius:14px;padding:14px;box-shadow:0 1px 6px rgba(70,80,50,0.06);}
.daily-rel-head{display:flex;align-items:center;gap:6px;margin-bottom:6px;}
.daily-rel-emoji{font-size:18px;line-height:1;}
.daily-rel-main{font-size:15px;font-weight:700;color:var(--ink);}
.daily-rel-desc{font-size:11px;color:var(--soft);line-height:1.5;}
.daily-rel-badge{display:inline-block;font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px;margin-top:6px;}
.daily-pillar-card{background:var(--o00);border-radius:16px;padding:16px;box-shadow:0 1px 6px rgba(70,80,50,0.06);}
.daily-pillar-row{display:grid;grid-template-columns:1fr 40px 1fr;gap:6px;align-items:center;margin-bottom:6px;}
.daily-pillar-row:last-child{margin-bottom:0;}
.daily-pillar-cell{background:var(--o02);border-radius:10px;padding:10px;text-align:center;}
.daily-pillar-lbl{font-size:10px;color:var(--soft);margin-bottom:3px;}
.daily-pillar-gz{font-size:18px;font-weight:700;color:var(--ink);line-height:1;}
.daily-pillar-elem{font-size:10px;font-weight:600;color:var(--soft);margin-top:2px;}
.daily-pillar-mid{text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px;}
.daily-pillar-rel{font-size:11px;font-weight:700;color:var(--o07);}
.daily-sinsal-card{background:var(--o00);border-radius:16px;padding:16px;box-shadow:0 1px 6px rgba(70,80,50,0.06);}
.daily-sinsal-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.daily-stag{padding:5px 10px;border-radius:10px;font-size:11px;font-weight:600;}
.stag-good{background:#FDF3E7;color:#C4956A;}
.stag-neutral{background:#F0F4FF;color:#5060B0;}
.stag-bad{background:#FDF0F0;color:#C05050;}
.badge-good2{background:#F0F7F2;color:#4A8A5C;}
.badge-caution2{background:#FDF0F0;color:#C05050;}
.badge-warn2{background:#FFF8E0;color:#A07830;}
.badge-best2{background:#FFF0E0;color:#C4956A;}
.zodiac-view{position:absolute;inset:0;background:var(--o01);z-index:10;flex-direction:column;}
.zodiac-view-header{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);flex-shrink:0;background:var(--o01);}
.zodiac-back-btn{background:none;border:none;font-size:14px;color:var(--o07);cursor:pointer;font-family:'Pretendard',sans-serif;padding:0;margin-right:12px;}
.zodiac-view-title{font-size:16px;font-weight:700;color:var(--ink);}
.zodiac-view-body{padding:16px;overflow-y:auto;flex:1;}
.zodiac-intro{font-size:13px;color:var(--soft);text-align:center;margin-bottom:12px;}

/* ── sajupulyi view 레이아웃 ── */
.sajupulyi-view{position:absolute;inset:0;background:var(--o01);z-index:10;display:none;flex-direction:column;}
.sajupulyi-view.show{display:flex;}
.sajupulyi-header{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);flex-shrink:0;background:var(--o01);}
.sajupulyi-back{background:none;border:none;font-size:14px;color:var(--o07);cursor:pointer;font-family:'Pretendard',sans-serif;padding:0;margin-right:12px;}
.sajupulyi-header-info{flex:1;}
.sajupulyi-header-title{font-size:17px;font-weight:700;color:var(--ink);}
.sajupulyi-header-sub{font-size:12px;color:var(--soft);margin-top:1px;}
.sajupulyi-body{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:0;padding-bottom:60px;}
.sajupulyi-body::-webkit-scrollbar{width:0;}

/* ── fi-sajupulyi 아이콘 배경 ── */
.fi-sajupulyi{background:#F0F4FF;}

/* ── 오행 바 ── */
.sp-ohaeng-wrap{padding-top:4px;}
.sp-ohaeng-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.sp-ohaeng-label{font-size:12px;color:var(--soft);width:28px;flex-shrink:0;}
.sp-ohaeng-bar-bg{flex:1;height:8px;background:var(--o02);border-radius:4px;overflow:hidden;}
.sp-ohaeng-bar{height:100%;border-radius:4px;transition:width 0.6s ease;}
.sp-ohaeng-count{font-size:12px;font-weight:600;color:var(--ink);width:14px;text-align:right;flex-shrink:0;}

/* ── 용신/기신 배지 ── */
.sp-yongsin-row{display:flex;flex-wrap:wrap;gap:6px;padding-top:8px;}
.sp-yongsin-badge{font-size:11px;font-weight:600;padding:4px 12px;border-radius:20px;}
.sp-yongsin-good{background:#EEF3E8;color:var(--o07);}
.sp-yongsin-bad{background:#FDF0F0;color:#C05050;}

/* ── 대운풀이 ── */
.dy-section-title{font-size:15px;font-weight:700;color:var(--ink);margin:24px 0 10px;padding-bottom:8px;border-bottom:1px solid var(--o02);}
.dy-current{color:#5B7FD4;border-bottom-color:#5B7FD4;}
.dy-next{color:#7DB87D;border-bottom-color:#7DB87D;}
.dy-para{font-size:14px;line-height:1.8;color:var(--ink);margin:0 0 12px;}
#dyStreamContent{padding:20px 20px 40px;}

/* ── 대운풀이 비주얼 ── */
.oh-block{padding:16px;background:var(--o02);border-bottom:1px solid var(--line);}
.oh-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.oh-row:last-child{margin-bottom:0;}
.oh-name{font-size:13px;color:var(--soft);width:28px;flex-shrink:0;}
.oh-bar-bg{flex:1;height:7px;background:var(--o03);border-radius:3px;overflow:hidden;}
.oh-bar{height:100%;border-radius:3px;background:var(--o05);}
.oh-count{font-size:13px;color:var(--soft);width:14px;text-align:right;}
.oh-badge-row{display:flex;gap:6px;margin-top:10px;}
.oh-badge{font-size:12px;font-weight:600;padding:4px 11px;border-radius:20px;}
.badge-weak{background:var(--gold-bg, #FDF3E7);color:#C4956A;}
.badge-strong{background:var(--o02);color:var(--o07);}
.badge-yongsin{background:var(--o02);color:var(--o07);border:1px solid var(--o04);}
.block-label{font-size:11px;font-weight:600;letter-spacing:1.5px;color:var(--soft);margin-bottom:10px;}
.tl-block{padding:14px 16px;border-bottom:1px solid var(--line);}
.tl-bars{display:flex;gap:3px;}
.tl-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;}
.tl-gz{font-size:12px;font-weight:700;color:var(--soft);}
.tl-gz.cur{color:var(--o07);}
.tl-gz.nxt{color:#C4956A;}
.tl-bar{height:5px;width:100%;border-radius:3px;background:var(--o03);}
.tl-bar.past{background:var(--o04);}
.tl-bar.cur{background:var(--o07);}
.tl-bar.nxt{background:#C4956A;}
.tl-age{font-size:11px;color:var(--soft);}
.tl-age.cur{color:var(--o07);font-weight:700;}
.tl-age.nxt{color:#C4956A;}
.graph-block{padding:16px 16px 0;}
.dy-legend{display:flex;gap:14px;margin-top:8px;padding-bottom:4px;}
.dy-legend-item{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--soft);}
.dy-legend-dot{width:8px;height:8px;border-radius:50%;}
.dy-section-title{font-size:14px;font-weight:700;color:var(--ink);margin:20px 0 8px;padding-bottom:8px;border-bottom:1px solid var(--o02);}
.dy-cur-title{color:var(--o07);border-bottom-color:var(--o04);}
.dy-next-title{color:#C4956A;border-bottom-color:#FDF3E7;}
.dy-para{font-size:14px;line-height:1.8;color:var(--ink);margin:0 0 10px;}
#dyStreamContent{padding:20px 16px 40px;}
#dyMetaBlock{padding:0;}

/* ── 현재 대운 카드 ── */
.cur-card{background:var(--o00);border-radius:14px;border:1px solid var(--line);overflow:hidden;margin:20px 0 0;}
.cur-card-hdr{background:var(--o07);padding:10px 14px;display:flex;align-items:center;justify-content:space-between;}
.cur-card-hl{font-size:10px;font-weight:600;letter-spacing:1.5px;color:rgba(255,255,255,0.65);}
.cur-card-gz{font-size:22px;font-weight:800;color:#fff;letter-spacing:2px;}
.cur-card-age{font-size:11px;color:rgba(255,255,255,0.65);}
.cur-card-body{padding:12px 14px;display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.cur-item{background:var(--o02);border-radius:10px;padding:10px 12px;}
.cur-item-lbl{font-size:11px;color:var(--soft);margin-bottom:4px;}
.cur-item-val{font-size:14px;font-weight:700;color:var(--ink);}

.cur-item-sub{font-size:12px;color:var(--soft);margin-top:2px;}

.cur-pills{padding:0 14px 12px;display:flex;flex-wrap:wrap;gap:5px;}
.pill{font-size:10px;font-weight:600;padding:3px 8px;border-radius:6px;}
.pill-he{background:var(--gold-bg,#FDF3E7);color:#C4956A;}
.pill-chung{background:#FDF0F0;color:#C05050;}
.pill-hyung{background:#F0EDF8;color:#7060B0;}
.pill-banhap{background:var(--o02);color:var(--o07);}
.dy-sub-title{font-size:13px;font-weight:700;color:var(--o07);margin:20px 0 8px;padding:6px 12px;background:var(--o02);border-radius:8px;border-left:3px solid var(--o07);}
.dy-yongsin-title{color:var(--o07);}
.dy-tip-title{color:var(--gold);background:var(--gold-bg);border-left-color:var(--gold);}
.theme-block{padding:14px 16px;border-bottom:1px solid var(--line);}
.theme-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;}
.theme-badge{font-size:12px;font-weight:600;padding:5px 13px;border-radius:20px;background:var(--o00);border:1px solid var(--line);color:var(--soft);}
.theme-badge.theme-main{background:var(--o07);color:#fff;border-color:var(--o07);}
.theme-desc{font-size:12px;color:var(--soft);line-height:1.6;}





/* 헤더 */



/* 바디 */
.lv-body::-webkit-scrollbar { width: 0; }

/* 히어로 */
.lv-hero {
  background: var(--o02);
  flex-shrink: 0;
  border-bottom: 1px solid var(--line);
  padding: 16px;
}

.lv-hero-label {
  font-size: 10px; font-weight: 600;
  letter-spacing: 2px; color: var(--soft);
  margin-bottom: 12px;
}

/* 일주 카드 */
.ilju-b {
  background: var(--o00);
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 16px;
}

.ilju-b-row { display: flex; gap: 12px; margin-bottom: 14px; }
.ilju-b-char-block { display: flex; gap: 8px; flex-shrink: 0; }
.ilju-b-char { display: flex; flex-direction: column; align-items: center; gap: 4px; }

.ilju-b-gz-wrap {
  width: 60px; height: 60px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
}
.ilju-b-gz-wrap.sky { background: var(--o02); border: 1px solid var(--line); }
.ilju-b-gz-wrap.earth { background: var(--gold-bg); border: 1px solid var(--gold-border); }

.ilju-b-gz { font-size: 28px; font-weight: 700; line-height: 1; }
.ilju-b-gz-wrap.sky .ilju-b-gz { color: var(--o08); }
.ilju-b-gz-wrap.earth .ilju-b-gz { color: var(--gold); }

.ilju-b-attr { font-size: 10px; color: var(--soft); text-align: center; line-height: 1.4; }

.ilju-b-info {
  flex: 1; display: flex;
  align-items: center; justify-content: center;
}

.ilju-b-yun-row { display: flex; align-items: center; gap: 12px; }

.ilju-b-yun-gz {
  font-size: 48px; font-weight: 800;
  color: var(--gold); font-family: Georgia, serif;
  line-height: 1; flex-shrink: 0;
}

.ilju-b-yun-desc { font-size: 14px; color: var(--soft); line-height: 1.6; }

.ilju-b-divider { height: 1px; background: var(--line); margin-bottom: 12px; }

.ilju-b-bottom {
  display: flex; flex-direction: column;
  align-items: center; gap: 9px;
}

.ilju-b-type {
  display: inline-flex; align-items: center; gap: 5px;
  background: var(--gold-bg); border: 1px solid var(--gold-border);
  border-radius: 20px; padding: 5px 14px;
  font-size: 12px; color: var(--gold); font-weight: 600;
}

.ilju-b-type-dot { width: 4px; height: 4px; background: var(--gold); border-radius: 50%; }

.ilju-b-keywords { display: flex; gap: 6px; justify-content: center; }

.kw-tag {
  background: #EEF3E8; border: 1px solid #D0DDB8;
  border-radius: 20px; padding: 4px 11px;
  font-size: 11px; color: var(--o08); font-weight: 500; white-space: nowrap;
}

/* 오행 게이지 */
.energy-c {
  flex-shrink: 0;
  margin: 10px 16px 0;
  background: var(--o00);
  border: 1px solid var(--line);
  border-radius: 16px;
  overflow: hidden;
}

.energy-c-head {
  padding: 14px 16px 12px;
  border-bottom: 1px solid var(--line);
}

.energy-title {
  font-size: 10px; font-weight: 600;
  letter-spacing: 2px; color: var(--soft);
}

.energy-c-body { padding: 12px 16px 14px; }

.energy-c-row {
  display: flex; align-items: center;
  gap: 10px; margin-bottom: 9px;
}
.energy-c-row:last-of-type { margin-bottom: 0; }

.energy-c-lbl { font-size: 12px; font-weight: 600; color: var(--ink); width: 28px; flex-shrink: 0; }

.energy-c-bar-wrap {
  flex: 1; height: 6px;
  background: var(--o02); border-radius: 3px; overflow: hidden;
}

.energy-c-bar { height: 100%; border-radius: 3px; }
.energy-c-bar.good { background: var(--o06); }
.energy-c-bar.bad { background: var(--gold); }
.energy-c-bar.neutral { background: var(--o04); }

.energy-c-val { font-size: 12px; font-weight: 700; color: var(--ink); width: 28px; text-align: right; flex-shrink: 0; }

.energy-c-tag {
  font-size: 10px; font-weight: 600;
  padding: 2px 8px; border-radius: 20px;
  width: 36px; text-align: center; flex-shrink: 0;
}
.energy-c-tag.good { background: var(--o02); color: var(--o07); }
.energy-c-tag.bad { background: var(--gold-bg); color: var(--gold); }
.energy-c-tag.neutral { background: var(--o03); color: var(--soft); }

.energy-c-desc {
  margin-top: 12px; padding-top: 12px;
  border-top: 1px solid var(--line);
  font-size: 12px; color: var(--soft); line-height: 1.6;
}
.energy-c-desc em { color: var(--ink); font-style: normal; font-weight: 600; }

/* 에너지 지도 */
  flex-shrink: 0;
.energy-a {
  margin: 10px 16px 0;
  background: var(--o00);
  border: 1px solid var(--line);
  border-radius: 16px;
  overflow: hidden;
}

.energy-a-head {
  padding: 14px 16px 12px;
  border-bottom: 1px solid var(--line);
}

.energy-a-diagram { display: flex; }

.energy-a-box { flex: 1; display: flex; flex-direction: column; }
.energy-a-box.good { background: var(--o02); }
.energy-a-box.bad { background: var(--gold-bg); }
.energy-a-sep { width: 1px; background: var(--line); flex-shrink: 0; }

.energy-a-img { width: 100%; aspect-ratio: 1/1; overflow: hidden; }
.energy-a-img img { width: 100%; height: 100%; object-fit: cover; object-position: center 30%; }

.energy-a-info { padding: 12px; text-align: center; border-top: 1px solid var(--line); }

.energy-a-elem { font-size: 15px; font-weight: 800; color: var(--ink); margin-bottom: 2px; }
.energy-a-box.bad .energy-a-elem { color: var(--gold); }

.energy-a-elem-sub { font-size: 10px; color: var(--soft); margin-bottom: 6px; letter-spacing: 0.5px; }
.energy-a-kw { font-size: 11px; color: var(--soft); line-height: 1.55; }

.energy-a-tags {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding: 12px 14px; border-top: 1px solid var(--line);
}

.energy-a-tag {
  font-size: 11px; font-weight: 600;
  padding: 4px 11px; border-radius: 20px;
}
.energy-a-tag.good { background: var(--o02); color: var(--o07); border: 1px solid var(--line); }
.energy-a-tag.bad { background: var(--gold-bg); color: var(--gold); border: 1px solid var(--gold-border); }

/* 풀이 섹션 */
.lv-sections { display: flex; flex-direction: column; margin-top: 10px; }

.lv-section { border-bottom: 1px solid var(--line); background: var(--o00); margin: 0 16px 10px; border-radius: 16px; overflow: hidden; }

.lv-section-head {
  padding: 14px 16px 12px;
  display: flex; align-items: center; gap: 8px;
  border-bottom: 1px solid var(--line);
}

.lv-section-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--gold); flex-shrink: 0; }
.lv-section-title { font-size: 15px; font-weight: 700; color: var(--ink); flex: 1; }
.lv-section-tag { font-size: 10px; color: var(--soft); letter-spacing: 0.5px; }

.lv-section-body {
  padding: 14px 16px;
  font-size: 14px; line-height: 1.9; color: var(--soft);
}

.lv-section-body p { font-size: 17px; line-height: 1.85; color: var(--ink); }
.lv-section-body p + p { margin-top: 12px; }
.lv-section-body em { color: var(--ink); font-style: normal; font-weight: 600; }

/* C섹션 */
.lv-type-list { display: flex; flex-direction: column; gap: 8px; margin-top: 4px; }

.lv-type-item {
  background: var(--o02); border: 1px solid var(--line);
  border-radius: 12px; padding: 12px 14px;
}

.lv-type-item-title {
  font-size: 14px; font-weight: 600; color: var(--ink);
  margin-bottom: 5px; display: flex; align-items: center; gap: 7px;
}

.lv-type-item-title::before {
  content: ''; width: 3px; height: 3px;
  background: var(--gold); border-radius: 50%; flex-shrink: 0;
}

.lv-type-item-text { font-size: 17px; color: var(--ink); line-height: 1.85; }

/* 구분선 */
.lv-divider-label {
  display: flex; align-items: center; gap: 12px;
  padding: 20px 16px 16px;
}

.lv-divider-line { flex: 1; height: 1px; background: var(--line); }
.lv-divider-text { font-size: 10px; letter-spacing: 2px; color: var(--soft); font-weight: 600; white-space: nowrap; }

/* E섹션 */
.lv-destiny { padding: 0 16px 16px; }

.lv-destiny-card {
  background: var(--o00); border: 1px solid var(--line);
  border-radius: 16px; overflow: hidden;
}

.lv-destiny-image {
  width: 100%; height: 200px;
  position: relative; overflow: hidden;
}

.lv-destiny-image img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center 40%;
}

.lv-destiny-chip {
  position: absolute; top: 12px; right: 12px;
  background: rgba(250,245,230,0.88);
  backdrop-filter: blur(8px);
  border: 1px solid var(--gold-border);
  border-radius: 20px; padding: 4px 11px;
  font-size: 11px; color: var(--gold); font-weight: 600;
}

.lv-destiny-body { padding: 16px; }
.lv-destiny-title { font-size: 15px; font-weight: 700; color: var(--ink); margin-bottom: 2px; }
.lv-destiny-sub { font-size: 11px; color: var(--soft); margin-bottom: 14px; }

.lv-destiny-text { font-size: 14px; color: var(--soft); line-height: 1.9; }
.lv-destiny-text p + p { margin-top: 10px; }

.lv-highlight {
  margin-top: 16px; padding: 16px;
  background: var(--gold-bg); border: 1px solid var(--gold-border);
  border-radius: 12px; font-size: 14px; color: var(--ink);
  line-height: 1.85; text-align: center;
}

.lv-highlight strong {
  display: block; font-size: 12px; font-weight: 600;
  color: var(--gold); letter-spacing: 0.5px; margin-bottom: 8px;
}

/* 수아 마무리 */
.lv-sua { margin: 0 16px 24px; }

.lv-sua-card {
  background: var(--o09); border-radius: 16px; padding: 20px;
  position: relative; overflow: hidden;
}

.lv-sua-card::before {
  content: ''; position: absolute;
  top: -30px; right: -30px; width: 100px; height: 100px;
  background: radial-gradient(circle, rgba(196,149,106,0.1) 0%, transparent 70%);
  border-radius: 50%;
}

.lv-sua-lbl {
  font-size: 10px; font-weight: 600;
  letter-spacing: 2px; color: var(--gold); margin-bottom: 10px;
  position: relative; z-index: 1;
}

.lv-sua-text {
  font-size: 17px; color: #E8EADF !important;
  line-height: 1.85; position: relative; z-index: 1;
}

.lv-sua-text p, .lv-sua-text p * {
  color: #E8EADF !important;
}

.lv-sua-sign { margin-top: 12px; font-size: 12px; color: var(--soft); position: relative; z-index: 1; }

/* ── 신년운세 ── */
.sn-hero { background: var(--o02); border-bottom: 1px solid var(--line); padding: 16px; flex-shrink: 0; }
.sn-hero-label { font-size: 14px; font-weight: 600; letter-spacing: 1px; color: var(--soft); margin-bottom: 12px; }
.saeyun-card { background: var(--o00); border: 1px solid var(--line); border-radius: 16px; overflow: hidden; }
.saeyun-img-wrap { width: 100%; aspect-ratio: 3/2; position: relative; overflow: hidden; }
.saeyun-img-wrap img { width: 100%; height: 100%; object-fit: cover; object-position: center 30%; display: block; }
.saeyun-img-overlay { position: absolute; inset: 0; background: linear-gradient(to bottom, transparent 50%, rgba(0,0,0,0.25) 100%); }
.saeyun-gz-vertical { position: absolute; bottom: 12px; right: 14px; writing-mode: vertical-rl; text-orientation: upright; font-size: 18px; font-weight: 700; color: #fff; letter-spacing: 4px; line-height: 1; text-shadow: 0 1px 6px rgba(0,0,0,0.6); font-family: Georgia, serif; }
.saeyun-year-top { font-size: 13px; font-weight: 600; color: var(--soft); letter-spacing: 2px; padding: 10px 14px 6px; }
.saeyun-year-bottom { font-size: 16px; font-weight: 600; color: var(--ink); padding: 8px 14px 4px; letter-spacing: 0.5px; }
.saeyun-bottom-info { padding: 12px 14px 4px; display: flex; align-items: center; gap: 10px; }
.saeyun-gz-row { display: flex; gap: 6px; }
.saeyun-gz-chip { display: flex; align-items: center; gap: 4px; background: var(--o02); border: 1px solid var(--line); border-radius: 8px; padding: 4px 11px; font-size: 14px; font-weight: 700; color: var(--o08); }
.saeyun-gz-chip.earth { background: var(--gold-bg); border-color: var(--gold-border); color: var(--gold); }
.saeyun-gz-chip-attr { font-size: 14px; font-weight: 500; color: var(--soft); }
.saeyun-keyword-row { display: flex; gap: 5px; flex-wrap: wrap; padding: 8px 14px 12px; }
.saeyun-kw { background: #EEF3E8; border: 1px solid #C8D8A8; border-radius: 20px; padding: 6px 14px; font-size: 14px; color: #5C6E30; font-weight: 600; }
.saeyun-bottom { padding: 0 14px 14px; border-top: 1px solid var(--line); padding-top: 12px; }
.saeyun-summary { font-size: 13px; color: var(--soft); line-height: 1.7; }
.saeyun-summary em { color: var(--ink); font-style: normal; font-weight: 600; }
.sn-gauge { margin: 10px 16px 0; background: var(--o00); border: 1px solid var(--line); border-radius: 16px; overflow: hidden; flex-shrink: 0; }
.sn-gauge-head { padding: 14px 16px 12px; border-bottom: 1px solid var(--line); }
.sn-gauge-title { font-size: 12px; font-weight: 600; letter-spacing: 2px; color: var(--soft); }
.sn-gauge-body { padding: 12px 16px 14px; }
.sn-gauge-row { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
.sn-gauge-row:last-of-type { margin-bottom: 0; }
.sn-gauge-lbl { font-size: 12px; font-weight: 600; color: var(--ink); width: 58px; flex-shrink: 0; }
.sn-gauge-bar-wrap { flex: 1; height: 6px; background: var(--o02); border-radius: 3px; overflow: hidden; }
.sn-gauge-bar { height: 100%; border-radius: 3px; }
.sn-gauge-bar.high { background: #7DB87D; }
.sn-gauge-bar.mid { background: #B8B89A; }
.sn-gauge-bar.low { background: #C4956A; }
.sn-gauge-tag { font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 20px; width: 36px; text-align: center; flex-shrink: 0; }
.sn-gauge-tag.high { background: #EEF3E8; color: #7DB87D; }
.sn-gauge-tag.mid { background: #F0F0E8; color: #9DA088; }
.sn-gauge-tag.low { background: #FDF3E7; color: #C4956A; }
.sn-sections { padding: 10px 16px 0; display: flex; flex-direction: column; gap: 10px; flex-shrink: 0; }
.sn-section { background: var(--o00); border: 1px solid var(--line); border-radius: 16px; overflow: hidden; flex-shrink: 0; }
.sn-section-head { display: flex; align-items: center; gap: 10px; padding: 14px 16px 12px; border-bottom: 1px solid var(--line); }
.sn-section-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--o05); flex-shrink: 0; }
.sn-section-title { font-size: 14px; font-weight: 700; color: var(--ink); flex: 1; }
.sn-section-tag { font-size: 10px; font-weight: 700; color: var(--soft); background: var(--o02); border-radius: 6px; padding: 2px 7px; letter-spacing: 0.5px; }
.sn-section-body { padding: 14px 16px; font-size: 16px; color: var(--soft); line-height: 1.8; display: flex; flex-direction: column; gap: 10px; }
.sn-section-body p { margin: 0 0 10px; }
.sn-section-body p:last-child { margin-bottom: 0; }
.sn-section-body em { color: var(--ink); font-style: normal; font-weight: 600; }
.job-sub-title { font-size: 12px; font-weight: 700; color: var(--o07); letter-spacing: 0.5px; margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px solid var(--line); }
.sn-monthly { margin: 10px 16px 0; background: var(--o00); border: 1px solid var(--line); border-radius: 16px; overflow: hidden; flex-shrink: 0; }
.sn-monthly-head { padding: 14px 16px 12px; border-bottom: 1px solid var(--line); display: flex; align-items: center; gap: 10px; }
.sn-monthly-title { font-size: 13px; font-weight: 600; letter-spacing: 1px; color: var(--soft); flex: 1; }
.sn-monthly-legend { display: flex; gap: 10px; }
.legend-item { display: flex; align-items: center; gap: 4px; font-size: 13px; color: var(--soft); }
.legend-dot { width: 6px; height: 6px; border-radius: 50%; }
.legend-dot.good { background: #7DB87D; }
.legend-dot.caution { background: var(--gold); }
.cal-grid-wrap { padding: 12px 14px 14px; border-bottom: 1px solid var(--line); }
.cal-grid { display: grid; grid-template-columns: repeat(6,1fr); gap: 5px; }
.cal-cell { border-radius: 8px; padding: 7px 4px; text-align: center; border: 1px solid var(--line); }
.cal-cell.good { background: #EEF3E8 !important; border-color: #D0DDB8 !important; }
.cal-cell.caution { background: #FDF3E7 !important; border-color: #EDE0D0 !important; }
.cal-cell.normal { background: var(--o01); }
.cal-m { font-size: 13px; font-weight: 700; color: var(--ink); display: block; line-height: 1; }
.cal-cell.good .cal-m { color: #565F36 !important; }
.cal-cell.caution .cal-m { color: #8B5E35 !important; }
.cal-gz { font-size: 11px; color: var(--soft); display: block; margin-top: 3px; letter-spacing: 0.5px; }
.month-list { padding: 4px 0; }
.month-row { display: flex; align-items: flex-start; padding: 12px 16px; gap: 12px; border-bottom: 1px solid var(--line); }
.month-row:last-child { border-bottom: none; }
.month-row.hl-good { background: #F5F8F0 !important; }
.month-row.hl-caution { background: #FEF9F4 !important; }
.month-num-wrap { flex-shrink: 0; width: 32px; }
.month-num { font-size: 13px; font-weight: 800; color: var(--ink); line-height: 1; }
.month-unit { font-size: 10px; color: var(--soft); }
.month-body { flex: 1; min-width: 0; }
.month-gz { font-size: 13px; font-weight: 600; color: var(--soft); margin-bottom: 4px; letter-spacing: 0.5px; }
.month-text { font-size: 15px; color: var(--soft); line-height: 1.75; }
.month-text em { color: var(--ink); font-style: normal; font-weight: 600; }
.month-text p { margin: 0; }
.month-badge { flex-shrink: 0; width: 26px; height: 26px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; margin-top: 2px; }
.month-badge.good { background: var(--good-bg); color: var(--good); }
.month-badge.caution { background: var(--gold-bg); color: var(--gold); }
.month-badge.normal { background: var(--o02); color: var(--soft); }
.sn-sua { margin: 10px 16px 24px; flex-shrink: 0; }
.sn-sua-card { background: var(--o09); border-radius: 16px; padding: 20px; position: relative; overflow: hidden; }
.sn-sua-card::before { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at 80% 20%, rgba(196,149,106,0.15) 0%, transparent 60%); }
.sn-sua-lbl { font-size: 15px; font-weight: 600; letter-spacing: 1px; color: var(--gold); margin-bottom: 10px; position: relative; z-index: 1; }
.sn-sua-text { font-size: 18px; color: var(--o02); line-height: 1.85; position: relative; z-index: 1; }
.sn-sua-text p { margin: 0 0 8px; }
.sn-sua-text p:last-child { margin: 0; }
.sn-sua-sign { margin-top: 12px; font-size: 12px; color: var(--soft); position: relative; z-index: 1; }
.gaeun-grid { padding: 0 16px 16px; display: flex; flex-direction: column; gap: 12px; }
.gaeun-item { background: var(--o02); border-radius: 12px; overflow: hidden; flex-shrink: 0; }
.gaeun-item-title { font-size: 14px; font-weight: 700; color: var(--ink); padding: 10px 14px 8px; border-bottom: 1px solid var(--line); background: var(--o00); }
.gaeun-item-body { padding: 12px 14px 14px; font-size: 15px; color: var(--soft); line-height: 1.75; display: flex; flex-direction: column; gap: 6px; }
.gaeun-item-body p { margin: 0; }
.gaeun-item-body em { color: var(--ink); font-style: normal; font-weight: 600; }

/* ── 신년운세 추가 CSS ── */
.sn-streaming-wrap { margin: 0; }
.saeyun-gz-chip-attr { font-size: 10px; font-weight: 400; color: var(--soft); margin-left: 3px; }
.sn-section-body strong { color: var(--soft); font-weight: 600; }
.sn-section-body em { color: var(--ink); font-style: normal; font-weight: 600; }
.job-sub-title { font-size: 16px; font-weight: 700; color: var(--o07); letter-spacing: 0.5px; margin: 14px 0 8px; padding-bottom: 6px; border-bottom: 1px solid var(--line); }
.job-sub-title:first-child { margin-top: 0; }
.luck-table-wrap { margin-top: 12px; }
.luck-table-wrap table { width: 100%; border-collapse: collapse; font-size: 13px; }
.luck-table-wrap td { padding: 7px 10px; border-bottom: 1px solid var(--line); color: var(--soft); }
.luck-table-wrap td:first-child { font-weight: 600; color: var(--ink); width: 90px; }

/* 스트리밍 실시간 텍스트 */
.sn-stream-area { margin: 10px 16px 0; background: var(--o00); border: 1px solid var(--line); border-radius: 16px; padding: 16px; font-size: 13px; color: var(--soft); line-height: 1.8; white-space: pre-wrap; flex-shrink: 0; }

/* 건강 태그 */
.health-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.health-tag { background: #EEF3E8; border: 1px solid #C8D8A8; color: #5C6E30; font-size: 14px; font-weight: 600; padding: 5px 12px; border-radius: 20px; }

/* 달력 뱃지 소형 */
.cal-badge-sm { display: block; font-size: 9px; margin-top: 1px; color: var(--soft); }
.cal-cell.good .cal-badge-sm { color: var(--good); }
.cal-cell.caution .cal-badge-sm { color: var(--gold); }

/* 월별 텍스트 p 간격 */
.month-text p { margin: 0 0 8px; }
.month-text p:last-child { margin-bottom: 0; }

/* 개운법 카드 본문 p 간격 */
.gaeun-item-body p { margin: 0 0 8px; }
.gaeun-item-body p:last-child { margin-bottom: 0; }

/* 수아의 말 p 간격 */
.sn-sua-text p { margin: 0 0 10px; }
.sn-sua-text p:last-child { margin-bottom: 0; }
.sn-section-body > .gaeun-grid { margin: -14px -16px 0; }



/* ══════════════════════════════
   /* 타로점 뷰 */.tarot-view-header{height:52px;flex-shrink:0;display:flex;align-items:center;justify-content:center;position:relative;border-bottom:1px solid var(--line);background:var(--o01);}.tarot-view-header .sajupulyi-back{position:absolute;left:14px;}.tarot-view-title-wrap{display:flex;flex-direction:column;align-items:center;gap:1px;}.tarot-view-title{font-size:14px;font-weight:700;color:var(--ink);}.tarot-view-sub{font-size:9px;color:var(--soft);letter-spacing:0.1em;}.tarot-scroll{flex:1;overflow-y:auto;padding:20px 18px 40px;display:flex;flex-direction:column;gap:20px;}.tarot-scroll::-webkit-scrollbar{width:0;}.sua-row{display:flex;gap:8px;align-items:flex-start;}.sua-av{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--o05),var(--o08));display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;margin-top:2px;}.sua-bubble{background:var(--o00);border-radius:4px 14px 14px 14px;padding:9px 13px;box-shadow:0 1px 4px rgba(70,80,50,0.07);font-size:13.5px;line-height:1.7;color:var(--ink);word-break:keep-all;}.sua-msgs{padding-left:36px;display:flex;flex-direction:column;gap:8px;margin-top:8px;margin-bottom:24px;}.tarot-question-wrap{display:flex;flex-direction:column;gap:20px;}.tarot-question-input{width:100%;background:var(--o00);border:1.5px solid var(--o06);border-radius:14px;padding:13px 15px;font-family:'Pretendard',-apple-system,sans-serif;font-size:14px;line-height:1.6;color:var(--ink);resize:none;outline:none;}.tarot-question-input::placeholder{color:var(--o04);}.tarot-question-error{font-size:12px;color:#A06060;line-height:1.5;}.tarot-submit-btn{width:100%;height:52px;background:var(--o09);border:none;border-radius:26px;color:var(--o02);font-family:'Pretendard',-apple-system,sans-serif;font-size:15px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;position:relative;overflow:hidden;}.tarot-submit-btn::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 70% 30%,rgba(196,149,106,0.2) 0%,transparent 60%);}.tarot-submit-btn:disabled{opacity:0.6;pointer-events:none;}.tarot-submit-btn:active{opacity:0.85;}.credit-badge{background:rgba(196,149,106,0.25);color:var(--gold);font-size:11px;font-weight:700;padding:3px 9px;border-radius:10px;position:relative;z-index:1;}.btn-lbl{position:relative;z-index:1;}.tarot-sig-header{display:flex;flex-direction:column;gap:6px;padding-bottom:4px;}.tarot-sig-title{font-size:18px;font-weight:800;color:var(--ink);letter-spacing:-0.3px;}.tarot-sig-sub{font-size:13px;color:var(--soft);line-height:1.6;word-break:keep-all;}.tarot-sig-pool{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;max-width:280px;margin:12px auto 0;}.tarot-sig-pool .tc-wrap:nth-child(5){grid-column:1/-1;justify-self:center;}.tc-wrap{width:108px;height:170px;perspective:700px;cursor:pointer;transition:transform .25s cubic-bezier(.2,0,.2,1);}.tc-wrap.selected{transform:translateY(-6px);}.tc-inner{width:100%;height:100%;position:relative;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.4,0,.2,1);border-radius:10px;}.tc-inner.flipped{transform:rotateY(180deg);}.tc-face{position:absolute;inset:0;border-radius:10px;backface-visibility:hidden;-webkit-backface-visibility:hidden;}.tc-back{background:var(--o09);display:flex;align-items:center;justify-content:center;box-shadow:0 3px 12px rgba(46,49,32,.18);overflow:hidden;}.tc-back::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 60% 25%,rgba(196,149,106,.18) 0%,transparent 65%);}.tc-back-border{position:absolute;inset:8px;border:1px solid rgba(196,149,106,.2);border-radius:6px;}.tc-back-sym{font-size:22px;color:rgba(196,149,106,.45);position:relative;z-index:1;}.tc-front{background:var(--o02);transform:rotateY(180deg);overflow:hidden;box-shadow:0 3px 12px rgba(46,49,32,.18);border:1px solid var(--gold-border);}.tc-img{width:100%;height:100%;object-fit:cover;}.tc-wrap.selected .tc-back{box-shadow:0 0 0 2px var(--gold),0 6px 20px rgba(196,149,106,.28);}.confirm-btn{width:100%;height:48px;border:none;border-radius:24px;font-family:'Pretendard',sans-serif;font-size:14px;font-weight:700;background:var(--o04);color:var(--o01);cursor:default;transition:background .25s,color .25s;position:relative;overflow:hidden;margin-top:16px;}.confirm-btn::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 70% 30%,rgba(196,149,106,.2) 0%,transparent 60%);opacity:0;transition:opacity .25s;}.confirm-btn.active{background:var(--o09);color:var(--o02);cursor:pointer;}.confirm-btn.active::before{opacity:1;}.confirm-btn.active:active{opacity:.85;}#tarotReadingContent{display:flex;flex-direction:column;gap:28px;}.tr-section{display:flex;flex-direction:column;gap:12px;opacity:0;transform:translateY(10px);transition:opacity .4s ease,transform .4s ease;}.tr-section.visible{opacity:1;transform:translateY(0);}.tr-sec-label{font-size:15px;font-weight:700;color:var(--soft);letter-spacing:.05em;margin-bottom:8px;}.tr-card-stack{display:flex;align-items:flex-start;position:relative;}.tr-stack-card{width:160px;height:241px;border-radius:12px;position:absolute;overflow:hidden;box-shadow:-3px 0 10px rgba(46,49,32,.12);opacity:1;transition:filter .35s ease;}.tr-stack-card.revealed{opacity:1;}.tr-stack-card.st-front{background:var(--o02);border:1px solid var(--gold-border);}.tr-stack-card.st-sig{background:var(--o09);border:2px solid var(--gold);box-shadow:0 0 0 2px var(--gold),0 6px 20px rgba(196,149,106,.2);}.tr-stack-img{width:100%;height:100%;object-fit:cover;}.tr-stack-img.reversed{transform:rotate(180deg);}.tr-stack-name{font-size:11px;font-weight:700;color:var(--o07);text-align:center;padding:0 10px;line-height:1.4;position:absolute;bottom:10px;left:0;right:0;}.tr-stack-dir{font-size:9px;color:var(--gold);position:absolute;bottom:0;left:0;right:0;text-align:center;}.tr-stack-card.st-sig .tr-stack-name{color:var(--gold);}.tr-text p{font-size:13.5px;line-height:1.85;color:var(--ink);word-break:keep-all;margin-bottom:10px;}.tr-text p:last-child{margin-bottom:0;}.tr-text strong{font-weight:700;color:var(--o08);}.tr-stack-card.dimmed{filter:brightness(.85);opacity:1!important;}#tarotView{bottom:0;}.tr-stack-name{display:none;}.tr-stack-dir{display:none;}.tr-sec-label{font-size:15px!important;font-weight:700;letter-spacing:.03em;}
.tr-card-row{display:flex;gap:8px;margin-bottom:8px;}
.tr-card-row-single{display:flex;justify-content:center;margin-bottom:8px;}
.tr-card-item{width:218px;height:328px;border-radius:12px;overflow:hidden;box-shadow:0 3px 12px rgba(46,49,32,.15);flex-shrink:0;}
.tr-card-item img{width:100%;height:100%;object-fit:cover;display:block;}
.tr-card-item img.reversed{transform:rotate(180deg);}
.tr-card-item{width:218px;height:auto!important;}.tr-card-item img{width:100%;height:auto;object-fit:unset;}@media(max-width:480px){.tr-card-item{width:calc(46vw - 4px);height:calc((46vw - 4px)*1.505)}.tr-card-row{gap:4px}}