@font-face {
  font-family: 'Morinus3';
  src: url('Morinus3.woff2') format('woff2'),
       url('Morinus3.woff') format('woff'),
       url('Morinus3.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
:root {
  --bg-color: #ecedf1;
  --text-color: #333;
  --line-color: #111;
  --chart-bg: #ecedf1;
  --chart-border: #000;
  --zodiac-ring: #000;
  --tick-color: #666;
  --house-line: rgba(0,0,0,0.23);
  --house-ring-border: rgba(0,0,0,0.12);
  --center-circle-bg: #fff;
  --center-circle-border: #555;
  --aspect-line-opacity: 0.38;
}
/* 모리누스 테마 */
body.theme-morinus {
  --bg-color: #bfbfbf;
  --text-color: #000;
  --line-color: #0000ff;
  --chart-bg: #bfbfbf;
  --chart-border: #0000ff;
  --zodiac-ring: #0000ff;
  --tick-color: #0000ff;
  --house-line: #0000ff;
  --house-ring-border: #0000ff;
  --center-circle-bg: #bfbfbf;
  --center-circle-border: #0000ff;
  --aspect-line-opacity: 0.6;
}
/* 모노 테마 */
body.theme-mono {
  --bg-color: #ffffff;
  --text-color: #000;
  --line-color: #000;
  --chart-bg: #ffffff;
  --chart-border: #000;
  --zodiac-ring: #000;
  --tick-color: #000;
  --house-line: #000;
  --house-ring-border: #000;
  --center-circle-bg: #ffffff;
  --center-circle-border: #000;
  --aspect-line-opacity: 0.5;
}
/* 커스텀 테마 색상 피커 UI */
.ct-color-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:#555;}
.ct-color-row input[type=color]{width:36px;height:28px;border:1px solid #ccc;border-radius:4px;padding:1px;cursor:pointer;background:#fff;}
.ct-sign-item{display:flex;align-items:center;gap:6px;font-size:11px;padding:4px 6px;border-radius:6px;background:#f8f8fc;}
.ct-sign-item span{flex:1;font-weight:600;color:#444;}
.ct-sign-item input[type=color]{width:30px;height:24px;border:1px solid #ccc;border-radius:4px;padding:1px;cursor:pointer;}
.ct-planet-item{display:flex;align-items:center;gap:6px;font-size:11px;padding:4px 6px;border-radius:6px;background:#f8f8fc;}
.ct-planet-item .ct-pl-glyph{font-family:'Morinus3',sans-serif;font-size:14px;font-weight:400;width:18px;text-align:center;}
.ct-planet-item span{flex:1;font-weight:600;color:#444;}
.ct-planet-item input[type=color]{width:30px;height:24px;border:1px solid #ccc;border-radius:4px;padding:1px;cursor:pointer;}
/* 커스텀 테마 */
body.theme-custom .ia{background:var(--custom-inner, #f7f7f7) !important;}
body.theme-custom .cc{background:var(--custom-center, #fff) !important;}
body.theme-custom .tick-ring{background:var(--custom-tick, #fff);}
/* 체리 블로썸 테마 */
body.theme-cherry .cc{background:#fff0f3 !important;}
body.theme-cherry .tick-ring{background:#fff0f3;}
body.theme-cherry .chart-area{background:linear-gradient(180deg,#d4eaf7 0%,#e8f4fc 30%,#fce4ec 70%,#fdeef2 100%) !important;}
body.theme-cherry .ia{background:rgba(255,245,248,0.6) !important;}
body.theme-cherry .chart-half-topbar{background:rgba(212,234,247,.85) !important;}

/* 체리 블로썸: 구름 */
body.theme-cherry .chart-area::before{
  content:'';position:absolute;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(ellipse 220px 60px at 12% 18%, rgba(255,255,255,0.7) 0%, transparent 100%),
    radial-gradient(ellipse 300px 50px at 65% 12%, rgba(255,255,255,0.55) 0%, transparent 100%),
    radial-gradient(ellipse 180px 45px at 85% 25%, rgba(255,255,255,0.6) 0%, transparent 100%),
    radial-gradient(ellipse 250px 55px at 35% 8%, rgba(255,255,255,0.5) 0%, transparent 100%);
}

/* 모리누스/모노 공유 규칙 */
body:is(.theme-morinus,.theme-mono) .app {background: var(--bg-color);}
body:is(.theme-morinus,.theme-mono) .chart-area {background: var(--chart-bg);}
body:is(.theme-morinus,.theme-mono) .zr-border {background: transparent; border: 1px solid var(--chart-border);}
body:is(.theme-morinus,.theme-mono) .tick-ring {border-color: var(--chart-border); background: var(--center-circle-bg);}
body:is(.theme-morinus,.theme-mono) .tick {background: var(--tick-color);}
body:is(.theme-morinus,.theme-mono) .tick.t10 {width:1px;}
body:is(.theme-morinus,.theme-mono) .tick.t30 {display:none;}
body:is(.theme-morinus,.theme-mono) .ia {overflow: visible !important;}
body:is(.theme-morinus,.theme-mono) .hl {background: var(--house-line); width:1px; left:calc(50% - .5px);}
body:is(.theme-morinus,.theme-mono) .hl.ax-asc, body:is(.theme-morinus,.theme-mono) .hl.ax-mc {background: #000 !important; width:3px !important; left:calc(50% - 1.5px) !important;}
body:is(.theme-morinus,.theme-mono) .axis-full .ax-line {background: #000 !important; width:3px !important; left:calc(50% - 1.5px) !important;}
body:is(.theme-morinus,.theme-mono) .ax-arrow {border-color: transparent var(--line-color) transparent transparent;}
body:is(.theme-morinus,.theme-mono) .ax-arrow.up {border-color: transparent transparent var(--line-color) transparent;}
body:is(.theme-morinus,.theme-mono) .cc {background: var(--center-circle-bg); border-color: #000; color: var(--text-color);}
body:is(.theme-morinus,.theme-mono) .cc .cd, body:is(.theme-morinus,.theme-mono) .cc .ct, body:is(.theme-morinus,.theme-mono) .cc .cl, body:is(.theme-morinus,.theme-mono) .cc .ch {color: var(--text-color);}
body:is(.theme-morinus,.theme-mono) .al {color: var(--text-color) !important;}
body:is(.theme-morinus,.theme-mono) .sn {color: var(--text-color) !important;}
body:is(.theme-morinus,.theme-mono) .hn {color: var(--text-color) !important;}
body:is(.theme-morinus,.theme-mono) .ia {background: var(--chart-bg); border: 1px solid var(--chart-border); overflow: visible !important;}
body:is(.theme-morinus,.theme-mono) .h-ring {background: transparent !important; -webkit-mask:none !important; mask:none !important;}
body:is(.theme-morinus,.theme-mono) .h-ring-border {border-color: var(--chart-border); border-width:1px;}
body:is(.theme-morinus,.theme-mono) .zr {background: none !important;}
body:is(.theme-morinus,.theme-mono) .zr::after {
  content:""; position:absolute; inset:0; border-radius:50%; border:1px solid var(--chart-border);
}
body:is(.theme-morinus,.theme-mono) .zr-polarity {display: none;}
body:is(.theme-morinus,.theme-mono) .sl {
  background: linear-gradient(to bottom,
    transparent 0, transparent calc(50% - 290px),
    var(--chart-border) calc(50% - 290px), var(--chart-border) calc(50% - 230px),
    transparent calc(50% - 230px), transparent calc(50% + 230px),
    var(--chart-border) calc(50% + 230px), var(--chart-border) calc(50% + 290px),
    transparent calc(50% + 290px)
  ) !important;
  width:1px !important;
}
/* 트랜짓 링 */
body:is(.theme-morinus,.theme-mono) .tr-ring {background: none !important;}
body:is(.theme-morinus,.theme-mono) .tr-ring::after {content:"";position:absolute;inset:0;border-radius:50%;border:1px solid var(--chart-border);}
body:is(.theme-morinus,.theme-mono) .tr-planet-bg {background: var(--chart-bg) !important;}
body:is(.theme-morinus,.theme-mono) .tr-tick-ring {background: var(--chart-bg) !important;border-color: var(--chart-border) !important;}
body:is(.theme-morinus,.theme-mono) .tr-border {border-color: var(--chart-border) !important;}
body:is(.theme-morinus,.theme-mono) .tr-inner {border-color: var(--chart-border) !important;}
body:is(.theme-morinus,.theme-mono) .tr-tick {background: var(--tick-color) !important;}
body:is(.theme-morinus,.theme-mono) .tr-tick.t30 {display:none !important;}
body:is(.theme-morinus,.theme-mono) .tr-sn {color: var(--text-color) !important;}
body:is(.theme-morinus,.theme-mono) .tr-zr-inner-border {border-color: var(--chart-border) !important;}
body:is(.theme-morinus,.theme-mono) .tr-polarity {display: none !important;}
/* 하우스 링 라인 */
.morinus-house-lines {display: none;}
body:is(.theme-morinus,.theme-mono) .morinus-house-lines {display: block;}
body:is(.theme-morinus,.theme-mono) .morinus-house-lines .mhl {display: none;}
/* 모노 테마: 행성·라인 모두 검은색 */
body.theme-mono .pk {color: #000 !important;}
body.theme-mono .pd, body.theme-mono .pd-deg, body.theme-mono .pd-min {color: #000 !important;}
body.theme-mono .ps {color: #000 !important;}
body.theme-mono .pr {color: #000 !important;}
body.theme-mono .dt {background: #000 !important;}
body.theme-mono .pl {background: #000 !important;}
body.theme-mono .al {color: #000 !important;}
body.theme-mono .p-sym, body.theme-mono .p-name {color: #000 !important;}
body.theme-mono .syn-asp-conj, body.theme-mono .syn-asp-sext,
body.theme-mono .syn-asp-sqr, body.theme-mono .syn-asp-tri,
body.theme-mono .syn-asp-opp {color: #000 !important;}

*{margin:0;padding:0;box-sizing:border-box;}
html,body{width:100%;max-width:100vw;overflow:hidden;}
body{font-family:-apple-system,'Pretendard','Malgun Gothic',sans-serif;background:var(--col-bg);color:var(--col-text);height:100vh;}

/* ===== 앱 레이아웃 ===== */
.app{display:flex;flex-direction:column;height:100vh;width:100%;overflow:hidden;}

/* 네비게이션 바 */
.navbar{background:#2a2a2a;padding:4px 14px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.navbar .nb-title{font-size:14px;font-weight:700;color:#fff;letter-spacing:.5px;}
.navbar .nb-title span{font-size:10px;font-weight:400;color:#999;margin-left:3px;vertical-align:middle;}
.navbar .nb-fs{background:none;border:none;color:#888;font-size:14px;cursor:pointer;padding:4px 8px;border-radius:4px;display:flex;align-items:center;gap:3px;}
.navbar .nb-fs:hover{color:#fff;background:rgba(255,255,255,.1);}
.navbar .nb-fs.active{color:#fff;background:rgba(88,101,242,.28);}
.navbar .nb-mini{font-size:11px;color:#aaa;gap:3px;}
.fortune-dropdown-wrap{position:relative;}
.fortune-trigger{gap:6px;padding-right:10px;}
.fortune-trigger .fortune-caret{font-size:10px;color:#b9bfcc;transition:transform .15s ease;}
.fortune-dropdown.open+.fortune-trigger .fortune-caret{transform:rotate(180deg);}
.fortune-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.18);min-width:190px;z-index:500;padding:6px;animation:udSlide .15s ease;}
.fortune-dropdown.open{display:block;}
.fortune-item{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:9px 10px;border:none;background:none;border-radius:8px;font-size:13px;color:#555;cursor:pointer;text-align:left;}
.fortune-item:hover{background:#f5f5ff;color:#333;}
.fortune-item.active{background:#eef2ff;color:#3347d3;}
.fortune-item-main{display:flex;align-items:center;gap:8px;}
.fortune-item-main i{width:14px;text-align:center;font-size:12px;color:inherit;}
.fortune-check{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#5865F2;color:#fff;font-size:10px;opacity:0;transform:scale(.8);transition:opacity .15s ease,transform .15s ease;}
.fortune-item.active .fortune-check{opacity:1;transform:scale(1);}
.navbar .nb-user-btn,.navbar .nb-login-btn{position:relative;gap:5px;}
.navbar{position:relative;overflow:visible;}
.nb-avatar{width:22px;height:22px;border-radius:50%;object-fit:cover;border:1.5px solid rgba(255,255,255,.3);}
.nb-uname{font-size:11px;color:#ccc;}
.nb-login-btn:hover .nb-uname{color:#fff;}
.user-dropdown{display:none;position:absolute;top:100%;right:0;margin-top:4px;background:#fff;border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.18);min-width:220px;z-index:500;padding:6px 0;animation:udSlide .15s ease;}
.user-dropdown.open{display:block;}
@keyframes udSlide{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:translateY(0);}}
.ud-header{display:flex;align-items:center;gap:10px;padding:14px 16px;}
.ud-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;border:2px solid #e0e0e0;}
.ud-avatar-placeholder{width:36px;height:36px;border-radius:50%;background:#e8eaf0;display:flex;align-items:center;justify-content:center;color:#999;font-size:16px;}
.ud-name{font-size:13px;font-weight:700;color:#333;}
.ud-email{font-size:11px;color:#999;margin-top:1px;}
.ud-divider{height:1px;background:#eee;margin:2px 0;}
.ud-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 16px;border:none;background:none;font-size:13px;color:#555;cursor:pointer;text-align:left;}
.ud-item:hover{background:#f5f5ff;color:#333;}
.ud-item i{width:16px;text-align:center;font-size:13px;color:#888;}
.naver-login-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:14px 20px;background:#03C75A;border:none;border-radius:10px;color:#fff;font-size:15px;font-weight:700;cursor:pointer;transition:background .15s;}
.naver-login-btn:hover{background:#02b351;}
.google-login-btn{display:none;align-items:center;justify-content:center;gap:10px;width:100%;padding:14px 20px;background:#fff;border:1px solid #dadce0;border-radius:10px;color:#3c4043;font-size:15px;font-weight:600;cursor:pointer;transition:all .15s;}
.google-login-btn:hover{background:#f7f8f8;border-color:#c6c8ca;}
.wiz-login-bubble{background:#f0f1ff;border:1px solid #d8dafe;border-radius:8px;padding:8px 12px;font-size:11px;font-weight:600;color:#5865F2;text-align:center;position:relative;animation:bubbleBounce 2s ease-in-out infinite;}
.wiz-login-bubble::after{content:'';position:absolute;bottom:-8px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #f0f1ff;}
.wiz-login-bubble::before{content:'';position:absolute;bottom:-10px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:9px solid transparent;border-right:9px solid transparent;border-top:9px solid #d8dafe;}
@keyframes bubbleBounce{0%,100%{transform:translateY(0);}50%{transform:translateY(-4px);}}
.cl-tabs{display:flex;gap:0;margin-bottom:14px;border-bottom:2px solid #eee;}
.cl-tab{flex:1;padding:10px 0;border:none;background:none;font-size:13px;font-weight:600;color:#999;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;}
.cl-tab:hover{color:#666;}
.cl-tab.active{color:#5865F2;border-bottom-color:#5865F2;}
.cl-tab i{font-size:12px;}
.cl-login-msg{text-align:center;padding:30px 20px;color:#999;font-size:13px;line-height:1.8;}
.cl-login-msg i{font-size:24px;color:#ccc;display:block;margin-bottom:8px;}
.cl-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
.cl-search-wrap{flex:1;position:relative;}
.cl-search-wrap i{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:11px;color:#bbb;}
.cl-search-wrap input{width:100%;padding:7px 10px 7px 28px;border:1px solid #e0e0e0;border-radius:7px;font-size:12px;outline:none;background:#f9f9fb;transition:border-color .15s;}
.cl-search-wrap input:focus{border-color:#5865F2;background:#fff;}
.cl-filter-select{height:30px;padding:0 28px 0 10px;border:1px solid #e0e0e0;border-radius:7px;background:#fff;color:#666;font-size:12px;outline:none;cursor:pointer;flex-shrink:0;}
.cl-filter-select:focus{border-color:#5865F2;}
.cl-sort-wrap{display:flex;gap:2px;}
.cl-sort-btn{width:30px;height:30px;border:1px solid #e0e0e0;border-radius:6px;background:#fff;color:#999;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;}
.cl-sort-btn:hover{border-color:#bbb;color:#666;}
.cl-sort-btn.active{border-color:#5865F2;background:#f0f1ff;color:#5865F2;}
.cl-mode-toggle{display:flex;gap:0;border:1px solid #ddd;border-radius:7px;overflow:hidden;flex-shrink:0;height:30px;}
.cl-mode-btn{padding:0 12px;border:none;background:#fff;color:#999;font-size:11px;font-weight:700;cursor:pointer;transition:all .12s;line-height:30px;}
.cl-mode-btn:not(:last-child){border-right:1px solid #ddd;}
.cl-mode-btn:hover{color:#666;background:#f8f8fa;}
.cl-mode-btn.active{background:#5865F2;color:#fff;}
.cl-chosung-bar{display:flex;flex-wrap:wrap;gap:4px;padding:4px 10px 8px;}
.cl-cho-btn{padding:4px 0;width:26px;text-align:center;border:1px solid #e0e0e0;border-radius:5px;background:#fff;color:#555;font-size:11px;font-weight:600;cursor:pointer;transition:all .12s;}
.cl-cho-btn:hover{border-color:#999;background:#f0f0f0;}
.cl-cho-btn.active{border-color:#5865F2;background:#5865F2;color:#fff;}
.cl-cho-btn.cl-cho-etc{width:auto;padding:4px 8px;}
.mz-toast{position:fixed;top:50px;left:50%;transform:translateX(-50%) translateY(-20px);background:#333;color:#fff;padding:10px 22px;border-radius:8px;font-size:13px;font-weight:600;z-index:9999;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;box-shadow:0 4px 16px rgba(0,0,0,.2);display:flex;align-items:center;gap:8px;}
.mz-toast.show{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto;}
.mz-toast.success{background:#22aa44;}
.mz-toast.error{background:#e04040;}
.mz-toast.dst{background:#fdd835;color:#5d4200;}

/* 아이콘 툴바 */
.toolbar{background:#fff;border-bottom:1px solid #e0e0e0;padding:3px 10px;display:flex;align-items:center;gap:1px;flex-shrink:0;overflow-x:auto;}
.toolbar .tb-item{display:flex;flex-direction:column;align-items:center;padding:5px 6px;border-radius:6px;cursor:pointer;min-width:46px;border:none;background:none;color:#555;font-size:10px;gap:3px;transition:background .15s;}
.toolbar .tb-item:hover{background:#f0f0f5;color:#333;}
.toolbar .tb-item.active{background:#eef;color:#5865F2;}
.toolbar .tb-item i{font-size:17px;}
.toolbar .tb-sep{width:1px;height:28px;background:#e0e0e0;margin:0 3px;flex-shrink:0;}
.tb-more-wrap{position:relative;}
.tb-more-dropdown{display:none;position:fixed;background:#fff;border:1px solid #d0d0d0;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.15);z-index:9999;padding:4px;min-width:120px;}
.tb-more-dropdown.open{display:flex;flex-direction:column;gap:2px;}
.tb-more-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border:none;background:none;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500;color:#555;white-space:nowrap;transition:background .12s;}
.tb-more-item:hover{background:#f0f0f5;color:#333;}
.tb-more-item.active{background:#eef;color:#5865F2;}
.tb-more-item i{font-size:14px;width:18px;text-align:center;flex-shrink:0;}

/* SR 연도 입력 스피너 숨김 (고정폭) */
#srYearInput::-webkit-outer-spin-button,
#srYearInput::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
#srYearInput{-moz-appearance:textfield;}

/* Morinus3 기호 모드 스타일 */
body.glyph-mode .pk.glyph-text{font-family:'Morinus3',sans-serif !important;font-size:24px !important;font-weight:400 !important;}
body.glyph-mode .sn.glyph-text{font-family:'Morinus3',sans-serif !important;font-size:28px !important;font-weight:400 !important;}
body.glyph-mode .p-sym.glyph-text{font-family:'Morinus3',sans-serif !important;font-size:18px !important;font-weight:400 !important;}

/* 상단바 */
.topbar{background:#fff;border-bottom:1px solid #d0d0d0;padding:6px 14px;display:flex;align-items:center;gap:10px;flex-shrink:0;flex-wrap:wrap;}
.topbar label{font-size:12px;color:#666;margin-right:2px;}
.topbar input,.topbar select{padding:4px 8px;border:1px solid #c0c0c0;border-radius:4px;font-size:13px;background:#fff;color:#333;outline:none;}
.topbar input:focus,.topbar select:focus{border-color:#6366f1;}
.topbar input[type="date"]{width:160px;}
.topbar input[type="time"]{width:120px;}
.topbar input[type="text"]{width:100px;}
.topbar select{width:160px;}
.topbar .sep{width:1px;height:24px;background:#ddd;margin:0 4px;}
.topbar .tbtn{padding:5px 14px;background:#5865F2;color:#fff;border:none;border-radius:5px;font-size:13px;font-weight:600;cursor:pointer;}
.topbar .tbtn:hover{background:#4752c4;}
.cal-btn{display:inline-block;padding:3px 8px;border:1px solid #c0c0c0;border-radius:4px;font-size:12px;color:#888;cursor:pointer;user-select:none;}
.cal-btn:hover{background:#f0f0f5;}
.cal-btn.cal-active{background:#5865F2;color:#fff;border-color:#5865F2;}
.loc-item{padding:8px 10px;cursor:pointer;border-bottom:1px solid #f0f0f0;color:#333;}
.loc-item:hover{background:#f5f5ff;}
.loc-item small{color:#999;}

/* 메인 영역 */
.main{display:flex;flex:1;overflow:hidden;transition:opacity .15s ease;position:relative;}
.edu-mode #fortuneDropdownWrap{display:none !important;}
.edu-mode .rsidebar,.edu-mode #rsbBackdrop{display:none !important;}

/* 사이드바 */
.sidebar{width:310px;background:#fff;border-right:1px solid #d0d0d0;display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;transition:width .2s,margin .2s;position:relative;}
.sidebar.collapsed{width:0;border-right:none;overflow:hidden;}
.sb-toggle{position:absolute;left:310px;top:50%;transform:translateY(-50%);z-index:20;width:22px;height:48px;background:#fff;border:1px solid #d0d0d0;border-left:none;border-radius:0 6px 6px 0;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:11px;color:#888;transition:left .2s;}
.sb-toggle:hover{background:#f0f0f5;color:#333;}
.sb-header{padding:14px 16px 10px;border-bottom:1px solid #e8e8e8;}
.sb-header h2{font-size:15px;color:#333;margin-bottom:4px;}
.sb-header .sub{font-size:12px;color:#888;}
.sb-header .tags{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap;}
.sb-header .tag{font-size:11px;background:#eef;color:#5865F2;padding:2px 8px;border-radius:10px;}
.sb-header .tag-dst{background:#fff3cd;color:#856404;}
.sb-header-top{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.sb-header-actions{display:flex;align-items:center;gap:2px;flex-shrink:0;}
.sb-icon-btn{background:none;border:none;color:#ccc;font-size:14px;cursor:pointer;padding:4px 6px;border-radius:4px;transition:color .15s,background .15s;}
.sb-icon-btn:hover{color:#5865F2;background:#eef0ff;}
.sb-icon-btn.close-btn:hover{color:#666;background:#f0f0f0;}
.sb-icon-btn.active{color:#5865F2;background:#eef0ff;}
.sb-section{padding:12px 16px;border-bottom:1px solid #f0f0f0;}
.sb-section h3{font-size:12px;color:#999;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;}
.sb-memo-section{display:none;}
.sb-memo-section.open{display:block;}
.sb-memo-textarea{width:100%;min-height:120px;resize:vertical;border:1px solid #d8dbe8;border-radius:8px;padding:10px 12px;font:inherit;font-size:13px;line-height:1.6;color:#333;background:#fff;outline:none;}
.sb-memo-textarea:focus{border-color:#5865F2;box-shadow:0 0 0 2px rgba(88,101,242,.12);}
.sb-memo-actions{display:flex;justify-content:flex-end;margin-top:10px;}
.sb-memo-save{padding:8px 14px;border:none;border-radius:8px;background:#5865F2;color:#fff;font-size:12px;font-weight:700;cursor:pointer;}
.sb-memo-save:hover{background:#4752c4;}
.sb-memo-save:disabled{opacity:.6;cursor:default;}
.sb-planets{flex:1;overflow-y:auto;padding:0;}
.sb-planet-wrap{border-bottom:1px solid #f5f5f5;}
.sb-planet{display:flex;align-items:center;padding:7px 16px;font-size:13px;gap:8px;cursor:pointer;transition:background .15s;}
.sb-planet:hover{background:#f8f8fc;}
.sb-planet .p-sym{font-size:15px;width:22px;text-align:center;flex-shrink:0;}
.sb-planet .p-name{font-weight:600;width:58px;flex-shrink:0;}
.sb-planet .p-house{font-size:9px;font-weight:600;color:#888;flex-shrink:0;margin-left:-4px;}
.sb-planet .p-info{color:#666;flex:1;}
.sb-planet .p-retro{color:#e04040;font-size:11px;font-weight:700;}
.sb-planet .p-badges{display:flex;flex-direction:column;gap:2px;align-items:flex-end;flex-shrink:0;margin-left:auto;}
.sb-planet .p-dg{font-size:10px;padding:1px 5px;border-radius:3px;font-weight:600;white-space:nowrap;flex-shrink:0;}
.sb-planet .p-chevron{font-size:9px;color:#bbb;flex-shrink:0;transition:transform .2s;margin-left:2px;}
.sb-planet-wrap.open .p-chevron{transform:rotate(180deg);color:#666;}
.sb-planet-drop{background:#f9f9fd;padding:6px 16px 8px 46px;font-size:12px;border-top:1px solid #f0f0f0;animation:dropSlide .15s ease;}
@keyframes dropSlide{from{opacity:0;max-height:0}to{opacity:1;max-height:200px}}
.pd-row{display:flex;justify-content:space-between;align-items:center;padding:3px 0;border-bottom:1px dotted #eee;}
.pd-row:last-child{border-bottom:none;}
.pd-label{color:#999;font-size:11px;min-width:60px;}
.pd-val{color:#555;font-weight:500;font-size:11px;text-align:right;}
.p-dg.dg-dom{background:#e8f5e9;color:#2e7d32;}
.p-dg.dg-exa{background:#e3f2fd;color:#1565c0;}
.p-dg.dg-det{background:#fff3e0;color:#e65100;}
.p-dg.dg-fal{background:#fce4ec;color:#c62828;}
.p-dg.dg-phasis{background:#f3e5f5;color:#7b1fa2;}
.p-dg.dg-combust{background:#fff8e1;color:#e65100;}
.sb-summary{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.sb-summary .si{background:#f7f7fb;border-radius:6px;padding:8px;text-align:center;}
.sb-summary .si .sl{font-size:10px;color:#999;text-transform:uppercase;}
.sb-summary .si .sv{font-size:13px;font-weight:700;margin-top:2px;}
.sb-summary .si .ss{font-size:11px;color:#5865F2;}

/* 차트 네비게이터 (< 이름 >) */
.sb-chart-nav{display:flex;align-items:center;padding:8px 8px;border-bottom:1px solid #e8e8e8;gap:2px;background:#fafafe;}
.sb-chart-nav .scn-arrow{width:28px;height:28px;border:none;background:none;color:#999;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;flex-shrink:0;transition:background .1s,color .1s;}
.sb-chart-nav .scn-arrow:hover:not(:disabled){background:#eef;color:#5865F2;}
.sb-chart-nav .scn-arrow:disabled{color:#ddd;cursor:default;}
.sb-chart-nav .scn-name{flex:1;text-align:center;font-size:13px;font-weight:700;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;padding:0 2px;}
.sb-chart-nav .scn-sub{font-size:10px;font-weight:400;color:#999;}
.sb-chart-nav .scn-plus-wrap{position:relative;flex-shrink:0;}
.sb-chart-nav .scn-plus-menu{display:none;position:absolute;right:0;top:calc(100% + 6px);min-width:170px;padding:6px;background:#fff;border:1px solid #e6e8f2;border-radius:10px;box-shadow:0 10px 24px rgba(0,0,0,.12);z-index:140;}
.sb-chart-nav .scn-plus-wrap.open .scn-plus-menu{display:block;}
.sb-chart-nav .scn-plus-item{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;border:none;background:none;border-radius:8px;color:#555;font-size:12px;font-weight:600;cursor:pointer;text-align:left;}
.sb-chart-nav .scn-plus-item:hover{background:#f5f6ff;color:#333;}
.sb-chart-nav .scn-plus-item i{width:14px;text-align:center;color:#5865F2;font-size:12px;}
/* 차트 목록 모달 */
.chart-list-item{display:flex;align-items:center;padding:9px 14px;cursor:pointer;border-bottom:1px solid #f5f5f5;gap:8px;font-size:13px;transition:background .1s;border-radius:6px;margin-bottom:2px;}
.chart-list-item:hover{background:#f5f5ff;}
.chart-list-item.active{background:#eef0ff;border:1px solid #c8cfff;}
.chart-list-item .cli-icon{color:#bbb;font-size:12px;flex-shrink:0;}
.chart-list-item.active .cli-icon{color:#5865F2;}
.chart-list-item .cli-body{flex:1;min-width:0;}
.chart-list-item .cli-name{font-weight:600;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.chart-list-item.active .cli-name{color:#5865F2;}
.chart-list-item .cli-date{font-size:11px;color:#aaa;margin-top:1px;}
.chart-list-item .cli-actions{display:flex;gap:2px;flex-shrink:0;}
.chart-list-item .cli-memo-wrap{position:relative;display:flex;align-items:center;flex-shrink:0;}
.chart-list-item .cli-memo-btn,.chart-list-item .cli-edit,.chart-list-item .cli-del{width:22px;height:22px;border:none;background:none;color:#ccc;font-size:13px;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0;}
.chart-list-item .cli-memo-btn{opacity:1;}
.chart-list-item .cli-memo-btn:hover{color:#5865F2;background:#eef0ff;}
.chart-list-item .cli-memo-wrap.open .cli-memo-btn{color:#5865F2;background:#eef0ff;}
.chart-list-item .cli-memo-tip{display:none;position:absolute;right:100%;top:50%;transform:translate(-8px,-50%);width:220px;max-width:min(220px,50vw);padding:10px 12px;border-radius:10px;background:#fff;border:1px solid #dfe3f1;box-shadow:0 8px 24px rgba(0,0,0,.14);font-size:12px;line-height:1.55;color:#555;white-space:normal;text-align:left;z-index:20;}
.chart-list-item .cli-memo-tip::after{content:'';position:absolute;top:50%;right:-6px;transform:translateY(-50%);width:10px;height:10px;background:#fff;border-top:1px solid #dfe3f1;border-right:1px solid #dfe3f1;rotate:45deg;}
.chart-list-item .cli-memo-wrap.open .cli-memo-tip{display:block;}
.chart-list-item .cli-edit,.chart-list-item .cli-del{opacity:0;transition:opacity .15s;}
.chart-list-item:hover .cli-edit,.chart-list-item:hover .cli-del{opacity:1;}
.chart-list-item .cli-edit:hover{color:#5865F2;background:#eef0ff;}
.chart-list-item .cli-del:hover{color:#e04040;background:#fef0f0;}
.chart-list-empty{padding:24px;text-align:center;color:#bbb;font-size:13px;}
.chart-list-scroll{max-height:340px;overflow-y:auto;}

/* 차트 영역 */
.chart-area{flex:1;overflow:auto;background:var(--col-chart-bg);position:relative;scrollbar-width:none;-ms-overflow-style:none;}
.chart-area::-webkit-scrollbar{display:none;}
.chart-scale{transform-origin:center center;transition:transform .15s ease;}
.chart-pad{display:flex;align-items:center;justify-content:center;min-width:100%;min-height:100%;padding:20px;}
.chart-wrap{position:relative;flex-shrink:0;margin:auto;}
.chart-wrap,.chart-wrap *,.chart-scale,.chart-scale *{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;}
/* 중앙 원 행성 정보 오버레이 */
.cc-default,.cc-planet{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;}
.cc-planet .ccp-symbol{font-size:28px;line-height:1;font-weight:800;}
.cc-planet .ccp-name{font-size:11px;font-weight:800;margin-top:4px;line-height:1.3;text-align:center;padding:0 8px;}
.cc-planet .ccp-sign{font-size:11px;font-weight:800;color:#111;margin-top:4px;line-height:1.35;text-align:center;padding:0 8px;}
.cc-planet .ccp-degree{display:none;}
.cc-planet .ccp-status{font-size:10px;font-weight:800;margin-top:2px;line-height:1.2;text-align:center;padding:0 8px;}
.cc-planet .ccp-speed{font-size:10px;color:#666;margin-top:2px;line-height:1.2;text-align:center;}
.cc-planet .ccp-sect{font-size:9px;color:#666;margin-top:2px;line-height:1.5;text-align:center;padding:0 6px;}
.cc-planet .ccp-phase{font-size:10px;color:#5B4FA0;font-weight:600;margin-top:2px;line-height:1.2;text-align:center;}
.cc-planet .ccp-meta{font-size:10px;color:#777;margin-top:7px;line-height:1.45;text-align:center;padding:0 10px;word-break:keep-all;white-space:pre-line;}
.cc-house{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;padding:0 8px;}
.cc-house .cch-title{font-size:15px;font-weight:800;color:#333;line-height:1.2;}
.cc-house .cch-sign{font-size:12px;font-weight:700;color:#5865F2;margin-top:4px;line-height:1.2;}
.cc-house .cch-meta{font-size:10px;color:#777;margin-top:7px;line-height:1.45;text-align:center;white-space:pre-line;padding:0 10px;word-break:keep-all;}
.cc-house .cch-keywords{font-size:10px;color:#777;margin-top:7px;line-height:1.45;white-space:pre-line;text-align:center;padding:0 10px;word-break:keep-all;}
.cc-sign{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;padding:0 8px;}
.cc-sign .ccs-symbol{font-family:'Morinus3',sans-serif;font-size:34px;line-height:1;font-weight:400;color:#5865F2;}
.cc-sign .ccs-name{font-size:13px;font-weight:800;color:#333;margin-top:4px;line-height:1.2;}
.cc-sign .ccs-ruler,.cc-sign .ccs-meta,.cc-sign .ccs-modality{font-size:10px;color:#777;margin-top:7px;line-height:1.45;text-align:center;padding:0 10px;word-break:keep-all;}
.cc-sign .ccp-meta{font-size:10px;color:#777;margin-top:7px;line-height:1.45;text-align:center;padding:0 10px;word-break:keep-all;white-space:pre-line;}
.house-sector-layer{position:absolute;left:0;top:0;z-index:5;}
.house-sector{fill:transparent;stroke:transparent;stroke-width:1;cursor:pointer;transition:fill .15s ease,stroke .15s ease;}
.house-sector:hover{fill:rgba(88,101,242,0.08);}
.house-sector.active{fill:rgba(88,101,242,0.18);stroke:rgba(88,101,242,0.55);}

/* 하단바 */
.bottombar{background:#fff;border-top:1px solid #d0d0d0;padding:6px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0;}
.bottombar .bb-links{display:flex;gap:10px;font-size:11px;}
.bottombar .bb-links a{color:#999;text-decoration:none;}
.bottombar .bb-links a:hover{color:#555;text-decoration:underline;}
.bottombar .ctrl{display:flex;align-items:center;gap:6px;font-size:12px;color:#666;}
.bottombar button{width:26px;height:26px;border:1px solid #c0c0c0;border-radius:4px;background:#fff;color:#333;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.bottombar button:hover{background:#f0f0f0;}
.bottombar .val{min-width:38px;text-align:center;font-weight:600;color:#333;}

/* ===== 차트 스타일 ===== */
/* 외곽 테두리 링 */
.zr-border{position:absolute;border-radius:50%;background:#000;z-index:0;}
/* 황도대 링 */
.zr{position:absolute;border-radius:50%;z-index:2;}
/* 눈금 링 */
.tick-ring{position:absolute;border-radius:50%;background:#fff;border:1px solid #1f1f1f;z-index:3;overflow:hidden;}
.tick{position:absolute;left:calc(50% - .25px);top:0;width:.5px;background:#666;transform-origin:50% calc(var(--tr));z-index:3;}
.tick.t1{height:4px;background:#555;}
.tick.t5{height:7px;width:.8px;background:#333;}
.tick.t10{height:10px;width:1.2px;background:#111;}
body:not(.theme-morinus):not(.theme-mono) .tick.t30{display:none;}
/* 별자리 경계선 */
.sl{position:absolute;left:calc(50% - .5px);top:0;width:1px;height:100%;transform-origin:center;z-index:4;}
/* 내부 원 */
.ia{position:absolute;border-radius:50%;background:#f7f7f7;border:1px solid #bfbfbf;overflow:hidden;z-index:4;}
.hl{position:absolute;left:calc(50% - .75px);top:0;width:1.5px;height:100%;background:rgba(0,0,0,.23);transform-origin:center;}
/* ASC-DSC/MC-IC 실제 축선 (내부원 안) */
.hl.ax-asc{width:3px;left:calc(50% - 1.5px);background:#111;}
.hl.ax-mc{width:3px;left:calc(50% - 1.5px);background:#111;}
/* ASC-DSC/MC-IC 전체 관통 축선 (외곽 링 위까지, 중앙원 아래) */
.axis-full{position:absolute;transform-origin:center;z-index:5;}
.axis-full .ax-line{position:absolute;left:calc(50% - 1.5px);top:0;width:3px;height:100%;background:#111;}
.axis-full.mc .ax-line{width:2px;left:calc(50% - 1px);background:#222;}
/* 화살표 */
.ax-arrow{position:absolute;width:0;height:0;z-index:12;border-style:solid;}
.ax-arrow.left{border-width:6px 10px 6px 0;border-color:transparent #111 transparent transparent;}
.ax-arrow.right{border-width:6px 0 6px 10px;border-color:transparent transparent transparent #111;}
.ax-arrow.up{border-width:0 6px 10px 6px;border-color:transparent transparent #222 transparent;}
.ax-arrow.down{border-width:10px 6px 0 6px;border-color:#222 transparent transparent transparent;}
/* 하우스 번호 링 */
.h-ring{position:absolute;border-radius:50%;z-index:4;}
/* 하우스 번호 링 외곽 테두리 */
.h-ring-border{position:absolute;border-radius:50%;z-index:4;border:1.5px solid rgba(0,0,0,.12);}
/* 중앙 원 */
.cc{position:absolute;border-radius:50%;background:#fff;border:2.5px solid #555;box-shadow:0 0 8px rgba(0,0,0,.08);
  z-index:9;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;}
.cc .cd{font-size:14px;color:#333;font-weight:700;}
.cc .ct{font-size:11px;color:#666;margin-top:1px;}
.cc .cl{font-size:10px;color:#888;margin-top:3px;}
.cc .ch{font-size:9px;color:#aaa;margin-top:3px;}
/* 별자리명 */
.sn{position:absolute;z-index:10;pointer-events:none;font-weight:800;transform:translate(-50%,-50%);transition:text-shadow .3s,transform .3s;}
.sn.sign-clickable{pointer-events:auto;cursor:pointer;}
.sn.sign-active{text-shadow:0 0 8px rgba(88,101,242,0.9);transform:translate(-50%,-50%) scale(1.12);}
.sn.sign-class-hl{text-shadow:0 0 10px var(--sc-color,#ff6b00),0 0 20px var(--sc-color,#ff6b00);transform:translate(-50%,-50%) scale(1.18);z-index:15;}
/* 룰러십 하이라이트 깜빡이기 */
@keyframes rulerPulse{
  0%,100%{opacity:0.85;}
  50%{opacity:0.3;}
}
/* 하우스 번호 */
.hn{position:absolute;z-index:6;font-size:14px;color:rgba(0,0,0,.82);font-weight:700;transform:translate(-50%,-50%);pointer-events:auto;cursor:pointer;}
.hn.active{color:#fff !important;text-shadow:0 0 8px rgba(88,101,242,0.9);transform:translate(-50%,-50%) scale(1.12);}
/* 행성 */
.pm{position:absolute;z-index:8;pointer-events:none;transform:translate(-50%,-50%) rotate(var(--pa,0deg));text-align:center;line-height:1;}
.pm>.pk,.pm>.pd,.pm>.ps{transform:rotate(calc(-1 * var(--pa,0deg)));}
.pm .pk{font-size:20px;font-weight:800;text-shadow:-0.5px -0.5px 0 #fff,0.5px -0.5px 0 #fff,-0.5px 0.5px 0 #fff,0.5px 0.5px 0 #fff;}
.pm .pd{font-weight:600;margin-top:1px;line-height:1.1;}
.pm .pd .pd-deg{font-size:12px;font-weight:700;text-shadow:-0.5px -0.5px 0 #fff,0.5px -0.5px 0 #fff,-0.5px 0.5px 0 #fff,0.5px 0.5px 0 #fff;}
.pm .pd .pd-min{font-size:8px;font-weight:600;margin-top:0px;text-shadow:-0.5px -0.5px 0 #fff,0.5px -0.5px 0 #fff,-0.5px 0.5px 0 #fff,0.5px 0.5px 0 #fff;}
.pm .pr{color:#d03030;font-weight:700;font-size:9px;text-shadow:-0.5px -0.5px 0 #fff,0.5px -0.5px 0 #fff,-0.5px 0.5px 0 #fff,0.5px 0.5px 0 #fff;}
.pm .ps{font-size:11px;opacity:.4;display:block;margin-top:-1px;}
/* 행성 점 & 연결선 */
.dt{position:absolute;width:5px;height:5px;border-radius:50%;z-index:8;transform:translate(-50%,-50%);}
.pl{position:absolute;z-index:7;transform-origin:0 0;opacity:.6;}
/* 축 라벨 */
.al{position:absolute;z-index:10;font-weight:800;letter-spacing:.5px;transform:translate(-50%,-50%);}
.al-axis-stack{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.08;text-align:center;gap:0;color:#111;}
.al-axis-stack .al-axis-name-asc{font-size:16px;}
.al-axis-stack .al-axis-name-mc{font-size:14px;color:#222;}
.al-axis-stack .al-axis-deg{font-size:9px;font-weight:700;letter-spacing:0;opacity:.78;line-height:1;}
body.darkmode-on .al-axis-stack{color:#eee !important;}
body.darkmode-on .al-axis-stack .al-axis-name-mc{color:#e0e0e0 !important;}
body.darkmode-on .al-axis-stack .al-axis-deg{opacity:.9;}
.al.edu-axis-drag{cursor:grab;pointer-events:auto;padding:4px 8px;border-radius:6px;transition:background .15s,box-shadow .15s;}
.al.edu-axis-drag:hover{background:rgba(88,101,242,.12);box-shadow:0 0 6px rgba(88,101,242,.3);}
.al.edu-axis-drag.dragging{cursor:grabbing;background:rgba(88,101,242,.2);box-shadow:0 0 10px rgba(88,101,242,.5);}

/* 모달 */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:300;display:none;align-items:center;justify-content:center;}
.modal-overlay.visible{display:flex;}
.modal{background:#fff;border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.2);padding:24px;min-width:280px;max-width:360px;}
.modal h3{font-size:15px;font-weight:700;margin-bottom:14px;color:#333;}
.modal .modal-item{display:flex;align-items:center;padding:10px 14px;border-radius:8px;cursor:pointer;font-size:14px;color:#444;gap:10px;border:1px solid transparent;margin-bottom:4px;}
.modal .modal-item:hover{background:#f5f5ff;border-color:#d0d0e8;}
.modal .modal-item.selected{background:#eef;border-color:#5865F2;color:#5865F2;font-weight:700;}
.modal .modal-item .mi-check{width:18px;text-align:center;color:#5865F2;}
.modal .modal-close{margin-top:12px;text-align:right;}
.modal .modal-close button{padding:6px 18px;border:1px solid #ccc;border-radius:6px;background:#fff;color:#666;font-size:13px;cursor:pointer;}
.modal .modal-close button:hover{background:#f5f5f5;}
.disp-modal{max-width:600px;}
.disp-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;}

/* 트랜짓 외곽 링 */
.tr-border{position:absolute;border-radius:50%;border:2.5px solid #333;z-index:10;pointer-events:none;}
.tr-ring{position:absolute;border-radius:50%;z-index:10;overflow:hidden;}
.tr-inner{position:absolute;border-radius:50%;border:1.5px solid #888;z-index:10;pointer-events:none;}
.tr-tick-ring{position:absolute;border-radius:50%;background:#fff;border:1px solid #aaa;z-index:10;overflow:hidden;}
.tr-tick{position:absolute;left:calc(50% - .25px);top:0;width:.5px;background:#888;transform-origin:50% calc(var(--tr));z-index:10;}
.tr-tick.t1{height:3px;background:#888;}
.tr-tick.t5{height:5px;width:.7px;background:#666;}
.tr-tick.t10{height:8px;width:1px;background:#444;}
body:not(.theme-morinus):not(.theme-mono) .tr-tick.t30{display:none;}
.tr-sl{position:absolute;left:calc(50% - .5px);top:0;width:1px;height:100%;transform-origin:center;z-index:11;}
.tr-pm{position:absolute;z-index:12;transform:translate(-50%,-50%) rotate(var(--pa,0deg));text-align:center;line-height:1;}
.tr-pm .pk{font-size:16px;font-weight:800;text-shadow:-0.5px -0.5px 0 #fff,0.5px -0.5px 0 #fff,-0.5px 0.5px 0 #fff,0.5px 0.5px 0 #fff;}
.tr-pm .pd{font-weight:600;margin-top:0;line-height:1.1;}
.tr-pm .pd .pd-deg{font-size:9px;font-weight:700;text-shadow:-0.5px -0.5px 0 #fff,0.5px -0.5px 0 #fff,-0.5px 0.5px 0 #fff,0.5px 0.5px 0 #fff;}
.tr-pm .pd .pd-min{font-size:8px;font-weight:600;text-shadow:-0.5px -0.5px 0 #fff,0.5px -0.5px 0 #fff,-0.5px 0.5px 0 #fff,0.5px 0.5px 0 #fff;}
.tr-pm .pr{color:#d03030;font-weight:700;font-size:8px;text-shadow:-0.5px -0.5px 0 #fff,0.5px -0.5px 0 #fff,-0.5px 0.5px 0 #fff,0.5px 0.5px 0 #fff;}
.tr-dt{position:absolute;width:4px;height:4px;border-radius:50%;z-index:12;transform:translate(-50%,-50%);}
.tr-pl{position:absolute;z-index:11;transform-origin:0 0;opacity:.45;}
.tr-sn{position:absolute;z-index:11;pointer-events:none;font-weight:800;transform:translate(-50%,-50%);}
.tr-label{position:absolute;z-index:20;background:rgba(255,255,255,.92);padding:2px 10px;border-radius:10px;font-size:11px;font-weight:700;color:#555;border:1px solid #d0d0d0;white-space:nowrap;transform:translate(-50%,-50%);}
/* 행성 가리기 */
body.hide-planets .pm,body.hide-planets .dt,body.hide-planets .pl,
body.hide-planets .tr-pm,body.hide-planets .tr-dt,body.hide-planets .tr-pl,
body.hide-planets #aspectOverlay,body.hide-planets #aspectOverlaySR{visibility:hidden;}
/* 도수 가리기 */
body.hide-degrees .pm .pd{visibility:hidden;}
body.hide-degrees .tr-pm .pd{visibility:hidden;}
/* 중앙 정보 가리기 */
body.hide-centerinfo .cc-default > *{visibility:hidden;}
body.hide-centerinfo .sb-header h2,
body.hide-centerinfo .sb-header > div:not(.tags){visibility:hidden;}

/* 마법사 스타일 */
.wiz-theme-card{flex:1;cursor:pointer;padding:10px;border-radius:10px;border:2px solid #e0e0e0;transition:all .15s;max-width:120px;}
.wiz-theme-card:hover{border-color:#b0b4f7;}
.wiz-theme-card.selected{border-color:#5865F2;background:#f5f6ff;}
.wiz-planet-opt{cursor:pointer;padding:14px 16px;border-radius:10px;border:2px solid #e0e0e0;transition:all .15s;}
.wiz-planet-opt:hover{border-color:#b0b4f7;}
.wiz-planet-opt.selected{border-color:#5865F2;background:#f5f6ff;}
.wiz-opt-check{width:20px;height:20px;border-radius:50%;border:2px solid #ccc;display:flex;align-items:center;justify-content:center;font-size:10px;color:transparent;flex-shrink:0;transition:all .15s;}
.wiz-planet-opt.selected .wiz-opt-check{border-color:#5865F2;background:#5865F2;color:#fff;}

/* 새 차트 모달 */
.chart-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:200;display:none;align-items:center;justify-content:center;}
.chart-modal-overlay.visible{display:flex;}
.chart-modal{background:#fff;border-radius:14px;box-shadow:0 16px 48px rgba(0,0,0,.22);padding:28px 32px;width:480px;max-width:92vw;animation:cmSlideIn .2s ease;}
.chart-modal.viewer-fullscreen{border-radius:0 !important;max-width:100vw !important;max-height:100vh !important;width:100vw !important;height:100vh !important;}
@keyframes cmSlideIn{from{opacity:0;transform:translateY(-20px);}to{opacity:1;transform:translateY(0);}}
.chart-modal h3{font-size:16px;font-weight:700;margin-bottom:20px;color:#333;display:flex;align-items:center;justify-content:space-between;}
.chart-modal h3 button{background:none;border:none;font-size:18px;color:#999;cursor:pointer;padding:4px;}
.chart-modal h3 button:hover{color:#333;}
.cm-quick-row{display:flex;justify-content:flex-end;margin:-10px 0 12px;}
.cm-quick-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border:1px solid #d8dcef;border-radius:999px;background:#fff;color:#6d7392;font-size:11px;font-weight:600;cursor:pointer;}
.cm-quick-btn:hover{background:#f8f9ff;border-color:#c9d0ee;color:#5865F2;}
.cm-row{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
.cm-row label{font-size:12px;color:#666;min-width:40px;flex-shrink:0;font-weight:600;}
.cm-row input,.cm-row select{padding:6px 10px;border:1px solid #d0d0d0;border-radius:6px;font-size:13px;background:#fff;color:#333;outline:none;}
.cm-row input:focus{border-color:#5865F2;box-shadow:0 0 0 2px rgba(88,101,242,.15);}
.cm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px;padding-top:16px;border-top:1px solid #f0f0f0;}
.cm-actions button{padding:7px 20px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;}
.cm-actions .cm-cancel{background:#fff;border:1px solid #d0d0d0;color:#666;}
.cm-actions .cm-cancel:hover{background:#f5f5f5;}
.cm-actions .cm-submit{background:#5865F2;border:none;color:#fff;}
.cm-actions .cm-submit:hover{background:#4752c4;}

/* 차트 설정 모달 */
.cs-tabs{display:grid !important;grid-template-columns:repeat(5,minmax(0,1fr)) !important;gap:6px;border-bottom:2px solid #eee;margin-bottom:16px;padding-bottom:8px;}
.cs-tab{padding:7px 8px;font-size:13px;font-weight:600;color:#888;background:none;border:1px solid transparent;border-radius:7px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap !important;word-break:keep-all;writing-mode:horizontal-tb;transition:all .15s;min-width:0;}
.cs-tab:hover{color:#555;background:#f5f6fa;}
.cs-tab.active{color:#5865F2;background:rgba(88,101,242,0.1);border-color:rgba(88,101,242,0.2);}
.cs-section-title{font-size:13px;font-weight:700;color:#444;margin-bottom:10px;display:flex;align-items:center;gap:6px;}
.cs-section-title i{font-size:12px;color:#5865F2;}
.cs-asp-opt{padding:7px 14px;border:none;background:#fff;color:#888;font-size:12px;font-weight:600;cursor:pointer;transition:all .12s;}
.cs-asp-opt:not(:last-child){border-right:1px solid #ddd;}
.cs-asp-opt:hover{color:#555;background:#f8f8fa;}
.cs-asp-opt.active{background:#5865F2;color:#fff;}
.cs-kw-list{display:flex;flex-direction:column;gap:6px;}
.cs-kw-item{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border:1px solid #e8e8ee;border-radius:8px;background:#fafafe;transition:border-color .15s;}
.cs-kw-item:hover{border-color:#c8c8dd;}
.cs-kw-label{min-width:72px;font-size:13px;font-weight:700;color:#444;padding-top:6px;flex-shrink:0;}
.cs-kw-label .cs-kw-glyph{font-family:'Morinus3',sans-serif;font-size:16px;margin-right:4px;}
.cs-kw-input{flex:1;padding:6px 10px;border:1px solid #d0d0d0;border-radius:6px;font-size:13px;background:#fff;color:#333;outline:none;resize:vertical;min-height:32px;line-height:1.5;font-family:inherit;}
.cs-kw-input:focus{border-color:#5865F2;box-shadow:0 0 0 2px rgba(88,101,242,.15);}

/* 2분할 모드 */
.chart-area.split{display:flex;flex-direction:row;}
.chart-area.split .chart-half{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;min-width:0;}
.chart-area.split .chart-half-scroll{flex:1;overflow:auto;position:relative;scrollbar-width:none;-ms-overflow-style:none;}
.chart-area.split .chart-half-scroll::-webkit-scrollbar{display:none;}
.chart-area.split .chart-half-scroll .chart-pad{display:grid;place-items:center;box-sizing:border-box;width:max-content;min-width:100%;min-height:100%;}
.chart-area.split .chart-half-scroll .chart-scale{display:block;max-width:none;margin:0;}
.chart-area.split .chart-half+.chart-half{border-left:2px solid #d0d0d0;}
.chart-half-label{position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:20;background:rgba(255,255,255,.9);padding:3px 14px;border-radius:12px;font-size:12px;font-weight:700;color:#555;border:1px solid #e0e0e0;white-space:nowrap;max-width:95%;}
.chart-half-topbar{position:relative;z-index:26;flex-shrink:0;padding:8px 10px 6px;background:rgba(236,237,241,.96);border-bottom:1px solid #d9d9df;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;}
.chart-half-topbar::-webkit-scrollbar{display:none;}
.chart-half-topbar-inner{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:max-content;min-width:100%;white-space:nowrap;}
.chart-half-topbar-btn{border:none;background:none;cursor:pointer;font-size:14px;color:#666;padding:2px 6px;}
.chart-half-topbar-title{font-size:12px;font-weight:700;color:#444;}
.chart-half-topbar-year{width:72px;border:1px solid #d0d0d0;border-radius:4px;text-align:center;font-size:12px;font-weight:700;padding:2px;-moz-appearance:textfield;background:#fff;}
.chart-half-topbar-meta{font-size:11px;font-weight:600;}
.chart-half-topbar-natal .chart-half-topbar-inner{justify-content:center;}
.chart-half-topbar-pill{display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,.9);padding:3px 14px;border-radius:12px;font-size:12px;font-weight:700;color:#555;border:1px solid #e0e0e0;line-height:1;}

/* 우측 사이드바 (피르다리아 등) */
.rsidebar{width:320px;background:#fff;border-left:1px solid #d0d0d0;display:none;flex-direction:column;flex-shrink:0;overflow:hidden;position:relative;}
.rsidebar.open{display:flex;}
.rsb-header{padding:12px 16px 10px;border-bottom:1px solid #e0e0e0;display:flex;align-items:center;justify-content:space-between;}
.rsb-header h2{font-size:15px;font-weight:700;color:#333;}
.rsb-header .rsb-close{background:none;border:none;font-size:16px;color:#999;cursor:pointer;padding:4px;}
.rsb-header .rsb-close:hover{color:#333;}
.rsb-body{flex:1;overflow-y:auto;padding:0;}
.cal-date-toggle{display:flex;gap:0;border:1px solid #d0d0e0;border-radius:6px;overflow:hidden;margin-left:auto;margin-right:8px;flex-shrink:0;}
.cal-dt-btn{padding:3px 10px;font-size:11px;font-weight:600;border:none;cursor:pointer;background:#fff;color:#888;transition:all .15s;white-space:nowrap;}
.cal-dt-btn.active{background:#5865F2;color:#fff;}
.cal-dt-btn:hover:not(.active){background:#f0f0ff;color:#555;}
/* 달 위상 달력 */
.mp-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:#f0f0f0;border:1px solid #e0e0e0;border-radius:8px;overflow:hidden;}
.mp-cal-header{background:#f8f8fc;padding:6px 0;text-align:center;font-size:11px;font-weight:700;}
.mp-cal-cell{background:#fff;min-height:52px;padding:4px;display:flex;flex-direction:column;align-items:center;gap:1px;}
.mp-cal-cell.mp-empty{background:#fafafa;}
.mp-cal-cell.mp-today{background:#eff2ff;box-shadow:inset 0 0 0 2px #5865F2;}
.mp-cal-day{font-size:12px;font-weight:600;}
.mp-cal-phase{line-height:0;}
.mp-cal-phase svg{display:block;}
.mp-phase-card{padding:10px 12px;background:#f8f8fc;border-radius:8px;border:1px solid #eee;margin-bottom:6px;}
.mp-phase-card:last-child{margin-bottom:0;}
.mp-phase-card.mp-major-card{background:#f5f3ff;border-color:#d8d0f0;}
.mp-phase-sym{width:36px;text-align:center;flex-shrink:0;line-height:0;}
.edu-sidepanel{width:130px;background:#fff;border-left:1px solid #d0d0d0;display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;}
.edu-sidepanel-header{padding:10px 8px;border-bottom:1px solid #e8e8e8;text-align:center;font-size:11px;font-weight:700;color:#555;line-height:1.4;}
.edu-palette-list{flex:1;overflow-y:auto;padding:8px 6px;display:flex;flex-direction:column;gap:6px;}
.edu-planet-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 4px;border:1px solid #e2e2ea;border-radius:10px;background:#fff;color:#555;cursor:pointer;transition:all .15s;}
.edu-planet-btn:hover{background:#f6f7ff;border-color:#bcc3ff;color:#333;}
.edu-planet-btn.active{background:#eef0ff;border-color:#5865F2;color:#5865F2;box-shadow:inset 0 0 0 1px rgba(88,101,242,.1);}
.edu-planet-btn.placed{border-color:var(--pc,#5865F2);background:color-mix(in srgb,var(--pc,#5865F2) 8%,#fff);}
.edu-planet-btn .epb-glyph{font-family:'Morinus3',sans-serif;font-size:24px;font-weight:400;line-height:1;}
.edu-planet-btn .epb-name{font-size:10px;font-weight:700;line-height:1.2;}
.edu-planet-btn{position:relative;}
.epb-del{position:absolute;top:1px;right:1px;width:16px;height:16px;border-radius:50%;background:#eee;color:#999;font-size:13px;font-weight:700;line-height:16px;text-align:center;cursor:pointer;opacity:0;transition:opacity .15s;}
.edu-planet-btn:hover .epb-del{opacity:1;}
.epb-del:hover{background:#ff4444;color:#fff;}
.edu-sidepanel-help{padding:8px 8px 10px;border-top:1px solid #ececf1;font-size:10px;color:#888;line-height:1.45;text-align:center;}
.edu-planet-layer{position:absolute;inset:0;z-index:8;}
.edu-planet-layer .pm,.edu-planet-layer .dt,.edu-planet-layer .pl{pointer-events:auto;}
.edu-planet-layer .pm,.edu-planet-layer .dt,.edu-planet-layer .pl{cursor:grab;}
.edu-planet-layer .pm.dragging,.edu-planet-layer .dt.dragging,.edu-planet-layer .pl.dragging{cursor:grabbing;}
/* 교육용 고스트 커서 */
.edu-ghost{position:fixed;z-index:10000;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:1px;opacity:.75;transition:opacity .1s;}
.edu-ghost .eg-glyph{font-family:'Morinus3',sans-serif;font-size:28px;font-weight:400;line-height:1;}
.edu-ghost .eg-name{font-size:9px;font-weight:700;}
.edu-ghost.eg-can-drop{opacity:1;}
.edu-ghost.eg-no-drop{opacity:.35;}
/* 교육용 스냅 프리뷰 */
.edu-snap-preview{position:absolute;z-index:7;pointer-events:none;border-radius:50%;transition:opacity .12s,left .06s,top .06s;}
.edu-snap-dot{width:11px;height:11px;border-radius:50%;border:2px solid;transform:translate(-50%,-50%);animation:eduSnapPulse 1s infinite;}
@keyframes eduSnapPulse{0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.85;}50%{transform:translate(-50%,-50%) scale(1.35);opacity:.45;}}
.rsb-tag{display:inline-block;font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600;margin-left:6px;}
/* 피르다리아 스타일 */
.fird-major{border-bottom:1px solid #e8e8e8;}
.fird-major-head{display:flex;align-items:center;padding:10px 16px;cursor:pointer;gap:8px;user-select:none;transition:background .1s;}
.fird-major-head:hover{background:#f8f8fc;}
.fird-major-head.active{background:#f0f0ff;}
.fird-major-head .fm-sym{font-size:18px;width:24px;text-align:center;flex-shrink:0;}
.fird-major-head .fm-name{font-weight:700;font-size:13px;flex-shrink:0;width:50px;}
.fird-major-head .fm-years{font-size:11px;color:#999;flex-shrink:0;}
.fird-major-head .fm-range{font-size:11px;color:#888;flex:1;text-align:right;}
.fird-major-head .fm-arrow{font-size:10px;color:#bbb;transition:transform .2s;flex-shrink:0;}
.fird-major-head.expanded .fm-arrow{transform:rotate(90deg);}
.fird-major-head.current{background:#fffbe6;border-left:3px solid #f5a623;}
.fird-minors{display:none;padding:0 0 6px 0;background:#fafafa;}
.fird-minors.open{display:block;}
.fird-minor{display:flex;align-items:center;padding:5px 16px 5px 42px;gap:6px;font-size:12px;border-bottom:1px solid #f2f2f2;}
.fird-minor:last-child{border-bottom:none;}
.fird-minor .mn-sym{font-size:14px;width:20px;text-align:center;flex-shrink:0;}
.fird-minor .mn-name{font-weight:600;width:40px;flex-shrink:0;}
.fird-minor .mn-range{color:#888;flex:1;text-align:right;font-size:11px;}
.fird-minor.current{background:#fff8e1;border-left:3px solid #ffb300;margin-left:-3px;}
/* 프로펙션 스타일 */
#rsidebarProf{width:360px;}
.prof-row{display:flex;align-items:center;padding:8px 16px;gap:8px;border-bottom:1px solid #f0f0f0;font-size:13px;transition:background .1s;}
.prof-row:hover{background:#f8f8fc;}
.prof-row.current{background:#fffbe6;border-left:3px solid #f5a623;}
.prof-row .pr-age{font-size:12px;font-weight:700;color:#555;width:36px;text-align:center;flex-shrink:0;}
.prof-row .pr-house{font-size:13px;font-weight:800;color:#5865F2;width:30px;text-align:center;flex-shrink:0;}
.prof-row .pr-sign{font-family:'Morinus3',sans-serif;font-size:15px;font-weight:400;width:22px;text-align:center;flex-shrink:0;}
.prof-row .pr-sname{font-size:12px;color:#555;width:52px;flex-shrink:0;}
.prof-row .pr-ruler{display:flex;align-items:center;gap:4px;flex:1;}
.prof-row .pr-ruler .pr-rsym{font-size:15px;width:20px;text-align:center;}
.prof-row .pr-ruler .pr-rname{font-size:12px;font-weight:600;white-space:nowrap;}
.prof-row .pr-dates{font-size:10px;color:#555;text-align:right;flex-shrink:0;}
.prof-row .pr-chevron{font-size:10px;color:#bbb;width:14px;text-align:center;flex-shrink:0;transition:transform .2s;}
.prof-wrap.open>.prof-row .pr-chevron{transform:rotate(180deg);color:#5865F2;}
.prof-monthly{background:#fafafe;border-bottom:1px solid #e8e8f0;padding:4px 0 4px 20px;}
.pm-row{display:flex;align-items:center;padding:5px 16px 5px 12px;gap:6px;font-size:12px;border-radius:4px;margin:1px 0;}
.pm-row:hover{background:#f0f0fa;}
.pm-row.pm-current{background:#fff3d0;font-weight:600;}
.pm-row .pm-month{font-size:11px;font-weight:700;color:#888;width:28px;text-align:center;flex-shrink:0;}
.pm-row .pm-sign{font-size:12px;width:18px;text-align:center;flex-shrink:0;}
.pm-row .pm-sname{font-size:11px;color:#555;width:50px;flex-shrink:0;}
.pm-row .pm-ruler{display:flex;align-items:center;gap:3px;flex:1;}
.pm-row .pm-dates{font-size:9px;color:#bbb;text-align:right;flex-shrink:0;}
.pm-row .pm-chevron{font-size:9px;color:#ccc;width:12px;text-align:center;flex-shrink:0;transition:transform .2s;}
.pm-wrap.open>.pm-row .pm-chevron{transform:rotate(180deg);color:#5865F2;}
.prof-daily{background:#f5f5fb;border-bottom:1px solid #e8e8f0;padding:3px 0 3px 16px;}
.pd-row{display:flex;align-items:center;padding:4px 12px 4px 8px;gap:5px;font-size:11px;border-radius:3px;margin:1px 0;}
.pd-row:hover{background:#eeeef8;}
.pd-row.pd-current{background:#fff3d0;font-weight:600;}
.pd-row .pd-date{font-size:10px;font-weight:700;color:#888;width:32px;flex-shrink:0;}
.pd-row .pd-weekday{font-size:9px;color:#aaa;width:16px;flex-shrink:0;text-align:center;}
.pd-row .pd-sign{font-size:11px;width:16px;text-align:center;flex-shrink:0;font-family:'Morinus3',sans-serif;font-weight:400;}
.pd-row .pd-sname{font-size:10px;color:#555;width:46px;flex-shrink:0;}
.pd-row .pd-ruler{display:flex;align-items:center;gap:3px;flex:1;}
/* 로드 오브 디 오브 스타일 */
.orb-row{display:flex;align-items:center;padding:8px 16px;gap:8px;border-bottom:1px solid #f0f0f0;font-size:13px;transition:background .1s;}
.orb-row:hover{background:#f8f8fc;}
.orb-row.current{background:#fffbe6;border-left:3px solid #f5a623;}
.orb-row .or-age{font-size:12px;font-weight:700;color:#555;width:36px;text-align:center;flex-shrink:0;}
.orb-row .or-sym{font-size:18px;width:24px;text-align:center;flex-shrink:0;}
.orb-row .or-name{font-weight:700;font-size:13px;flex:1;}
.orb-row .or-dates{font-size:10px;color:#aaa;text-align:right;flex-shrink:0;}

/* 조디아컬 릴리징 스타일 */
.zr-tab-group{display:flex;gap:4px;flex:1;}
.zr-tab{flex:1;padding:6px 0;border:1px solid #d0d0d0;border-radius:8px;background:#fff;font-size:12px;font-weight:600;color:#888;cursor:pointer;transition:all .15s;text-align:center;}
.zr-tab:hover{background:#f0f0f5;color:#555;}
.zr-tab.active{background:#5865F2;color:#fff;border-color:#5865F2;}
.zr-summary{padding:12px 16px;background:#f8f9ff;border-bottom:1px solid #e8e8e8;}
.zr-summary-row{display:flex;align-items:center;gap:6px;font-size:12px;margin-bottom:4px;}
.zr-summary-row:last-child{margin-bottom:0;}
.zr-summary-label{font-weight:700;color:#555;width:24px;flex-shrink:0;text-align:center;font-size:11px;background:#e8e8f0;border-radius:4px;padding:1px 4px;}
.zr-summary-sign{font-size:14px;flex-shrink:0;}
.zr-summary-name{font-weight:600;color:#333;font-size:12px;}
.zr-summary-date{color:#888;font-size:11px;margin-left:auto;}
.zr-l1{border-bottom:1px solid #e8e8e8;}
.zr-l1-head{display:flex;align-items:center;padding:10px 16px;cursor:pointer;gap:6px;user-select:none;transition:filter .1s;}
.zr-l1-head:hover{filter:brightness(0.96);}
.zr-l1-head.expanded .zr-arrow{transform:rotate(90deg);}
.zr-l1-head .zr-sign{font-size:16px;width:22px;text-align:center;flex-shrink:0;}
.zr-l1-head .zr-sname{font-weight:700;font-size:13px;flex-shrink:0;width:55px;}
.zr-l1-head .zr-years{font-size:11px;color:#999;flex-shrink:0;width:36px;}
.zr-l1-head .zr-dates{font-size:11px;color:#888;flex:1;text-align:right;}
.zr-l1-head .zr-markers{display:flex;gap:3px;margin-left:4px;flex-shrink:0;}
.zr-arrow{font-size:10px;color:#bbb;transition:transform .2s;flex-shrink:0;}
.zr-marker{font-size:12px;line-height:1;}
.zr-sub{display:none;background:#fafafa;padding:0 0 4px 0;}
.zr-sub.open{display:block;}
.zr-l2{border-bottom:1px solid #f0f0f0;}
.zr-l2-head{display:flex;align-items:center;padding:6px 16px 6px 36px;cursor:pointer;gap:5px;user-select:none;transition:background .1s;font-size:12px;}
.zr-l2-head:hover{filter:brightness(0.97);}
.zr-l2-head.expanded .zr-arrow{transform:rotate(90deg);}
.zr-l2-head .zr-sign{font-size:14px;width:20px;text-align:center;flex-shrink:0;}
.zr-l2-head .zr-sname{font-weight:600;font-size:12px;flex-shrink:0;width:52px;}
.zr-l2-head .zr-period{font-size:10px;color:#999;flex-shrink:0;width:40px;}
.zr-l2-head .zr-dates{font-size:10px;color:#888;flex:1;text-align:right;}
.zr-l2-head .zr-markers{display:flex;gap:3px;margin-left:3px;flex-shrink:0;}
.zr-l3{border-bottom:1px solid #f5f5f5;}
.zr-l3-head{display:flex;align-items:center;padding:5px 16px 5px 56px;cursor:pointer;gap:4px;user-select:none;transition:background .1s;font-size:11px;}
.zr-l3-head:hover{filter:brightness(0.97);}
.zr-l3-head.expanded .zr-arrow{transform:rotate(90deg);}
.zr-l3-head .zr-sign{font-size:13px;width:18px;text-align:center;flex-shrink:0;}
.zr-l3-head .zr-sname{font-weight:600;font-size:11px;flex-shrink:0;width:48px;}
.zr-l3-head .zr-period{font-size:10px;color:#aaa;flex-shrink:0;width:36px;}
.zr-l3-head .zr-dates{font-size:10px;color:#999;flex:1;text-align:right;}
.zr-l3-head .zr-markers{display:flex;gap:2px;margin-left:2px;flex-shrink:0;}
.zr-l4{border-bottom:1px solid #f8f8f8;}
.zr-l4-row{display:flex;align-items:center;padding:4px 16px 4px 72px;gap:4px;font-size:10px;color:#666;}
.zr-l4-row .zr-sign{font-size:12px;width:16px;text-align:center;flex-shrink:0;}
.zr-l4-row .zr-sname{font-weight:600;font-size:10px;flex-shrink:0;width:44px;}
.zr-l4-row .zr-dates{font-size:9px;color:#aaa;flex:1;text-align:right;}
.zr-l4-row .zr-markers{display:flex;gap:2px;margin-left:2px;flex-shrink:0;}

/* 데세니얼 (Decennial) */
.dc-summary{padding:12px 16px;background:#f8f6ff;border-bottom:1px solid #e8e8e8;}
.dc-summary-row{display:flex;align-items:center;gap:6px;font-size:12px;margin-bottom:4px;}
.dc-summary-row:last-child{margin-bottom:0;}
.dc-summary-label{font-weight:700;color:#555;width:24px;flex-shrink:0;text-align:center;font-size:11px;background:#e8e0f0;border-radius:4px;padding:1px 4px;}
.dc-summary-symbol{font-size:14px;flex-shrink:0;}
.dc-summary-name{font-weight:600;color:#333;font-size:12px;}
.dc-summary-date{color:#888;font-size:11px;margin-left:auto;}
.dc-g{border-bottom:1px solid #e8e8e8;}
.dc-g-head{display:flex;align-items:center;padding:10px 16px;cursor:pointer;gap:6px;user-select:none;transition:filter .1s;}
.dc-g-head:hover{filter:brightness(0.96);}
.dc-g-head.expanded .dc-arrow{transform:rotate(90deg);}
.dc-g-head .dc-sym{font-size:16px;width:22px;text-align:center;flex-shrink:0;}
.dc-g-head .dc-name{font-weight:700;font-size:13px;flex-shrink:0;min-width:55px;}
.dc-g-head .dc-yrs{font-size:11px;color:#999;flex-shrink:0;width:40px;}
.dc-g-head .dc-dates{font-size:11px;color:#888;flex:1;text-align:right;}
.dc-arrow{font-size:8px;color:#bbb;flex-shrink:0;transition:transform .2s;margin-left:4px;}
.dc-sub{display:none;overflow:hidden;}
.dc-sub.open{display:block;}
.dc-s{border-bottom:1px solid #f0f0f0;}
.dc-s-head{display:flex;align-items:center;padding:6px 16px 6px 36px;cursor:pointer;gap:5px;user-select:none;transition:background .1s;font-size:12px;}
.dc-s-head:hover{filter:brightness(0.97);}
.dc-s-head.expanded .dc-arrow{transform:rotate(90deg);}
.dc-s-head .dc-sym{font-size:14px;width:20px;text-align:center;flex-shrink:0;}
.dc-s-head .dc-name{font-weight:600;font-size:12px;flex-shrink:0;min-width:48px;}
.dc-s-head .dc-period{font-size:10px;color:#999;flex-shrink:0;}
.dc-s-head .dc-dates{font-size:10px;color:#888;flex:1;text-align:right;}
.dc-ss{border-bottom:1px solid #f5f5f5;}
.dc-ss-row{display:flex;align-items:center;padding:4px 16px 4px 56px;gap:4px;font-size:10px;color:#666;}
.dc-ss-row .dc-sym{font-size:12px;width:16px;text-align:center;flex-shrink:0;}
.dc-ss-row .dc-name{font-weight:600;font-size:10px;flex-shrink:0;min-width:40px;}
.dc-ss-row .dc-dates{font-size:9px;color:#aaa;flex:1;text-align:right;}
.dc-ss-row.dc-current{background:#fff8e0 !important;border-left:2px solid #e0a000;}

/* 시간 이동 단위 버튼 */
.tt-step-btn{padding:4px 12px;border:1px solid #ccc;border-radius:6px;background:#fff;font-size:12px;font-weight:600;color:#666;cursor:pointer;transition:all .15s;}
.tt-step-btn:hover{background:#f0f0f5;color:#333;}
.tt-step-btn.tt-step-active{background:#5865F2;color:#fff;border-color:#5865F2;}

/* 시너스트리 사이드바 */
.syn-names{display:flex;justify-content:center;align-items:center;gap:10px;margin-bottom:14px;font-size:13px;font-weight:700;}
.syn-names .sn-vs{color:#bbb;font-weight:400;font-size:11px;}
.syn-grid{width:100%;border-collapse:collapse;font-size:12px;text-align:center;}
.syn-grid th{padding:4px 2px;font-weight:700;font-size:11px;color:#888;border-bottom:2px solid #e0e0e0;}
.syn-grid th.syn-corner{background:none;border:none;}
.syn-grid td{padding:5px 2px;border-bottom:1px solid #f0f0f0;font-size:14px;font-weight:700;min-width:28px;}
.syn-grid tr:hover td{background:#f8f8fc;}
.syn-grid .syn-row-hd{font-weight:700;font-size:13px;text-align:left;padding-left:4px;color:#555;white-space:nowrap;}
.syn-asp-conj{color:#8844aa;}
.syn-asp-sext{color:#33aa33;}
.syn-asp-sqr{color:#dd3333;}
.syn-asp-tri{color:#33aa33;}
.syn-asp-opp{color:#dd3333;}
.syn-asp-none{color:#e8e8e8;font-size:10px;}
.syn-legend{display:flex;justify-content:center;gap:10px;margin-top:10px;font-size:10px;color:#999;}
.syn-legend span{display:flex;align-items:center;gap:2px;}

/* 사주팔자 사이드바 */
.saju-form{padding:12px 16px;border-bottom:1px solid #e8e8e8;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.saju-gender-btn{padding:5px 14px;border:1px solid #ccc;border-radius:6px;background:#fff;font-size:12px;font-weight:600;color:#666;cursor:pointer;transition:all .15s;}
.saju-gender-btn:hover{background:#f0f0f5;color:#333;}
.saju-gender-btn.active{background:#5865F2;color:#fff;border-color:#5865F2;}
.saju-pillars{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:16px 12px 8px;}
.saju-pillar{display:flex;flex-direction:column;align-items:stretch;min-width:0;}
.saju-pillar-label{font-size:11px;color:#777;margin-bottom:4px;font-weight:700;text-align:center;letter-spacing:-0.2px;}
.saju-pillar-cell{height:68px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1.5px solid rgba(0,0,0,.12);position:relative;}
.saju-pillar-cell.sp-gan{border-radius:6px 6px 0 0;border-bottom:none;}
.saju-pillar-cell.sp-ji{border-radius:0 0 6px 6px;border-top:1px solid rgba(0,0,0,.08);}
.saju-pillar-cell .sp-kr{font-size:26px;font-weight:800;line-height:1;}
.saju-pillar-cell .sp-hj{font-size:10px;opacity:.7;line-height:1.1;margin-top:3px;}
.saju-pillar-cell .sp-oh{position:absolute;top:5px;left:6px;font-size:9px;padding:1px 5px;border-radius:999px;font-weight:700;background:rgba(255,255,255,.28);color:inherit;line-height:1.3;}
.saju-ss-row{font-size:11px;font-weight:700;line-height:1.2;text-align:center;padding:3px 0;letter-spacing:-0.2px;color:#333 !important;}
.saju-ilgan{text-align:center;padding:8px 12px 10px;font-size:13px;color:#555;line-height:1.6;}
.saju-ilgan strong{font-weight:800;color:#333;}
.saju-divider{border:none;border-top:1px solid #e8e8e8;margin:8px 16px;}
.saju-section-title{font-size:12px;font-weight:700;color:#555;padding:8px 16px 4px;display:flex;align-items:center;gap:6px;}
.saju-daeun-wrap{padding:8px 12px 12px;display:grid;grid-template-columns:repeat(5,1fr);gap:6px;}
.saju-daeun-item{display:flex;flex-direction:column;align-items:stretch;border-radius:4px;font-size:11px;transition:all .15s;cursor:pointer;overflow:hidden;border:2px solid transparent;}
.saju-daeun-item:hover{border-color:#bbb;}
.saju-daeun-item.current{border-color:#f5a623;}
.saju-daeun-item.selected{border-color:#5865F2;}
.saju-daeun-item .sd-cell{display:flex;align-items:center;justify-content:center;height:32px;font-weight:800;font-size:15px;border:1px solid rgba(0,0,0,.1);}
.saju-daeun-item .sd-cell.sd-gan{border-radius:4px 4px 0 0;border-bottom:none;}
.saju-daeun-item .sd-cell.sd-ji{border-radius:0 0 4px 4px;}
.saju-daeun-item .sd-label{font-size:11px;font-weight:700;text-align:center;padding:3px 0 1px;color:#555;}
.saju-daeun-item .sd-ss{font-size:10px;font-weight:700;line-height:1;text-align:center;padding:2px 0;color:#333;}
.saju-daeun-item .sd-meta{text-align:center;padding:2px 0 3px;font-size:9px;color:#999;line-height:1.3;}
.saju-saeun-wrap{padding:0 12px 10px;display:none;}
.saju-saeun-wrap.open{display:block;}
.saju-saeun-title{font-size:11px;font-weight:700;color:#5865F2;padding:6px 4px 6px;display:flex;align-items:center;gap:4px;}
.saju-saeun-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;}
.saju-saeun-yr{display:flex;flex-direction:column;align-items:stretch;border-radius:4px;font-size:10px;cursor:pointer;overflow:hidden;border:2px solid transparent;transition:all .15s;}
.saju-saeun-yr:hover{border-color:#bbb;}
.saju-saeun-yr.now{border-color:#f5a623;}
.saju-saeun-yr.sy-selected{border-color:#5865F2;}
.saju-wolun-wrap{padding:0 12px 10px;display:none;}
.saju-wolun-wrap.open{display:block;}
.saju-wolun-title{font-size:11px;font-weight:700;color:#e08020;padding:6px 4px 6px;display:flex;align-items:center;gap:4px;}
.saju-wolun-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;}
.saju-wolun-item{display:flex;flex-direction:column;align-items:stretch;border-radius:4px;font-size:10px;cursor:default;overflow:hidden;border:2px solid transparent;transition:all .15s;}
.saju-wolun-item:hover{border-color:#bbb;}
.saju-wolun-item.wl-now{border-color:#f5a623;}
.saju-wolun-item .wl-cell{display:flex;align-items:center;justify-content:center;height:26px;font-weight:800;font-size:13px;border:1px solid rgba(0,0,0,.1);}
.saju-wolun-item .wl-cell.wl-gan{border-radius:4px 4px 0 0;border-bottom:none;}
.saju-wolun-item .wl-cell.wl-ji{border-radius:0 0 4px 4px;}
.saju-wolun-item .wl-label{font-size:11px;font-weight:700;text-align:center;padding:3px 0 1px;color:#555;}
.saju-wolun-item .wl-ss{font-size:9px;font-weight:700;line-height:1;text-align:center;padding:2px 0;color:#333;}
.saju-wolun-item .wl-meta{text-align:center;padding:2px 0 3px;font-size:8px;color:#999;line-height:1.3;}
.saju-saeun-yr .sy-cell{display:flex;align-items:center;justify-content:center;height:28px;font-weight:800;font-size:14px;border:1px solid rgba(0,0,0,.1);}
.saju-saeun-yr .sy-cell.sy-gan{border-radius:4px 4px 0 0;border-bottom:none;}
.saju-saeun-yr .sy-cell.sy-ji{border-radius:0 0 4px 4px;}
.saju-saeun-yr .sy-label{font-size:11px;font-weight:700;text-align:center;padding:3px 0 1px;color:#555;}
.saju-saeun-yr .sy-ss{font-size:9px;font-weight:700;line-height:1;text-align:center;padding:2px 0;color:#333;}
.saju-saeun-yr .sy-meta{text-align:center;padding:2px 0 3px;font-size:8px;color:#999;line-height:1.3;}
.saju-settings{padding:8px 16px 16px;font-size:11px;color:#aaa;line-height:1.6;}
.oh-wood{background:#2e8b57;} .oh-fire{background:#e04040;} .oh-earth{background:#c8960c;} .oh-metal{background:#999;} .oh-water{background:#333;}

/* 자미두수 명반 */
.zw-info{padding:10px 14px;font-size:11px;color:#666;line-height:1.7;border-bottom:1px solid #e8e8e8;}
.zw-info strong{color:#333;}
.zw-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,auto);gap:0;border:1px solid #888;margin:10px;font-size:10px;position:relative;}
.zw-cell{border:1px solid #aaa;padding:4px 3px;min-height:80px;display:flex;flex-direction:column;position:relative;overflow:hidden;background:#eef0ff;cursor:pointer;}
.zw-cell.zw-highlight-main{background:#fff8e0;box-shadow:inset 0 0 0 2px #f5a623;}
.zw-cell.zw-highlight-sub{background:#f0f8ff;box-shadow:inset 0 0 0 2px #5865F2;}
body.darkmode-on .zw-cell.zw-highlight-main{background:rgba(245,166,35,0.25) !important;box-shadow:inset 0 0 0 2px #ffb74d !important;}
body.darkmode-on .zw-cell.zw-highlight-sub{background:rgba(88,101,242,0.25) !important;box-shadow:inset 0 0 0 2px #7986CB !important;}
.zw-center{grid-column:2/4;grid-row:2/4;border:1px solid #aaa;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;background:#f0fffa;text-align:center;position:relative;z-index:5;}
.zw-lines{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10;}
.zw-center{grid-column:2/4;grid-row:2/4;border:1px solid #aaa;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;background:#f0fffa;text-align:center;}
.zw-center-title{font-size:1.4em;font-weight:800;color:#5865F2;margin-bottom:4px;}
.zw-center-sub{font-size:1em;color:#888;line-height:1.5;}
.zw-palace{font-size:0.9em;font-weight:700;color:#5865F2;margin-bottom:2px;display:flex;justify-content:space-between;align-items:center;}
.zw-palace .zw-pname{}
.zw-palace .zw-branch{color:#999;font-weight:400;}
.zw-tags{display:flex;flex-wrap:wrap;gap:1px;margin-bottom:1px;}
.zw-tag-ming{background:#f5a623;color:#fff;font-size:0.8em;padding:0 3px;border-radius:3px;font-weight:700;}
.zw-tag-shen{background:#5865F2;color:#fff;font-size:0.8em;padding:0 3px;border-radius:3px;font-weight:700;}
.zw-zoom-wrap{display:flex;align-items:center;gap:2px;margin-left:auto;margin-right:8px;flex-shrink:0;}
.zw-zoom-btn{width:24px;height:24px;border:1px solid #d0d0e0;border-radius:5px;background:#fff;color:#555;font-size:15px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;}
.zw-zoom-btn:hover{background:#f0f0ff;color:#5865F2;border-color:#5865F2;}
.zw-zoom-label{font-size:11px;font-weight:600;color:#888;min-width:32px;text-align:center;}
.zw-palace-desc{font-size:0.7em;color:#999;line-height:1.2;margin-bottom:1px;font-weight:400;}
.zw-stars{flex:1;}
.zw-star-main{font-size:1em;font-weight:700;color:#333;line-height:1.4;}
.zw-star-aux{font-size:0.9em;color:#333;line-height:1.3;}
.zw-star-misc{font-size:0.8em;color:#999;line-height:1.2;margin-top:1px;}
.zw-s14{color:#222;font-weight:700;}
.zw-sgil{color:#1a5fb4;font-weight:600;}
.zw-shung{color:#c62828;font-weight:600;}
.zw-dahan{font-size:0.8em;color:#aaa;margin-top:auto;padding-top:2px;border-top:1px dotted #e0e0e0;}
.zw-cell.zw-selected{box-shadow:inset 0 0 0 2px #5865F2;}
.zw-detail{margin:0 10px 10px;padding:10px;background:#f8f8fc;border-radius:8px;border:1px solid #e0e0e0;font-size:11px;line-height:1.6;display:none;}
.zw-detail.open{display:block;}
.zw-detail-title{font-weight:700;color:#5865F2;margin-bottom:4px;font-size:12px;}
.zw-detail-row{display:flex;gap:6px;margin-bottom:2px;}.zw-detail-label{font-weight:700;color:#666;min-width:36px;flex-shrink:0;}

/* 베딕 차트 (남인도식) */
.vedic-info{padding:10px 14px;font-size:11px;color:#666;line-height:1.7;border-bottom:1px solid #e8e8e8;}
.vedic-info strong{color:#333;}
.vedic-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:0;border:2px solid #555;margin:12px;aspect-ratio:1;background:#fff;}
.vedic-cell{border:1px solid #bbb;padding:5px 4px;display:flex;flex-direction:column;position:relative;overflow:hidden;}
.vedic-cell.vedic-lagna{background:#fff8f0;}
.vedic-center{grid-column:2/4;grid-row:2/4;border:1px solid #bbb;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;background:#fafafa;text-align:center;}
.vedic-center-title{font-size:15px;font-weight:800;color:#5865F2;margin-bottom:2px;}
.vedic-center-sub{font-size:10px;color:#888;line-height:1.5;}
.vedic-sign{font-size:9px;font-weight:700;color:#5865F2;margin-bottom:3px;display:flex;justify-content:space-between;align-items:center;}
.vedic-sign .vedic-sname{opacity:.7;}
.vedic-sign .vedic-snum{color:#999;font-weight:400;font-size:8px;}
.vedic-sign .vedic-hnum{margin-left:auto;font-size:8px;font-weight:700;color:#b08040;background:#fff8ef;padding:0 3px;border-radius:3px;line-height:1.4;}
.vedic-planets{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:1px;}
.vedic-planet{font-size:11px;font-weight:500;color:#333;line-height:1.4;}
.vedic-planet strong{font-weight:800;font-size:12px;}
.vedic-planet.vedic-retro{color:#c03030;}
.vedic-planet .vp-deg{font-size:9px;font-weight:400;color:#888;}
.vedic-planet.vedic-lagna-marker{color:#e08000;font-weight:800;font-size:12px;}
.vedic-nak-table{margin:8px 12px 12px;border:1px solid #ddd;border-radius:6px;overflow:hidden;font-size:11px;}
.vedic-nak-table table{width:100%;border-collapse:collapse;}
.vedic-nak-table th{background:#f5f5fa;padding:5px 6px;text-align:left;font-weight:700;color:#555;border-bottom:1px solid #ddd;font-size:10px;}
.vedic-nak-table td{padding:4px 6px;border-bottom:1px solid #f0f0f0;}
.vedic-nak-table tr:last-child td{border-bottom:none;}
.vedic-nak-table .vn-abbr{font-weight:700;width:28px;}
.vedic-nak-table .vn-sign{color:#5865F2;font-weight:600;}
.vedic-nak-table .vn-deg{color:#888;font-size:10px;}
.vedic-nak-table .vn-nak{color:#333;font-weight:600;}
.vedic-nak-table .vn-retro{color:#c03030;font-size:9px;font-weight:700;margin-left:2px;}
.vedic-nak-table .vn-row:hover{background:#f8f8fc;}
.vedic-nak-table .vn-row.vn-open{background:#f0f0ff;}
.vedic-nak-table .vn-detail-cell{padding:0;}
.vedic-nak-table .vn-detail-inner{padding:8px 10px 10px;background:#f8f8fc;border-top:1px dashed #ddd;}
.vedic-nak-table .vn-detail-head{font-size:12px;margin-bottom:3px;color:#333;}
.vedic-nak-table .vn-detail-head span{font-size:10px;color:#999;margin-left:4px;}
.vedic-nak-table .vn-detail-meta{font-size:10px;color:#5865F2;margin-bottom:4px;}
.vedic-nak-table .vn-detail-desc{font-size:11px;color:#555;line-height:1.6;}
.app-sep-row{padding:10px 14px;border-bottom:1px solid #f0f0f0;}
.app-sep-row:last-child{border-bottom:none;}
.app-sep-planet{font-size:13px;font-weight:700;margin-bottom:6px;display:flex;align-items:center;gap:6px;}
.app-sep-planet .asp-sym{font-family:'Morinus3',sans-serif;font-size:16px;}
.app-sep-entries{display:flex;flex-direction:column;gap:4px;}
.app-sep-entry{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;font-size:11px;}
.app-sep-entry.ase-app{background:#eef4ff;}
.app-sep-entry.ase-sep{background:#fff5ee;}
.app-sep-tag{font-size:9px;font-weight:700;padding:2px 6px;border-radius:4px;min-width:30px;text-align:center;flex-shrink:0;}
.app-sep-tag.ast-app{background:#d0e0ff;color:#2a5aaf;}
.app-sep-tag.ast-sep{background:#ffe8d6;color:#b06020;}
.app-sep-asp{font-weight:700;font-size:12px;min-width:20px;text-align:center;}
.app-sep-target{font-weight:600;min-width:36px;}
.app-sep-orb{color:#999;font-size:10px;}
.app-sep-dom{font-size:9px;font-weight:700;padding:1px 4px;border-radius:3px;margin-left:2px;}
.app-sep-dom.dom-sin{color:#c03030;background:#ffeaea;}
.app-sep-dom.dom-dex{color:#2a6abf;background:#eaf0ff;}
.app-sep-date{color:#666;margin-left:auto;font-size:10px;white-space:nowrap;}
.app-sep-entry.ase-in-orb{border-left:3px solid;font-weight:500;}
.app-sep-entry.ase-in-orb.ase-sep{border-color:#e0a050;background:#fff5ee;}
.app-sep-entry.ase-in-orb.ase-app{border-color:#4080d0;background:#eef4ff;}
.app-sep-entry.ase-in-orb .app-sep-tag{font-size:10px;}
.app-sep-entry.ase-in-orb .app-sep-orb{color:#555;font-weight:700;}
.app-sep-none{color:#ccc;font-size:10px;padding:4px 8px;}
.app-sep-entry.aspect-note-clickable{cursor:pointer;transition:filter .12s,box-shadow .12s;}
.app-sep-entry.aspect-note-clickable:hover{filter:brightness(0.97);box-shadow:0 0 0 1px rgba(42,122,191,.35);}
.aspect-md-note{flex-shrink:0;border-top:1px solid #e0e0e0;background:#f9fafb;padding:10px 14px 12px;max-height:42vh;overflow-y:auto;}
.aspect-md-note-hd{font-size:12px;font-weight:700;color:#2a7abf;margin-bottom:8px;line-height:1.35;}
.aspect-md-note-main{font-size:11px;color:#333;line-height:1.6;white-space:pre-wrap;word-break:keep-all;}
.aspect-md-note-sextile{margin-top:10px;padding:8px 10px;background:#fff8e6;border:1px solid #f0e0c0;border-radius:6px;font-size:10px;color:#7a5a00;line-height:1.5;}
.aspect-md-note-miss{font-size:11px;color:#888;}
.vedic-dasha{margin:8px 12px 12px;border:1px solid #ddd;border-radius:6px;overflow:hidden;}
.vedic-dasha-title{padding:8px 10px;font-size:12px;font-weight:700;background:#f5f5fa;border-bottom:1px solid #ddd;color:#333;display:flex;align-items:center;justify-content:space-between;}
.vedic-dasha-title .vd-sub{font-weight:400;font-size:10px;color:#888;}
.vedic-md{border-bottom:1px solid #f0f0f0;}
.vedic-md:last-child{border-bottom:none;}
.vedic-md-head{display:flex;align-items:center;padding:6px 10px;gap:8px;cursor:pointer;transition:background .15s;}
.vedic-md-head:hover{background:#f8f8fc;}
.vedic-md.vd-current>.vedic-md-head{background:linear-gradient(90deg,#eef0ff,#fff);border-left:3px solid #5865F2;padding-left:7px;}
.vedic-md-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.vedic-md-lord{font-weight:700;font-size:12px;min-width:55px;}
.vedic-md-dates{font-size:10px;color:#888;flex:1;}
.vedic-md-yrs{font-size:10px;color:#aaa;white-space:nowrap;}
.vedic-md-arrow{font-size:9px;color:#bbb;transition:transform .2s;}
.vedic-md.vd-open .vedic-md-arrow{transform:rotate(90deg);}
.vedic-ad-wrap{display:none;padding:2px 10px 6px 26px;}
.vedic-md.vd-open>.vedic-ad-wrap{display:block;}
.vedic-ad{display:flex;align-items:center;padding:3px 4px;gap:6px;font-size:10px;border-bottom:1px solid #f5f5f5;border-radius:3px;}
.vedic-ad:last-child{border-bottom:none;}
.vedic-ad.vd-ad-active{background:#eef0ff;font-weight:600;}
.vedic-ad-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0;}
.vedic-ad-lord{font-weight:600;min-width:40px;}
.vedic-ad-dates{color:#888;flex:1;}
.vd-tag{font-size:9px;font-weight:600;color:#7c6fa0;background:#f3f0fa;padding:1px 5px;border-radius:3px;white-space:nowrap;flex-shrink:0;}

.pt-chkbox{width:18px;height:18px;border-radius:4px;border:2px solid #ccc;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;background:#f0f0f0;color:transparent;font-size:11px;}
.pt-chkbox.checked{background:#5865F2;border-color:#5865F2;color:#fff;}
.pt-tab{flex:1;padding:8px 4px;border:none;background:transparent;font-size:12px;font-weight:600;color:#999;cursor:pointer;border-bottom:2px solid transparent;transition:all .15s;white-space:nowrap;}
.pt-tab:hover{color:#555;}
.pt-tab.active{color:#5865F2;border-bottom-color:#5865F2;}
.pt-group{min-height:80px;}
@media(max-width:480px){
  .pt-group{grid-template-columns:repeat(2,1fr) !important;}
  .pt-tab{font-size:11px;padding:7px 2px;}
}
@media(max-width:768px){
  .disp-grid{grid-template-columns:1fr;}
  .navbar .nb-mini span{display:none;}
  .navbar .nb-uname{display:none;}
  .fortune-trigger .fortune-caret{display:none;}
  .sidebar{display:none;position:fixed;left:0;top:0;bottom:0;z-index:1000;width:310px;box-shadow:4px 0 20px rgba(0,0,0,.25);border-right:none;}
  .sidebar.mobile-open{display:flex;}
  .sb-toggle{display:flex !important;left:0 !important;top:50%;transform:translateY(-50%);z-index:998;}
  .sb-toggle .fa-chevron-left:before{content:"\f054";}
  .sb-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:999;}
  .sb-backdrop.visible{display:block;}
  .toolbar{max-width:100vw;-webkit-overflow-scrolling:touch;order:1;}
  .navbar{order:0;}
  .main{order:3;}
  .bottombar{order:2;border-top:none;border-bottom:1px solid #d0d0d0;justify-content:center;padding:4px 10px;}
  .bottombar .ctrl span:first-child{display:none;}
  .chart-pad{justify-content:flex-start;align-items:flex-start;}
  .topbar{flex-wrap:wrap;gap:6px;}
  .rsidebar{position:fixed !important;right:0;top:0;bottom:0;z-index:1000;max-width:90vw;box-shadow:-4px 0 20px rgba(0,0,0,.25);border-left:none;}
  .rsidebar.open{display:flex;}
  .mobile-sb-btn{display:flex !important;}
  .edu-sidepanel{width:108px;}
  .edu-planet-btn .epb-glyph{font-size:22px;}
  .edu-planet-btn .epb-name{font-size:9px;}
  .chart-modal{padding:20px 18px;}
  .cm-row input[style*="width:100px"]{width:80px !important;}
  .cm-row input[style*="width:50px"]{width:44px !important;}
  /* 모바일 솔라리턴 split: 한 번에 하나만 표시 */
  .chart-area.split{flex-direction:column;}
  .chart-area.split .chart-half+.chart-half{border-left:none;border-top:none;}
  .chart-area.split .chart-half{display:none !important;}
  .chart-area.split .chart-half.mobile-active{display:flex !important;flex:1;overflow:hidden;}
  .chart-area.split .chart-half .chart-half-label{display:none !important;}
  .chart-half-topbar-natal{display:none !important;}
  #chartHalfRight .chart-half-topbar{display:block !important;padding:6px 8px 4px;}
  #chartHalfRight .chart-half-topbar-inner{flex-wrap:wrap;gap:4px 8px;}
  .mobile-sr-tabs{display:flex !important;}
}
.mobile-sr-tabs{display:none;position:sticky;top:0;z-index:30;background:#f5f5f5;border-bottom:1px solid #d0d0d0;}
.mobile-sr-tab{flex:1;padding:9px 0;text-align:center;font-size:13px;font-weight:700;color:#888;background:transparent;border:none;cursor:pointer;border-bottom:2px solid transparent;transition:all .15s;}
.mobile-sr-tab.active{color:#5865F2;border-bottom-color:#5865F2;background:#fff;}

/* 다크모드: 하우스 경계선 흰색 */
body.darkmode-on .hl{background:rgba(255,255,255,.5) !important;}
body.darkmode-on .hl.ax-asc,
body.darkmode-on .hl.ax-mc{background:rgba(255,255,255,.9) !important;}
body.darkmode-on .axis-full .ax-line{background:rgba(255,255,255,.9) !important;}
body.darkmode-on .axis-full.mc .ax-line{background:rgba(255,255,255,.8) !important;}
body.darkmode-on .ax-arrow.left{border-color:transparent #fff transparent transparent !important;}
body.darkmode-on .ax-arrow.right{border-color:transparent transparent transparent #fff !important;}
body.darkmode-on .ax-arrow.up{border-color:transparent transparent #fff transparent !important;}
body.darkmode-on .ax-arrow.down{border-color:#fff transparent transparent transparent !important;}

/* 다크모드: 오행 셀 원본 색상 유지 (특히 금) */
body.darkmode-on [data-ohang="금"]{background:#f2f2f2 !important;color:#222 !important;}
body.darkmode-on [data-ohang="목"]{background:#32cd32 !important;color:#fff !important;}
body.darkmode-on [data-ohang="화"]{background:#e84d4d !important;color:#fff !important;}
body.darkmode-on [data-ohang="토"]{background:#ffe600 !important;color:#222 !important;}
body.darkmode-on [data-ohang="수"]{background:#222 !important;color:#fff !important;}

/* ===== 점성술 달력 ===== */
.acal-overlay{display:none;position:fixed;inset:0;z-index:9999;background:#fff;overflow:auto;color:#333;}
.acal-overlay.visible{display:flex;flex-direction:column;}
.acal-container{width:100%;max-width:700px;margin:0 auto;padding:12px 16px 24px;display:flex;flex-direction:column;flex:1;box-sizing:border-box;}
.acal-header{display:flex;align-items:center;justify-content:space-between;padding:8px 0 12px;gap:8px;}
.acal-header h2{font-size:20px;font-weight:700;color:#333;margin:0;white-space:nowrap;}
.acal-nav{display:flex;align-items:center;gap:12px;}
.acal-nav button{background:none;border:none;color:#888;font-size:18px;cursor:pointer;padding:6px 10px;border-radius:6px;transition:all .15s;}
.acal-nav button:hover{color:#333;background:rgba(0,0,0,.06);}
.acal-close{background:none;border:none;color:#888;font-size:20px;cursor:pointer;padding:6px 10px;border-radius:6px;}
.acal-close:hover{color:#333;}
.acal-tz-wrap{display:flex;gap:2px;background:#f0f0f5;border-radius:6px;padding:2px;}
.acal-tz-btn{background:none;border:none;color:#999;font-size:11px;font-weight:700;padding:4px 8px;border-radius:4px;cursor:pointer;transition:all .15s;}
.acal-tz-btn.active{background:#5865F2;color:#fff;}
.acal-tz-btn:hover{color:#555;}
.acal-settings-btn{background:none;border:none;color:#888;font-size:16px;cursor:pointer;padding:6px 10px;border-radius:6px;}
.acal-settings-btn:hover{color:#333;}
.acal-settings{padding:8px 0 12px;border-bottom:1px solid #e0e0e0;margin-bottom:8px;}
.acal-planet-grid{display:flex;flex-wrap:wrap;gap:6px;}
.acal-planet-opt{display:flex;align-items:center;gap:5px;padding:6px 10px;border-radius:8px;background:#f5f5f8;cursor:pointer;font-size:12px;color:#555;transition:all .15s;user-select:none;}
.acal-planet-opt:hover{background:#eeeef5;}
.acal-planet-opt input{display:none;}
.acal-planet-opt input[type="radio"]:checked~.acal-planet-glyph{opacity:1;}
.acal-planet-opt input[type="radio"]:not(:checked)~.acal-planet-glyph{opacity:.3;}
.acal-planet-opt input[type="radio"]:not(:checked)~.acal-planet-name{opacity:.4;}
.acal-planet-opt input:checked~.acal-planet-glyph{opacity:1;}
.acal-planet-opt input:not(:checked)~.acal-planet-glyph{opacity:.3;}
.acal-planet-opt input:not(:checked)~.acal-planet-name{opacity:.4;}
.acal-planet-glyph{font-size:16px;transition:opacity .15s;}
.acal-planet-name{font-weight:600;}
.acal-extra-opts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid #eee;}
.acal-body{flex:1;display:flex;flex-direction:column;}
.acal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:13px;font-weight:700;color:#888;padding:8px 0;border-bottom:1px solid #e8e8e8;}
.acal-weekdays .acal-sat{color:#5B9BD5;}
.acal-weekdays .acal-sun{color:#e05555;}
.acal-grid{display:grid;grid-template-columns:repeat(7,1fr);flex:1;}
.acal-cell{border:1px solid #eee;padding:4px;min-height:80px;display:flex;flex-direction:column;position:relative;transition:background .1s;overflow:hidden;}
.acal-cell:hover{background:#fafafa;}
.acal-cell.acal-today{background:#fffbe6;box-shadow:inset 0 0 0 2px rgba(245,166,35,.4);}
.acal-cell.acal-empty{background:transparent;border-color:transparent;}
.acal-day-num{font-size:14px;font-weight:700;color:#333;text-align:right;padding:2px 4px 0 0;}
.acal-cell.acal-sun-day .acal-day-num{color:#e05555;}
.acal-cell.acal-sat-day .acal-day-num{color:#5B9BD5;}
.acal-planets{display:flex;flex-direction:column;gap:1px;padding:2px 2px 0;flex:1;}
.acal-p{display:flex;align-items:center;gap:1px;font-size:10px;line-height:1.3;flex-wrap:wrap;}
.acal-p-glyph{font-family:'Morinus3',sans-serif;font-size:13px;font-weight:400;text-align:center;flex-shrink:0;}
.acal-p-sign{font-size:11px;flex-shrink:0;}
.acal-p-deg{font-size:9px;color:#aaa;}
.acal-p-retro{color:#e05555;font-size:8px;font-weight:700;}
.acal-p-arrow{font-size:8px;color:#888;display:none;}
.acal-simple .acal-p-arrow{display:inline;}
.acal-ingress{position:absolute;bottom:0;left:0;right:0;height:4px;}
.acal-moon-phase{position:absolute;top:2px;left:3px;line-height:1;}
.acal-simple .acal-p{gap:2px;}
.acal-simple .acal-p-glyph{font-size:15px;}
.acal-simple .acal-p-sign{font-size:14px;}
.acal-simple .acal-p-deg{display:none;}
.acal-simple .acal-p .acal-p-retro{display:none;}
.acal-simple .acal-p-merc-retro .acal-p-retro{display:inline;}
.acal-merc-retro{background:rgba(147,112,219,.1);}
.acal-loading{display:flex;align-items:center;justify-content:center;padding:40px;color:#888;font-size:14px;gap:8px;}
@media(max-width:600px){
  .acal-container{padding:4px 2px 12px;}
  .acal-header{padding:6px 4px 8px;}
  .acal-header h2{font-size:15px;}
  .acal-nav button{padding:4px 6px;font-size:16px;}
  .acal-cell{min-height:52px;padding:1px 2px;border-width:0.5px;}
  .acal-day-num{font-size:11px;padding:1px 2px 0 0;}
  .acal-weekdays{font-size:11px;padding:6px 0;}
  .acal-p{font-size:8px;gap:1px;}
  .acal-p-glyph{font-size:10px;}
  .acal-p-sign{font-size:9px;}
  .acal-p-deg{font-size:7px;}
  .acal-p-retro{font-size:7px;}
  .acal-p-arrow{font-size:7px;}
  .acal-planets{gap:0;padding:1px 1px 0;}
  .acal-moon-phase{top:1px;left:1px;}
  .acal-planet-grid{gap:4px;}
  .acal-planet-opt{padding:5px 6px;font-size:11px;}
  .acal-planet-glyph{font-size:14px;}
  .acal-settings{padding:6px 0 8px;}
  .acal-simple .acal-p-glyph{font-size:12px;}
  .acal-simple .acal-p-sign{font-size:11px;}
}

/* 공유 코드 자릿수 표시 */
.share-digit{display:inline-flex;align-items:center;justify-content:center;width:38px;height:46px;border-radius:12px;font-size:22px;font-weight:700;color:#5865F2;background:#ebebeb;transition:all .3s;letter-spacing:0;}
.share-digit.filled{background:#eef0ff;box-shadow:0 0 0 2px #5865F2;animation:digitPop .3s ease;}
@keyframes digitPop{0%{transform:scale(0.7);}60%{transform:scale(1.1);}100%{transform:scale(1);}}
.share-code-input{width:36px;height:44px;border:2px solid #ddd;border-radius:10px;font-size:20px;font-weight:700;color:#333;text-align:center;background:#f8f8fb;outline:none;transition:border-color .15s;}
.share-code-input:focus{border-color:#5865F2;background:#fff;box-shadow:0 0 0 3px rgba(88,101,242,.15);}
.share-code-prefix{display:inline-flex;align-items:center;justify-content:center;width:36px;height:44px;border:2px solid #5865F2;border-radius:10px;font-size:20px;font-weight:700;color:#5865F2;background:#eef0ff;letter-spacing:0;margin-right:4px;}
