:root{--paper:#f6f1e7;--paper-2:#fffdf8;--ink:#23201c;--ink-2:#57504a;--ink-3:#8b817a;--line:#d9cfc0;--line-strong:#bfae97;--accent:#a83a2c;--accent-soft:#f3e2dd;--soul:#f7ecd2;--triangle:#f4f0e4;--lu:#b3261e;--quan:#6a3d9a;--ke:#1f6f8b;--ji:#4a4a4a;--radius:10px;font-synthesis-weight:none}*{box-sizing:border-box}html,body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-family:Songti SC,STSong,Noto Serif SC,Source Han Serif SC,Songti TC,SimSun,Georgia,serif;font-size:15px;line-height:1.6}button,input,select{font-family:inherit;font-size:inherit;color:inherit}.app{max-width:1180px;margin:0 auto;padding:28px 20px 56px}.brand{align-items:center;gap:16px;display:flex}.brand-mark{color:var(--ink-2);flex:none}.brand-text{min-width:0}.app-header h1{letter-spacing:.08em;margin:0 0 6px;font-size:26px;font-weight:600}.subtitle{color:var(--ink-3);letter-spacing:.04em;margin:0;font-size:13px}.panel{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius);margin-top:18px;padding:18px}.form-panel{flex-direction:column;gap:14px;display:flex}.field-row{flex-wrap:wrap;align-items:flex-end;gap:14px 18px;display:flex}.field{flex-direction:column;gap:5px;min-width:96px;display:flex}.field>span{color:var(--ink-3);letter-spacing:.06em;font-size:12px}.field.grow{flex:240px}.field.checkbox{flex-direction:row;align-items:center;gap:7px;padding-bottom:8px}.field.checkbox span{color:var(--ink-2);font-size:13px}input[type=number],input[type=time],select{border:1px solid var(--line-strong);background:#fff;border-radius:7px;outline:none;min-width:84px;padding:7px 9px}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.inline{flex-wrap:wrap;gap:8px;display:flex}.inline select{flex:160px}.inline input{flex:0 140px}.segmented{border:1px solid var(--line-strong);background:#fff;border-radius:7px;display:inline-flex;overflow:hidden}.segmented button{cursor:pointer;color:var(--ink-2);border:0;border-right:1px solid var(--line);background:0 0;padding:7px 14px}.segmented button:last-child{border-right:0}.segmented button.on{background:var(--accent);color:#fff}.advanced{border-top:1px dashed var(--line);padding-top:12px}.advanced summary{cursor:pointer;color:var(--ink-2);letter-spacing:.04em;font-size:13px}.advanced .field-row{margin-top:12px}.actions{align-items:center;gap:14px;display:flex}button.primary{background:var(--accent);color:#fff;letter-spacing:.16em;cursor:pointer;border:0;border-radius:8px;padding:10px 30px;font-size:15px}button.primary:disabled{opacity:.55;cursor:progress}.error{color:var(--accent);font-size:13px}.warnings h2{letter-spacing:.08em;color:var(--ink-2);margin:0 0 8px;font-size:14px}.warnings ul{color:var(--ink-2);margin:0 0 8px;padding-left:20px;font-size:13px}.warnings li+li{margin-top:4px}.muted{color:var(--ink-3)}.small{font-size:12px}.board-wrap{grid-template-columns:minmax(0,1fr) 264px;align-items:start;gap:18px;display:grid}.board{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--line);grid-template-rows:repeat(4,146px);grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.palace{background:var(--paper-2);text-align:left;cursor:pointer;border:0;flex-direction:column;gap:4px;padding:8px 9px 6px;transition:background .15s;display:flex;position:relative}.palace:hover{background:#fffaf0}.palace.is-triangle{background:var(--triangle)}.palace.is-soul{background:var(--soul)}.palace.is-selected{background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--accent)}.palace-head{align-items:baseline;gap:6px;font-size:13px;display:flex}.palace-name{letter-spacing:.06em;font-weight:600}.body-flag{border:1px solid var(--accent);color:var(--accent);border-radius:3px;padding:0 4px;font-size:10px;line-height:1.4}.palace-decadal{color:var(--ink-3);margin-left:auto;font-size:11px}.palace-stars{flex-direction:column;flex:1;justify-content:center;gap:2px;display:flex;overflow:hidden}.star-row{flex-wrap:wrap;gap:3px 7px;font-size:13.5px;line-height:1.45;display:flex}.star-row-minor{color:var(--ink-2);font-size:11.5px}.star-empty{color:var(--ink-3);font-size:11.5px}.star{white-space:nowrap;align-items:baseline;gap:1px;display:inline-flex}.star-major .star-name{font-weight:600}.star-malefic .star-name{color:#7a3b3b}.star-lucky .star-name{color:#2f5d50}.star-brightness{color:var(--ink-3);margin-left:1px;font-size:10px}.mutagen{transform-origin:0;background:#fff;border:1px solid;border-radius:2px;padding:0 2px;font-size:10px;transform:scale(.92)}.mutagen-lu{color:var(--lu)}.mutagen-quan{color:var(--quan)}.mutagen-ke{color:var(--ke)}.mutagen-ji{color:var(--ji);background:#f0eeea}.palace-foot{color:var(--ink-3);letter-spacing:.08em;font-size:11.5px}.board-center{background:var(--paper);text-align:center;flex-direction:column;grid-area:2/2/4/4;justify-content:center;align-items:center;gap:10px;padding:14px;display:flex}.center-title{letter-spacing:.3em;color:var(--accent);font-size:16px}.center-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;width:100%;margin:0;font-size:12px;display:grid}.center-facts>div{justify-content:center;gap:6px;display:flex}.center-facts dt{color:var(--ink-3)}.center-facts dd{color:var(--ink);margin:0}.center-sign{color:var(--ink-3);letter-spacing:.04em;font-size:10.5px}.detail{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper-2);min-height:160px;padding:14px}.detail h3{letter-spacing:.06em;margin:0 0 4px;font-size:15px}.detail-decadal{color:var(--ink-3);margin:0 0 10px;font-size:12px}.detail-stars{flex-direction:column;gap:5px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.detail-stars li{border-bottom:1px dotted var(--line);justify-content:space-between;gap:8px;padding-bottom:4px;display:flex}.detail-star-name{font-weight:600}.detail-star-meta{color:var(--ink-3);font-size:12px}.detail-hint p{color:var(--ink-2);margin:0 0 6px;font-size:13px}.detail-sihua{border-top:1px dashed var(--line);margin-top:12px;padding-top:10px}.detail-sihua h4{letter-spacing:.1em;color:var(--ink-2);justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 8px;font-size:12px;display:flex}.detail-sihua ul{flex-direction:column;gap:5px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.detail-sihua li{align-items:baseline;gap:8px;display:flex}.detail-sihua li .detail-star-meta{margin-left:auto}.layer-tag{text-align:center;width:16px;height:16px;color:var(--ink-3);background:#f1ece1;border-radius:3px;flex:none;font-size:10px;line-height:16px}.detail-reading{border-top:1px dashed var(--line);margin-top:12px;padding-top:10px}.detail-reading h4{letter-spacing:.1em;color:var(--ink-2);justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 8px;font-size:12px;display:flex}.detail-count{letter-spacing:.02em;color:var(--ink-3);font-size:10.5px;font-weight:400}.detail-reading ul{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex-direction:column;gap:9px;max-height:420px;margin:0;padding:0 2px 0 0;list-style:none;display:flex;overflow-y:auto}.detail-reading ul::-webkit-scrollbar{width:6px}.detail-reading ul::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:3px}.detail-reading li{border-left:2px solid var(--accent-soft);padding-left:8px}.detail-reading-head{align-items:center;gap:6px;margin-bottom:3px;display:flex}.detail-dim{letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border-radius:3px;padding:1px 5px;font-size:10.5px}.tag-cross{color:var(--ink-3);border:1px solid var(--line);background:#eee8db;border-radius:4px;padding:0 4px;font-size:10px}.tag-overlay{color:#6b4a8a;background:#efe6f5;border:1px solid #d8c6e6;border-radius:4px;padding:0 4px;font-size:10px}.detail-reading-text{color:var(--ink);margin:0;font-size:12.5px;line-height:1.65}.detail-rule{letter-spacing:.02em;color:var(--ink-3);word-break:break-all;margin-top:3px;font-size:10px;display:block}.detail-empty{margin:10px 0 0;line-height:1.6}.disclaimer{color:var(--ink-3);border-left:3px solid var(--line-strong);background:#fbf7ef;margin-top:18px;padding:10px 14px;font-size:12px}.app-footer{color:var(--ink-3);border-top:1px solid var(--line);gap:18px;margin-top:26px;padding-top:12px;font-size:11.5px;display:flex}.reading{margin-top:18px}.reading-head{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.reading-head h2{letter-spacing:.06em;margin:0;font-size:17px;font-weight:600}.pattern-row{border:1px dashed var(--line-strong);border-radius:var(--radius);background:#fbf7ef;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding:9px 12px;display:flex}.pattern-label{letter-spacing:.1em;color:var(--ink-3);font-size:11.5px}.pattern-chip{color:#7a2f22;background:var(--accent-soft);border-radius:999px;padding:2px 10px;font-size:12.5px}.pattern-chip.is-palace{color:var(--ink-2);border:1px solid var(--line);background:#eee8db}.reading-warnings{color:var(--ink-2);border-radius:0 var(--radius) var(--radius) 0;background:#fdf6e9;border-left:3px solid #d9a441;margin:0 0 14px;padding:10px 14px 10px 30px;font-size:12px}.reading-warnings li{margin:2px 0}.dim-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));align-items:start;gap:14px;display:grid}.dim-card{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:8px;padding:14px 16px 12px;display:flex}.dim-card.is-sensitive{background:#fffdf6;border-color:#d8c6a8}.dim-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.dim-head h3{letter-spacing:.06em;align-items:center;gap:8px;margin:0;font-size:14.5px;font-weight:600;display:flex}.tag{letter-spacing:.04em;border-radius:4px;padding:1px 6px;font-size:10.5px;font-weight:400}.tag-sensitive{color:#8a5a12;background:#f8eccd;border:1px solid #e3cd9a}.dim-status{white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:11px}.dim-status.status-strong{color:#1f5e3a;background:#e4f0e6}.dim-status.status-moderate{color:#7a5a12;background:#f7eed6}.dim-status.status-weak,.dim-status.status-insufficient{color:var(--ink-3);background:#efe9df}.dim-meter{flex-direction:column;gap:4px;display:flex}.dim-meter-track{background:#ece4d6;border-radius:999px;height:4px;overflow:hidden}.dim-meter-fill{background:linear-gradient(90deg, #c98b6b, var(--accent));border-radius:999px;height:100%}.dim-meter-text{color:var(--ink-3);letter-spacing:.02em;font-size:10.5px;display:block}.dim-summary{color:var(--ink);margin:0;font-size:13.5px;line-height:1.8}.dim-note{color:var(--ink-3);margin:0;font-size:12.5px;line-height:1.7}.finding-list{border-top:1px solid var(--line);flex-direction:column;gap:9px;margin:4px 0 0;padding:10px 0 0;list-style:none;display:flex}.finding{color:var(--ink-2);font-size:12.5px;line-height:1.75}.finding-text:before{content:"·";color:var(--line-strong);margin-right:6px}.finding-detail{color:var(--ink-3);margin:2px 0 0 13px;font-size:12px}.finding-caveats{color:#8a5a12;margin:4px 0 0 13px;padding-left:14px;font-size:11.5px}.finding-caveats li{margin:1px 0}.link-btn{color:var(--ink-3);cursor:pointer;background:0 0;border:none;margin-left:13px;padding:0;font-size:11.5px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.link-btn:hover{color:var(--accent)}.finding-evidence{background:#faf6ee;border-radius:6px;margin:6px 0 0 13px;padding:8px 10px;font-size:11.5px;display:none}.finding-evidence.is-open{display:block}.evidence-grid{flex-direction:column;gap:3px;display:flex}.evidence-row{align-items:baseline;gap:8px;display:flex}.evidence-palace{color:var(--ink-3);white-space:nowrap}.evidence-stars{color:var(--ink-2)}.evidence-rule{border-top:1px dotted var(--line);color:var(--ink-3);letter-spacing:.02em;margin-top:6px;padding-top:5px;font-size:10.5px}.fortune{border:1px solid var(--line);border-radius:var(--radius);background:#fbf6ec;margin-bottom:14px;padding:12px 14px}.fortune-main{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.fortune-when{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.fortune-year,.fortune-month{align-items:center;gap:6px;display:flex}.fortune-month{border-left:1px solid var(--line);padding-left:12px}.fortune-month .year-step.is-small{width:22px;height:22px;font-size:13px}.month-value{flex-direction:column;align-items:center;min-width:44px;line-height:1.15;display:flex}.month-value strong{letter-spacing:.06em;font-size:14px;font-weight:600}.month-value span{color:var(--accent);letter-spacing:.1em;font-size:10.5px}.year-step{border:1px solid var(--line-strong);width:26px;height:26px;color:var(--ink-2);cursor:pointer;background:#fff;border-radius:6px;font-size:16px;line-height:1}.year-step:hover{border-color:var(--accent);color:var(--accent)}.year-value{flex-direction:column;align-items:center;min-width:68px;line-height:1.15;display:flex}.year-value strong{letter-spacing:.04em;font-size:19px}.year-value span{color:var(--accent);letter-spacing:.14em;font-size:11px}.fortune-facts{gap:18px;margin:0;display:flex}.fortune-facts div{align-items:baseline;gap:5px;display:flex}.fortune-facts dt{color:var(--ink-3);margin:0;font-size:11px}.fortune-facts dd{margin:0;font-size:13px}.fortune-facts dd em{color:var(--accent);font-size:12px;font-style:normal}.fortune-facts dd em:before{content:"·";color:var(--ink-3);margin:0 4px}.fortune-layers{margin-left:auto}.fortune-sihuas{border-top:1px dashed var(--line);flex-wrap:wrap;gap:8px 22px;margin-top:10px;padding-top:9px;display:flex}.fortune-sihua{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sihua-tag{color:var(--ink-3);border:1px solid var(--line);border-radius:3px;padding:0 5px;font-size:11px;line-height:1.5}.sihua-chip{background:#f2ece0;border-radius:4px;align-items:baseline;gap:1px;padding:1px 6px;font-size:12px;display:inline-flex}.sihua-chip em{font-size:11px;font-style:normal}.sihua-chip.mutagen-lu{color:var(--lu);background:#f8e6e2}.sihua-chip.mutagen-quan{color:var(--quan);background:#ece4f4}.sihua-chip.mutagen-ke{color:var(--ke);background:#dfeef3}.sihua-chip.mutagen-ji{color:var(--ji);background:#e8e6e2}.fortune-boundary{color:var(--ink-2);margin:8px 0 0;font-size:11.5px}.fortune-sub-boundary{border-left:1px solid var(--line);color:var(--ink-3);margin-left:10px;padding-left:10px}.fortune-note{color:var(--accent);margin:4px 0 0;font-size:11.5px}.fortune-overlay{border-top:1px dashed var(--line);flex-direction:column;gap:6px;margin-top:9px;padding-top:9px;display:flex}.overlay-line{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.overlay-label{letter-spacing:.08em;min-width:36px;color:var(--ink-3);font-size:11px}.overlay-chip{border:1px solid var(--line);background:#fbf8f1;border-radius:4px;align-items:center;gap:5px;padding:2px 7px;font-size:12px;display:inline-flex}.overlay-chip.is-muted{color:var(--ink-3);border-style:dashed}.overlay-palace{color:var(--ink-2);font-size:11.5px}.overlay-dot{align-items:baseline;gap:1px;display:inline-flex}.overlay-dot em{color:var(--ink-3);margin-right:2px;font-size:10px;font-style:normal}.overlay-dot em:after{content:"·";margin-left:1px}.overlay-dot b{margin-left:1px;font-size:11px;font-weight:600}.overlay-arrow{color:var(--ink-3);font-size:11px}.palace-mark{border-radius:3px;padding:0 3px;font-size:10px;line-height:1.4}.mark-yearly{background:var(--accent);color:#fff}.mark-decadal{border:1px solid var(--accent);color:var(--accent)}.mark-monthly{border:1px dashed var(--ink-3);color:var(--ink-2)}.palace.is-yearly-soul:after{content:"";background:var(--accent);height:2px;position:absolute;top:0;left:0;right:0}.palace-alt{color:var(--ink-3);letter-spacing:.06em;margin-top:-3px;font-size:11px}.detail-layers{flex-wrap:wrap;gap:4px 12px;margin:0 0 8px;font-size:12px;display:flex}.detail-layers b{color:var(--ink-3);margin-right:4px;font-size:11px;font-weight:400}@media (width<=900px){.board-wrap{grid-template-columns:minmax(0,1fr)}.board{grid-template-rows:repeat(4,140px)}.detail{min-height:0}}.export-bar{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.export-bar button{color:var(--ink-2);background:var(--paper-2);border:1px solid var(--line-strong);cursor:pointer;border-radius:6px;padding:7px 14px;font-size:13px}.export-bar button:hover{color:var(--accent);border-color:var(--accent)}.print-head{display:none}@page{size:A4 portrait;margin:10mm}@media print{html,body{color:#111;font-size:11px;background:#fff!important}.app{max-width:none;padding:0}.no-print,.form-panel,.app-footer,.app-header,.disclaimer-page,.fortune-layers,.year-step,.advanced{display:none!important}.print-head{border-bottom:1px solid #999;margin-bottom:8px;padding-bottom:6px;display:block}.print-head h1{letter-spacing:.08em;margin:0;font-size:18px}.print-head p{color:#444;margin:3px 0 0;font-size:10.5px}.panel{border-color:#ccc;margin-top:10px;padding:10px;background:#fff!important}.panel.chart-panel{break-inside:avoid}.board-center,.fortune{border-color:#ccc;background:#fff!important}.board-wrap{grid-template-columns:minmax(0,1fr);gap:10px}.board{border-color:#888;grid-template-rows:repeat(4,112px);background:#aaa!important}.palace{cursor:default;padding:5px 6px;background:#fff!important}.palace.is-triangle{background:#fff!important}.palace.is-soul{outline-offset:-2px;outline:2px solid #333}.palace.is-selected{box-shadow:none;outline-offset:-2px;outline:1px dashed #333}.palace-head{font-size:11px}.star-row{font-size:10px}.star-row-minor{font-size:9px}.center-title{font-size:13px}.center-facts{font-size:9.5px}.detail{min-height:0;background:#fff!important}.detail-stars,.detail-reading ul{max-height:none!important;overflow:visible!important}.detail-reading ul{gap:5px}.dim-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dim-card{break-inside:avoid;border-color:#ccc;background:#fff!important}.finding-evidence{border:1px dotted #ccc;background:#fff!important;display:block!important}.pattern-row,.pattern-chip,.disclaimer,.reading-warnings{background:#fff!important}.dim-meter-track{background:#e8e8e8!important}.dim-meter-fill{background:#777!important}}@media (width<=620px){.app{padding:18px 12px 40px}.palace{padding:6px}.star-row{font-size:12px}.star-row-minor{font-size:10.5px}.center-facts{grid-template-columns:minmax(0,1fr);gap:2px}.dim-grid{grid-template-columns:minmax(0,1fr)}.fortune-main{gap:10px 14px}.fortune-facts{gap:12px}.fortune-layers{margin-left:0}.brand{gap:11px}.brand-mark{width:42px;height:42px}.app-header h1{font-size:21px}}
