:root{color-scheme:light;--paper:#f6f3ec;--cream:#ebe7dc;--ink:#262a25;--muted:#62645b;--bronze:#765b37;--wall:#27332e;--line:#c9c4b8;--serif:"Iowan Old Style","Songti TC","Noto Serif TC",Georgia,serif;--sans:Avenir,"Noto Sans TC","PingFang TC",system-ui,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.7}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit;text-underline-offset:.3em}a:hover{color:var(--bronze)}:focus-visible{outline:2px solid var(--bronze);outline-offset:4px}[hidden]{display:none!important}.wrap{width:min(calc(100% - 72px),1350px);margin-inline:auto}.skip{position:absolute;left:20px;top:-80px;z-index:10;background:white;padding:10px}.skip:focus{top:10px}.topline{min-height:34px;border-bottom:1px solid var(--line);padding:7px max(36px,calc((100vw - 1350px)/2));display:flex;justify-content:space-between;gap:20px;font-size:10px;letter-spacing:.14em;color:var(--bronze)}.masthead{min-height:105px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:inline-flex;align-items:center;gap:14px;text-decoration:none;font:500 27px/1.05 var(--serif);letter-spacing:.06em}.brand small{display:block;margin-top:8px;color:var(--bronze);font:500 10px var(--sans);letter-spacing:.13em}.brand-mark{width:38px;height:38px;border:1px solid var(--bronze);display:grid;place-items:center;font-size:20px;color:var(--bronze)}nav{display:flex;flex-wrap:wrap;gap:clamp(15px,3vw,45px);font-size:13px}nav a{text-decoration:none}.opening{min-height:690px;display:grid;grid-template-columns:1fr .88fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.hero-copy{padding:clamp(58px,7vw,105px) 30px 70px 0;display:flex;flex-direction:column;align-items:flex-start}.eyebrow{color:var(--bronze);font-size:11px;letter-spacing:.18em;font-weight:600}.opening h1,.room h2,.result-heading h2,.method h2{font:500 clamp(54px,6.8vw,100px)/1.2 var(--serif);letter-spacing:-.045em;margin:35px 0}.opening h1 em{font-style:normal;color:var(--bronze)}.hero-lead{max-width:29em;font:400 clamp(18px,1.9vw,25px)/1.6 var(--serif)}.english{color:var(--muted);font-size:14px;line-height:1.6;max-width:37em;margin-top:15px}.text-link{display:inline-flex;gap:34px;align-items:center;margin-top:55px;padding-bottom:8px;border-bottom:1px solid var(--bronze);text-decoration:none;font-size:14px}.art{position:relative;overflow:hidden;min-height:590px;background:#e7dfd0;display:grid;place-items:center;border-left:1px solid var(--line)}.art:before,.art:after{content:"";position:absolute;background:var(--bronze);opacity:.5}.art:before{width:1px;height:100%;left:50%}.art:after{height:1px;width:100%;top:50%}.art-ring{position:absolute;border:1px solid rgba(87,75,53,.55);border-radius:50%;width:min(78%,500px);aspect-ratio:1}.art-ring-one{transform:rotate(-20deg)}.art-ring-two{width:min(57%,365px);border-style:dashed;opacity:.65}.art-center{z-index:1;background:#e7dfd0;width:136px;height:136px;border:1px solid var(--bronze);border-radius:50%;display:grid;place-content:center;text-align:center;font:500 36px/1.18 var(--serif);letter-spacing:.1em}.art-center span{color:var(--bronze)}.art-caption{position:absolute;z-index:1;bottom:24px;right:28px;color:var(--bronze);font-size:10px;letter-spacing:.14em;text-align:right}.room{display:grid;grid-template-columns:.65fr 1fr;gap:clamp(50px,7vw,110px);padding-block:clamp(80px,9vw,140px)}.room h2{font-size:clamp(38px,4.4vw,68px);margin:25px 0}.room-intro>p:last-child{max-width:25em;color:var(--muted);font-size:15px}.form-card{background:#fffdf7;border:1px solid var(--line);box-shadow:20px 25px 0 #eae5d9;padding:clamp(25px,4vw,54px)}.form-head{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding-bottom:20px;align-items:baseline;font-size:11px;letter-spacing:.1em;color:var(--bronze)}.quiet-button{background:none;border:0;border-bottom:1px solid currentColor;color:var(--bronze);padding:0 0 3px;font-size:12px;letter-spacing:0}.fields{display:grid;gap:20px;margin-top:28px}.two{grid-template-columns:repeat(2,minmax(0,1fr))}label{display:block;font-size:14px;font-weight:600}label span{display:block;color:var(--muted);font-size:11px;font-weight:400;margin-bottom:8px}input:not([type=checkbox]),select{display:block;width:100%;min-height:48px;border:1px solid #b6b6a9;border-radius:0;background:#faf9f4;color:var(--ink);padding:10px 12px;margin-top:7px}input:focus,select:focus{background:white;border-color:var(--bronze)}label small{display:block;color:var(--muted);font-size:11px;font-weight:400;line-height:1.5;margin-top:6px}.check{display:flex;gap:9px;align-items:center;margin-top:22px;font-weight:400}.check input{accent-color:var(--bronze)}#custom-zone-wrap{margin-top:22px}.form-bottom{display:flex;align-items:end;justify-content:space-between;gap:20px;border-top:1px solid var(--line);margin-top:34px;padding-top:28px}.form-bottom p{color:var(--muted);font-size:11px;margin:0}.form-bottom p span{font-size:10px}.submit{border:0;background:var(--wall);color:white;min-height:54px;padding:10px 22px;display:flex;align-items:center;justify-content:space-between;gap:40px;font-size:14px;white-space:nowrap}.submit:hover{background:#415148}.error{color:#8c342a;border-left:3px solid #8c342a;background:#f8ede7;padding:12px 16px;font-size:13px}.demo-label{color:var(--bronze);font-size:12px;background:#f4ecdc;padding:9px 12px}.results{background:var(--wall);color:#f6f0e4;padding-block:clamp(80px,9vw,130px)}.result-heading h2{font-size:clamp(38px,5vw,74px);margin:22px 0}.result-heading>p:last-child{color:#ded2bd;font-size:13px}.results .eyebrow{color:#d1b684}.pillar-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:58px}.pillar{border:1px solid #7e877e;min-height:350px;padding:26px 23px;display:flex;flex-direction:column}.pillar-name{margin:0;color:#ddc493;font-size:12px;letter-spacing:.13em}.characters{display:flex;flex-direction:column;gap:4px;margin:28px 0 auto;font:500 clamp(55px,5vw,83px)/1.1 var(--serif)}.characters .branch{color:#d3b580}.phase-caption,.god-caption,.hidden-stem{margin:9px 0 0;font-size:12px}.phase-caption{color:#c9d0c6}.god-caption{border-top:1px solid #7e877e;padding-top:13px}.hidden-stem{color:#d1b684}.pillar.missing{opacity:.58;border-style:dashed}.result-note{border-left:2px solid #d1b684;padding-left:17px;margin:27px 0 0;color:#e5d8bf;font-size:13px}.reading-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;margin-top:90px}.reading-grid>div{border-top:1px solid #7e877e;padding-top:24px}.reading-grid h3{font:400 clamp(28px,3vw,44px) var(--serif);margin:15px 0}.reading-grid p:not(.eyebrow){font-size:14px;color:#d3d8d0;max-width:36em}.phase-list{max-width:400px}.phase-row{display:grid;grid-template-columns:32px 80px 20px 1fr;align-items:center;gap:8px;margin:8px 0;font-size:12px}.phase-row strong{font:500 20px var(--serif)}.phase-row span{color:#d3d8d0}.phase-row b{font-weight:400}.phase-track{height:4px;background:#667067}.phase-track i{display:block;background:#d1b684;height:4px}.reading-grid .micro{font-size:11px!important;color:#b9c1b8!important}.method{display:grid;grid-template-columns:.32fr .7fr 1fr;gap:40px;padding-block:clamp(80px,9vw,130px)}.method h2{font-size:clamp(37px,4vw,62px);margin:0}.method-copy{border-top:1px solid var(--line);padding-top:16px}.method-copy p{font-size:15px;color:var(--muted);margin:0 0 19px}.method-copy a{font-size:13px;color:var(--bronze)}.footer{background:#eae5da;border-top:1px solid var(--line);padding:34px 0}.footer .wrap{display:flex;justify-content:space-between;gap:20px;align-items:center;font-size:11px;color:var(--muted)}.footer a{color:var(--bronze)}
.sample-banner{display:inline-block;border:1px solid #d1b684;color:#ead7b4!important;padding:7px 12px;font-size:12px!important;margin-top:20px}.result-heading .sample-banner+h2{margin-top:14px}
@media(max-width:950px){.opening{grid-template-columns:1fr .75fr}.room{grid-template-columns:1fr}.room-intro{max-width:600px}.method{grid-template-columns:1fr 1.4fr}.method .eyebrow{grid-column:1/-1}.pillar{padding:20px 15px}.pillar-grid{gap:9px}.characters{font-size:56px}}@media(max-width:700px){.wrap{width:min(calc(100% - 36px),560px)}.topline{padding-inline:18px}.topline span:last-child{display:none}.masthead{min-height:95px;align-items:start;padding-top:18px;flex-direction:column;gap:12px}.masthead nav{padding-bottom:14px;gap:20px}.opening{display:flex;flex-direction:column}.hero-copy{padding:60px 0}.opening h1{font-size:clamp(57px,12vw,88px)}.art{min-height:360px;border-left:0;border-top:1px solid var(--line)}.art-ring{width:300px}.art-ring-two{width:230px}.art-center{width:110px;height:110px;font-size:28px}.room{padding-block:78px;gap:30px}.room h2{font-size:49px}.form-card{box-shadow:9px 11px 0 #eae5d9;padding:24px}.form-head{flex-direction:column;gap:8px}.two{grid-template-columns:1fr}.form-bottom{align-items:stretch;flex-direction:column}.submit{width:100%}.pillar-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pillar{min-height:310px}.characters{font-size:65px}.reading-grid{grid-template-columns:1fr;gap:32px;margin-top:70px}.method{display:block}.method h2{margin:22px 0 35px}.footer .wrap{display:flex;flex-wrap:wrap}.footer .wrap span:nth-child(2){width:100%;order:3}}@media(max-width:375px){.pillar-grid{gap:7px}.pillar{padding:16px 12px}.characters{font-size:57px}.phase-caption,.god-caption,.hidden-stem{font-size:11px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}

/* Zi Wei's own exhibit: a brass chart on plum paper, with the native 4×4 geometry. */
:root{--paper:#f5f1ed;--cream:#e8dfd9;--ink:#29242b;--muted:#655d66;--bronze:#795c6a;--wall:#302734;--line:#d0c5c9}
.art{background:#e7dfe2}.art:before,.art:after{display:none}
.art-square{position:absolute;width:min(75%,460px);aspect-ratio:1;border:1px solid #8d7583;transform:rotate(11deg)}
.art-square.two{width:min(56%,350px);transform:rotate(-7deg);border-style:dashed;opacity:.72}
.art-square.three{width:min(38%,240px);transform:rotate(11deg);opacity:.64}
.art-center{border-radius:0;background:#e7dfe2;color:var(--ink)}
.results{background:var(--wall)}.results .eyebrow,.board-center .eyebrow{color:#cbb6a1}
.result-heading{max-width:900px}.result-heading h2{line-height:1.25}
.assumed-note{max-width:850px;border:1px solid #d9bc9a;background:#5a4655;padding:18px 24px;margin:24px 0;color:#fff3db;line-height:1.8}
.ziwei-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(4,minmax(170px,auto));margin-top:54px;border-left:1px solid #8a7885;border-top:1px solid #8a7885}
.palace{display:flex;flex-direction:column;gap:6px;width:100%;min-width:0;padding:18px;text-align:left;color:#f5efeb;background:transparent;border:0;border-right:1px solid #8a7885;border-bottom:1px solid #8a7885;cursor:pointer}
.palace:hover,.palace:focus-visible,.palace.active{background:#514052;outline:2px solid #d8b990;outline-offset:-3px}
.palace-head{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:#dcc7a4}
.palace-name{font:500 clamp(20px,2.2vw,29px)/1.25 var(--serif)}
.palace-stars{font-size:13px;line-height:1.55}.palace-more{font-size:11px;color:#d4c5cc;margin-top:auto}
.board-center{grid-row:2/4;grid-column:2/4;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:25px;text-align:center;border-right:1px solid #8a7885;border-bottom:1px solid #8a7885;background:#3e3341}
.board-center strong{font:500 clamp(26px,3vw,46px)/1.3 var(--serif);color:#f9eee5}
.board-center span{display:block;color:#d6c6ce;font-size:13px;margin-top:13px}
.palace-detail{margin-top:32px;padding:clamp(22px,4vw,45px);border:1px solid #8a7885;background:#3b303d}
.palace-detail h3{font:500 clamp(30px,3.4vw,47px)/1.3 var(--serif);margin:10px 0 18px}.palace-detail p{color:#e3d8df}.detail-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:25px}.detail-group{border-top:1px solid #8a7885;padding-top:13px}.detail-group h4{color:#d7b98e;font-size:13px;letter-spacing:.08em}.star-chip{display:inline-block;margin:0 8px 8px 0;padding:5px 8px;border:1px solid #907d8d;font-size:13px}.star-chip.major{border-color:#ceb28b;color:#f8e3bd}
.result-source{font-size:12px;color:#d0c4cb;max-width:900px;line-height:1.8;margin-top:34px}
.preview-badge{color:#d7c4cc;border:1px solid #967f8c;padding:4px 10px;font-size:11px}
@media(max-width:760px){.ziwei-board{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto}.palace{min-height:150px;padding:14px}.board-center{grid-row:auto;grid-column:1/-1;order:-1;min-height:145px}.palace-name{font-size:23px}.detail-groups{grid-template-columns:1fr}.art-square{width:70%}.art-square.two{width:51%}.art-square.three{width:34%}}
@media(max-width:760px){.ziwei-board .palace{grid-row:auto!important;grid-column:auto!important}}

.reading-room{margin-top:110px;padding-top:35px;border-top:1px solid #927c8b}.reading-room-head{display:flex;align-items:end;justify-content:space-between;gap:35px}.reading-room h3{font:500 clamp(32px,4vw,54px)/1.3 var(--serif);margin:12px 0}.reading-room .english{color:#d4c6cd}.reading-date{min-width:min(100%,270px);color:#f4e6eb}.reading-date span{color:#d4c6cd}.reading-date input{background:#f9f4f0}.reading-tabs,.week-days{display:flex;flex-wrap:wrap;gap:8px;margin:38px 0 24px}.reading-tabs button,.week-button{border:1px solid #97808d;background:transparent;color:#f6eff1;padding:11px 18px;min-height:45px;font-size:13px}.reading-tabs button:hover,.week-button:hover,.reading-tabs button[aria-pressed=true],.week-button[aria-pressed=true]{background:#d6b88f;border-color:#d6b88f;color:#251f28}.reading-display{border:1px solid #927c8b;padding:clamp(22px,4vw,45px);background:#3b303d;min-width:0}.reading-display h4{font:500 clamp(28px,3vw,42px)/1.3 var(--serif);margin:8px 0}.reading-summary{color:#e2d7df}.reading-section{border-top:1px solid #877582;margin-top:27px;padding-top:17px}.reading-section h5,.daily-guide h5{font:500 23px/1.4 var(--serif);margin:5px 0 12px}.reading-line{max-width:76ch;color:#eee2e9;font-size:14px}.reading-line.headline{font:500 20px/1.65 var(--serif);color:#f5dfb7}.reading-line.caption,.reading-line.source{font-size:12px;color:#cfc2c9}.reading-line.citation{font:400 14px/1.7 var(--serif);border-left:2px solid #cdb290;padding-left:14px}.reading-line.practice{color:#f1d8ae}.week-room{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-top:85px}.week-room>div:first-child{max-width:450px}.week-room p:not(.eyebrow){font-size:13px;color:#ddcfd8}.week-days{max-width:690px;justify-content:flex-end;margin:0}.week-button{font-size:11px}.day-branch{border-left:2px solid #d7bc96;padding-left:16px;color:#f8dcb1}.daily-guides{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:27px}.daily-guide{padding:22px;border:1px solid #8d7987}.daily-guide p{font-size:13px}.daily-detail{border-top:1px solid #8d7987;margin-top:20px;padding-top:12px}.daily-detail summary{cursor:pointer;color:#e8c999;font-size:12px}.daily-detail .reading-section{margin-top:14px}.daily-detail .reading-section h5{font-size:18px}
.time-facts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:28px 0}.time-fact{border-top:1px solid #8c7885;padding-top:9px}.time-fact span{display:block;color:#cfc0c8;font-size:11px}.time-fact strong{display:block;font-size:13px;font-weight:500;color:#f3e3d2}
@media(max-width:950px){.week-room{display:block}.week-days{justify-content:flex-start;max-width:none;margin-top:20px}.daily-guides{grid-template-columns:1fr}.time-facts{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.reading-room{margin-top:75px}.reading-room-head{display:block}.reading-date{display:block;margin-top:20px}.reading-tabs{gap:6px}.reading-tabs button{flex:1 0 calc(33.3% - 6px);padding:9px 8px}.reading-display{padding:22px}.week-room{margin-top:65px}.week-button{flex:1 0 calc(33% - 8px);padding:8px 5px}.time-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
.people-room{margin-top:110px;padding-top:32px;border-top:1px solid #927c8b}.people-room h3{font:500 clamp(32px,4vw,54px)/1.3 var(--serif);margin:12px 0}.people-room h4{font:500 29px/1.4 var(--serif);margin:6px 0 18px}.people-room p{font-size:14px;max-width:70ch;color:#e3d7dd}.people-heading{display:grid;grid-template-columns:1fr 340px;gap:55px}.save-person{border:1px solid #937e8d;padding:22px;align-self:start}.save-person label{color:#f6e8ee}.save-person input{background:#fffaf6}.save-person button,.people-card button,.share-preview button,.data-actions button{border:1px solid #c9adba;background:transparent;color:#fff3e9;padding:10px 15px;min-height:42px;margin-top:13px;font-size:12px}.save-person button:hover,.people-card button:hover,.share-preview button:hover{background:#d6b88f;color:#251f28}.people-message{min-height:1.6em;color:#f1d7af!important}.people-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:25px}.people-card{border:1px solid #897682;padding:18px}.people-card.active{border-color:#d7ba93;background:#483949}.people-card strong{display:block;font:500 21px var(--serif)}.people-card span{display:block;color:#cdbec9;font-size:11px;margin-top:4px}.people-card .people-actions{display:flex;flex-wrap:wrap;gap:7px}.comparison{border:1px solid #9d8796;padding:clamp(22px,4vw,38px);margin-top:30px;background:#3b303d}.comparison-fact{border-top:1px solid #8c7885;padding:14px 0}.comparison-fact h5{font:500 22px var(--serif);margin:0 0 7px}.comparison-fact p{margin:5px 0}.comparison .role-line{color:#f5d9af}.share-preview{border-top:1px solid #8c7885;margin-top:30px;padding-top:17px}.share-preview summary{cursor:pointer;color:#f3d5aa}.share-preview pre{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.7 var(--sans);background:#302734;padding:20px;color:#eee2e8}.data-actions{border-top:1px solid #8c7885;margin-top:38px;padding-top:19px;display:flex;align-items:center;gap:20px}.data-actions button{border-color:#c77f80;color:#f5c8c8;margin:0}.data-actions span{font-size:11px;color:#cbbec8}
@media(max-width:850px){.people-heading{grid-template-columns:1fr}.people-list{grid-template-columns:1fr}}
@media(max-width:700px){.people-room{margin-top:75px}.data-actions{display:block}.data-actions span{display:block;margin-top:10px}}
.form-card #top-notice{color:#765b6a!important;font-size:12px}
