*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;transition:background .3s}

/* ── Light theme ── */
body.light{background:#f0f4f8}
.card.light{background:#fff;border:1px solid #e5e7eb;border-radius:24px;padding:32px 24px;max-width:380px;width:100%;text-align:center}
.card.light .logo-text{font-size:14px;font-weight:700;color:#1a1a1a}
.card.light .avatar{background:#e5f5fc;color:#1B9ED4;border:2px solid #1B9ED4}
.card.light .exec-name{color:#1a1a1a}
.card.light .exec-title{color:#6b7280}
.card.light .exec-company{color:#1B9ED4}
.card.light .contact-row{background:#f4fbfe;color:#1a1a1a}
.card.light .contact-row svg{stroke:#1B9ED4}
.card.light .divider{background:#f0f0f0}
.card.light .qr-box{background:#fff;border:1px solid #e5e7eb}
.card.light .soc-btn{background:#f0f4f8;color:#1a1a1a;border:1px solid #e5e7eb}
.card.light .save-btn{background:#1B9ED4;color:#fff}
.card.light .vcf-note{color:#9ca3af}

/* ── Dark theme ── */
body.dark{background:#07151f}
.card-outer{background:linear-gradient(140deg,#1B9ED4 0%,#0d5f8a 50%,#E87722 100%);border-radius:26px;padding:2px;max-width:380px;width:100%}
.card.dark{background:rgba(10,28,46,.82);border-radius:24px;padding:32px 24px;text-align:center}
.card.dark .logo-text{font-size:14px;font-weight:700;color:#fff}
.card.dark .avatar{background:rgba(255,255,255,.15);color:#fff;border:2px solid rgba(255,255,255,.35)}
.card.dark .exec-name{color:#fff}
.card.dark .exec-title{color:rgba(255,255,255,.6)}
.card.dark .exec-company{color:#1B9ED4}
.card.dark .contact-row{background:rgba(255,255,255,.08);color:rgba(255,255,255,.9);border:1px solid rgba(255,255,255,.12)}
.card.dark .contact-row svg{stroke:#1B9ED4}
.card.dark .divider{background:rgba(255,255,255,.1)}
.card.dark .qr-box{background:rgba(255,255,255,.9)}
.card.dark .soc-btn{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.2)}
.card.dark .save-btn{background:#E87722;color:#fff}
.card.dark .vcf-note{color:rgba(255,255,255,.4)}

/* ── Shared elements ── */
.logo-row{display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:20px}
.logo-img{width:24px;height:24px;border-radius:6px}
.avatar{width:80px;height:80px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:700;margin:0 auto 14px;overflow:hidden}
.avatar img{width:100%;height:100%;object-fit:cover}
.exec-name{font-size:20px;font-weight:700;margin-bottom:4px}
.exec-title{font-size:13px;margin-bottom:4px}
.exec-company{font-size:13px;font-weight:600;margin-bottom:20px}
.contact-row{display:flex;align-items:center;gap:10px;border-radius:10px;padding:10px 14px;margin-bottom:8px;font-size:13px;text-decoration:none;text-align:left;transition:opacity .15s}
.contact-row:hover{opacity:.85}
.contact-row svg{width:16px;height:16px;flex-shrink:0;fill:none;stroke-width:1.5}
.divider{height:1px;margin:12px 0}
.bottom-row{display:flex;justify-content:space-between;align-items:center}
.qr-box{width:60px;height:60px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:6px}
.qr-box img{width:100%;height:100%}
.socials{display:flex;gap:8px}
.soc-btn{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;text-decoration:none;transition:opacity .15s}
.soc-btn:hover{opacity:.8}
.save-btn{display:block;border:none;border-radius:12px;padding:13px;font-size:14px;font-weight:700;width:100%;margin-top:16px;cursor:pointer;transition:opacity .15s}
.save-btn:hover{opacity:.88}
.vcf-note{font-size:11px;margin-top:8px;text-align:center}
.loading{text-align:center;color:#9ca3af;padding:40px}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:#1a1a1a;color:#fff;font-size:12px;padding:8px 20px;border-radius:20px;opacity:0;transition:all .3s;pointer-events:none;white-space:nowrap}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}