:root{
  --bg:#ffffff;
  --card:#ffffff;
  --card-border:#f0e2c8;
  --orange:#ff7a1a;
  --orange-soft:rgba(255,122,26,0.12);
  --yellow:#ffc72c;
  --yellow-soft:rgba(255,199,44,0.18);
  --text:#111111;
  --muted:#6b6b6b;
  --danger:#d64545;
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{
  background:radial-gradient(circle at 50% -10%, var(--yellow-soft) 0%, var(--bg) 55%);
  min-height:100vh;
  font-family:'Inter',system-ui,sans-serif;
  color:var(--text);
}
a{color:inherit;}
body.centered{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:32px 16px;
}

/* ---- Card (public view) ---- */
.card{
  width:100%;
  max-width:400px;
  background:#ffffff;
  border:1px solid var(--card-border);
  border-radius:20px;
  padding:40px 32px 32px;
  box-shadow:0 20px 60px rgba(17,17,17,0.08), 0 0 0 1px rgba(255,122,26,0.05) inset;
  position:relative;
  overflow:hidden;
}
.card::before{
  content:"";
  position:absolute;
  top:-60%; left:-20%;
  width:140%; height:140%;
  background:radial-gradient(circle, var(--yellow-soft) 0%, transparent 60%);
  opacity:0.6;
  pointer-events:none;
}
.banner-wrap{
  margin:-40px -32px 40px;
  background:#ffffff;
  border:1px solid var(--card-border);
  overflow:visible;
  position:relative;
  z-index:1;
}
.banner-wrap img{width:100%;aspect-ratio:3/1;height:auto;object-fit:cover;display:block;border-radius:20px 20px 0 0;}
.avatar{
  width:128px;height:128px;border-radius:50%;
  background:#ffffff;
  border:2px solid var(--orange);
  display:flex;align-items:center;justify-content:center;
  font-family:'Playfair Display',serif;font-size:42px;font-weight:700;color:#111111;
  margin:0 auto 20px;position:relative;z-index:1;overflow:hidden;
}
.avatar img{width:100%;height:100%;object-fit:cover;}
.avatar.avatar-on-banner{
  position:absolute;
  bottom:-38px;
  left:16px;
  margin:0;
  width:100px;
  height:100px;
  font-size:26px;
  box-shadow:0 2px 8px rgba(0,0,0,0.3);
  z-index:2;
}
@media (max-width:480px){
  .avatar.avatar-on-banner{width:64px;height:64px;font-size:20px;bottom:-30px;}
  body.centered{padding:0;align-items:flex-start;}
  .card{max-width:100%;min-height:100vh;border-radius:0;border-left:none;border-right:none;box-shadow:none;}
}
.name{font-family:'Playfair Display',serif;font-size:26px;font-weight:700;text-align:center;position:relative;z-index:1;color:#111111;}
.role{text-align:center;color:var(--orange);font-size:13px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;margin-top:6px;position:relative;z-index:1;}
.company{text-align:center;color:var(--muted);font-size:14px;margin-top:4px;position:relative;z-index:1;}
.divider{height:1px;background:linear-gradient(90deg, transparent, var(--card-border), transparent);margin:24px 0;position:relative;z-index:1;}
.contact-list{display:flex;flex-direction:column;gap:12px;position:relative;z-index:1;}
.contact-row{display:flex;align-items:center;gap:12px;font-size:14px;text-decoration:none;color:var(--text);}
.contact-row .icon{width:34px;height:34px;flex-shrink:0;border-radius:9px;background:var(--orange-soft);display:flex;align-items:center;justify-content:center;}
.contact-row .icon svg{width:16px;height:16px;stroke:var(--orange);}
.contact-row span{word-break:break-all;}
.contact-label{display:inline-block;color:var(--muted);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:0.5px;margin-right:8px;}
.socials{display:flex;gap:10px;justify-content:center;margin:24px 0 4px;position:relative;z-index:1;}
.socials a{width:38px;height:38px;border-radius:50%;border:1px solid var(--card-border);display:flex;align-items:center;justify-content:center;text-decoration:none;transition:border-color .2s, background .2s;}
.socials a:hover{border-color:var(--orange);background:var(--orange-soft);}
.socials a svg{width:16px;height:16px;stroke:#111111;}
.actions{display:flex;gap:10px;margin-top:24px;position:relative;z-index:1;}
.btn{flex:1;text-align:center;padding:12px 14px;border-radius:12px;font-size:14px;font-weight:600;cursor:pointer;border:none;font-family:inherit;text-decoration:none;display:inline-block;}
.btn-primary{background:linear-gradient(135deg, var(--orange), var(--yellow));color:#111111;}
.btn-secondary{background:transparent;border:1px solid #111111;color:#111111;}
.btn-secondary:hover{border-color:var(--orange);color:var(--orange);}
.btn-danger{background:transparent;border:1px solid var(--danger);color:var(--danger);}
.btn-danger:hover{background:rgba(214,69,69,0.1);}
.wallet-badges{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:nowrap;position:relative;z-index:1;}
.wallet-badges a{flex:1;max-width:130px;min-width:0;display:block;}
.wallet-badge-img{width:100%;height:auto;display:block;}
.qr-wrap{margin-top:24px;padding-top:20px;border-top:1px solid var(--card-border);display:flex;flex-direction:column;align-items:center;gap:10px;position:relative;z-index:1;}
.qr-wrap #qrcode{background:#fff;padding:8px;border-radius:10px;line-height:0;border:1px solid var(--card-border);}
.qr-label{font-size:12px;color:var(--muted);letter-spacing:0.4px;}

/* ---- Admin UI (login, dashboard, forms) ---- */
.panel{
  width:100%;max-width:480px;
  background:#ffffff;
  border:1px solid var(--card-border);
  border-radius:20px;
  padding:36px;
  box-shadow:0 20px 60px rgba(17,17,17,0.08);
}
.panel-wide{max-width:920px;}
.panel h1{font-family:'Playfair Display',serif;font-size:24px;margin-bottom:6px;color:#111111;}
.panel .subtitle{color:var(--muted);font-size:13px;margin-bottom:24px;}
.field{margin-bottom:16px;}
.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px;}
.field input[type=text],
.field input[type=email],
.field input[type=tel],
.field input[type=url],
.field input[type=password],
.field input[type=file]{
  width:100%;
  padding:11px 13px;
  border-radius:10px;
  border:1px solid var(--card-border);
  background:#ffffff;
  color:var(--text);
  font-family:inherit;
  font-size:14px;
}
.field input:focus{outline:none;border-color:var(--orange);}
.field-row{display:flex;gap:14px;}
.field-row .field{flex:1;}
.alert{padding:12px 14px;border-radius:10px;font-size:13px;margin-bottom:18px;}
.alert-error{background:rgba(214,69,69,0.08);border:1px solid var(--danger);color:#a8332a;}
.alert-success{background:var(--yellow-soft);border:1px solid var(--orange);color:#a85300;}
.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 0;max-width:920px;width:100%;margin-bottom:20px;}
.topbar .brand{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:#111111;}
.topbar nav{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;}
.topbar nav a{font-size:13px;color:var(--muted);text-decoration:none;}
.topbar nav a:hover{color:var(--orange);}
.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
table.card-list{width:100%;min-width:640px;border-collapse:collapse;font-size:14px;}
table.card-list th{text-align:left;color:var(--muted);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:0.5px;padding:10px 12px;border-bottom:1px solid var(--card-border);white-space:nowrap;}
table.card-list td{padding:12px;border-bottom:1px solid var(--card-border);vertical-align:middle;color:var(--text);}
table.card-list tr:last-child td{border-bottom:none;}
.mini-avatar{width:32px;height:32px;border-radius:50%;background:#ffffff;border:2px solid var(--orange);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#111111;overflow:hidden;flex-shrink:0;}
.mini-avatar img{width:100%;height:100%;object-fit:cover;}
.row-actions{white-space:nowrap;}
.row-actions a, .row-actions button{font-size:12px;margin-right:10px;background:none;border:none;color:var(--muted);cursor:pointer;text-decoration:none;font-family:inherit;padding:0;}
.row-actions a:hover, .row-actions button:hover{color:var(--orange);}
.row-actions .danger:hover{color:var(--danger);}
.empty-state{text-align:center;color:var(--muted);padding:40px 0;font-size:14px;}
.new-card-btn{display:inline-block;margin-top:18px;}

@media (max-width:640px){
  .panel-wide{padding:24px 16px;}
  /* The table itself keeps its min-width and scrolls horizontally inside
     .table-scroll instead of forcing the whole page (and everything around
     it, like the topbar) wider than the viewport. */
}
