*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--primary:#4f7c5f;--primary-dark:#3a5f47;--primary-light:#e8f0ea;--danger:#c0392b;--text:#1a1a1a;--text-muted:#6b7280;--border:#d1d5db;--bg:#f9fafb;--card:#fff;--radius:12px;--shadow:0 1px 4px #00000014, 0 4px 16px #0000000f}body{background:var(--bg);color:var(--text);min-height:100dvh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.app-shell{flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;display:flex}.topbar{background:var(--card);border-bottom:1px solid var(--border);z-index:10;justify-content:space-between;align-items:center;padding:14px 20px;display:flex;position:sticky;top:0}.topbar-title{color:var(--primary-dark);font-size:1.05rem;font-weight:700}.main-content{flex:1;padding:20px 16px 32px;overflow-y:auto}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;padding:20px}.card-title{margin-bottom:4px;font-size:1rem;font-weight:700}.card-sub{color:var(--text-muted);margin-bottom:12px;font-size:.82rem}.form-group{margin-bottom:14px}.form-group label{margin-bottom:5px;font-size:.82rem;font-weight:600;display:block}input,select{border:1px solid var(--border);background:#fff;border-radius:8px;outline:none;width:100%;padding:10px 12px;font-size:.95rem;transition:border-color .15s}input:focus,select:focus{border-color:var(--primary)}.btn{cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:6px;width:100%;padding:11px 20px;font-size:.95rem;font-weight:600;transition:opacity .15s,background .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-outline{color:var(--primary);border:1.5px solid var(--primary);background:0 0}.btn-outline:hover:not(:disabled){background:var(--primary-light)}.btn-danger{background:var(--danger);color:#fff}.btn-ghost{color:var(--text-muted);border:1px solid var(--border);background:0 0}.btn-sm{width:auto;padding:7px 14px;font-size:.85rem}.login-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:100dvh;padding:32px 24px;display:flex}.login-page h1{color:var(--primary-dark);font-size:1.7rem;font-weight:800}.login-page p{color:var(--text-muted);max-width:320px;margin-bottom:12px;font-size:.95rem}.pet-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;border:2px solid #0000;margin-bottom:12px;padding:16px 18px;transition:border-color .15s}.pet-card.selected{border-color:var(--primary)}.pet-card-name{font-size:1rem;font-weight:700}.pet-card-sub{color:var(--text-muted);margin-top:2px;font-size:.82rem}.plan-item{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;padding:12px 0;display:flex}.plan-item:last-child{border-bottom:none}.plan-badge{background:var(--primary-light);color:var(--primary-dark);white-space:nowrap;border-radius:6px;flex-shrink:0;padding:4px 8px;font-size:.75rem;font-weight:700}.plan-action{font-size:.92rem;font-weight:600}.plan-link{color:var(--primary);margin-top:3px;font-size:.78rem}.plan-link a{color:inherit}.tabs{border-bottom:2px solid var(--border);gap:0;margin-bottom:20px;display:flex}.tab{text-align:center;cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;margin-bottom:-2px;padding:10px 0;font-size:.88rem;font-weight:600}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:10px;font-size:.75rem;font-weight:700}.empty-state{text-align:center;color:var(--text-muted);padding:40px 20px;font-size:.9rem}.alert{border-radius:8px;margin-bottom:14px;padding:10px 14px;font-size:.88rem}.alert-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.alert-success{color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0}.spinner{border:2.5px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.row{gap:10px;display:flex}.row>*{flex:1}.avatar{object-fit:cover;border-radius:50%;width:32px;height:32px}.explanation-box{background:var(--primary-light);color:var(--primary-dark);border-radius:8px;margin-bottom:16px;padding:12px 14px;font-size:.85rem;line-height:1.5}
