:root{--primary:#14b8a6;--primary-foreground:#ffffff;--primary-soft:#e2f6f3;--primary-strong:#12a091;--accent:#0e2a47;--background:#f4f7fb;--surface:#ffffff;--surface-muted:#f5f7fb;--text:#10233f;--text-muted:#5b6b84;--border:#d7deea;--success:#17885d;--success-soft:#e0f1ea;--warning:#c97a10;--warning-soft:#f7ecdb;--error:#c23b3b;--error-soft:#f8e6e6;--info:#2563eb;--info-soft:#dfe8fb;--gradient-btn-to:#13ada0;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-pill:999px;--shadow-subtle:0 6px 18px rgba(15,35,63,0.05);--shadow-card:0 14px 34px rgba(15,35,63,0.08);--shadow-floating:0 20px 46px rgba(15,35,63,0.14)}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--text);background:radial-gradient(60% 40% at 90% 0,rgba(20,184,166,.14) 0,transparent 70%),radial-gradient(55% 35% at 0 45%,rgba(20,184,166,.1) 0,transparent 70%),radial-gradient(65% 45% at 85% 100%,rgba(14,42,71,.06) 0,transparent 70%),var(--background);background-attachment:fixed;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{border:none;cursor:pointer;background:none}button,input,textarea{font:inherit}.shell{max-width:480px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;padding:20px 16px calc(76px + env(safe-area-inset-bottom))}.page-title{font-size:24px;font-weight:700;margin-bottom:4px}.page-subtitle{font-size:14px;color:var(--text-muted);margin-bottom:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:16px}.stack{flex-direction:column}.row,.stack{display:flex;gap:12px}.row{align-items:center}.card-title{font-size:17px;font-weight:600}.card-desc{font-size:14px;margin-top:2px}.badge,.card-desc{color:var(--text-muted)}.badge{display:inline-block;font-size:12px;font-weight:600;border-radius:var(--radius-pill);padding:2px 10px;background:var(--surface-muted);white-space:nowrap}.badge.success{background:var(--success-soft);color:var(--success)}.badge.warning{background:var(--warning-soft);color:var(--warning)}.badge.error{background:var(--error-soft);color:var(--error)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.primary{background:var(--primary-soft);color:var(--primary-strong)}.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;border-radius:var(--radius-md);font-size:16px;font-weight:600;transition:transform .08s ease,opacity .08s ease}.btn:active{transform:scale(.98)}.btn.primary{background:linear-gradient(180deg,var(--primary),var(--gradient-btn-to));color:var(--primary-foreground);box-shadow:var(--shadow-subtle)}.btn.outline{background:var(--surface);color:var(--text)}.btn.outline,.btn:disabled{border:1px solid var(--border)}.btn:disabled{background:var(--surface-muted);color:var(--text-muted);box-shadow:none;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:14px;font-weight:500}.field input,.field textarea{min-height:48px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 12px;font-size:16px;background:var(--surface);color:var(--text);outline:none}.field textarea{min-height:112px;padding-block:12px;resize:vertical}.field input:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(20,184,166,.15)}.error-text{color:var(--error);font-size:14px;font-weight:500}.muted{color:var(--text-muted);font-size:14px}.empty{text-align:center;padding:48px 24px;flex-direction:column;gap:10px}.empty,.empty .icon-circle{display:flex;align-items:center}.empty .icon-circle{width:72px;height:72px;border-radius:50%;background:var(--primary-soft);justify-content:center;font-size:30px}.tabbar{position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);box-shadow:var(--shadow-floating);display:flex;justify-content:space-around;padding:8px 0 calc(8px + env(safe-area-inset-bottom));max-width:480px;margin:0 auto}.tabbar a{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;font-weight:600;color:var(--text-muted);flex:1 1;min-width:0;overflow:hidden;white-space:nowrap}.tabbar a.active{color:var(--primary)}.tabbar .glyph{font-size:20px;line-height:1}.skeleton{background:var(--surface-muted);border-radius:var(--radius-sm);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.55}50%{opacity:1}}.chip{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:10px 14px;font-size:14px;font-weight:500;cursor:pointer;min-height:40px}.chip.active{background:var(--primary);border-color:var(--primary);color:#fff}.chip:disabled{opacity:.5;cursor:not-allowed}.chip-grid{display:flex;flex-wrap:wrap;gap:8px}