:root{--bg: #f6f1e7;--bg-soft: #efe7d6;--surface: #fdfbf6;--surface-2: #f4edde;--ink: #2b2420;--ink-2: #6d6157;--ink-3: #9a8d80;--line: rgba(60, 48, 38, .12);--accent: #a83224;--accent-soft: rgba(168, 50, 36, .1);--indigo: #2f4a62;--indigo-soft: rgba(47, 74, 98, .1);--gold: #a67c2e;--good: #3e7c4f;--good-soft: rgba(62, 124, 79, .12);--warn: #a67c2e;--warn-soft: rgba(166, 124, 46, .14);--bad: #b03a2e;--bad-soft: rgba(176, 58, 46, .12);--shadow: 0 10px 30px rgba(60, 48, 38, .1);--shadow-sm: 0 3px 12px rgba(60, 48, 38, .08);--radius: 18px;--radius-sm: 12px;--font-serif: "Songti SC", "Noto Serif SC", "STSong", "SimSun", Georgia, serif;--font-sans: -apple-system, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", "Segoe UI", Roboto, sans-serif;--ease: cubic-bezier(.22, .8, .3, 1);--tabbar-h: 60px;--safe-bottom: env(safe-area-inset-bottom, 0px)}[data-theme=dark]{--bg: #141210;--bg-soft: #1b1815;--surface: #201c18;--surface-2: #2a241f;--ink: #ede4d6;--ink-2: #b4a698;--ink-3: #7d7163;--line: rgba(237, 228, 214, .12);--accent: #d2553f;--accent-soft: rgba(210, 85, 63, .16);--indigo: #7ea6c8;--indigo-soft: rgba(126, 166, 200, .14);--gold: #d2a54f;--good: #7fbf92;--good-soft: rgba(127, 191, 146, .14);--warn: #d2a54f;--warn-soft: rgba(210, 165, 79, .16);--bad: #e07a68;--bad-soft: rgba(224, 122, 104, .16);--shadow: 0 12px 34px rgba(0, 0, 0, .45);--shadow-sm: 0 4px 14px rgba(0, 0, 0, .35)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;transition:background .35s var(--ease),color .35s var(--ease)}.app-shell{max-width:640px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;position:relative}.app-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:14px 18px 10px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.brand{display:flex;align-items:center;gap:9px}.brand-mark{font-size:22px;color:var(--accent);line-height:1;animation:breathe 5s var(--ease) infinite}.brand-name{font-family:var(--font-serif);font-size:17px;font-weight:700;letter-spacing:.5px}.header-actions{display:flex;gap:8px}.chip-btn{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:600;cursor:pointer;transition:all .22s var(--ease);display:inline-flex;align-items:center;gap:5px}.chip-btn:hover{color:var(--accent);border-color:var(--accent)}.chip-btn.icon-only{padding:6px}.app-main{flex:1;padding:6px 16px calc(var(--tabbar-h) + var(--safe-bottom) + 18px);animation:fadeUp .38s var(--ease)}.center-loading{display:grid;place-items:center;min-height:45vh;color:var(--ink-3)}.tabbar{position:fixed;bottom:0;left:0;right:0;max-width:640px;margin:0 auto;height:calc(var(--tabbar-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);display:flex;background:color-mix(in srgb,var(--surface) 90%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line);z-index:30}.tabbar-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:none;background:none;color:var(--ink-3);font-size:11px;font-weight:600;cursor:pointer;transition:color .25s var(--ease);position:relative}.tabbar-item svg{transition:transform .25s var(--ease)}.tabbar-item.active{color:var(--accent)}.tabbar-item.active svg{transform:translateY(-1px) scale(1.08)}.tabbar-item.active:before{content:"";position:absolute;top:0;width:26px;height:3px;border-radius:0 0 4px 4px;background:var(--accent)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:14px;box-shadow:var(--shadow-sm);animation:fadeUp .4s var(--ease) both}.card+.card{margin-top:0}.card-title{font-family:var(--font-serif);font-size:15px;font-weight:700;margin:0 0 12px;display:flex;align-items:center;gap:8px}.card-title:before{content:"";width:4px;height:15px;border-radius:2px;background:linear-gradient(var(--accent),var(--gold))}.section-sub{color:var(--ink-2);font-size:13px;margin:-6px 0 14px}.luck-hero{border-radius:22px;padding:22px 20px;color:#fff;position:relative;overflow:hidden;margin-bottom:14px;box-shadow:var(--shadow)}.luck-hero.good{background:linear-gradient(135deg,#3e7c4f,#2f5d3d)}.luck-hero.mid{background:linear-gradient(135deg,#8a7448,#6d5a36)}.luck-hero.bad{background:linear-gradient(135deg,#b03a2e,#7d2620)}.luck-hero:after{content:"☯";position:absolute;right:-8px;bottom:-22px;font-size:110px;opacity:.12;animation:spinSlow 40s linear infinite}.luck-label{font-size:13px;opacity:.85;letter-spacing:2px}.luck-value{font-family:var(--font-serif);font-size:26px;font-weight:800;margin-top:2px}.luck-reason{font-size:12.5px;opacity:.9;margin-top:6px;max-width:82%}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;font-size:13px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink)}.chip.good{background:var(--good-soft);border-color:transparent;color:var(--good)}.chip.bad{background:var(--bad-soft);border-color:transparent;color:var(--bad)}.chip.warn{background:var(--warn-soft);border-color:transparent;color:var(--warn)}.chip.accent{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.list-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.info-row{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line);font-size:13.5px}.info-row:last-child{border-bottom:none}.info-row .k{color:var(--ink-3)}.info-row .v{color:var(--ink);font-weight:600;text-align:right}.pillar-table{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.pillar-col{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--line);padding:12px 8px;text-align:center;position:relative;overflow:hidden}.pillar-col.dm:after{content:"日主";position:absolute;top:4px;right:6px;font-size:10px;color:var(--accent);font-weight:700}.pillar-name{font-size:12px;color:var(--ink-3);margin-bottom:6px}.pillar-gan{font-family:var(--font-serif);font-size:26px;font-weight:800;line-height:1.2;color:var(--accent)}.pillar-zhi{font-family:var(--font-serif);font-size:22px;font-weight:700;color:var(--indigo)}.pillar-sub{font-size:11px;color:var(--ink-2);margin-top:6px;line-height:1.5}.wuxing-wrap{display:flex;align-items:center;gap:18px}.wuxing-legend{flex:1;display:flex;flex-direction:column;gap:8px}.wx-item{display:grid;grid-template-columns:34px 1fr 34px;align-items:center;gap:8px;font-size:12.5px}.wx-bar{height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden}.wx-fill{height:100%;border-radius:4px;transition:width .8s var(--ease)}.hex-row{display:flex;gap:10px}.hex-card{flex:1;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);padding:12px;text-align:center;box-shadow:var(--shadow-sm)}.hex-card .role{font-size:12px;color:var(--ink-3);font-weight:700;letter-spacing:2px}.hex-card .hname{font-family:var(--font-serif);font-size:17px;font-weight:800;margin:4px 0 8px}.hex-card .hname small{display:block;font-family:var(--font-sans);font-size:11px;color:var(--ink-3);font-weight:500}.hex-card .mean{font-size:12.5px;color:var(--ink-2);min-height:34px}.lines{display:flex;flex-direction:column;gap:3.5px;align-items:center;padding:6px 0}.line{display:flex;gap:3px;width:52px;height:6px}.line span{flex:1;height:100%;border-radius:2px;background:var(--ink)}.line.old{opacity:.45}.line-marker{font-size:9px;color:var(--accent);height:10px;line-height:10px}.narrative .seg{margin-bottom:14px}.narrative .seg h4{font-family:var(--font-serif);font-size:14px;margin:0 0 4px;color:var(--accent)}.narrative .seg h4 small{font-family:var(--font-sans);font-size:11px;color:var(--ink-3);font-weight:500;margin-left:6px}.narrative .seg p{margin:0;font-size:14px;color:var(--ink)}.advice-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.advice-list li{display:flex;gap:8px;align-items:flex-start;font-size:14px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--surface-2)}.advice-list li:before{content:"✦";color:var(--gold)}.qimen-board{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;aspect-ratio:1}.qm-cell{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--line);padding:7px 5px;display:flex;flex-direction:column;gap:3px;position:relative;min-width:0;transition:transform .2s var(--ease)}.qm-cell.hot{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.qm-cell .pn{position:absolute;top:4px;left:7px;font-size:11px;font-weight:800;color:var(--ink-2)}.qm-cell .pval{text-align:center}.qm-cell .star{font-size:13px;font-weight:700}.qm-cell .door{font-size:13px;font-weight:700;color:var(--indigo)}.qm-cell .gan{font-size:11.5px;color:var(--ink-2)}.qm-cell .god{font-size:10.5px;color:var(--gold)}.qm-cell .glyph{font-size:15px}.qm-cell.good{background:var(--good-soft)}.qm-cell.bad{background:var(--bad-soft)}.field{margin-bottom:13px}.field label{display:block;font-size:12.5px;font-weight:700;color:var(--ink-2);margin-bottom:6px}.input,.select,.textarea{width:100%;padding:11px 13px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:14.5px;font-family:var(--font-sans);transition:border-color .2s var(--ease),box-shadow .2s var(--ease);outline:none}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.textarea{min-height:74px;resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.btn{border:none;border-radius:999px;padding:12px 22px;font-size:15px;font-weight:700;cursor:pointer;transition:transform .15s var(--ease),box-shadow .25s var(--ease),background .25s var(--ease);display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(135deg,var(--accent),#c44935);color:#fff;box-shadow:0 8px 20px var(--accent-soft);width:100%}.btn-ghost{background:var(--surface-2);color:var(--ink);border:1px solid var(--line)}.btn-danger{background:var(--bad-soft);color:var(--bad)}.btn-sm{padding:8px 14px;font-size:13px}.seg-control{display:flex;gap:8px;margin-bottom:14px;background:var(--surface-2);padding:5px;border-radius:999px}.seg-btn{flex:1;border:none;background:none;padding:8px 10px;border-radius:999px;font-size:13.5px;font-weight:700;color:var(--ink-2);cursor:pointer;transition:all .25s var(--ease)}.seg-btn.active{background:var(--surface);color:var(--accent);box-shadow:var(--shadow-sm)}.profile-item{display:flex;align-items:center;gap:12px;padding:14px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);margin-bottom:10px;cursor:pointer;transition:all .22s var(--ease)}.profile-item:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.profile-item.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.profile-avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-serif);font-size:18px;font-weight:800;background:linear-gradient(135deg,var(--indigo-soft),var(--accent-soft));color:var(--indigo);flex-shrink:0}.profile-info{flex:1;min-width:0}.profile-name{font-weight:700;font-size:15px}.profile-meta{font-size:12px;color:var(--ink-3)}.profile-active-tag{font-size:11px;color:var(--accent);font-weight:800}.profile-actions{display:flex;gap:6px}.empty{text-align:center;padding:46px 20px;color:var(--ink-2)}.empty .big{font-size:44px;margin-bottom:10px}.empty p{font-size:14px;margin:4px 0 18px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#14100e80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:end center;z-index:60;animation:fadeIn .25s var(--ease)}.modal-sheet{width:100%;max-width:640px;background:var(--surface);border-radius:24px 24px 0 0;padding:20px 18px calc(18px + var(--safe-bottom));max-height:88vh;overflow-y:auto;animation:sheetUp .35s var(--ease);border:1px solid var(--line);border-bottom:none}.modal-title{font-family:var(--font-serif);font-size:17px;font-weight:800;margin:0 0 14px}.about-block{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);padding:16px;font-size:13px;color:var(--ink-2);line-height:1.7}.about-block strong{color:var(--ink)}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes sheetUp{0%{transform:translateY(60px);opacity:.6}to{transform:none;opacity:1}}@keyframes breathe{0%,to{opacity:1}50%{opacity:.55}}@keyframes spinSlow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{box-shadow:0 0 0 0 var(--accent-soft)}50%{box-shadow:0 0 0 8px transparent}}.cast-btn{animation:pulse 2.6s var(--ease) infinite}@media (min-width: 720px){.modal-mask{place-items:center}.modal-sheet{border-radius:24px;border:1px solid var(--line);max-height:80vh}}.ai-status{display:flex;gap:10px;align-items:flex-start;padding:12px;border-radius:12px;border:1px solid var(--line);background:var(--surface-2)}.ai-status.on{border-color:var(--good)}.ai-status.custom{border-color:var(--gold)}.ai-dot{width:10px;height:10px;border-radius:50%;margin-top:5px;background:var(--good);box-shadow:0 0 0 4px var(--good-soft);flex-shrink:0}.ai-status.custom .ai-dot{background:var(--gold);box-shadow:0 0 0 4px var(--warn-soft)}
