/* === Badge d'accès ExpoSphere (portrait) ================================= */
.stand-wrap{
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:16px;
  padding:20px 0 40px;
}

/* Bouton de téléchargement du badge */
.badge-download{
  text-align:center;
}

.badge-download .btn{
  padding:10px 18px;
  border-radius:999px;
  font-size:14px;
}

.badge-download__hint{
  margin-top:6px;
  font-size:13px;
  color:var(--muted);
}

/* Format portrait (ID badge) */
.access-card{
  position:relative;
  width:min(380px, 92vw);
  aspect-ratio: 62 / 100;            /* badge vertical */
  border-radius:18px;
  background: #faf9fd;
  box-shadow: 0 20px 42px rgba(7,4,28,.12), 0 2px 0 rgba(255,255,255,.8) inset;
  overflow:hidden;
  padding:16px 16px 14px;
  border:1px solid #e7e4f2;
  color:#0e0a1a;
}

/* Encoche lanière */
.access-card__slot{
  position:absolute; top:10px; left:50%; transform:translateX(-50%);
  width:46px; height:10px; background:#e7e2ff; border-radius:999px;
  box-shadow:0 1px 0 rgba(255,255,255,.8) inset, 0 1px 1px rgba(8,4,30,.22);
}
.slot__hole{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  width:20px; height:6px; border-radius:999px; background:#c1b6f3;
  box-shadow:0 0 0 1px rgba(255,255,255,.6) inset;
}
.slot__stitch{
  position:absolute; inset:0; border-radius:999px;
  border:1px dashed rgba(255,255,255,.6);
}

/* Décors de fond : laminage, guilloches, hologramme */
.access-card__laminate{
  position:absolute; inset:0; pointer-events:none;
  background: radial-gradient(circle at 0 0, rgba(255,255,255,.7), transparent 60%),
              radial-gradient(circle at 100% 0, rgba(255,255,255,.4), transparent 55%),
              linear-gradient(135deg, rgba(255,255,255,.18), rgba(255,255,255,0));
  mix-blend-mode:screen;
}
.access-card__guilloche{
  position:absolute; inset:0; pointer-events:none; opacity:.25;
  background:
    radial-gradient(600px 300px at 20% 30%, rgba(130,19,255,.08), transparent 60%),
    radial-gradient(600px 300px at 90% 10%, rgba(61,3,149,.06), transparent 60%),
    repeating-conic-gradient(from 0deg, rgba(125,120,180,.12) 0 6deg, transparent 6deg 12deg);
  filter: contrast(105%) saturate(110%);
}
.access-card__holo{
  position:absolute; right:-80px; top:-80px; width:220px; height:220px; border-radius:50%;
  background:
    conic-gradient(from 0deg,
      rgba(255,115,220,.85),
      rgba(115,210,255,.95),
      rgba(160,255,130,.65),
      rgba(255,235,140,.85),
      rgba(255,115,220,.9));
  mix-blend-mode:screen;
  opacity:.55;
}
.access-card__noise{
  position:absolute; inset:0; pointer-events:none; opacity:.18;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='2' numOctaves='3' stitchTiles='noStitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E");
  mix-blend-mode:soft-light;
}

