:root{--moli-green:#2f6b4f;--moli-green-soft:#e8f2ec;--moli-jade:#4a9d78;--moli-cream:#fbf9f4;--moli-ink:#1f2a24;--moli-muted:#6b7a72;--moli-line:#dfe6e1;--moli-warn:#b8860b;--radius:14px;--shadow:0 1px 3px rgba(31,42,36,.08),0 6px 20px rgba(31,42,36,.06)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--moli-cream);color:var(--moli-ink);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.shell{max-width:480px;margin:0 auto;min-height:100vh;background:#fff;box-shadow:0 0 40px rgba(0,0,0,.05);padding-bottom:76px}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:linear-gradient(135deg,var(--moli-green),var(--moli-jade));color:#fff;padding:14px 18px;display:flex;align-items:center;gap:10px}.topbar h1{margin:0;font-size:17px;font-weight:600}.topbar .sub{font-size:11px;opacity:.85;margin-top:2px}.content{padding:16px}.card{background:#fff;border:1px solid var(--moli-line);border-radius:var(--radius);padding:14px;margin-bottom:12px;box-shadow:var(--shadow)}.card h3{margin:0 0 6px;font-size:15px}.card p{margin:0;font-size:13px;line-height:1.65;color:var(--moli-muted)}.badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;background:var(--moli-green-soft);color:var(--moli-green);margin-right:6px;margin-bottom:4px}.badge.warn{background:#fdf5e3;color:var(--moli-warn)}.btn{display:block;width:100%;padding:13px;border:none;border-radius:var(--radius);background:var(--moli-green);color:#fff;font-size:15px;font-weight:600;cursor:pointer;text-align:center;font-family:inherit}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.secondary{background:var(--moli-green-soft);color:var(--moli-green)}.btn.ghost{background:transparent;color:var(--moli-muted);border:1px solid var(--moli-line);font-weight:400}.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border-top:1px solid var(--moli-line);z-index:30}.tabbar a{padding:10px 0 12px;text-align:center;font-size:11px;color:var(--moli-muted)}.tabbar a .ico{display:block;font-size:19px;margin-bottom:2px}.tabbar a.active{color:var(--moli-green);font-weight:600}.row{display:flex;gap:8px;flex-wrap:wrap}.chip{padding:8px 13px;border-radius:999px;border:1px solid var(--moli-line);background:#fff;font-size:13px;cursor:pointer;font-family:inherit;color:var(--moli-ink)}.chip.on{background:var(--moli-green);color:#fff;border-color:var(--moli-green)}.muted{color:var(--moli-muted);font-size:12px;line-height:1.6}.score{font-size:26px;font-weight:700;color:var(--moli-green);line-height:1}.bar{height:6px;border-radius:3px;background:var(--moli-green-soft);overflow:hidden;margin-top:5px}.bar>i{display:block;height:100%;background:var(--moli-jade)}.notice{background:#fdf5e3;border:1px solid #f0e0b8;color:#7a5b12;border-radius:10px}.err,.notice{padding:10px 12px;font-size:12px;line-height:1.6;margin-bottom:12px}.err{background:#fdeceb;border:1px solid #f5c6c2;color:#a3322a;border-radius:10px}input[type=file]{display:none}.preview{width:100%;border-radius:var(--radius);margin-bottom:12px;display:block}.spinner{text-align:center;padding:24px;color:var(--moli-muted);font-size:13px}.agent-bubble{position:fixed;right:16px;bottom:78px;z-index:25;display:inline-flex;align-items:center;gap:6px;padding:11px 17px 11px 14px;border-radius:999px;background:linear-gradient(135deg,var(--moli-green),var(--moli-jade));color:#fff;font-size:13px;font-weight:600;box-shadow:0 6px 18px rgba(47,107,79,.35);animation:bubble-float 3.2s ease-in-out infinite}.agent-bubble .ico{font-size:17px;line-height:1}@keyframes bubble-float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@media (min-width:520px){.agent-bubble{right:calc(50% - 240px + 16px)}}@media (prefers-reduced-motion:reduce){.agent-bubble{animation:none}}.footer-info{margin:20px 0 8px;padding:16px 4px 4px;border-top:1px solid var(--moli-line);text-align:center;font-size:12px;line-height:2;color:var(--moli-muted)}.footer-info strong{color:var(--moli-ink);font-weight:600}