/* TrackR · styles du module profil (nettoyage, étape 4b) : ses règles, sorties de la base par _local/outils/etape4-ecran/ranger-par-module.js
   sans rien réécrire, dans leur ordre d'origine. Chargé après la base, dans l'ordre fixe des balises d'index.html, avant Givre. */
.profile-cover{background:radial-gradient(circle at 85% 25%,#3e4d37,transparent 40%),linear-gradient(115deg,#1c2924,#202633);padding:34px;border:1px solid #425044;border-radius:21px;position:relative;overflow:hidden}.profile-identity{display:flex;align-items:center;gap:20px;position:relative}.badge-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.achievement{padding:21px;text-align:center;background:var(--surface2);border:1px solid var(--line);border-radius:16px}.achievement.locked{filter:grayscale(1);opacity:.4}
@media(max-width:600px){.badge-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:860px){
 .badge-grid{min-width:0}
}
/* 2.30.16 (Pierre : « en mobile quand j'appuie sur un bouton du menu, j'ai un carré bleu qui apparaît ») : pa … */
[data-theme="light"] .profile-cover{background:linear-gradient(115deg,#e6e6ff,#fefeff);color:var(--text)}
.v2-avatar-upload{display:flex;gap:16px;align-items:center;padding:14px;background:var(--surface2);border:1px solid var(--line);border-radius:17px}.v2-avatar-upload>div:last-child{min-width:0;flex:1}
/* V1.3 components re-themed with V2 tokens: the legacy sheet hardcodes dark/lime colours that broke light mod … */
.profile-cover{background:radial-gradient(circle at 85% 25%,color-mix(in srgb,var(--accent) 22%,transparent),transparent 42%),var(--panel-bg);border:1px solid var(--line);color:var(--text)}
.v2-profile-name{font:800 clamp(26px,3vw,34px)/1.1 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:-.05em;margin:9px 0;overflow-wrap:anywhere}
.v2-bizcard-stage{--rx:0deg;--ry:0deg;--mx:28%;--my:18%;width:min(100%,360px);perspective:1200px;touch-action:pan-y;padding:6px 0 10px;animation:bizIn .75s cubic-bezier(.2,.8,.2,1) both}
.v2-bizcard-tilt{transform:rotateX(var(--rx)) rotateY(var(--ry));transform-style:preserve-3d;transition:transform .35s ease-out}
.v2-bizcard-stage:not(.is-active):not(.is-gyro) .v2-bizcard-tilt{animation:bizFloat 7s ease-in-out infinite}.v2-bizcard-stage.is-back:not(.is-active):not(.is-gyro) .v2-bizcard-tilt{animation-name:bizFloatSoft}
.v2-bizcard{position:relative;display:block;width:100%;text-align:left;aspect-ratio:85.6/54;border-radius:20px;transform-style:preserve-3d;transition:transform .85s cubic-bezier(.2,.75,.2,1);cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent}
.v2-bizcard.is-flipped{transform:rotateY(180deg)}
.v2-bizcard:focus-visible .v2-bizcard-face{box-shadow:0 0 0 3px var(--accent2),0 30px 60px -18px #0a082880}
.v2-bizcard-face{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;border-radius:20px;padding:18px 20px;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:0 30px 60px -18px #0a082880,inset 0 0 0 1px #ffffff1c}
.v2-bizcard-front{color:#fff;background:radial-gradient(130% 70% at 0% 0%,color-mix(in srgb,var(--card) 80%,#fff 20%) 0%,transparent 58%),radial-gradient(110% 80% at 100% 100%,color-mix(in srgb,var(--card) 55%,#4d8fff) 0%,transparent 62%),linear-gradient(165deg,color-mix(in srgb,var(--card) 72%,#120c2e),#0d0b22 76%)}
.v2-bizcard-front::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(100deg,#ffffff08 0 1px,transparent 1px 4px);pointer-events:none}
.v2-bizcard-front::after{content:"";position:absolute;inset:-45%;background:linear-gradient(115deg,transparent 40%,#ffffff30 46.5%,#a8ccff26 50%,#ffb4f01f 53%,transparent 60%);mix-blend-mode:screen;animation:bizSheen 5.5s ease-in-out infinite;pointer-events:none}
.v2-bizcard-glare{position:absolute;inset:0;background:radial-gradient(circle at var(--mx) var(--my),#ffffff52,transparent 44%);mix-blend-mode:overlay;pointer-events:none}
.v2-bizcard-top,.v2-bizcard-bottom{position:relative;z-index:1}.v2-bizcard-mark{position:absolute;right:-6%;top:-26%;width:62%;aspect-ratio:1;color:#fff;opacity:.07;pointer-events:none;transform:rotate(-8deg)}
.v2-bizcard-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.v2-bizcard-brand{display:flex;align-items:center;gap:8px;min-width:0;font-size:15px;font-weight:800;letter-spacing:-.01em}
.v2-bizcard-nfc{width:24px;height:24px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;opacity:.82}
.v2-bizcard-bottom{margin-top:auto;display:flex;align-items:flex-end;gap:12px}
.v2-bizcard-who{flex:1;min-width:0;display:grid;gap:4px}
.v2-bizcard-photo{flex:0 0 auto;width:54px;height:54px;display:grid;place-items:center;overflow:hidden;border-radius:50%;background:#ffffff26;font-size:19px;font-weight:800;box-shadow:0 0 0 2px #ffffffbf,0 8px 18px #00000059}
.v2-bizcard-photo img{width:100%;height:100%;object-fit:cover}
.v2-bizcard-back{transform:rotateY(180deg);flex-direction:row;align-items:center;gap:16px;padding:0 22px 0 16px;color:#1b1736;background:linear-gradient(170deg,#fff,#f0eefb)}
.v2-bizcard-back .v2-vcard-qr{flex:0 0 auto;width:auto;height:80%;aspect-ratio:1;padding:0;border-radius:0;background:transparent;box-shadow:none}
.v2-bizcard-info{min-width:0;display:grid;gap:5px;align-content:center}
.v2-bizcard-turn{justify-self:center;display:inline-flex;align-items:center;gap:7px;padding:8px 15px;border:1px solid var(--line);border-radius:40px;background:var(--surface2);color:var(--text);font-size:12px;font-weight:700}
@media(prefers-reduced-motion:reduce){.v2-bizcard,.v2-bizcard-tilt{transition:none}}
/* 2.21 (« le menu de statut de la tâche est tout à droite, loin du titre ») : le statut suit le titre ; échéa … */
.v2-bizcard-back{color:#fff;background:radial-gradient(110% 80% at 100% 100%,color-mix(in srgb,var(--card) 55%,#4d8fff) 0%,transparent 62%),linear-gradient(165deg,color-mix(in srgb,var(--card) 72%,#120c2e),#0d0b22 76%)}
.v2-bizcard-back .v2-vcard-qr svg{color:#fff}
.v2-bizcard-back .v2-bizcard-info p{color:#ffffffbf}
/* 2.28.2 · « bug d'affichage » : la ligne Billit sous le nom, sur toute la largeur (à droite, elle écrasait l … */
.v2-prof-tabs{margin:0 0 18px}
/* 2.18.1 : photos en vrais ronds (Mon profil, aperçu de la photo, tête du haut sur téléphone) ; l'image est e … */
.profile-identity>.avatar,.v2-avatar-upload .avatar{border-radius:50%}
/* 2.20.9 · « Se déconnecter » en haut de Mon profil, à droite du nom ; sous le nom sur téléphone. */
.profile-identity>.v2-logout{flex:none;align-self:flex-start;margin-left:auto}
@media (max-width:600px){.profile-identity{flex-wrap:wrap;row-gap:12px}.profile-identity>.v2-logout{flex-basis:100%;justify-content:center;margin-left:0}}
/* 2.21 · relecture de la 2.20.9 : sur téléphone, le nom reste à côté de la photo (il passait dessous quand les pastilles étaient
   longues) et « 862 XP » tient sur une ligne. */
@media (max-width:600px){.profile-identity>div:not(.avatar,.v2-prof-cardrow){flex:1 1 0;min-width:0}}
/* 2.22.2 · « la carte de visite, c'est affreux ; Se déconnecter, on ne le voit plus du tout » : la carte devi … */
.profile-identity:has(>.v2-prof-cardrow){flex-wrap:wrap;row-gap:20px}
.profile-identity>.v2-prof-cardrow{flex:0 0 100%;display:flex;min-width:0}
.profile-cover .btn.v2-logout:hover{background:color-mix(in srgb,var(--red) 17%,transparent);border-color:var(--red)}
.v2-prof-card{display:flex;align-items:center;gap:14px;width:min(100%,460px);min-width:0;padding:10px 12px 10px 10px;border:1px solid color-mix(in srgb,var(--card) 32%,var(--line));border-radius:18px;background:color-mix(in srgb,var(--card) 9%,transparent);color:var(--text);font:inherit;text-align:left;cursor:pointer;box-shadow:0 12px 26px -20px color-mix(in srgb,var(--card) 80%,#000);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.v2-prof-card:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--card) 60%,var(--line));box-shadow:0 16px 30px -20px color-mix(in srgb,var(--card) 90%,#000)}
.v2-prof-card:active{transform:scale(.99)}
.v2-prof-card:focus-visible{outline:3px solid var(--accent2);outline-offset:2px}
.v2-prof-card-mini{position:relative;overflow:hidden;isolation:isolate;flex:none;width:80px;aspect-ratio:85.6/54;border-radius:10px;box-shadow:0 8px 16px -10px #0a0828b3,inset 0 1px 0 #ffffff40}
.v2-prof-card-mini>b .v2-logo{width:17px;height:17px;color:#fff}
.v2-prof-card-txt{flex:1 1 auto;min-width:0;display:grid;gap:2px}
.v2-prof-card-go{flex:none;display:inline-flex;align-items:center;gap:4px;height:34px;padding:0 10px 0 14px;border-radius:999px;background:var(--card);color:#fff;font-size:12.5px;font-weight:800}
@media (max-width:600px){.profile-identity>.v2-prof-cardrow{order:4}.profile-identity>.v2-logout{order:5}
 .v2-prof-card{width:100%;gap:12px}.v2-prof-card-mini{width:68px}.v2-prof-card-go{width:34px;padding:0;justify-content:center;font-size:0}}
.profile-cover>.flex:has(>.eyebrow:first-child){gap:12px;align-items:baseline}
.profile-cover>.flex>.eyebrow:first-child{flex:none;white-space:nowrap}
.profile-cover>.flex>.eyebrow:first-child+.small{text-align:right}
/* 2.21 · Fonction de l'équipe (« d'autres types de fonction comme marketeur ou designer ») : titre discret, j … */
.v2-profile-job{margin:-3px 0 9px;font-size:13px;font-weight:600;line-height:1.35;color:var(--muted);overflow-wrap:anywhere}