/* Header : marque + infos event */
.access-card__header{
  position:relative; z-index:2;
  display:flex; align-items:center; justify-content:space-between;
  gap:14px;
  margin-bottom:12px;
}
.badge-brand{
  display:flex; align-items:center; gap:8px;
  font-weight:600; letter-spacing:.06em; text-transform:uppercase;
  color:#26164b;
}
.badge-brand .mark{
  width:24px; height:24px; border-radius:8px;
  background:radial-gradient(circle at 30% 20%, #fff 0, #f5e9ff 22%, #c1a0ff 60%, #5d37c5 100%);
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 2px 6px rgba(9,4,30,.35);
}
.badge-brand .name{
  font-size:13px;
}
.event{
  text-align:right; max-width:60%;
}
.event__name{
  font-size:13px; font-weight:600; text-transform:uppercase; letter-spacing:.08em;
  color:#372560;
}
.event__dates{
  font-size:11px; color:#6c6784; margin-top:2px;
}

/* Bloc identité */
.access-card__id{
  position:relative; z-index:2;
  display:grid; grid-template-columns:minmax(0, 1.05fr) minmax(0, 1.8fr);
  gap:10px 14px;
  align-items:flex-start;
  margin-top:6px;
}
.photo{
  display:flex; align-items:flex-start; justify-content:flex-start;
}
.photo__ph{
  width:100%; aspect-ratio:3/4;
  border-radius:12px;
  background:linear-gradient(135deg, #e3dcff, #f4efff);
  box-shadow:0 10px 24px rgba(33,15,90,.45);
  overflow:hidden;
}
.identity{
  display:flex; flex-direction:column; gap:6px;
}
.identity .label{
  font-size:10px; text-transform:uppercase; letter-spacing:.12em;
  color:#8278a3;
}
.identity .value{
  font-size:15px; font-weight:600; color:#26153c;
}
.identity .value.placeholder{
  font-variant-numeric:tabular-nums;
}
.grid2{
  display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:6px 10px;
}
.microtext{
  margin-top:4px;
  font-size:8px;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:#9c93bd;
}

/* Zone contrôle */
.access-card__control{
  position:absolute; left:16px; right:16px; bottom:48px;
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:10px;
}
.seal{
  position:relative;
  width:48px; height:48px;
}
.seal__ring{
  position:absolute; inset:0;
  border-radius:50%;
  background:
    conic-gradient(from 0deg, #f8f4ff, #e5d9ff, #fdf2ff, #e1f2ff, #f8f4ff);
  box-shadow:0 6px 18px rgba(23,7,72,.45);
}
.seal__core{
  position:absolute; inset:9px;
  border-radius:50%;
  background:radial-gradient(circle at 30% 20%, #fff, #f3e7ff 45%, #b18dff 100%);
  display:flex; align-items:center; justify-content:center;
  font-size:14px; font-weight:700; color:#2a164c;
}
.qr{
  flex:0 0 72px; height:72px;
  border-radius:10px;
  background:
    repeating-linear-gradient(90deg, #120c2f 0 3px, transparent 3px 6px),
    repeating-linear-gradient(0deg, #120c2f 0 3px, transparent 3px 6px);
  mix-blend-mode:multiply;
  opacity:.8;
}
.barcode{
  flex:1 1 auto;
  display:flex; flex-direction:column; justify-content:flex-end;
}
:root{
  --badge-purple: #3d1b63; /* à adapter si ton violet a un autre code */
}

.barcode .bars{
  height:32px;
  background:
    repeating-linear-gradient(90deg,
      #1b123f 0 2px,
      transparent 2px 4px,
      #1b123f 4px 5px,
      transparent 5px 7px);
  border-radius:6px;
  overflow:hidden;
}
.barcode .idline{
  margin-top:4px;
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:#4d456d;
}

/* Pied */
.access-card__footer{
  position:absolute; left:0; right:0; bottom:0;
  display:flex; align-items:center; justify-content:space-between;
  padding:10px 14px; border-top:1px dashed #ddd7f0; background:rgba(255,255,255,.6);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  font-size:12px; color:#6a6a7b;
}
.nfc{color:#6a5bb7}

/* Hover doux (désactivé si reduce motion) */
@media (hover:hover){
  .access-card:hover{ transform: translateY(-2px); box-shadow: 0 26px 52px rgba(7,4,28,.16) }
}

/* Format page pour impression PDF du badge 7cm x 9,5cm */
@page{
  size: 70mm 95mm;
  margin:0;
}

/* Impression : ne garder que le badge, au bon format */
@media print{
  html, body{
    padding:0;
    margin:0;
    background:#fff;
  }

  .app-header,
  .app-footer{
    display:none !important;
  }

  .container{
    max-width:none;
    padding:0;
  }

  .stand-wrap{
    padding:0;
    display:flex;
    justify-content:center;
    align-items:center;
    min-height:95mm;
  }

  .access-card{
    box-shadow:none;
    border:1px solid #cfcbe2;
    width:70mm;
    height:95mm;
    aspect-ratio:auto;
  }

  .badge-download{
    display:none; /* on n'imprime pas le bouton */
  }
}