:root{--ink:#183f37;--paper:#f5f0e8;--gold:#bd8a38;--muted:#6c716c;--line:#ded7c8}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top right,#e7dfc9,transparent 33%),var(--paper);color:var(--ink);font-family:"Microsoft YaHei",system-ui,sans-serif}.shell{max-width:720px;margin:auto;padding:28px 20px 64px}.hero{padding:10px 0 18px}.hero h1{font-family:KaiTi,STKaiti,serif;font-size:clamp(42px,8vw,70px);letter-spacing:.18em;margin:5px 0}.hero p:last-child{font-size:18px;margin:0}.eyebrow{font-size:12px;font-weight:700;color:var(--gold);letter-spacing:.14em;margin:0 0 8px}.notice{display:flex;gap:12px;border-left:4px solid var(--gold);padding:12px 14px;background:#f7ead2;font-size:14px;line-height:1.55}.tabs{display:flex;gap:6px;margin:24px 0 14px;overflow:auto}.tabs button{border:0;background:transparent;padding:10px 15px;border-radius:999px;color:var(--ink);cursor:pointer;white-space:nowrap}.tabs button.active{background:var(--ink);color:white}.panel{display:none;background:rgba(255,253,248,.84);border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:0 8px 30px #5d59440d}.panel.active{display:block}.section-title{display:flex;justify-content:space-between;gap:12px;align-items:start;margin-bottom:20px}.section-title h2{margin:0;font-size:25px}.status{border:1px solid #93aa96;padding:5px 8px;border-radius:6px;font-size:12px;white-space:nowrap}.warning{border-color:#cda151;background:#fff7df}.grid{display:grid;gap:14px;margin-bottom:14px}.two{grid-template-columns:repeat(2,minmax(0,1fr))}label{font-size:14px;font-weight:700;display:grid;gap:7px;margin:0 0 16px}input,select{width:100%;font:inherit;border:1px solid #c9c3b5;border-radius:9px;background:white;padding:13px;color:var(--ink);min-height:48px}small{font-weight:400;color:var(--muted);line-height:1.4}.picker-field,fieldset{border:0;margin:0 0 16px;padding:0}.picker-field legend,fieldset legend{font-size:14px;font-weight:700;padding:0}.picker-field p{margin:6px 0 8px;color:var(--muted);font-size:13px}.wheel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.wheel-grid select{appearance:auto;text-align:center;background:#fffdf8}.picker-field:has([name=province]) .wheel-grid{grid-template-columns:1fr 1.5fr}.segment{display:grid;grid-template-columns:1fr 1fr;gap:8px}.segment label{margin:0}.segment input{position:absolute;opacity:0}.segment span{display:block;border:1px solid #c9c3b5;border-radius:9px;padding:13px;text-align:center;font-weight:700}.segment input:checked+span{background:var(--ink);border-color:var(--ink);color:white}.primary{width:100%;border:0;border-radius:9px;padding:15px 18px;background:var(--ink);color:#fff;font:inherit;font-weight:700;cursor:pointer;margin-top:0}.result,.card{margin-top:20px;padding:16px;border-radius:11px;background:#f4f7f1;line-height:1.65}.empty,.muted{color:var(--muted)}.date{color:var(--gold);font-weight:700}.card h3{margin:0 0 8px}.chips{display:flex;flex-wrap:wrap;gap:7px}.chips span{font-size:13px;border:1px solid #bac8bd;border-radius:999px;padding:4px 9px}.ladder{display:grid;gap:0;margin-bottom:20px}.ladder div{padding:14px 0 14px 24px;border-left:2px solid var(--gold);position:relative;display:grid;gap:3px}.ladder div:before{content:"";position:absolute;width:9px;height:9px;background:var(--gold);border-radius:50%;left:-5.5px;top:20px}.ladder span,.device-grid span{color:var(--muted);font-size:14px}.device-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.device-grid article{min-height:125px;border:1px solid var(--line);border-radius:12px;padding:15px;display:grid;gap:6px;font-size:25px}.device-grid b{font-size:15px}.device-grid span{font-size:13px}@container app-viewport (max-width: 560px){.shell{padding:20px 14px 45px}.two{grid-template-columns:1fr}.panel{padding:17px}.notice{display:block}.notice strong{display:block;margin-bottom:3px}.wheel-grid{gap:5px}}
.calendar-tools{display:flex;align-items:center;gap:8px;margin:8px 0 14px}.calendar-tools strong{flex:1;text-align:center}.icon-button{height:38px;width:38px;border-radius:50%;border:1px solid var(--line);background:white;color:var(--ink);font-size:25px;line-height:1;cursor:pointer}.jump-date{font-size:12px;margin:0;gap:3px;min-width:124px}.jump-date input{min-height:38px;padding:6px;font-size:12px}.weekday,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.weekday{font-size:12px;color:var(--muted);text-align:center;margin-bottom:6px}.calendar-grid{gap:4px}.calendar-grid button{aspect-ratio:1;border:0;border-radius:9px;background:transparent;color:var(--ink);cursor:pointer;font:inherit}.calendar-grid button:hover{background:#ece7dc}.calendar-grid button.selected{background:var(--ink);color:white;font-weight:700}.calendar-grid button.today{box-shadow:inset 0 0 0 1px var(--gold)}.calendar-grid button.blank{pointer-events:none}.analysis-card{margin:20px 0 16px;padding:17px;border-radius:13px;background:#eef4ef;border:1px solid #d4e2d5}.analysis-card h3{margin:0}.chart-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:14px 0}.chart-facts div{background:white;border-radius:8px;padding:9px}.chart-facts span{display:block;font-size:12px;color:var(--muted);margin-bottom:2px}.chart-facts b{font-size:14px}.analysis-copy{font-size:14px;line-height:1.7}.hour-section,.life-section{margin-top:22px}.subhead{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.subhead h3{margin:0;font-size:17px}.subhead span{font-size:12px;color:var(--muted)}.hour-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:10px}.hour-grid button{border:1px solid var(--line);border-radius:8px;background:white;padding:10px 6px;color:var(--ink);cursor:pointer;font:inherit}.hour-grid button small{display:block;font-size:11px}.hour-grid button.active{border-color:var(--ink);background:var(--ink);color:white}.hour-grid button.active small{color:#dbe8dd}.life-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px}.life-grid article{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fffdf8}.life-grid b{display:block;margin-bottom:4px}.life-grid p{font-size:13px;line-height:1.55;margin:0;color:var(--muted)}@container app-viewport (max-width: 430px){.calendar-tools{flex-wrap:wrap}.jump-date{width:100%;grid-template-columns:auto 1fr;align-items:center}.chart-facts{grid-template-columns:1fr}.hour-grid{grid-template-columns:repeat(2,1fr)}}
.pillar-row{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:13px 0}.pillar-row div{padding:10px 8px;border:1px solid #d4e2d5;border-radius:9px;background:#fff}.pillar-row span,.pillar-row small{display:block;color:var(--muted);font-size:11px}.pillar-row b{display:block;margin:4px 0;font-size:18px;color:var(--ink)}.result-note{font-size:12px;line-height:1.6;color:var(--muted)}@container app-viewport (max-width: 560px){.pillar-row{grid-template-columns:repeat(2,1fr)}}
.academy-progress{padding:14px 16px;background:#f0f5ef;border:1px solid #d4e2d5;border-radius:12px;color:var(--ink);line-height:1.7}.academy-progress b{display:block;font-size:17px}.academy-badges{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}.academy-badges span{padding:4px 8px;border-radius:999px;background:#fff;border:1px solid #d4e2d5;font-size:12px}.academy-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.academy-subject{background:#fff;border:1px solid #dce5dc;border-radius:14px;padding:15px}.academy-subject h3{margin:0 0 6px;color:var(--ink)}.academy-subject p{margin:0 0 12px;color:var(--muted);font-size:13px;line-height:1.55}.gate-list{display:flex;flex-wrap:wrap;gap:6px}.gate{border:1px solid #d7dfd6;background:#fbfcfa;border-radius:9px;padding:7px 8px;text-align:left;color:var(--ink);font:inherit;font-size:11px;line-height:1.35}.gate strong,.gate small{display:block}.gate small{color:var(--muted);margin-top:2px}.gate.ready{border-color:#477769;background:#eef6f0;cursor:pointer}.gate.ready:hover{background:#dfeee3}.gate.locked{opacity:.72}.academy-exam{margin-top:16px;padding:17px;border-radius:14px;background:#fffdf8;border:1px solid #d7dfd6}.academy-exam .subhead{margin-top:0}.academy-exam h3{margin:0}.academy-exam b{color:#8c4d2c;font-size:20px}.exam-question{padding:13px 0;border-top:1px solid #e5e8e2}.exam-question:first-child{border-top:0}.exam-question p{margin:0 0 8px;line-height:1.55}.exam-options{display:grid;gap:6px}.exam-options label{display:flex;gap:7px;align-items:flex-start;border:1px solid #e2e7df;border-radius:8px;padding:8px;font-size:13px}.exam-options input{width:auto;margin-top:2px}@container app-viewport (max-width: 700px){.academy-grid{grid-template-columns:1fr}}
.academy-editor{margin-top:16px;padding:14px 16px;border:1px dashed #b8cbb9;border-radius:12px;background:#f8fbf7}.academy-editor summary{cursor:pointer;color:var(--ink);font-weight:700}.editor-selects,.option-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.option-grid{grid-template-columns:repeat(2,1fr)}.academy-editor form{display:grid;gap:10px;margin-top:10px}.academy-editor textarea{min-height:76px;resize:vertical}.academy-editor label{font-size:12px;color:var(--muted)}.academy-editor input,.academy-editor select,.academy-editor textarea{display:block;width:100%;margin-top:4px;box-sizing:border-box}.academy-editor .primary{justify-self:start}@container app-viewport (max-width: 560px){.editor-selects,.option-grid{grid-template-columns:1fr}}
.question-review{border-top:1px solid #d8e2d8;margin-top:17px!important;padding-top:14px}.question-review>b{color:var(--ink)}.question-review #review-state{display:block;font-size:12px;margin:3px 0}.question-review .review-source{display:flex;align-items:center;gap:7px;margin-top:20px}.question-review .review-source input{display:inline;width:auto;margin:0}
.academy-editor #exam-preview{margin-top:12px;border-color:#477769;background:#fff;color:#28594b}
.academy-exam{position:relative;overflow:hidden;padding:24px;background:linear-gradient(145deg,#193f37 0%,#28594b 52%,#e6d7b9 240%);border:0;color:#f8f4eb;box-shadow:0 16px 38px rgba(24,63,55,.18)}.academy-exam:before{content:'一叶';position:absolute;right:-10px;top:-26px;font-family:serif;font-size:108px;font-weight:700;color:rgba(255,255,255,.06);pointer-events:none}.academy-exam .subhead{position:relative;margin-bottom:8px}.academy-exam h3{color:#fff;font-size:21px;letter-spacing:.08em}.academy-exam b{color:#f3cf87;font-variant-numeric:tabular-nums}.academy-exam .muted{color:#d6e3db}.exam-progress{position:relative;display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid rgba(255,255,255,.18);border-bottom:1px solid rgba(255,255,255,.18);font-size:12px;color:#e4eee7}.exam-progress span:last-child{color:#f3cf87}.academy-exam #exam-questions{position:relative}.academy-exam .exam-question{padding:25px 0 18px;border:0}.exam-question-meta{display:flex;justify-content:space-between;color:#b9d2c2;font-size:12px;letter-spacing:.06em}.academy-exam .exam-question h4{margin:14px 0 22px;max-width:720px;color:#fff;font-size:clamp(20px,3.4vw,29px);line-height:1.48;font-weight:600}.academy-exam .exam-options{gap:10px}.academy-exam .exam-option{display:flex;align-items:center;gap:12px;padding:14px 15px;border:1px solid rgba(255,255,255,.22);border-radius:13px;background:rgba(255,255,255,.07);color:#f7f7f0;font-size:15px;cursor:pointer;transition:.18s ease}.academy-exam .exam-option:hover,.academy-exam .exam-option.selected{transform:translateY(-1px);border-color:#f3cf87;background:rgba(243,207,135,.18)}.academy-exam .exam-option input{position:absolute;opacity:0;pointer-events:none}.option-key{display:grid;place-items:center;width:25px;height:25px;border:1px solid rgba(255,255,255,.45);border-radius:50%;font:600 12px Georgia,serif;color:#f3cf87;flex:none}.selected .option-key{border-color:#f3cf87;background:#f3cf87;color:#214b40}.exam-answer-text{width:100%;min-height:140px;box-sizing:border-box;border:1px solid rgba(255,255,255,.28);border-radius:13px;padding:14px;background:rgba(255,255,255,.08);color:#fff;font:inherit;line-height:1.6}.exam-answer-text::placeholder{color:#b9d2c2}.exam-map{position:relative;display:flex;flex-wrap:wrap;gap:6px;padding:5px 0 18px}.exam-map button{width:27px;height:27px;border:1px solid rgba(255,255,255,.25);border-radius:8px;background:transparent;color:#d6e3db;font-size:10px;cursor:pointer}.exam-map button.answered{border-color:#e9c479;background:rgba(233,196,121,.2);color:#fff}.exam-map button.current{outline:2px solid #fff;outline-offset:1px}.exam-navigation{position:relative;display:flex;justify-content:space-between;gap:10px;align-items:center}.academy-exam .today-button{border-color:rgba(255,255,255,.38);background:transparent;color:#fff}.academy-exam .primary{background:#f3cf87;color:#214b40;border-color:#f3cf87}.academy-exam button:disabled{opacity:.35;cursor:not-allowed;transform:none}@container app-viewport (max-width: 560px){.academy-exam{margin-left:-4px;margin-right:-4px;padding:18px}.academy-exam .exam-question h4{font-size:21px}.academy-exam .exam-option{padding:12px}.exam-map{max-height:126px;overflow:auto}}
.life-grid em{font-style:normal;color:var(--gold);font-size:11px;font-weight:700}.gate{position:relative;padding:8px}.gate.ready{background:linear-gradient(135deg,#eff8ef,#f9f4e8);box-shadow:0 4px 12px rgba(39,83,70,.09)}.gate.ready:hover{background:#e0f0e3;transform:translateY(-1px)}.gate-state,.gate-gap{display:inline-flex;margin-top:6px;border-radius:999px;padding:3px 6px;font-size:10px;font-weight:700}.gate-state{background:#1f594a;color:#fff}.gate-gap{background:#eff0ea;color:#70766f}.gate.locked{opacity:.78}.academy-result{margin-top:16px;padding:22px;border-radius:14px;text-align:center;border:1px solid #d4e2d5;background:#eff7ef}.academy-result.retry{border-color:#ead4a3;background:#fff8e9}.academy-result span{display:block;color:var(--muted);font-size:12px}.academy-result b{display:block;margin:7px 0;color:var(--ink);font-size:42px;font-family:Georgia,serif}.academy-result h3{margin:0;font-size:19px}.academy-result p{margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.55}
.temporal-hexagrams{margin:18px 0;padding:19px;border:1px solid #d4e2d5;border-radius:17px;background:linear-gradient(145deg,#fffdf7,#f0f6f0)}.temporal-heading{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.temporal-heading h3{margin:1px 0 5px;font-size:19px}.temporal-heading p{max-width:660px;margin:0;color:#66766a;font-size:12px;line-height:1.6}.temporal-heading>span{padding:6px 8px;border:1px solid #dfc482;border-radius:999px;background:#fff7e4;color:#805717;font-size:10px;white-space:nowrap}.temporal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:15px}.temporal-card{position:relative;min-height:216px;padding:13px;border:1px solid #d5e1d6;border-radius:13px;background:rgba(255,255,255,.9);overflow:hidden}.temporal-card header{position:relative;min-height:47px;padding-right:46px}.temporal-card header span{display:block;color:#748174;font-size:10px}.temporal-card header b{display:block;margin-top:4px;font-size:14px}.temporal-card .hexagram-glyph{right:1px;top:3px;width:32px}.temporal-card .hexagram-glyph i{height:3px}.temporal-active{margin:10px 0 8px;padding:9px 10px;border-radius:9px;background:#f3f7f1}.temporal-active span,.temporal-active b,.temporal-active p{display:block}.temporal-active span{color:#86672e;font-size:10px;font-weight:700}.temporal-active b{margin:3px 0;color:#28594b;font-size:12px}.temporal-active p{margin:0;color:#637066;font-size:11px;line-height:1.5}.temporal-trace{display:flex;flex-wrap:wrap;gap:5px}.temporal-trace span{padding:3px 5px;border:1px solid #d9e4da;border-radius:6px;background:#fff;color:#53705b;font-size:10px}.temporal-card details{margin-top:10px;border-top:1px dashed #d7dfd5;padding-top:9px}.temporal-card summary{color:#315e50;font-size:11px;font-weight:700;cursor:pointer}.temporal-card details ol{display:grid;gap:5px;margin:9px 0 0;padding:0;list-style:none}.temporal-card details li{padding:7px 8px;border-radius:8px;background:#f6f8f4}.temporal-card details li.active{background:#fff4d8;box-shadow:inset 2px 0 #bd8a38}.temporal-card details b,.temporal-card details span{display:block;font-size:10px}.temporal-card details span{margin-top:2px;color:#657268;line-height:1.45}.temporal-card>small{display:block;margin-top:10px;color:#7b857d;font-size:10px;line-height:1.5}.temporal-card.unavailable{min-height:146px;border-style:dashed;background:#fafaf6}.temporal-card.unavailable p{margin:11px 0;color:#747d75;font-size:11px;line-height:1.55}@container app-viewport (max-width: 650px){.temporal-hexagrams{padding:16px}.temporal-heading{display:block}.temporal-heading>span{display:inline-block;margin-top:9px}.temporal-grid{grid-template-columns:1fr}.temporal-card{min-height:0}}
.academy-exam .exam-progress{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px}.academy-exam #exam-answer-count{padding:4px 7px;border-radius:999px;background:rgba(255,255,255,.1);color:#e4eee7;font-size:11px}.academy-exam #exam-saved{color:#f3cf87}.academy-result{position:relative;overflow:hidden}.academy-result:after{content:'✦';position:absolute;right:18px;top:14px;color:#d99b31;font-size:28px}.academy-result-metrics{display:flex;justify-content:center;gap:8px;margin:11px 0}.academy-result-metrics span{padding:6px 9px;border:1px solid #cfe0d1;border-radius:999px;background:#fff;color:#5d7060;font-size:11px}.academy-result-metrics b{display:inline;margin:0;color:#28594b;font:700 12px inherit}@container app-viewport (max-width: 560px){.academy-exam .exam-progress{grid-template-columns:1fr auto}.academy-exam #exam-saved{grid-column:1/-1}.academy-result-metrics{flex-wrap:wrap}}
.today-button{border:1px solid var(--ink);border-radius:8px;min-height:38px;padding:6px 10px;background:var(--ink);color:white;font:inherit;font-size:13px;font-weight:700;cursor:pointer}.life-summary{padding:18px;border-radius:13px;background:linear-gradient(135deg,#edf4ef,#fff9ed);border:1px solid #d8e2d8;margin-bottom:18px}.life-summary h3{margin:0 0 5px;font-size:20px}.life-summary p{margin:4px 0;color:var(--muted);font-size:14px}.life-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:15px 0}.life-metrics div{background:#fffdf8;border-radius:8px;padding:10px}.life-metrics span{display:block;color:var(--muted);font-size:11px}.life-metrics b{display:block;margin-top:4px;font-size:16px}.age-track{height:9px;background:#dbe5dc;border-radius:999px;overflow:hidden;margin:11px 0 7px}.age-track span{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--ink));border-radius:inherit}.timeline-lunar{display:inline-flex;border-radius:999px;padding:5px 9px;background:#fff;font-size:12px;color:#6f5c36;margin-top:5px}@container app-viewport (max-width: 430px){.life-metrics{grid-template-columns:1fr}.today-button{order:3}.jump-date{order:4}}
.gate.locked:disabled{cursor:not-allowed;filter:saturate(.65)}.gate.locked:disabled .gate-gap{background:#f1efe9;color:#7e7567}
.subject-meter{display:inline-flex;margin:-4px 0 10px;padding:3px 8px;border-radius:999px;background:#eef4ee;color:#477769;font-size:11px;font-weight:700;line-height:1.45;white-space:normal}
.academy-subject:has(.gate.ready){border-color:#c9dbca}.academy-subject:has(.gate.ready) h3:before{content:'◈';margin-right:6px;color:#b17b32;font-size:12px}
.gate-list{scroll-margin-top:16px}.gate.ready:focus-visible,.gate.locked:focus-visible{outline:3px solid #d6ad67;outline-offset:2px}
.gate.ready .gate-state{box-shadow:0 2px 5px rgba(31,89,74,.18)}.gate-gap{line-height:1.25}
@container app-viewport (max-width: 560px){.subject-meter{display:flex;width:fit-content;max-width:100%;box-sizing:border-box}.academy-subject{padding:13px}.gate-list{gap:7px}}
.academy-subject h3{display:flex;align-items:center;gap:4px}.academy-subject h3:before{flex:none}
.academy-progress{box-shadow:0 8px 20px rgba(39,83,70,.06)}.academy-progress b{letter-spacing:.01em}
.academy-badges span{box-shadow:0 1px 2px rgba(39,83,70,.05)}
.academy-subject p{min-height:2.9em}
.academy-grid{align-items:stretch}.academy-subject{display:flex;flex-direction:column}.academy-subject .gate-list{margin-top:auto}
.academy-subject{transition:border-color .18s ease,box-shadow .18s ease}.academy-subject:hover{border-color:#b9d0bb;box-shadow:0 8px 20px rgba(39,83,70,.06)}
.gate.ready{transition:transform .16s ease,background .16s ease}.gate.locked{cursor:not-allowed}
.gate small{font-variant-numeric:tabular-nums}
.academy-subject h3{line-height:1.25}
.gate strong{font-weight:700}
.academy-subject h3{margin-bottom:7px}
.academy-subject .subject-meter{margin-bottom:11px}
.academy-subject .gate-list{padding-bottom:1px}
.academy-subject .gate-list{scrollbar-color:#b9d0bb transparent}
.gate-list{scrollbar-width:thin}
.academy-grid{row-gap:14px}
.academy-subject{overflow:hidden}
.academy-subject .gate-list{min-width:0}

/* Academy: one course at a time, with an explicit launch point for formal tests. */
.academy-rules{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 14px}.academy-rules span{padding:11px 9px;border:1px solid #d8e4d9;border-radius:12px;background:#f5faf5;color:#667269;font-size:11px;line-height:1.25}.academy-rules b{display:block;margin-bottom:2px;color:var(--ink);font:700 20px Georgia,serif}.academy-subject-tabs{display:flex;gap:8px;overflow:auto;padding:4px 0 10px;margin-top:14px;scrollbar-width:thin}.academy-subject-tabs button{display:flex;align-items:center;gap:8px;flex:none;padding:9px 11px;border:1px solid var(--line);border-radius:11px;background:#fffefa;color:var(--ink);font:inherit;font-size:13px;cursor:pointer;transition:.16s ease}.academy-subject-tabs button small{color:var(--muted);font-size:10px}.academy-subject-tabs button.active{border-color:#28594b;background:#28594b;color:#fff;box-shadow:0 6px 14px rgba(23,63,55,.18)}.academy-subject-tabs button.active small{color:#dbe9df}.academy-course-stage{display:block;margin-top:2px}.academy-subject-focus{padding:20px;background:linear-gradient(145deg,#fffefa,#eef6ef);border-color:#cfdfd1}.academy-course-heading{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:17px}.academy-course-heading h3{font-size:25px}.academy-course-heading p{max-width:560px}.course-count{display:flex;align-items:baseline;gap:4px;flex:none;padding:9px 11px;border-radius:12px;background:#fff;border:1px solid #d6e5d7}.course-count b{font:700 27px Georgia,serif;color:#28594b}.course-count span{font-size:11px;color:var(--muted)}.academy-subject-focus .gate-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.academy-subject-focus .gate{min-height:91px;padding:12px;border-radius:12px}.academy-subject-focus .gate strong{font-size:13px}.academy-subject-focus .gate small{margin-top:5px;font-size:11px}.academy-launcher{display:flex;justify-content:space-between;align-items:center;gap:22px;margin:16px 0;padding:20px;border:1px solid #cfdecf;border-radius:17px;background:linear-gradient(110deg,#173f37,#315f50);color:#fff;box-shadow:0 14px 28px rgba(23,63,55,.16)}.academy-launcher .eyebrow{color:#e8ce8e}.academy-launcher h3{margin:0 0 8px;font-size:22px}.academy-launcher p{margin:0;line-height:1.65;color:#e0ece4}.academy-launcher small{display:block;margin-top:8px;color:#c7d9ce;line-height:1.5}.academy-launcher .primary{width:auto;min-width:178px;margin:0;background:#f1cf88;color:#173f37;box-shadow:none}.academy-launcher .primary:hover{background:#f8ddb0}.academy-exam{scroll-margin-top:90px}
@container app-viewport (max-width: 560px){.academy-rules{grid-template-columns:repeat(2,1fr)}.academy-subject-focus{padding:16px}.academy-course-heading h3{font-size:22px}.academy-subject-focus .gate-list{grid-template-columns:1fr}.academy-subject-focus .gate{min-height:auto}.academy-launcher{display:block;padding:18px}.academy-launcher .primary{width:100%;margin-top:16px}.course-count{padding:7px 9px}.course-count b{font-size:23px}}
.academy-practice{margin-top:16px;padding:20px;border:1px solid #d6e3d7;border-radius:17px;background:linear-gradient(145deg,#fffefa,#f1f7f0);box-shadow:0 10px 24px rgba(32,70,52,.07)}.academy-practice-heading{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding-bottom:15px;border-bottom:1px solid #dce7dc}.academy-practice-heading h3{margin:3px 0 6px;color:#214b40;font-size:21px}.academy-practice-heading p{max-width:540px;margin:0;color:var(--muted);font-size:13px;line-height:1.6}.academy-practice-heading>span{flex:none;padding:7px 9px;border-radius:999px;background:#dcebdd;color:#28594b;font-size:11px}.academy-practice-content{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:15px}.practice-question{padding:14px;border:1px solid #dce6dc;border-radius:13px;background:#fff}.practice-question-meta{display:flex;justify-content:space-between;gap:8px;color:#738176;font-size:10px}.practice-question h4{margin:10px 0 13px;color:#293a30;font-size:14px;line-height:1.6}.practice-options{display:grid;gap:6px}.practice-options label{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid #e1e8e1;border-radius:9px;color:#455549;font-size:12px;line-height:1.4;cursor:pointer;transition:.15s}.practice-options label:hover,.practice-options label.selected{border-color:#477769;background:#edf6ee;color:#214b40}.practice-options input{position:absolute;opacity:0;pointer-events:none}.practice-options span{display:grid;place-items:center;width:19px;height:19px;border:1px solid #b8cdbb;border-radius:50%;font:700 10px Georgia,serif;color:#477769;flex:none}.practice-options label.selected span{background:#28594b;border-color:#28594b;color:#fff}@container app-viewport (max-width: 850px){.academy-practice-content{grid-template-columns:1fr}}@container app-viewport (max-width: 560px){.academy-practice{padding:16px}.academy-practice-heading{display:block}.academy-practice-heading>span{display:inline-block;margin-top:10px}}

/* Product polish: calm editorial cards, clearer hierarchy, and desktop breathing room. */
:root{--ink:#173f37;--ink-soft:#28594b;--paper:#f6f2ea;--surface:#fffdfa;--gold:#b8873c;--mist:#eaf1eb;--line:#e2dacb;--shadow:0 18px 48px rgba(32,48,39,.09)}
body{background:radial-gradient(circle at 86% 3%,#e7ddbf 0,transparent 25rem),radial-gradient(circle at 9% 38%,#edf3ec 0,transparent 23rem),var(--paper);min-height:100vh;letter-spacing:.01em}
.shell{max-width:900px;padding-top:38px}.hero{position:relative;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding:30px 30px 27px;border-radius:24px;background:linear-gradient(135deg,#173f37 0%,#245547 62%,#537260 100%);color:#fff;overflow:hidden;box-shadow:var(--shadow)}.hero:after{content:"";position:absolute;width:330px;height:330px;border:1px solid rgba(255,255,255,.13);border-radius:50%;right:-136px;top:-184px}.hero-copy{position:relative;z-index:1}.hero .eyebrow{color:#e7c980;letter-spacing:.17em}.hero h1{margin:0;font-size:clamp(42px,7vw,68px);line-height:1.08;letter-spacing:.16em}.hero p:last-of-type{margin:13px 0 0;font-size:16px;color:#e2eee7}.hero-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:20px}.hero-tags span{padding:5px 8px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.08);font-size:11px;color:#f4f2e9}.hero-seal{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:5px;width:88px;height:88px;border:1px solid rgba(234,206,142,.8);border-radius:50%;color:#f5d887;flex:none;transform:rotate(-8deg)}.hero-seal>span{font:46px KaiTi,STKaiti,serif;line-height:1}.hero-seal small{font-size:11px;line-height:1.15;text-align:center;letter-spacing:.2em}.notice{margin-top:14px;border:1px solid #ead6a6;border-left:0;border-radius:12px;background:linear-gradient(90deg,#fff5d9,#fffaf0);padding:11px 14px;align-items:center}.notice strong{color:#81561b;white-space:nowrap}.tabs{position:sticky;top:0;z-index:5;margin:20px 0 16px;padding:7px;border:1px solid rgba(226,218,203,.86);border-radius:16px;background:rgba(246,242,234,.85);backdrop-filter:blur(12px);box-shadow:0 8px 20px rgba(54,57,44,.05)}.tabs button{flex:1;padding:11px 14px;font-size:14px}.tabs button.active{box-shadow:0 4px 12px rgba(23,63,55,.22)}.panel{border-radius:22px;background:rgba(255,253,250,.92);box-shadow:var(--shadow);padding:28px}.section-title{padding-bottom:17px;border-bottom:1px solid #eee7da}.section-title h2{font-size:28px;letter-spacing:.03em}.status{border:0;border-radius:999px;background:#edf4ef;color:#28594b;padding:7px 10px;font-weight:700;box-shadow:inset 0 0 0 1px #cfe0d1}.status.warning{background:#fff5df;color:#805717;box-shadow:inset 0 0 0 1px #eed5a4}.setup-steps{display:flex;gap:8px;list-style:none;padding:0;margin:0 0 24px}.setup-steps li{display:flex;align-items:center;gap:8px;flex:1;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff;font-size:12px;color:var(--muted)}.setup-steps b{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#ece9e1;color:#77736a;font-size:11px}.setup-steps .current{border-color:#a8c4af;background:#f2f8f2;color:var(--ink);font-weight:700}.setup-steps .current b{background:var(--ink);color:#fff}.grid.two{gap:14px}input,select{border-color:#ddd5c6;background:#fffefa;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}input:focus,select:focus{outline:3px solid rgba(184,135,60,.22);border-color:#b8873c}.segment span{background:#fffefa}.primary{border-radius:12px;background:linear-gradient(135deg,#173f37,#28594b);box-shadow:0 10px 20px rgba(23,63,55,.17);transition:transform .16s ease,box-shadow .16s ease}.primary:hover{transform:translateY(-1px);box-shadow:0 14px 24px rgba(23,63,55,.22)}.result{margin-top:0;border:1px solid #d6e4d8;border-radius:16px;background:linear-gradient(135deg,#f0f7f0,#fffdf8);padding:20px}.result>strong{font-size:17px}.pillar-row div{border:0;background:#fffefa;box-shadow:0 3px 11px rgba(42,59,43,.06)}.calendar-tools{padding:10px;border-radius:14px;background:#f3f6f1}.analysis-card{border-radius:17px;background:linear-gradient(145deg,#edf5ee,#fffaf0);box-shadow:0 8px 20px rgba(42,59,43,.06)}.life-grid article{transition:transform .16s ease,box-shadow .16s ease}.life-grid article:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(42,59,43,.09)}.ladder{padding:6px 16px;border-radius:16px;background:#fbfaf5}.device-grid article{background:linear-gradient(145deg,#fffdf8,#f3f6f1);transition:transform .16s ease}.device-grid article:hover{transform:translateY(-3px)}
@container app-viewport (min-width: 860px){.shell{max-width:1120px}.panel#profile{display:grid;grid-template-columns:minmax(0,1.06fr) minmax(330px,.94fr);gap:26px;align-items:start}.panel#profile>.section-title,.panel#profile>.setup-steps{grid-column:1/-1}.panel#profile>form{margin:0}.panel#profile>#profile-result{position:sticky;top:92px;margin:0}.panel#today{padding-left:36px;padding-right:36px}.life-grid{grid-template-columns:repeat(3,1fr)}.hour-grid{grid-template-columns:repeat(6,1fr)}.device-grid{grid-template-columns:repeat(5,1fr)}}
@container app-viewport (max-width: 560px){.shell{padding:18px 12px 48px}.hero{padding:24px 20px;border-radius:20px;align-items:flex-start}.hero h1{font-size:44px}.hero-seal{width:66px;height:66px}.hero-seal>span{font-size:35px}.hero-tags span{font-size:10px}.notice{font-size:12px}.tabs{margin-top:14px;top:0;border-radius:14px}.tabs button{padding:9px 12px;font-size:13px}.panel{border-radius:18px;padding:19px}.section-title h2{font-size:23px}.setup-steps{display:grid;grid-template-columns:1fr}.setup-steps li{padding:8px 10px}.pillar-row{gap:7px}.pillar-row b{font-size:17px}.calendar-tools{gap:6px}.calendar-tools strong{font-size:14px}}
.heluo-deep{position:relative;margin-top:24px;padding:24px;border:1px solid #c7d9ca;border-radius:22px;background:radial-gradient(circle at 100% 0,#e7f0e3 0,transparent 32%),linear-gradient(145deg,#fffefa,#edf5ee);color:#214b40;overflow:hidden}.heluo-deep:after{content:"";position:absolute;width:250px;height:250px;right:-135px;bottom:-170px;border:1px solid rgba(189,138,56,.24);border-radius:50%;pointer-events:none}.heluo-heading,.heluo-hexagrams,.heluo-focus,.heluo-trace,.heluo-rules,.heluo-phase-head,.heluo-phases{position:relative;z-index:1}.heluo-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.heluo-heading h3{margin:2px 0 6px;font:600 25px KaiTi,STKaiti,serif;letter-spacing:.06em}.heluo-heading p{max-width:650px;margin:0;color:#647467;font-size:13px;line-height:1.65}.heluo-heading>b{flex:none;padding:7px 10px;border-radius:999px;background:#fdf0d3;color:#805717;font-size:11px;box-shadow:inset 0 0 0 1px rgba(184,135,60,.22)}.heluo-hexagrams{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}.heluo-hexagrams>div{position:relative;min-height:124px;padding:15px 14px 12px;border:1px solid #d8e4d9;border-radius:15px;background:rgba(255,255,255,.82);overflow:hidden}.heluo-hexagrams>div:not(.yuan-tang-card):before{content:"";position:absolute;right:9px;top:11px;width:42px;height:42px;border-radius:50%;background:#eef5ed}.heluo-hexagrams span,.heluo-hexagrams small{display:block;color:#708073;font-size:11px;line-height:1.5}.heluo-hexagrams strong{display:block;margin:6px 0 3px;font-size:18px;color:#214b40}.yuan-tang-card{background:linear-gradient(150deg,#244f44,#376556)!important;border-color:#244f44!important;color:#fff}.yuan-tang-card span,.yuan-tang-card small{color:#deece2}.yuan-tang-card strong{color:#f3d690;font-size:22px}.yuan-tang-card i{position:absolute;right:11px;bottom:10px;font-style:normal;font-size:10px;color:#cfdfd1}.hexagram-glyph{position:absolute;right:16px;top:17px;width:34px;display:grid;gap:3px}.hexagram-glyph i{display:block;height:3px;background:#315d50;border-radius:9px}.hexagram-glyph i.broken{background:linear-gradient(90deg,#315d50 0 37%,transparent 37% 63%,#315d50 63%)}.heluo-focus{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-top:13px;padding:14px 15px;border:1px solid #d8e4d7;border-radius:14px;background:#f5f8f0}.heluo-focus.is-current{background:linear-gradient(115deg,#fff7e6,#f4f8f0);border-color:#dfc487}.heluo-focus>div:first-child span,.heluo-focus small{display:block;color:#748174;font-size:11px}.heluo-focus strong{display:block;margin:4px 0;font-size:15px}.heluo-layer-chips{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:5px}.heluo-layer-chips span{padding:5px 7px;border:1px solid #cfdfd0;border-radius:999px;background:#fff;color:#47604d;font-size:10px;white-space:nowrap}.heluo-trace{margin-top:13px;padding:13px;border-radius:13px;background:rgba(243,247,242,.88)}.heluo-trace>b{font-size:13px}.heluo-trace>div{display:flex;flex-wrap:wrap;gap:6px;margin:9px 0}.heluo-trace span{padding:4px 7px;border:1px solid #d6e3d6;border-radius:7px;background:#fff;font-size:11px;color:#47604d}.heluo-trace small{color:#78877b;font-size:11px;line-height:1.55}.heluo-rules{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}.heluo-rules span{padding:5px 8px;border:1px solid #d4e2d5;border-radius:999px;background:rgba(255,255,255,.8);color:#47604d;font-size:11px}.heluo-phase-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin:20px 0 9px}.heluo-phase-head b{font-size:15px}.heluo-phase-head span{color:#78877b;font-size:11px}.heluo-phases{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:0;margin:0;list-style:none}.heluo-phases li{margin:0}.heluo-phase{position:relative;width:100%;min-height:83px;padding:12px 11px 11px 42px;border:1px solid #d8e3d8;border-radius:12px;background:rgba(255,255,255,.9);color:#214b40;text-align:left;cursor:pointer;font:inherit;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.heluo-phase:before{content:attr(data-phase-start);position:absolute;left:11px;top:13px;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#dfece0;color:#28594b;font:700 10px Georgia,serif}.heluo-phase:hover{transform:translateY(-1px);border-color:#a7c5aa;box-shadow:0 7px 14px rgba(39,83,70,.09)}.heluo-phase:focus-visible{outline:3px solid rgba(184,135,60,.35);outline-offset:2px}.heluo-phase.current{border-color:#d8b362;background:#fff9ea}.heluo-phase.current:before{background:#d89b32;color:#fff}.heluo-phase.selected{box-shadow:inset 3px 0 0 #244f44}.heluo-phase em,.heluo-phase b,.heluo-phase span{display:block}.heluo-phase em{margin-bottom:3px;color:#947039;font-size:10px;font-style:normal;font-weight:700}.heluo-phase b{font-size:12px}.heluo-phase span{margin-top:4px;color:#6e7b70;font-size:10px;line-height:1.45}@container app-viewport (max-width: 650px){.heluo-deep{padding:17px}.heluo-heading{display:block}.heluo-heading>b{display:inline-block;margin-top:10px}.heluo-hexagrams,.heluo-phases{grid-template-columns:1fr}.heluo-focus{display:block}.heluo-layer-chips{justify-content:flex-start;margin-top:10px}.heluo-hexagrams>div{min-height:98px}.heluo-phase-head{display:block}.heluo-phase-head span{display:block;margin-top:4px}}
[hidden]{display:none!important}
.user-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding:10px 12px;border:1px solid #e3dbc9;border-radius:14px;background:#fffdf8;box-shadow:0 4px 14px rgba(54,57,44,.05)}
.user-chip{display:flex;align-items:center;gap:11px;border:0;background:transparent;padding:4px 6px;cursor:pointer;text-align:left;min-width:0}
.user-avatar{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#173f37,#245547);font-size:22px;flex:none}
.user-meta{display:flex;flex-direction:column;gap:2px;min-width:0}
.user-meta b{font-size:15px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw}
.user-meta small{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:54vw}
.user-edit-btn{flex:none}
.user-dialog{border:0;border-radius:18px;padding:0;background:#fffaf2;box-shadow:0 20px 60px rgba(23,63,55,.25);max-width:420px;width:calc(100vw - 40px)}
.user-dialog::backdrop{background:rgba(23,45,38,.45);backdrop-filter:blur(3px)}
.user-form{padding:22px;display:flex;flex-direction:column;gap:14px}
.user-dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.user-dialog-head h3{margin:4px 0 0;font-size:20px}
.user-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700}
.user-form input{min-height:42px;padding:0 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fff}
.user-form fieldset{border:1px solid var(--line);border-radius:12px;margin:0;padding:12px}
.user-form legend{font-size:13px;font-weight:700;padding:0 6px}
.avatar-picker{display:flex;flex-wrap:wrap;gap:7px}
.avatar-picker button{width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:#fff;font-size:20px;cursor:pointer}
.avatar-picker button.active{border-color:var(--ink);background:var(--ink)}
.user-dialog-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.user-dialog-facts div{background:#f4f0e6;border-radius:10px;padding:9px}
.user-dialog-facts span,.user-dialog-facts b{display:block}
.user-dialog-facts span{font-size:11px;color:var(--muted)}
.user-dialog-facts b{font-size:12px;margin-top:3px;word-break:break-all}
.user-dialog-actions{display:flex;gap:10px;margin-top:2px}
.user-dialog-actions .primary{flex:1;min-height:42px}
@container app-viewport (max-width: 430px){.user-bar{align-items:stretch}.user-meta b{max-width:38vw}.user-meta small{max-width:44vw}.user-dialog-facts{grid-template-columns:1fr}.user-dialog-actions{flex-direction:column}}
.auth-user-list{display:flex;flex-direction:column;gap:7px;max-height:220px;overflow:auto}
.auth-user-item{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--line);border-radius:11px;background:#fffefa;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.auth-user-item.active{border-color:#28594b;background:#28594b;color:#fff}
.auth-user-item.active small{color:#dbe9df}
.auth-user-item small{display:block;color:var(--muted);font-size:11px}
.auth-user-item b{font-size:14px}
.auth-user-item>span:first-child{font-size:20px;flex:none}
.auth-register{border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.auth-register summary{cursor:pointer;font-weight:700;font-size:13px}
.auth-register label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;margin-top:10px}
.auth-register input{min-height:40px;padding:0 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fff}
.auth-register .primary{margin-top:12px;min-height:40px}
.auth-method-tabs{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:4px;border:1px solid var(--line);border-radius:11px;background:#f3efe6}
.auth-method-tabs button{min-height:38px;border:0;border-radius:8px;background:transparent;color:var(--muted);font:700 13px inherit;cursor:pointer}
.auth-method-tabs button.active{background:#fff;color:var(--ink);box-shadow:0 2px 7px rgba(45,55,45,.09)}
.auth-code-row{display:grid;grid-template-columns:1fr auto;gap:8px}
.auth-code-row .today-button{min-width:104px;min-height:42px}
.auth-dev-code{margin:7px 0 0;padding:8px 10px;border:1px solid #dfc482;border-radius:9px;background:#fff7e4;color:#805717;font-size:12px;font-weight:700;letter-spacing:.04em}
.user-bar.logged-out{justify-content:flex-end}
.user-bar.logged-out .user-chip{display:flex}
.user-bar.logged-out .user-edit-btn{margin-left:auto}

/* Personal almanac compact mode (v49).
   Design system: reuse ink/paper/gold/mist tokens; 6/10/14px spacing rhythm;
   compact typography, 8–14px radii, restrained borders and no new shadow layer. */
#today{--almanac-gap:10px}
#today>.section-title{margin-bottom:10px;padding-bottom:11px}
#today>.section-title .eyebrow{margin-bottom:4px;font-size:10px}
#today>.section-title h2{font-size:22px;line-height:1.2}
#today>.section-title .muted{margin:4px 0 0;font-size:12px;line-height:1.45}
#today>.section-title .status{padding:4px 7px;font-size:10px}
#today .hour-section-primary{margin:0 0 12px;padding:11px 12px 12px;border:1px solid #d6e2d7;border-radius:14px;background:#f3f7f2}
#today .hour-section-primary .subhead{align-items:center}
#today .hour-section-primary .subhead h3{font-size:15px}
#today .hour-section-primary .subhead span{font-size:10px}
#today .hour-section-primary .hour-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;margin-top:8px}
#today .hour-section-primary .hour-grid button{min-height:44px;padding:5px 3px;border-radius:7px;font-size:12px;line-height:1.15}
#today .hour-section-primary .hour-grid button small{margin-top:2px;font-size:9px;line-height:1.15}
#today .calendar-tools{gap:6px;margin:0 0 8px}
#today .calendar-tools strong{font-size:14px}
#today .icon-button{width:34px;height:34px;font-size:21px}
#today .today-button{min-height:34px;padding:5px 9px;font-size:12px}
#today .jump-date{min-width:116px;font-size:10px}
#today .jump-date input{min-height:34px;padding:4px 5px;font-size:11px}
#today .weekday{margin-bottom:3px;font-size:10px}
#today .calendar-grid{gap:2px}
#today .calendar-grid button{aspect-ratio:auto;min-height:34px;border-radius:7px;font-size:12px}
#today .month-almanac{margin-top:10px;padding:12px;border-radius:13px}
#today .month-almanac h3{font-size:16px}
#today .month-almanac-grid{gap:3px;margin-top:9px}
#today .month-almanac-grid span{min-height:42px;padding:4px;border-radius:7px}
#today .almanac-current{gap:5px;margin-top:8px}
#today .almanac-current span{padding:6px 8px;border-radius:8px}
#today .analysis-card{margin:12px 0;padding:12px;border-radius:11px}
#today .analysis-card .date{margin:0 0 2px;font-size:10px}
#today .analysis-card h3{font-size:16px}
#today .chart-facts{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin:9px 0}
#today .chart-facts div{padding:6px 7px;border-radius:7px}
#today .chart-facts span{font-size:10px}
#today .chart-facts b{font-size:12px}
#today .analysis-copy{font-size:12px;line-height:1.55}
#today .temporal-hexagrams,#today .clause-timeline{margin:12px 0;padding:14px;border-radius:14px}
#today .life-section{margin-top:14px}

@container app-viewport (max-width: 650px){
  #today .hour-section-primary .hour-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  #today .chart-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@container app-viewport (max-width: 430px){
  #today .hour-section-primary{margin-left:-4px;margin-right:-4px;padding:10px}
  #today .calendar-tools{flex-wrap:wrap}
  #today .calendar-tools strong{min-width:95px}
  #today .jump-date{width:100%;order:5;display:grid;grid-template-columns:auto 1fr;align-items:center}
  #today .calendar-grid button{min-height:38px}
}

/* Web App 主导航：五个固定底部入口，与内容滚动区域分离。 */
.shell { padding-bottom: calc(124px + env(safe-area-inset-bottom, 0px)); }
.tabs {
  position: fixed;
  top: auto;
  bottom: calc(14px + env(safe-area-inset-bottom, 0px));
  left: 50%;
  transform: translateX(-50%);
  width: min(808px, calc(100% - 28px));
  box-sizing: border-box;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
  margin: 0;
  padding: 14px;
  border: 1px solid #e5ddcd;
  border-radius: 28px;
  background: #f6f3ec;
  box-shadow: 0 10px 32px rgba(24, 63, 55, .12);
  z-index: 100;
}
.tabs button { min-width: 0; min-height: 52px; padding: 12px 4px; border-radius: 999px; color: #183f37; font-size: 20px; font-weight: 700; white-space: nowrap; }
.tabs button.active { background: #183f37; color: #fff; box-shadow: 0 6px 16px rgba(24,63,55,.18); }
.tabs button:focus-visible { outline: 3px solid #b8873c; outline-offset: 3px; }
@container app-viewport (max-width: 560px) {
  .tabs { width: calc(100% - 16px); padding: 8px; gap: 2px; border-radius: 22px; bottom: calc(8px + env(safe-area-inset-bottom, 0px)); }
  .tabs button { font-size: 14px; min-height: 46px; padding: 10px 2px; }
  .shell { padding-bottom: calc(100px + env(safe-area-inset-bottom, 0px)); }
}
/* 档案页有独立网格布局，非活动面板必须统一退出布局。 */
.panel:not(.active) { display: none !important; }

/* 顶部右侧用户区：账号与档案统一入口。 */
#user-bar { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:8px; margin:0 0 16px auto; padding:10px 12px; width:fit-content; max-width:100%; }
#user-bar .user-chip { flex:0 1 auto; min-width:0; }
#user-bar .user-meta { min-width:0; }
#user-bar .user-meta b { max-width:180px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
#user-bar .user-meta small { display:none; }
#user-bar .user-edit-btn { margin-left:0; }
#user-bar button { min-height:40px; }
@container app-viewport (max-width: 560px) {
  #user-bar { padding:8px; gap:6px; }
  #user-bar button { font-size:12px; padding:8px; }
  #user-bar .user-meta b { max-width:100px; }
}
/* 紧凑品牌横幅，约为原高度的一半。 */
.hero { padding:16px 24px; align-items:center; gap:16px; border-radius:22px; }
.hero .eyebrow { margin:0 0 6px; font-size:10px; line-height:1.3; }
.hero h1 { font-size:38px; line-height:1.1; }
.hero p:last-of-type:not(.eyebrow) { margin:7px 0 0; font-size:14px; line-height:1.4; }
.hero-tags { margin-top:10px; gap:6px; }
.hero-tags span { padding:3px 7px; font-size:10px; line-height:1.3; }
.hero-seal { width:60px; height:60px; }
.hero-seal>span { font-size:32px; }
.hero-seal small { font-size:9px; }
@container app-viewport (max-width: 560px) {
  .hero { padding:14px 16px; gap:10px; }
  .hero h1 { font-size:30px; }
  .hero .eyebrow { font-size:8px; letter-spacing:.1em; }
  .hero p:last-of-type:not(.eyebrow) { font-size:12px; }
  .hero-seal { width:46px; height:46px; }
  .hero-seal>span { font-size:26px; }
  .hero-tags { gap:4px; margin-top:8px; }
  .hero-tags span { padding:3px 5px; font-size:9px; }
}
/* Keep account dialogs compact on narrow screens without empty status gaps. */
.user-form p{margin:0;line-height:1.55}
.user-form p:empty{display:none}
.user-form select{min-height:42px;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font:inherit}
.user-dialog{max-height:calc(100dvh - 40px);overflow:auto}
