:root{--bg:#f4f2ec;--surface:#fff;--surface-2:#f8f6f1;--text:#1f2328;--muted:#6c7078;--border:#e2ddd2;--accent:#2f4a7c;--accent-soft:#e6ecf7;--accent-ink:#fff;--gold:#a47a2c;--danger:#c0392b;--ok:#2e7d32;--ncc-solar:#1838c8;--ncc-lunar:#8b3a12;--ncc-gz:#d6281e;--radius:14px;--shadow:0 1px 2px #14141e0f, 0 6px 20px #14141e0f;--read-scale:1;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#14161b;--surface:#1d2027;--surface-2:#242831;--text:#e8e9ec;--muted:#9aa0aa;--border:#30343e;--accent:#8fb0ee;--accent-soft:#263350;--accent-ink:#10131a;--gold:#d6b26a;--danger:#ef6b5e;--ok:#6cc070;--ncc-solar:#8ea4ff;--ncc-lunar:#e3a27c;--ncc-gz:#ff7b6e;--shadow:0 1px 2px #0000004d, 0 6px 20px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin:0;font:16px/1.5 -apple-system,BlinkMacSystemFont,PingFang TC,Microsoft JhengHei,Noto Sans TC,Segoe UI,sans-serif}input,textarea,[contenteditable=true]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}img,svg{-webkit-user-drag:none}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3{margin:0;line-height:1.25}.app{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);height:100%;display:grid}.main{-webkit-overflow-scrolling:touch;min-width:0;padding-top:var(--safe-top);overflow:hidden auto}.page{max-width:780px;margin:0 auto;padding:16px 16px 40px}.page.wide{max-width:1240px}.tabbar{background:var(--surface);border-top:1px solid var(--border);padding-bottom:var(--safe-bottom);grid-template-columns:repeat(3,1fr);display:grid}.tabbar a{color:var(--muted);flex-direction:column;align-items:center;gap:2px;padding:8px 4px 7px;font-size:12px;display:flex}.tabbar a .ico{font-size:20px;font-weight:600;line-height:1}.tabbar a.on{color:var(--accent);font-weight:600}.brand{display:none}@media (min-width:900px){.app{grid-template-rows:minmax(0,1fr);grid-template-columns:208px minmax(0,1fr)}.tabbar{border-top:0;border-right:1px solid var(--border);grid-area:1/1;grid-template-columns:1fr;align-content:start;gap:4px;padding:18px 12px}.tabbar a{border-radius:10px;flex-direction:row;gap:12px;padding:10px 12px;font-size:15px}.tabbar a.on{background:var(--accent-soft)}.brand{letter-spacing:.08em;align-items:center;gap:10px;padding:4px 12px 16px;font-size:18px;font-weight:700;display:flex}.brand .seal{color:#f1dfb4;background:#1c2436;border-radius:8px;place-items:center;width:30px;height:30px;font-size:17px;display:grid}.main{grid-area:1/2}}.immersive .tabbar,.immersive .chart-chrome{display:none}.topbar{align-items:center;gap:8px;min-height:40px;margin-bottom:14px;display:flex}.topbar h1{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:22px;overflow:hidden}.topbar .sub{color:var(--muted);margin-left:8px;font-size:13px;font-weight:400}.btn{border:1px solid var(--border);background:var(--surface);white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:6px;min-height:38px;padding:8px 14px;font-size:15px;display:inline-flex}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.btn.ghost{background:0 0;border-color:#0000}.btn.danger{color:var(--danger)}.btn.small{border-radius:8px;min-height:30px;padding:4px 10px;font-size:13px}.btn:disabled{opacity:.45;cursor:default}.icon-btn{background:0 0;border:0;border-radius:10px;place-items:center;width:38px;height:38px;font-size:22px;line-height:1;display:grid}.icon-btn:hover{background:var(--surface-2)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card+.card{margin-top:12px}.card h2{margin-bottom:10px;font-size:16px}.muted{color:var(--muted)}.small{font-size:13px}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spacer{flex:1}.error{color:var(--danger);font-size:14px}.notice{background:var(--accent-soft);border-radius:10px;padding:10px 12px;font-size:14px}.seg{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.seg button{background:0 0;border:0;border-radius:999px;min-height:32px;padding:6px 16px;font-size:15px}.seg button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}.seg.block{display:flex}.seg.block button{white-space:nowrap;flex:1;padding-left:4px;padding-right:4px}.seg{max-width:100%}.chips{scrollbar-width:none;gap:8px;padding:2px 0 6px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{border:1px solid var(--border);background:var(--surface);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;min-height:32px;padding:5px 14px;font-size:14px;display:inline-flex}.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.dot{border-radius:50%;width:8px;height:8px;display:inline-block}.field{gap:6px;margin-bottom:14px;display:grid}.field>label,.label{color:var(--muted);font-size:13px;font-weight:600}.input,select.input,textarea.input{border:1px solid var(--border);background:var(--surface);border-radius:10px;outline:none;width:100%;min-height:40px;padding:9px 12px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input.num{text-align:center;font-variant-numeric:tabular-nums}.grid2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.grid3{grid-template-columns:1.3fr 1fr 1fr;gap:10px;display:grid}.check{align-items:center;gap:8px;font-size:15px;display:inline-flex}.check input{width:18px;height:18px;accent-color:var(--accent)}.suggest{border:1px solid var(--border);background:var(--surface);border-radius:10px;overflow:hidden}.suggest button{text-align:left;border:0;border-bottom:1px solid var(--border);background:0 0;width:100%;padding:9px 12px;display:block}.suggest button:last-child{border-bottom:0}.suggest button:hover{background:var(--surface-2)}.preview{background:var(--surface-2);border:1px dashed var(--border);border-radius:12px;padding:12px}.settings-tabs{margin-bottom:10px}.region-note{background:var(--surface-2);border-left:4px solid var(--border);border-radius:10px;margin:0 0 12px;padding:8px 12px;font-size:14px}.region-note-ziwei,.region-ziwei .card{border-left:4px solid #8a5cc2}.region-note-bazi,.region-bazi .card{border-left:4px solid #c08a2e}.region-note-general,.region-general .card{border-left:4px solid var(--accent)}.summary-line{background:var(--surface-2);border:1px dashed var(--border);border-radius:12px;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:12px 0;padding:10px 14px;font-size:14px;display:flex}.summary-line.bad{color:var(--danger);border-color:var(--danger)}.summary-line .pillars-inline{letter-spacing:.08em;margin-left:auto;font-size:18px}details.more>summary{cursor:pointer;font-weight:600;list-style:none}details.more>summary::-webkit-details-marker{display:none}details.more>summary:before{content:"▸ ";color:var(--muted)}details.more[open]>summary:before{content:"▾ "}.keypad{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 12px;margin-bottom:12px;display:grid}.keypad .kp-buf{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:10px;min-height:38px;padding:4px 12px;font-size:14px;display:flex}.keypad .kp-buf b{letter-spacing:.1em;font-variant-numeric:tabular-nums;color:var(--accent);font-size:22px}.keypad .kp-digits{grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:6px;display:grid}.keypad button{border:1px solid var(--border);background:var(--surface);font-variant-numeric:tabular-nums;border-radius:10px;min-height:48px;font-size:20px}.keypad button:hover{border-color:var(--accent)}.keypad button:active{background:var(--accent-soft)}.keypad button:disabled{opacity:.4;cursor:default}.keypad .kp-clear{color:var(--muted);grid-column:span 2;font-size:16px}.keypad .kp-fields{align-content:start;gap:6px;display:grid}.keypad .kp-fields button{text-align:left;align-items:center;gap:8px;min-width:0;padding:0 12px;font-size:15px;display:flex}.keypad .kp-fields button span{color:var(--muted);white-space:nowrap;min-width:4.2em}.keypad .kp-fields button b{font-variant-numeric:tabular-nums;font-size:20px}.keypad .kp-fields button small{color:var(--danger);white-space:nowrap;text-overflow:ellipsis;margin-left:auto;font-size:13px;overflow:hidden}.pillars{text-align:center;grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.pillars .p{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:6px 0}.pillars .p .k{color:var(--muted);font-size:12px}.pillars .p .gz{letter-spacing:.05em;font-size:24px;font-weight:700;line-height:1.2}.ncc-solar{color:var(--ncc-solar);font-weight:700}.ncc-lunar{color:var(--ncc-lunar);font-weight:700}.ncc-gz{color:var(--ncc-gz);font-weight:700}.list{gap:8px;display:grid}.item{background:var(--surface);border:1px solid var(--border);text-align:left;border-radius:12px;align-items:center;gap:12px;width:100%;padding:10px 12px;display:flex}.item:hover{border-color:var(--accent)}.item .avatar{background:var(--accent-soft);width:40px;height:40px;color:var(--accent);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid;overflow:hidden}.item .avatar img{object-fit:cover;width:100%;height:100%}.item .body{flex:1;min-width:0}.item .name{align-items:center;gap:6px;font-size:16px;font-weight:600;display:flex}.item .meta{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.item .tags{flex-wrap:wrap;gap:4px;display:flex}.tag{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:1px 6px;font-size:11px}.fab{right:20px;bottom:calc(76px + var(--safe-bottom));background:var(--accent);width:56px;height:56px;color:var(--accent-ink);z-index:5;border:0;border-radius:50%;font-size:30px;position:fixed;box-shadow:0 6px 18px #00000040}@media (min-width:900px){.fab{bottom:28px;right:32px}}.empty{text-align:center;color:var(--muted);padding:40px 12px}.chart-layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:14px;display:grid}.panel{min-width:0}.panel .card{overflow-x:auto}.chart-main{width:100%;min-width:0;max-width:760px;margin:0 auto}.immersive .chart-main{max-width:none}.chart-box{box-shadow:var(--shadow);border:1px solid var(--border);background:#fff;border-radius:10px;width:100%;max-width:760px;margin:0 auto;overflow:hidden}.immersive .chart-box{border-radius:0;max-width:min(100vw,75.7vh - 6.056px)}.immersive .page{max-width:none;padding:0}@media (min-width:1180px){.chart-layout.split{grid-template-columns:minmax(520px,700px) minmax(300px,1fr)}.chart-layout.split .chart-main{margin:0}}.panel h3{margin-bottom:8px;font-size:15px}.kv{grid-template-columns:auto 1fr;gap:4px 12px;font-size:14px;display:grid}.kv dt{color:var(--muted)}.kv dd{margin:0}table.t{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:14px}table.t th,table.t td{border:1px solid var(--border);text-align:center;padding:4px 6px}table.t th{background:var(--surface-2);white-space:nowrap;font-weight:600}.chart-bar{grid-template-columns:1fr auto 1fr;margin-bottom:8px;display:grid}.chart-bar>:first-child{justify-self:start}.chart-bar>.menu-wrap{justify-self:end}.menu-wrap{flex:none;position:relative}.menu{z-index:20;background:var(--surface);border:1px solid var(--border);width:min(280px,100vw - 24px);max-height:calc(100dvh - 120px);box-shadow:var(--shadow);border-radius:12px;padding:6px;display:grid;position:absolute;top:calc(100% + 4px);right:0;overflow-y:auto}.menu-head{overflow-wrap:anywhere;padding:6px 12px 8px;font-size:16px;font-weight:600}.menu-head small{color:var(--muted);font-size:12px;font-weight:400;display:block}.menu-views{border-top:1px solid var(--border);flex-wrap:wrap;gap:6px;padding:8px 6px;display:flex}.menu-group{border-top:1px solid var(--border);margin-top:4px;padding-top:4px;display:grid}.menu-group button{text-align:left;background:0 0;border:0;border-radius:8px;padding:9px 12px;font-size:15px}.menu-group button:hover{background:var(--surface-2)}.menu-group button small{color:var(--muted);font-size:12px;display:block}@media (max-width:699px){.chart-page{padding-top:8px}.app:not(.immersive) .chart-page .chart-box{border-radius:4px;width:calc(100% + 24px);max-width:none;margin:0 -12px}}.toast{left:50%;bottom:calc(24px + var(--safe-bottom));z-index:30;color:#fff;pointer-events:none;background:#1c2436e0;border-radius:999px;padding:8px 16px;font-size:14px;animation:3s forwards toast-fade;position:fixed;transform:translate(-50%)}@keyframes toast-fade{0%,80%{opacity:1}to{opacity:0}}@media (max-width:480px){table.t{font-size:12.5px}table.t th,table.t td{padding:3px 2px}.topbar h1{font-size:20px}.topbar .sub{margin-left:0;font-size:12px;display:block}}.star-list{flex-wrap:wrap;gap:6px;display:flex}.star{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:2px 8px;font-size:14px}.star.major{border-color:var(--accent);color:var(--accent);font-weight:600}.star small{color:var(--muted);margin-left:3px}.mut{text-align:center;color:#fff;background:#8a8a8a;border-radius:5px;min-width:20px;margin-left:4px;padding:0 4px;font-size:12px;display:inline-block}.chapters{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.chapter{border:1px solid var(--border);background:var(--surface);text-align:left;border-radius:12px;padding:14px 12px;font-size:16px;font-weight:600}.chapter:hover{border-color:var(--accent)}.chapter small{color:var(--muted);margin-top:2px;font-size:12px;font-weight:400;display:block}.chapter{position:relative}.chapter .tick{border:1.5px solid var(--border);width:22px;height:22px;color:var(--accent-ink);border-radius:6px;place-items:center;font-size:14px;display:grid;position:absolute;top:10px;right:10px}.chapter.picked{border-color:var(--accent);background:var(--accent-soft)}.chapter.picked .tick{background:var(--accent);border-color:var(--accent)}.reading-h{font-size:calc(18px * var(--read-scale));color:var(--accent);margin:18px 0 8px}.reading section:first-child .reading-h{margin-top:0}.reading{font-size:calc(17px * var(--read-scale));line-height:1.85}.reading p{text-indent:2em;text-align:justify;margin:0 0 .7em}.basis{font-size:calc(13px * var(--read-scale));color:var(--gold);margin:0 0 4px;font-weight:600}.basis b{color:var(--danger);font-weight:600}.disclaimer{color:var(--danger);text-align:center;margin-top:18px;font-size:14px}.lock{place-items:center;height:100%;padding:24px;display:grid}.lock .card{text-align:center;width:min(360px,100%)}.report{color:#111;background:#fff}.report .sheet{max-width:800px;margin:0 auto;padding:28px 28px 40px}.report h1{font-size:28px}.report h2{border-bottom:2px solid #111;margin:26px 0 12px;padding-bottom:4px;font-size:20px}.report .cover{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:80vh;display:flex}.report .chart-print{border:1px solid #bbb;max-width:640px;margin:0 auto}.report p{text-indent:2em;text-align:justify;margin:0 0 .6em;line-height:1.8}@media print{@page{size:A4;margin:14mm 12mm 16mm;@bottom-center{content:counter(page) " / " counter(pages);font-size:9pt;color:#666}}@page:first{@bottom-center{content:""}}body{background:#fff}.app{height:auto;display:block}.main{overflow:visible}.tabbar,.no-print{display:none!important}.report .sheet{max-width:none;padding:0}.report .cover{page-break-after:always;min-height:250mm}.report .break{page-break-before:always}.report h2{page-break-after:avoid}.report .chart-print{page-break-inside:avoid}}
