/* ===== Badge de l'onglet Contact, façon fiche de classeur =====
   Habille le badge lanyard (css/badge.css, licence MIT) aux couleurs du site : carton crème
   à points, trait d'encre, bandeau d'onglet, œillet, photo scotchée. Le cordon et le scotch
   sont dessinés par js/badge/cord.js. */
.badge-slot {
  --badge-strap: var(--blue); --badge-ink: var(--ink); --badge-muted: var(--ink-soft);
  --badge-font-display: var(--display); --badge-font-body: var(--body); --badge-font-mono: var(--body);
  --badge-z: 2;
  min-height: 570px;
}
/* Colonne de droite de l'onglet Contact : le cordon part du bord haut du panneau */
.contact-badge { align-self: start; margin-top: -40px; }
.contact-badge .badge-root { transform: scale(.86); }
@media (max-width: 860px) { .contact-badge { margin-top: 0; } }
.badge-slot::before, .badge-glare, .badge-beams { display: none !important; }
.badge-face {
  border-radius: 14px; border: 2.5px solid var(--ink); box-shadow: 7px 7px 0 var(--ink);
  background: #fffaf1 radial-gradient(rgba(23,20,31,.11) 1px, transparent 1.2px) 0 0 / 14px 14px;
}
.badge-card { inset: 0; border: 0; border-radius: 12px; background: none; }
.badge-card::before {
  content: "N° 04 · CARTE DE VISITE"; position: absolute; inset: 0 0 auto; height: 50px; padding: 0 14px 7px;
  display: flex; align-items: flex-end; justify-content: space-between;
  background: var(--yellow); border-bottom: 2.5px solid var(--ink);
  font: 700 .62rem var(--body); letter-spacing: .12em; color: var(--ink);
}
.badge-face-back .badge-card::before { background: var(--blue); content: "N° 04 · AU VERSO"; }
html[lang="en"] .badge-card::before { content: "N° 04 · BUSINESS CARD"; }
html[lang="en"] .badge-face-back .badge-card::before { content: "N° 04 · ON THE BACK"; }
.badge-slot-pill { top: 12px; width: 50px; height: 14px; margin-left: -25px; border-radius: 8px; background: #fffaf1; border: 2.5px solid var(--ink); box-shadow: inset 0 2px 0 rgba(23,20,31,.25); z-index: 1; }
.badge-clasp { background: var(--ink); box-shadow: none; border-radius: 6px 6px 4px 4px; }
.badge-clasp::after { background: var(--yellow); height: 3px; }
.badge-ring { border: 3.5px solid var(--ink); box-shadow: none; z-index: 2; }
.badge-front { padding: 72px 16px 14px; }
.badge-photo { width: 168px; height: 184px; padding: 8px 8px 24px; border-radius: 2px; background: #fff; border: 2.5px solid var(--ink); box-shadow: 4px 4px 0 var(--ink); transform: rotate(-2.5deg); position: relative; }
.badge-photo::after { content: ""; position: absolute; top: -12px; left: 50%; width: 64px; height: 22px; margin-left: -32px; background: rgba(255,217,61,.85); transform: rotate(4deg); border: 1.5px dashed rgba(23,20,31,.3); }
.badge-photo img { border-radius: 0; border: 2px solid var(--ink); }
.badge-name { margin-top: 18px; font: italic 900 1.7rem/1 var(--display); text-transform: uppercase; text-shadow: 3px 3px 0 var(--yellow); }
.badge-role { margin-top: 8px; font: 600 .82rem/1.35 var(--body); }
.badge-chip { margin-top: 14px; background: var(--green); border: 2px solid var(--ink); box-shadow: 2px 2px 0 var(--ink); color: var(--ink); font: 700 .72rem var(--body); }
.badge-chip-dot { background: var(--ink); }
.badge-hint { font: 700 .6rem var(--body); color: var(--ink-soft); }
.badge-back { padding: 62px 14px 14px; }
.badge-back-label { font: italic 900 1.05rem var(--display); letter-spacing: 0; text-transform: uppercase; color: var(--ink); }
.badge-flip-back { border: 2px solid var(--ink); color: var(--ink); background: var(--yellow); box-shadow: 2px 2px 0 var(--ink); }
.badge-tile { background: #fff; border: 2px solid var(--ink); border-radius: 8px; box-shadow: 3px 3px 0 var(--ink); }
.badge-tile-icon { background: var(--k, var(--yellow)); color: var(--ink); border: 2px solid var(--ink); border-radius: 6px; }
.badge-tile:nth-child(1) { --k: var(--yellow); } .badge-tile:nth-child(2) { --k: var(--green); } .badge-tile:nth-child(3) { --k: var(--blue); }
.badge-tile-title { font: italic 900 .85rem var(--display); text-transform: uppercase; color: var(--ink); }
.badge-tile-detail { color: var(--ink-soft); }
.badge-link { background: #fff; border: 2px solid var(--ink); border-radius: 999px; box-shadow: 2px 2px 0 var(--ink); font: 700 .74rem var(--body); color: var(--ink); text-decoration: none; }
.badge-cta { background: var(--pink); color: var(--ink); border: 2px solid var(--ink); border-radius: 999px; box-shadow: 3px 3px 0 var(--ink); font: 800 .82rem var(--body); text-decoration: none; }
.badge-link:hover, .badge-cta:hover { transform: translate(-1px,-1px); box-shadow: 4px 4px 0 var(--ink); color: var(--ink); border-color: var(--ink); }

/* Cordon élastique (badge-physics.js) */
.has-cord .badge-strap { display: none; }
.has-cord .badge-sway { animation: none !important; transform-origin: 140px 128px; will-change: transform; }
.has-cord .badge-flip { cursor: grab; touch-action: pan-y; }
.has-cord.is-dragging .badge-flip { cursor: grabbing; }
.has-cord.is-dragging .badge-face { box-shadow: 12px 14px 0 var(--ink); }
.badge-cord { position: absolute; inset: 0; overflow: visible; pointer-events: none; }
.badge-cord path { fill: none; stroke-linecap: round; }
.cord-edge { stroke: var(--ink); }
.cord-band { stroke: var(--badge-strap, var(--blue)); }
.cord-stitch { stroke: rgba(255,255,255,.75); stroke-width: 2; }
.badge-tape { position: absolute; left: 104px; top: -14px; width: 74px; height: 30px; background: rgba(255, 217, 61, .82); border: 1.5px dashed rgba(23,20,31,.35); transform: rotate(-5deg); z-index: 2; pointer-events: none; }

@media print { .contact-badge { display: none !important; } }
