:root{--paper:#f6f1e7;--paper-card:#fffdf7;--ink:#2b2620;--ink-soft:#6b6257;--cinnabar:#9e2b25;--cinnabar-deep:#7c1f1a;--gold:#b8860b;--line:#ddd3c2;--ok:#2e6b4f}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:PingFang TC,Hiragino Sans CJK,Microsoft JhengHei,Noto Sans TC,sans-serif;line-height:1.6}.serif{font-family:Songti TC,"Noto Serif TC",PMingLiU,serif}.wrap{max-width:960px;margin:0 auto;padding:24px 16px 64px}.site-header{text-align:center;padding:28px 0 8px}.site-header h1{font-size:28px;letter-spacing:.35em;margin:0 0 6px;color:var(--cinnabar-deep)}.site-header p{margin:0;color:var(--ink-soft);font-size:13px;letter-spacing:.12em}.card{background:var(--paper-card);border:1px solid var(--line);border-radius:10px;padding:20px;margin-top:20px;box-shadow:0 1px 3px rgba(60,45,20,.06)}.card h2{font-size:17px;margin:0 0 14px;padding-left:10px;border-left:4px solid var(--cinnabar);letter-spacing:.08em}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}@media (max-width:640px){.grid-2{grid-template-columns:1fr}}label.field{display:block;font-size:13px;color:var(--ink-soft);margin-bottom:10px}label.field>span{display:block;margin-bottom:4px}input[type=date],input[type=number],input[type=text],input[type=time],select{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:15px;color:var(--ink);font-family:inherit}input:focus,select:focus{outline:2px solid rgba(158,43,37,.35);border-color:var(--cinnabar)}.checkline{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink);margin:4px 0 12px}.gender-row{display:flex;gap:18px;font-size:15px;margin-bottom:12px}.gender-row label{display:flex;align-items:center;gap:6px;cursor:pointer}details.advanced{border-top:1px dashed var(--line);margin-top:6px;padding-top:10px}details.advanced summary{cursor:pointer;font-size:13px;color:var(--ink-soft);letter-spacing:.1em}button.submit{margin-top:16px;width:100%;padding:12px;font-size:16px;letter-spacing:.4em;color:#fff;background:var(--cinnabar);border:none;border-radius:8px;cursor:pointer;font-family:inherit}button.submit:hover{background:var(--cinnabar-deep)}button.submit:disabled{background:#b9a99a;cursor:wait}.chart-title{text-align:center;font-size:20px;letter-spacing:.3em;margin:4px 0 16px;color:var(--cinnabar-deep)}.pillars{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px}@media (max-width:640px){.pillars{grid-template-columns:repeat(2,1fr)}}.pillar{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 8px;text-align:center}.pillar.day{border:2px solid var(--cinnabar);background:#fdf6ee}.pillar .pname{font-size:13px;color:var(--ink-soft);letter-spacing:.3em;margin-bottom:6px}.pillar .gz{font-size:34px;letter-spacing:.05em;margin:2px 0 8px}.pillar .shishen{font-size:12px;color:var(--cinnabar);margin-bottom:8px}.pillar .canggan{font-size:12px;color:var(--ink-soft);border-top:1px dashed var(--line);padding-top:6px;line-height:1.8}.pillar .canggan b{color:var(--ink);font-weight:600}.daymaster{display:flex;flex-wrap:wrap;gap:18px;justify-content:center;margin:16px 0 4px;font-size:15px}.daymaster b{color:var(--cinnabar-deep)}table.luck{width:100%;border-collapse:collapse;font-size:14px;margin-top:4px}table.luck td,table.luck th{border:1px solid var(--line);padding:7px 8px;text-align:center}table.luck th{background:#f3ecdd;font-weight:600;letter-spacing:.1em}table.luck td.gz{font-size:17px;font-family:Songti TC,"Noto Serif TC",PMingLiU,serif}.kv{display:grid;grid-template-columns:150px 1fr;grid-gap:4px 14px;gap:4px 14px;font-size:14px}.kv dt{color:var(--ink-soft)}.kv dd{margin:0}.warn{background:#fdf3e3;border:1px solid #e8cf9a;border-radius:8px}.error,.warn{padding:10px 14px;font-size:14px;margin-top:12px}.error{background:#fbeaea;border:1px solid #e3b3b0;border-radius:8px;color:var(--cinnabar-deep)}.meta-line{text-align:center;font-size:12px;color:var(--ink-soft);margin-top:18px;letter-spacing:.06em}details.snapshot{margin-top:14px;font-size:13px;color:var(--ink-soft)}details.snapshot pre{white-space:pre-wrap;word-break:break-all;background:#f7f2e8;border:1px solid var(--line);border-radius:6px;padding:10px;font-size:12px}