:root{--bg:#faf8f4;--surface:#f3f0ea;--border:#d8d2c4;--ink:#0f172a;--muted:#6b6455;--faint:#9a9382;--brand:#b7794b;--brand-dim:#b7794b1f;--on-brand:#fff;--success:#2e7d5b;--warning:#c77a16;--warning-dim:#c77a161f;--shadow-card:0 6px 16px #0f172a14;--brand-grad:linear-gradient(135deg, #b7794b, #9a6238)}*{box-sizing:border-box;margin:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Outfit,system-ui,sans-serif}.wrap{place-items:center;min-height:100dvh;padding:24px;display:grid}.card{background:var(--surface);border:1px solid var(--border);text-align:center;width:100%;max-width:360px;box-shadow:var(--shadow-card);border-radius:20px;padding:32px 24px}.avatar{background:var(--brand-dim);width:56px;height:56px;color:var(--brand);border-radius:50%;place-items:center;margin:0 auto 16px;font-size:20px;font-weight:600;display:grid;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.brand-logo{object-fit:contain;width:auto;max-height:28px;margin:0 auto 16px;display:block}h1{letter-spacing:-.01em;font-size:22px;font-weight:600}.title{color:var(--muted);margin-top:2px;font-size:14px}.badges{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:10px;display:flex}.badge-chip{letter-spacing:.02em;color:var(--brand);background:var(--brand-dim);border:1px solid color-mix(in srgb, var(--brand) 30%, transparent);white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:600}.bio{color:var(--muted);margin-top:12px;font-size:13px;line-height:1.5}.btn{cursor:pointer;border:none;border-radius:10px;width:100%;margin-top:16px;padding:12px;font-family:inherit;font-size:14px;font-weight:600;display:block}.btn.primary{background:var(--brand-accent,var(--brand-grad));color:var(--on-brand)}.btn.ghost{color:var(--brand);border:1px solid var(--border);background:0 0}.btn:disabled{opacity:.5;cursor:default}.reverse{text-align:left;gap:8px;margin-top:24px;display:grid}.reverse input{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--ink);border-radius:10px;padding:11px 12px;font-family:inherit;font-size:14px}.reverse input::placeholder{color:var(--faint)}.reverse input:focus{border-color:var(--brand);outline:none}.reverse .row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.muted{color:var(--muted)}.small{font-size:13px}.sent{color:var(--success);margin-top:16px;font-size:14px;font-weight:600}.form-error{background:var(--warning-dim);color:var(--warning);text-align:left;border-radius:10px;margin-top:16px;padding:10px 12px;font-size:13px;font-weight:500;line-height:1.4}.brand{color:var(--faint);letter-spacing:.02em;margin-top:20px;font-size:12px}.own-card{color:var(--muted);margin-top:18px;font-size:13px;line-height:1.5}.own-card a{color:var(--brand);font-weight:600;text-decoration:none}.own-card a:hover{text-decoration:underline}.powered-by{color:var(--faint);margin-top:6px;font-size:11px;text-decoration:none;display:block}.powered-by:hover{text-decoration:underline}.legal{margin-top:10px;font-size:12px}.legal a,.reverse a{color:var(--muted);text-decoration:underline}.offline-banner{background:var(--warning-dim);color:var(--warning);text-align:center;border-radius:10px;margin-bottom:12px;padding:9px 12px;font-size:12px;font-weight:500}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}.reverse input:focus-visible{outline:2px solid var(--brand);outline-offset:1px}h1,.title,.bio{overflow-wrap:anywhere}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skel{background:linear-gradient(90deg, var(--border) 25%, #f3f1fb 37%, var(--border) 63%);background-size:400% 100%;border-radius:8px;animation:1.4s infinite shimmer}.skel-avatar{border-radius:50%;width:56px;height:56px;margin:0 auto 16px}.skel-line{height:14px}.skel-sm{height:12px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}@media (prefers-reduced-motion:reduce){.skel{animation:none}}.links{flex-direction:column;gap:8px;margin-top:14px;display:flex}.link-row{justify-content:flex-start;gap:10px;text-decoration:none}.link-row svg{flex-shrink:0}.link-row span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
