:root{--font-han:"Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", system-ui, sans-serif;--font-han-tw:"Noto Sans TC", "PingFang TC", "Microsoft JhengHei", "Source Han Sans TC", system-ui, sans-serif;--font-latin:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--r-sm:4px;--r-md:8px;--r-lg:14px;--r-full:999px;--shadow-1:0 1px 2px #0000000f;--shadow-2:0 8px 24px #0000001f;--z-sticky:10;--z-detail:20;--z-scrim:30;--z-drawer:40;--z-toast:50;--z-disclaimer:60;--bg:#fbfaf7;--surface:#fff;--surface-2:#f2efe9;--border:#d9d3c7;--border-strong:#8c8172;--fg-1:#1a1714;--fg-2:#4e4841;--fg-3:#6e665c;--accent:#1e5a8a;--accent-fg:#fff;--focus:#0b69c7;--warn:#8a5a05;--danger:#a32c22;--success:#1f6b45;--highlight-bg:#fbeec8;--wuxing-wood:#2f7a4f;--wuxing-fire:#b4342a;--wuxing-earth:#8a6410;--wuxing-metal:#55606b;--wuxing-water:#2a4e8f}:root[data-theme=dark]{--bg:#12100e;--surface:#1b1815;--surface-2:#252119;--border:#35302a;--border-strong:#7e766b;--fg-1:#f1ece4;--fg-2:#b9b1a6;--fg-3:#948c81;--accent:#7fb7e8;--accent-fg:#12100e;--focus:#8cc3f5;--warn:#e6b25c;--danger:#f0857a;--success:#68c795;--highlight-bg:#3a3116;--wuxing-wood:#62c08c;--wuxing-fire:#f08479;--wuxing-earth:#e0b25c;--wuxing-metal:#a8b7c6;--wuxing-water:#7fa8f0;--shadow-1:none;--shadow-2:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#12100e;--surface:#1b1815;--surface-2:#252119;--border:#35302a;--border-strong:#7e766b;--fg-1:#f1ece4;--fg-2:#b9b1a6;--fg-3:#948c81;--accent:#7fb7e8;--accent-fg:#12100e;--focus:#8cc3f5;--warn:#e6b25c;--danger:#f0857a;--success:#68c795;--highlight-bg:#3a3116;--wuxing-wood:#62c08c;--wuxing-fire:#f08479;--wuxing-earth:#e0b25c;--wuxing-metal:#a8b7c6;--wuxing-water:#7fa8f0;--shadow-1:none;--shadow-2:none}}*,:before,:after{box-sizing:border-box}html{font-family:var(--font-han);-webkit-text-size-adjust:100%;background:var(--bg);color:var(--fg-1);font-size:15px;line-height:1.5}html[lang=zh-Hant]{font-family:var(--font-han-tw)}html[lang=en]{font-family:var(--font-latin)}[data-han-annotation],[data-han]{font-family:var(--font-han)}html[lang=zh-Hant] [data-han-annotation],html[lang=zh-Hant] [data-han]{font-family:var(--font-han-tw)}body{background:var(--bg);min-height:100dvh;color:var(--fg-1);margin:0;overflow-x:hidden}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}a{color:var(--accent)}button,input,select,textarea{font:inherit;color:inherit}.tabular{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono)}.skip-link{left:-9999px;top:var(--sp-2);z-index:var(--z-toast);padding:var(--sp-2) var(--sp-3);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);position:absolute}.skip-link:focus{left:var(--sp-3)}.topbar{z-index:var(--z-sticky);align-items:center;gap:var(--sp-2);min-height:52px;padding:var(--sp-1) var(--sp-3);background:var(--bg);border-bottom:1px solid var(--border);display:flex;position:sticky;top:0}.topbar__title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:15px;font-weight:500;overflow:hidden}.topbar__back{min-width:44px;min-height:44px;color:var(--fg-1);border-radius:var(--r-md);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.topbar__controls{align-items:center;gap:var(--sp-1);display:flex}.btn,.icon-btn,.select{border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);min-height:44px;color:var(--fg-1);padding:0 var(--sp-3);cursor:pointer}.icon-btn{min-width:44px;padding:0 var(--sp-2)}.select{max-width:100%}.btn--primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);font-weight:500}.btn:disabled,.btn--primary:disabled{opacity:.5;cursor:not-allowed}.btn--link{color:var(--accent);min-height:44px;padding:0 var(--sp-2);background:0 0;border:none;text-decoration:underline}main.page{padding:var(--sp-3);max-width:720px;margin:0 auto}h1{margin:var(--sp-3) 0;font-size:20px;font-weight:600}h2{margin:var(--sp-4) 0 var(--sp-2);font-size:17px;font-weight:600}p{margin:var(--sp-2) 0}.muted{color:var(--fg-2)}.small{font-size:13px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-3);margin:var(--sp-3) 0;box-shadow:var(--shadow-1)}.field{gap:var(--sp-1);margin:var(--sp-3) 0;flex-direction:column;display:flex}.field label{color:var(--fg-2);font-size:13px}.field input,.field select{border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);min-height:44px;padding:0 var(--sp-3);width:100%;max-width:100%}.field__row{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.field__row>input{flex:160px;min-width:0}.field__error{color:var(--danger);font-size:13px}.field__hint{color:var(--fg-3);font-size:13px}.badge{padding:0 var(--sp-2);border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--fg-2);white-space:nowrap;align-items:center;gap:4px;font-size:12px;line-height:18px;display:inline-flex}.badge--warn{color:var(--warn);border-color:var(--warn);background:var(--surface);font-weight:500}.badge--success{color:var(--success);border-color:var(--success)}.badge--info,.badge--changed{color:var(--accent);border-color:var(--accent)}.badge-bar{gap:var(--sp-1);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);flex-wrap:wrap;align-items:center;display:flex}.summary-link{color:inherit;text-decoration:none;display:block}.state-error{border-color:var(--danger)}.state-error__code{font-family:var(--font-mono);color:var(--danger);font-size:13px}.skeleton{background:var(--surface-2);border-radius:var(--r-md);min-height:18px;animation:1.2s ease-in-out infinite qimen-pulse}@keyframes qimen-pulse{50%{opacity:.55}}.grid-wrap{justify-content:center;display:flex;position:relative}.grid-inner{justify-content:center;width:100%;display:flex}.palace-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;width:100%;max-width:492px;display:grid}.palace-grid [role=row]{display:contents}.palace{aspect-ratio:113/120;background:var(--surface);border:1px solid var(--border-strong);border-left:3px solid var(--wuxing,var(--border-strong));border-radius:var(--r-md);cursor:pointer;grid-template-rows:18px 1fr 18px;min-width:0;padding:4px 6px;font-size:13px;display:grid;position:relative}.palace[data-highlighted=true]{background:var(--highlight-bg)}.palace__row{justify-content:space-between;align-items:center;gap:4px;min-width:0;line-height:18px;display:flex}.palace__row>*{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.palace__stems{color:var(--fg-1);flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:20px;font-weight:600;line-height:1.1;display:flex}.palace__hairline{background:var(--border-strong);width:40%;height:1px}.palace [data-layer=gate]{color:var(--fg-1);font-weight:500}.palace [data-layer=star]{color:var(--fg-2)}.palace [data-layer=god]{color:var(--fg-3);font-size:12px}.palace [data-layer=palace-label]{color:var(--fg-3);font-size:11px}.palace--ji [data-layer=earth-stem]{opacity:.55}.palace__ji-note{color:var(--fg-3);font-size:11px}.palace__corner{color:var(--accent);font-size:8px;line-height:1;position:absolute;top:2px;right:6px}.palace [data-highlighted=true]{background:var(--highlight-bg);border-radius:var(--r-sm)}.dot{border-radius:var(--r-full);vertical-align:middle;background:var(--fg-3);width:6px;height:6px;margin-right:3px;display:inline-block}.dot--void{background:var(--warn)}.pillars{gap:var(--sp-2);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.pillars>span{white-space:nowrap}.actions{gap:var(--sp-2);margin:var(--sp-3) 0;flex-wrap:wrap;display:flex}.scrim{z-index:var(--z-disclaimer);padding:var(--sp-3);background:#00000080;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--surface);width:100%;max-width:560px;max-height:90dvh;color:var(--fg-1);border-radius:var(--r-lg);padding:var(--sp-4);box-shadow:var(--shadow-2);border:1px solid var(--border);overflow:auto}.settings-item{margin:var(--sp-3) 0;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface)}.settings-item__head{justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap;align-items:baseline;display:flex}.settings-item__key{font-family:var(--font-mono);color:var(--fg-3);font-size:12px}.settings-item__impact{color:var(--fg-3);margin-top:var(--sp-1);font-size:13px}details>summary{cursor:pointer;align-items:center;min-height:44px;font-weight:500;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}strong,b{font-weight:600}.detail-list{gap:var(--sp-1) var(--sp-3);margin:var(--sp-2) 0;grid-template-columns:max-content 1fr;display:grid}.detail-list dt{color:var(--fg-3);font-size:13px}.detail-list dd{overflow-wrap:anywhere;min-width:0;margin:0}.pattern-list{margin:0;padding:0;list-style:none}.pattern-list>li{padding:var(--sp-2) 0;border-top:1px solid var(--border)}.pattern__head{align-items:center;gap:var(--sp-1) var(--sp-2);flex-wrap:wrap;display:flex}.dot--ji{background:var(--success)}.dot--xiong{background:var(--danger)}.dot--mixed{background:var(--warn)}.dot--wx-wood{background:var(--wuxing-wood)}.dot--wx-fire{background:var(--wuxing-fire)}.dot--wx-earth{background:var(--wuxing-earth)}.dot--wx-metal{background:var(--wuxing-metal)}.dot--wx-water{background:var(--wuxing-water)}.toggle{align-items:center;gap:var(--sp-2);min-height:44px;display:flex}.toggle input{width:22px;height:22px}.drawer-scrim{z-index:var(--z-scrim);background:#0006;position:fixed;inset:0}.drawer{z-index:var(--z-drawer);background:var(--surface);height:90dvh;color:var(--fg-1);border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-lg);border:1px solid var(--border);box-shadow:var(--shadow-2);padding:var(--sp-3) var(--sp-3) var(--sp-6);position:fixed;bottom:0;left:0;right:0;overflow:auto}@media (width>=768px){.drawer{border-radius:0;width:420px;height:100dvh;top:0;left:auto}}.drawer__head{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.drawer__head h2{margin:0}.config-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:13px}.config-table th,.config-table td{text-align:left;padding:var(--sp-1) var(--sp-1);border-bottom:1px solid var(--border);vertical-align:top;overflow-wrap:anywhere}.config-table th:nth-child(3),.config-table td:nth-child(3){width:32%}.chain{counter-reset:none;margin:0;padding:0;list-style:none}.chain>li{border-top:1px solid var(--border)}.chain__btn{gap:0 var(--sp-2);text-align:left;width:100%;padding:var(--sp-2) 0;cursor:pointer;min-height:44px;color:inherit;background:0 0;border:none;grid-template-columns:28px 1fr;display:grid}.chain__no{color:var(--fg-3);grid-row:span 3}.chain__label{color:var(--fg-2);font-size:13px}.chain__conclusion{overflow-wrap:anywhere;font-size:17px;font-weight:500}.chain__basis{overflow-wrap:anywhere;display:block}code{overflow-wrap:anywhere}.palace__label-branches{color:var(--fg-3);font-size:11px}.grid-wrap{position:relative}.tooltip{z-index:var(--z-detail);margin-bottom:var(--sp-1);background:var(--surface);color:var(--fg-1);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3);box-shadow:var(--shadow-2);font-size:13px;position:absolute;bottom:100%;left:0;right:0}.tooltip ul{padding-left:var(--sp-4);margin:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
