*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--page-bg-1: #f7f1e2;--page-bg-2: #efe6d0;--page-glow: rgba(39, 74, 166, .12);--surface: #fffdf7;--surface-alt: #f4eddd;--surface-ai: #f6f0e1;--surface-muted: #efe7d6;--text-primary: #2b2620;--text-secondary: #5b5560;--text-muted: #8f8794;--brand: #2a4db0;--brand-strong: #1c3a8c;--brand-soft: #e5ebfa;--gold: #b08642;--gold-soft: #f3e9d6;--border: #e2d8c2;--border-strong: #d2c4a6;--ok: #3f8f5b;--warn: #c08a2e;--err: #c0492f;--radius: 18px;--radius-sm: 12px;--shadow-card: 0 18px 50px -20px rgba(40, 30, 12, .28), 0 4px 12px -6px rgba(40, 30, 12, .12);--shadow-bubble: 0 1px 3px rgba(40, 30, 12, .08);--font-sans: "Noto Serif SC", "Songti SC", "STSong", system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", serif;--font-ui: system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, sans-serif;--text-fs: 15.5px;--text-line-h: 1.75}[data-theme=dark]{--page-bg-1: #0e1220;--page-bg-2: #161b2e;--page-glow: rgba(180, 160, 110, .08);--surface: #171c2e;--surface-alt: #232a42;--surface-ai: #1b2138;--surface-muted: #212842;--text-primary: #ece7da;--text-secondary: #b9b2a2;--text-muted: #8a8474;--brand: #c9b070;--brand-strong: #e3cd95;--brand-soft: #232a42;--gold: #c9b070;--gold-soft: #2a2c3f;--border: #2c3350;--border-strong: #3a4366;--shadow-card: 0 18px 50px -20px rgba(0, 0, 0, .55), 0 4px 12px -6px rgba(0, 0, 0, .4);--shadow-bubble: 0 1px 3px rgba(0, 0, 0, .3)}html,body,#root{height:100%;width:100%}body{color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-fs);line-height:var(--text-line-h);-webkit-font-smoothing:antialiased;background:radial-gradient(ellipse at 12% 0%,var(--page-glow) 0%,transparent 55%),linear-gradient(150deg,var(--page-bg-1) 0%,var(--page-bg-2) 100%);overflow:hidden}::selection{background:var(--gold-soft);color:var(--brand-strong)}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.app{height:100%;display:flex;flex-direction:column;max-width:860px;margin:0 auto;position:relative}.topbar{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:color-mix(in srgb,var(--surface) 72%,transparent);position:sticky;top:0;z-index:10;position:relative}.brand{display:flex;align-items:center;gap:11px;flex:none;min-width:0}.brand-logo{width:46px;height:46px;border-radius:8px;object-fit:cover;box-shadow:var(--shadow-bubble);border:1px solid var(--border)}.brand-text{min-width:0}.brand-title{font-family:var(--font-ui);font-weight:700;font-size:16px;letter-spacing:.02em;color:var(--text-primary);white-space:nowrap}.brand-sub{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:flex;align-items:center;gap:4px;position:absolute;right:14px;margin-left:auto}.icon-btn{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);cursor:pointer;transition:transform .18s cubic-bezier(.16,1,.3,1),background .18s,color .18s,border-color .18s;font-size:12px}.icon-btn:hover{transform:translateY(-1px);color:var(--brand);border-color:var(--border-strong);background:var(--surface-alt)}.icon-btn:active{transform:scale(.96)}.chat-scroll{flex:1;overflow-y:auto;padding:22px 18px 12px;scroll-behavior:smooth}.msg-list{display:flex;flex-direction:column;gap:18px}.motd{text-align:left;padding:28px 18px 10px;max-width:660px}.motd .verse{margin:0 auto;max-width:100%;text-align:center;font-style:italic;color:var(--gold);font-size:15.5px;line-height:1.85}.motd .verse-text{display:block;word-break:break-word}.motd .verse-cite{display:block;text-align:right;margin-top:4px}.try-label{font-family:var(--font-ui);font-size:13px;color:var(--text-muted);margin:22px 0 11px}.presets{display:flex;flex-direction:column;gap:9px;align-items:flex-start;margin-top:0}.preset-chip{font-family:var(--font-ui);font-size:13.5px;padding:9px 14px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-secondary);cursor:pointer;transition:transform .16s,border-color .16s,color .16s,background .16s}.preset-chip:hover{transform:translateY(-1px);color:var(--brand);border-color:var(--gold);background:var(--gold-soft)}.msg{display:flex;gap:12px;max-width:100%}.msg.user{flex-direction:row-reverse}.msg-avatar{flex:none;width:34px;height:34px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;font-size:16px;font-family:var(--font-ui);font-weight:700;border:1px solid var(--border)}.msg.assistant .msg-avatar{background:var(--brand-soft);color:var(--brand)}.msg.user .msg-avatar{background:var(--brand);color:#fff}.bubble{max-width:78%;padding:13px 16px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-ai);box-shadow:var(--shadow-bubble);word-break:break-word}.msg.user .bubble{background:var(--brand);color:#fff;border-color:var(--brand-strong);border-top-right-radius:5px}.msg.assistant .bubble{border-top-left-radius:5px}.msg.user .bubble a{color:#e7ecff}.bubble p{margin:0 0 .7em}.bubble p:last-child{margin-bottom:0}.bubble ul,.bubble ol{margin:.3em 0 .7em 1.3em}.bubble li{margin:.25em 0}.bubble em{color:var(--gold);font-style:italic}.bubble code{font-family:var(--font-mono, ui-monospace, monospace);background:var(--surface-muted);padding:1px 5px;border-radius:5px;font-size:.9em}.citations{margin-top:10px;display:flex;flex-direction:column;gap:8px}.citation{display:block;text-align:left;width:100%;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);padding:10px 13px;cursor:default;transition:border-color .16s,transform .16s,box-shadow .16s}.citation:hover{border-color:var(--gold);transform:translateY(-1px);box-shadow:var(--shadow-bubble)}.citation-top{display:flex;align-items:center;gap:8px;margin-bottom:5px}.cite-ref{font-family:var(--font-ui);font-weight:700;font-size:13px;color:var(--brand-strong);letter-spacing:.01em}.cite-kind{font-family:var(--font-ui);font-size:11px;padding:1px 7px;border-radius:999px;background:var(--gold-soft);color:var(--gold)}.citation-text{font-size:13px;color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.6}.sysline{text-align:center;font-size:12.5px;color:var(--text-muted);padding:4px 0}.retry-hint{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--warn, #b8860b);background:#ffc10714;padding:7px 14px;margin:0 auto 6px;width:fit-content;max-width:92%;border-radius:8px;border:1px solid rgba(255,193,7,.3)}.retry-dot{width:8px;height:8px;border-radius:50%;background:var(--warn, #b8860b);animation:retryPulse 1s ease-in-out infinite;flex-shrink:0}@keyframes retryPulse{0%,to{opacity:.4;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}.sysline.warn{color:var(--warn)}.sysline.err{color:var(--err)}.tool-line{font-family:var(--font-ui);font-size:12.5px;color:var(--text-muted);display:flex;align-items:center;gap:7px}.tool-dot{width:7px;height:7px;border-radius:50%;background:var(--gold);animation:pulse 1.1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.35}50%{opacity:1}}.composer{padding:10px 16px 12px;border-top:1px solid var(--border);background:color-mix(in srgb,var(--surface) 80%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.composer-inner{display:flex;align-items:flex-end;gap:10px;background:var(--surface);border:1px solid var(--border-strong);border-radius:16px;padding:8px 8px 8px 16px;box-shadow:var(--shadow-bubble);transition:border-color .18s}.composer-inner:focus-within{border-color:var(--gold)}.composer textarea{flex:1;border:none;outline:none;resize:none;background:transparent;color:var(--text-primary);font-family:var(--font-sans);font-size:15px;line-height:1.6;max-height:140px;padding:7px 0}.composer textarea::placeholder{color:var(--text-muted)}.send-btn{flex:none;width:40px;height:40px;border-radius:12px;border:none;background:var(--brand);color:#fff;font-size:17px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:transform .16s,background .16s,opacity .16s}.send-btn:hover:not(:disabled){transform:translateY(-1px);background:var(--brand-strong)}.send-btn:active:not(:disabled){transform:scale(.94)}.send-btn:disabled{opacity:.45;cursor:not-allowed}.send-btn.stop{background:var(--err)}.toast{position:absolute;left:50%;bottom:calc(72px + env(safe-area-inset-bottom));transform:translate(-50%);background:var(--brand-strong);color:#fff;font-family:var(--font-ui);font-size:13px;padding:9px 16px;border-radius:999px;box-shadow:var(--shadow-card);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:30}.toast.show{opacity:1;transform:translate(-50%) translateY(-4px)}.menu{position:absolute;top:56px;right:16px;background:var(--surface);border:1px solid var(--border-strong);border-radius:14px;box-shadow:var(--shadow-card);padding:6px;z-index:20;min-width:168px;font-family:var(--font-ui);animation:menu-in .16s ease}@keyframes menu-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.menu-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:none;background:transparent;color:var(--text-primary);padding:9px 11px;border-radius:9px;cursor:pointer;font-size:14px}.menu-item:hover{background:var(--surface-alt)}.menu-item.active{color:var(--brand);font-weight:600}.menu-item .tick{margin-left:auto;color:var(--gold)}@media (max-width: 560px){.bubble{max-width:86%}.brand-logo{width:38px;height:38px}.brand-title{font-size:14px}.brand-sub{font-size:11px}.icon-btn{width:24px;height:24px;font-size:11px}}.views{flex:1;min-height:0;display:flex}.view{flex:1;min-height:0;display:none;flex-direction:column}.view[data-active=true]{display:flex}.tabbar{display:flex;height:calc(58px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--border);background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex:none}.tabbar-btn{flex:1;border:none;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;color:var(--text-muted);font-family:var(--font-ui);transition:color .16s}.tabbar-btn .tab-ico{font-size:20px;line-height:1}.tabbar-btn .tab-label{font-size:11px}.tabbar-btn[data-active=true]{color:var(--brand)}.pray-view{background:transparent}.pray-banner{margin:10px 12px 4px;padding:9px 12px;border-radius:12px;background:color-mix(in srgb,var(--err) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--err) 30%,var(--border));color:var(--text-secondary);font-size:12.5px;line-height:1.6;font-family:var(--font-ui)}.pray-compose-bar{padding:4px 12px 6px}.pray-publish-btn{width:100%;padding:11px;border-radius:12px;border:1px dashed var(--border-strong);background:var(--surface);color:var(--brand);font-family:var(--font-ui);font-size:14px;cursor:pointer}.pray-publish-btn:hover{background:var(--surface-alt)}.pray-compose{background:var(--surface);border:1px solid var(--border-strong);border-radius:14px;padding:10px}.pray-compose textarea{width:100%;border:none;outline:none;resize:none;background:transparent;color:var(--text-primary);font-family:var(--font-sans);font-size:15px;line-height:1.6}.pray-compose-row{display:flex;align-items:center;gap:10px;margin-top:6px;flex-wrap:wrap}.compose-err{display:flex;align-items:flex-start;gap:8px;color:var(--err);font-size:13px;font-family:var(--font-ui);line-height:1.5;padding:8px 10px;margin-top:2px;border-radius:8px;background:color-mix(in srgb,var(--err) 14%,transparent);border:1px solid color-mix(in srgb,var(--err) 35%,transparent);animation:errpop .18s ease-out}.compose-err span{flex:1}.compose-err-close{flex:0 0 auto;background:none;border:0;color:var(--err);font-size:17px;line-height:1;cursor:pointer;padding:0 2px}@keyframes errpop{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.pray-compose.shake{animation:shake .4s}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-5px)}40%,80%{transform:translate(5px)}}.pray-pin-section{margin-bottom:4px}.pray-pin-header{font-family:var(--font-ui);font-size:12px;font-weight:600;color:var(--brand-strong);padding:8px 2px 4px}.pray-pin-section .pcard{border-left:3px solid var(--brand);background:var(--brand-soft)}.pray-dur{font-family:var(--font-ui);font-size:13px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}.pray-dur select{border:1px solid var(--border-strong);border-radius:8px;padding:4px 6px;background:var(--surface-alt);color:var(--text-primary);font-family:var(--font-ui)}.pray-count{margin-left:auto;font-family:var(--font-ui);font-size:12px;color:var(--text-muted)}.pray-login-hint{margin:10px 12px;padding:11px;text-align:center;border-radius:12px;background:var(--brand-soft);color:var(--brand-strong);font-family:var(--font-ui);font-size:14px;cursor:pointer}.pray-filters{display:flex;gap:8px;padding:4px 12px 8px}.pf{border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);border-radius:999px;padding:6px 14px;font-family:var(--font-ui);font-size:13px;cursor:pointer}.pf.on{background:var(--brand);color:#fff;border-color:var(--brand-strong)}.pray-scroll{flex:1;min-height:0;overflow-y:auto;padding:4px 12px 16px;display:flex;flex-direction:column;gap:12px;-webkit-overflow-scrolling:touch}.pray-dup{display:flex;flex-direction:column;gap:12px;pointer-events:none}.pray-auto-tip{text-align:center;font-family:var(--font-ui);font-size:11px;color:var(--text-muted);padding:2px 12px 6px}.pcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:13px 15px;box-shadow:var(--shadow-bubble)}.pcard.mine{border-color:var(--gold)}.pcard-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}.pcard-author{font-family:var(--font-ui);font-weight:700;font-size:14px;color:var(--text-primary)}.pcard-owner{font-family:var(--font-ui);font-size:11px;padding:1px 7px;border-radius:999px;background:var(--gold-soft);color:var(--gold)}.pcard-time{margin-left:auto;font-size:11.5px;color:var(--text-muted)}.pcard-content{font-size:15px;line-height:1.7;color:var(--text-primary);white-space:pre-wrap;word-break:break-word}.pcard-foot{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}.pcard-status{font-family:var(--font-ui);font-size:11.5px;color:var(--text-muted)}.pcard-status.s-active{color:var(--ok)}.pcard-status.s-stopped{color:var(--warn)}.pcard-status.s-expired{color:var(--text-muted)}.pcard-act{border:1px solid var(--border);background:var(--surface-alt);color:var(--text-secondary);border-radius:999px;padding:5px 12px;font-family:var(--font-ui);font-size:12.5px;cursor:pointer;transition:transform .14s,color .14s,border-color .14s,background .14s}.pcard-act:hover:not(:disabled){color:var(--brand);border-color:var(--gold)}.pcard-act:disabled{opacity:.5;cursor:not-allowed}.pcard-act.on{background:var(--brand-soft);color:var(--brand);border-color:var(--brand)}.pcard-act.danger{color:var(--err);border-color:color-mix(in srgb,var(--err) 40%,var(--border))}.pcard-err{margin-top:8px;color:var(--err);font-size:12.5px;font-family:var(--font-ui)}.pcard-comments{margin-top:10px;border-top:1px dashed var(--border);padding-top:10px;display:flex;flex-direction:column;gap:10px}.cmt{background:var(--surface-alt);border-radius:12px;padding:9px 11px}.cmt.note{background:var(--gold-soft);border:1px solid color-mix(in srgb,var(--gold) 35%,var(--border))}.cmt.reply{margin-left:18px;background:var(--surface-muted)}.cmt-head{display:flex;align-items:center;gap:8px;margin-bottom:3px}.cmt-author{font-family:var(--font-ui);font-weight:600;font-size:12.5px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}.cmt-note-tag{font-size:10.5px;padding:1px 6px;border-radius:999px;background:var(--gold);color:#fff}.cmt-owner-tag{font-size:10.5px;padding:1px 6px;border-radius:999px;background:var(--brand);color:#fff}.cmt-meta{margin-left:auto;display:flex;align-items:center;gap:8px}.cmt-time{font-size:11px;color:var(--text-muted)}.cmt-del{border:none;background:transparent;color:var(--err);font-family:var(--font-ui);font-size:11px;cursor:pointer;padding:0}.cmt-text{font-size:13.5px;line-height:1.6;color:var(--text-primary);white-space:pre-wrap;word-break:break-word}.cmt-reply{margin-top:5px;border:none;background:transparent;color:var(--brand);font-family:var(--font-ui);font-size:12px;cursor:pointer;padding:0}.cmt-compose{margin-top:4px;display:flex;flex-direction:column;gap:6px}.cmt-note-toggle{font-family:var(--font-ui);font-size:12.5px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}.cmt-reply-to{font-family:var(--font-ui);font-size:12.5px;color:var(--text-secondary)}.cmt-compose textarea{width:100%;border:1px solid var(--border-strong);border-radius:10px;padding:8px 10px;background:var(--surface);color:var(--text-primary);font-family:var(--font-sans);font-size:14px;resize:none;outline:none}.cmt-compose-foot{display:flex;align-items:center;gap:10px}.cmt-count{margin-left:auto;font-family:var(--font-ui);font-size:12px;color:var(--text-muted)}.send-btn.sm{width:auto;height:auto;padding:7px 16px;border-radius:10px;font-size:13px}.link-btn{border:none;background:transparent;color:var(--brand);font-family:var(--font-ui);font-size:12.5px;cursor:pointer;padding:0}.me-view{background:transparent}.me-scroll{flex:1;min-height:0;overflow-y:auto;padding:14px 14px 20px;display:flex;flex-direction:column;gap:16px}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px 18px;box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:10px}.auth-title{font-family:var(--font-ui);font-size:20px;color:var(--text-primary)}.auth-sub{font-size:12.5px;color:var(--text-muted);line-height:1.6;margin-bottom:4px}.auth-input{border:1px solid var(--border-strong);border-radius:12px;padding:11px 13px;background:var(--surface-alt);color:var(--text-primary);font-family:var(--font-sans);font-size:15px;outline:none}.auth-input:focus{border-color:var(--gold)}.auth-err{color:var(--err);font-size:13px;font-family:var(--font-ui)}.auth-submit{margin-top:4px;border:none;border-radius:12px;padding:12px;background:var(--brand);color:#fff;font-family:var(--font-ui);font-size:15px;cursor:pointer}.auth-submit:disabled{opacity:.5}.me-account{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.me-avatar{width:46px;height:46px;border-radius:12px;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;font-family:var(--font-ui);font-weight:700}.me-name{font-family:var(--font-ui);font-weight:700;font-size:17px;color:var(--text-primary)}.me-logout{margin-left:auto;border:1px solid var(--border-strong);background:var(--surface-alt);color:var(--err);border-radius:999px;padding:7px 14px;font-family:var(--font-ui);font-size:13px;cursor:pointer}.me-section{display:flex;flex-direction:column;gap:10px}.me-section-title{font-family:var(--font-ui);font-weight:700;font-size:15px;color:var(--text-primary)}.me-prayer-list{display:flex;flex-direction:column;gap:12px}.me-row{display:flex;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px}.me-row>span{font-family:var(--font-ui);font-size:14px;color:var(--text-primary)}.seg{display:flex;gap:4px}.seg-btn{border:1px solid var(--border);background:var(--surface-alt);color:var(--text-secondary);border-radius:9px;padding:6px 11px;font-family:var(--font-ui);font-size:12.5px;cursor:pointer}.seg-btn.on{background:var(--brand);color:#fff;border-color:var(--brand-strong)}.me-action{border:1px solid var(--border-strong);background:var(--surface-alt);color:var(--brand);border-radius:9px;padding:7px 13px;font-family:var(--font-ui);font-size:13px;cursor:pointer}.me-about{font-size:13px;line-height:1.75;color:var(--text-secondary)}
