:root{--bg-page: #ffffff;--bg-dark: #110c17;--bg-feed-bar: #161616;--ink-primary: #161722;--ink-secondary: #4f5158;--ink-tertiary: #8a8b99;--skeleton: #f0f6fe;--handle: #cfd0d2;--close-bg: #f4f3f4;--accent: #ff2d62;--accent-deep: #ff003c;--accent-cta: linear-gradient(135deg, #ff3949 0%, #ff4e59 100%);--accent-soft: #fff1f0;--info: #139afd;--info-bg: #e5f5ff;--badge-pink: #e8568c;--float-pill: rgba(0, 0, 0, .6);--bg-garden: linear-gradient(180deg, #fcebf0 0%, #f4dce5 100%);--banner-tip: #fdf0c8;--star: #ffc531;--star-badge: #ff5a45;--success: #57b25e;--grass-1: #8fbe5d;--grass-2: #6ba244;--grass-3: #4f7d31;--grass-hi: #a4cb72;--soil-1: #6e4b2f;--soil-2: #4a2f1b;--soil-3: #38220f;--soil-grain: #8a6540;--soil-grain-dark: #2e1c0c;--scene-bg-1: #3c6b4c;--scene-bg-2: #20382c;--radius-pill: 999px;--radius-card: 16px;--radius-inner: 10px;--space-page: 16px;--space-block: 24px;--space-item: 12px;--shadow-float: 0 4px 16px rgba(0, 0, 0, .08);--font-stack: -apple-system, "PingFang SC", "Helvetica Neue", "Noto Sans SC", sans-serif}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%}body{font-family:var(--font-stack);font-size:16px;line-height:1.55;color:var(--ink-primary);background:#0e0e12}img{display:block;max-width:100%}button{font-family:inherit;border:none;background:none;cursor:pointer;color:inherit}.app-frame{position:relative;max-width:480px;margin:0 auto;min-height:100vh;min-height:100dvh;background:var(--bg-page);overflow:hidden}.text-display{font-size:34px;font-weight:700;line-height:1.3}.text-title{font-size:18px;font-weight:700;line-height:1.3}.text-tab{font-size:17px;font-weight:700}.text-body{font-size:16px;font-weight:400}.text-caption{font-size:13px;font-weight:400}.text-mini{font-size:12px;font-weight:400}.ink-secondary{color:var(--ink-secondary)}.ink-tertiary{color:var(--ink-tertiary)}.btn-cta{display:flex;align-items:center;justify-content:center;width:100%;height:48px;border-radius:var(--radius-pill);background:var(--accent-cta);color:#fff;font-size:16px;font-weight:700;transition:opacity .15s}.btn-cta:active{opacity:.85}.btn-cta:disabled{background:var(--handle);opacity:1}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 18px;border-radius:var(--radius-pill);background:var(--close-bg);color:var(--ink-primary);font-size:14px;transition:opacity .15s}.btn-ghost:active{opacity:.7}.btn-ghost:disabled{color:var(--ink-tertiary)}.btn-ghost-outline{background:#fff;border:1px solid var(--ink-primary)}.chip{display:inline-flex;align-items:center;height:34px;padding:0 16px;border-radius:var(--radius-pill);background:var(--close-bg);color:var(--ink-secondary);font-size:13px}.skeleton-line{height:14px;border-radius:8px;background:var(--skeleton);animation:skeleton-breath 1.2s ease-in-out infinite}@keyframes skeleton-breath{0%,to{opacity:1}50%{opacity:.45}}.ai-status{font-size:15px;color:var(--ink-secondary);display:flex;align-items:center;gap:4px}.ai-status b{color:var(--ink-primary);font-weight:700}.ai-dots i{display:inline-block;font-style:normal;animation:dot-blink 1.2s infinite}.ai-dots i:nth-child(2){animation-delay:.2s}.ai-dots i:nth-child(3){animation-delay:.4s}@keyframes dot-blink{0%,60%,to{opacity:.2}30%{opacity:1}}@keyframes content-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.content-in{animation:content-in .25s ease-out}.toast{position:fixed;top:calc(16px + env(safe-area-inset-top));left:50%;transform:translate(-50%);max-width:min(420px,86vw);width:max-content;padding:10px 20px;border-radius:var(--radius-pill);background:var(--float-pill);color:#fff;font-size:14px;z-index:200}.toast-fade-enter-active,.toast-fade-leave-active{transition:opacity .25s,transform .25s}.toast-fade-enter-from,.toast-fade-leave-to{opacity:0;transform:translate(-50%,-8px)}.empty-state{padding:64px 24px;text-align:center;color:var(--ink-tertiary);font-size:14px}@media (prefers-reduced-motion: reduce){.skeleton-line,.ai-dots i{animation:none;opacity:.7}.content-in{animation:content-fade-only .2s ease-out}}@keyframes content-fade-only{0%{opacity:0}to{opacity:1}}
