  /* ===================== ICÔNES BOSS EMPIRE ===================== */
  .bi,.bill{display:inline-block; flex:none; vertical-align:-.18em; overflow:visible; fill:none; stroke:none; color:inherit;}
  .bi{--bi-sw:1.8; width:18px; height:18px;}
  .bi-xs{width:14px; height:14px; --bi-sw:2.3;}
  .bi-s{width:18px; height:18px; --bi-sw:2;}
  .bi-m{width:24px; height:24px; --bi-sw:1.8;}
  .bi-l{width:32px; height:32px; --bi-sw:1.6;}
  .bi-xl{width:56px; height:56px; --bi-sw:1.4;}
  .bi .s,.bill .s{fill:none; stroke:currentColor; stroke-width:var(--bi-sw); stroke-linecap:round; stroke-linejoin:round;}
  .bi .t,.bill .t{fill:var(--bi-c, var(--accent-strong)); opacity:.42;}
  .bi .f,.bill .f{fill:currentColor;}
  .bi .ct,.bill .ct{fill:#F2C14E;}
  .bill .g{fill:none; stroke:currentColor; stroke-width:var(--bi-sw); stroke-linecap:round; opacity:.35;}
  .bi-xs .ct,.bi-xs .dt{display:none;}
  .bi-s .ct{transform-box:fill-box; transform-origin:center; transform:scale(.85);}
  .bill{--bi-sw:2; width:44px; height:44px;}
  .bill-s{width:32px; height:32px; --bi-sw:2.6;}
  .bill-m{width:44px; height:44px; --bi-sw:2.2;}
  .bill-l{width:64px; height:64px; --bi-sw:2;}
  .bill-xl{width:96px; height:96px; --bi-sw:1.8;}
  .bill-s .dt,.bill-s .g{display:none;}
  .bi-mono .t{opacity:.16; fill:currentColor;}
  .bi-mono .ct{fill:currentColor;}

  /* ---- raretés : cadre + finition + halo, la couleur n'est qu'un indice parmi d'autres ---- */
  .btile{--tc:#3BD17A; position:relative; display:inline-grid; place-items:center; flex:none; width:58px; height:58px; border-radius:12px;
    background:var(--surface-2); border:1px solid var(--border); color:var(--text); isolation:isolate;}
  .btile .bill{--bi-c:var(--tc);}
  .btile.sm{width:42px; height:42px; border-radius:10px;}
  .btile.sm .bill{width:32px; height:32px; --bi-sw:2.6;} .btile.sm .bill .dt{display:none;}
  .btile.lg{width:84px; height:84px; border-radius:16px;}
  .btile.lg .bill{width:64px; height:64px;}
  .btile.tier-standard{--tc:#3BD17A;}
  .btile.tier-premium{--tc:#4FA3E5; border-color:color-mix(in srgb,var(--tc) 55%,transparent); background:color-mix(in srgb,var(--tc) 9%,var(--surface-2));}
  .btile.tier-luxe{--tc:#B48CF2; border-color:var(--tc); background:color-mix(in srgb,var(--tc) 11%,var(--surface-2));
    box-shadow:inset 0 0 0 2px var(--surface-2), inset 0 0 0 3px color-mix(in srgb,var(--tc) 55%,transparent);}
  /* à partir du prestige : l'écusson chanfreiné du logo remplace le carré arrondi */
  .btile.tier-prestige,.btile.tier-exception,.btile.tier-icone{border:0; border-radius:0; background:transparent;}
  .btile.tier-prestige::before,.btile.tier-exception::before,.btile.tier-icone::before{content:''; position:absolute; inset:0; z-index:-1;
    clip-path:polygon(22% 0,78% 0,100% 22%,100% 78%,78% 100%,22% 100%,0 78%,0 22%); background:var(--tc);}
  .btile.tier-prestige::after,.btile.tier-exception::after,.btile.tier-icone::after{content:''; position:absolute; inset:1.5px; z-index:-1;
    clip-path:polygon(21.5% 0,78.5% 0,100% 21.5%,100% 78.5%,78.5% 100%,21.5% 100%,0 78.5%,0 21.5%);
    background:radial-gradient(circle at 50% 38%,color-mix(in srgb,var(--tc) 22%,var(--surface-2)),var(--surface-2) 72%);}
  .btile.tier-prestige{--tc:#F2A94E;}
  .btile.tier-exception{--tc:#FF5A5A; filter:drop-shadow(0 0 7px color-mix(in srgb,var(--tc) 45%,transparent));}
  .btile.tier-icone{--tc:#F2C14E; filter:drop-shadow(0 0 9px rgba(242,193,78,.45));}
  .btile.tier-icone::before{background:linear-gradient(135deg,#8a6a1c,#F2C14E 30%,#fff1c2 48%,#F2C14E 62%,#8a6a1c);}
  .btile.tier-icone .bill{color:#FFF4D6;}
  .btile .btile-sh{position:absolute; inset:0; z-index:1; pointer-events:none; overflow:hidden; clip-path:inherit; border-radius:inherit;}
  .btile.tier-icone .btile-sh,.btile.tier-exception .btile-sh{clip-path:polygon(22% 0,78% 0,100% 22%,100% 78%,78% 100%,22% 100%,0 78%,0 22%);}
  .btile.tier-icone .btile-sh::after,.btile.tier-exception .btile-sh::after{content:''; position:absolute; top:-20%; bottom:-20%; width:30%; left:-45%;
    background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent); animation:bi-sheen 5.5s ease-in-out infinite;}
  .btile.tier-exception .btile-sh::after{animation-duration:8s; background:linear-gradient(100deg,transparent,rgba(255,255,255,.14),transparent);}
  @keyframes bi-sheen{0%,70%{left:-45%} 100%{left:120%}}
  /* glyphe de gamme : 1 à 5 carats, couronne pour l'iconique (lisible sans couleur) */
  .tg{display:inline-block; vertical-align:middle; height:10px; flex:none;}
  .tg.bi{width:13px; height:13px; --bi-sw:2.2;}
  .wt .tg{margin-right:3px;}

  /* ---- états ---- */
  .bis{position:relative; display:inline-grid; place-items:center; flex:none;}
  .bis-b{position:absolute; right:-5px; top:-5px; display:grid; place-items:center; min-width:16px; height:16px; border-radius:8px; font-style:normal;
    background:var(--surface); border:1px solid var(--border); color:var(--text); z-index:2;}
  .bis-b .bi{width:10px; height:10px; --bi-sw:2.6;}
  .bis.is-new .bis-b{min-width:9px; width:9px; height:9px; right:-2px; top:-2px; background:#FF5C98; border:2px solid var(--bg);}
  .bis.is-selected{outline:2px solid var(--accent-strong); outline-offset:3px; border-radius:12px;}
  .bis.is-selected .bis-b{display:none;}
  .bis.is-locked > :not(.bis-b){filter:grayscale(1); opacity:.42;}
  .bis.is-upgradable .bis-b{background:#3BD17A; border-color:#3BD17A; color:#06170d;}
  .bis.is-running .bis-b{min-width:14px; width:14px; height:14px; right:-4px; top:-4px; background:var(--surface); border:2.5px solid var(--accent-strong); border-right-color:transparent; animation:bi-spin 1.1s linear infinite;}
  .bis.is-done > :not(.bis-b){opacity:.75;}
  .bis.is-done .bis-b{background:var(--accent-strong); border-color:var(--accent-strong); color:#1a0710;}
  .bis.is-rare .bis-b{background:#F2C14E; border-color:#F2C14E; color:#2a1c00;}
  @keyframes bi-spin{to{transform:rotate(360deg)}}

  /* ---- animations courtes (déclenchées par classe, jamais en boucle hors raretés hautes) ---- */
  .bi-anim-gain{animation:bi-gain .7s cubic-bezier(.2,1.6,.4,1) both;}
  @keyframes bi-gain{0%{transform:translateY(4px) scale(.7); opacity:0} 100%{transform:none; opacity:1}}
  .bi-anim-rise{animation:bi-rise .8s ease-out both;}
  @keyframes bi-rise{0%{transform:translateY(5px); opacity:.2} 100%{transform:none; opacity:1}}
  .bi-anim-note .s{stroke-dasharray:60; animation:bi-draw .9s ease-out both;}
  @keyframes bi-draw{from{stroke-dashoffset:60} to{stroke-dashoffset:0}}
  .bi-anim-flash{animation:bi-flash .6s ease-out 2;}
  @keyframes bi-flash{50%{filter:drop-shadow(0 0 6px #F2C14E) brightness(1.4)}}
  .bi-anim-shine .ct{animation:bi-ct 1.8s ease-in-out infinite; transform-box:fill-box; transform-origin:center;}
  @keyframes bi-ct{0%,100%{transform:scale(1); opacity:1} 50%{transform:scale(1.5) rotate(45deg); opacity:.7}}
  .bi-anim-flame{animation:bi-flame .9s ease-in-out infinite alternate; transform-origin:50% 90%;}
  @keyframes bi-flame{to{transform:scaleY(1.08) skewX(-3deg)}}
  @media (prefers-reduced-motion: reduce){
    .bi,.bi *,.bill,.bill *,.btile .btile-sh::after,.bis-b{animation:none !important;}
  }

  /* ---- intégration : zones du jeu ---- */
  .nav-ic .bi{width:19px; height:19px;}
  .page-ic .bi{width:28px; height:28px; --bi-sw:1.7;}
  .kpi-ic .bi,.lg-ic .bi{width:22px; height:22px;}
  .hud-key .bi{width:13px; height:13px; --bi-sw:2.4; margin-right:3px; vertical-align:-2px; opacity:.9;}
  .hud-key .bi .ct,.hud-key .bi .dt{display:none;}
  .btn .bi,button .bi{vertical-align:-.2em;}

  /* ---- bibliothèque visuelle (catalogue interne) ---- */
  .bil{display:flex; flex-direction:column; gap:14px;}
  .bil-sec h3{margin:6px 0 8px; font-size:.95rem;}
  .bil-sec > p{margin:0 0 8px; color:var(--text-muted); font-size:.82rem;}
  .bil-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px;}
  .bil-it{display:flex; flex-direction:column; gap:6px; padding:10px; border:1px solid var(--border); border-radius:10px; background:var(--surface-2); min-width:0;}
  .bil-it .bil-row{display:flex; align-items:flex-end; gap:8px;}
  .bil-it b{font-size:.84rem;}
  .bil-it code{font-size:.7rem; color:var(--text-muted); overflow-wrap:anywhere;}
  .bil-it small{font-size:.72rem; color:var(--text-muted); line-height:1.3;}
  .bil-tiers{display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end;}
  .bil-tiers figure{margin:0; display:flex; flex-direction:column; align-items:center; gap:5px; font-size:.72rem; color:var(--text-muted);}
  .bil-states{display:flex; flex-wrap:wrap; gap:16px;}
  .bil-states figure{margin:0; display:flex; flex-direction:column; align-items:center; gap:6px; font-size:.72rem; color:var(--text-muted);}
  .bil-sizes{display:flex; align-items:flex-end; gap:14px; flex-wrap:wrap;}
  .bil-sizes span{display:flex; flex-direction:column; align-items:center; gap:4px; font-size:.68rem; color:var(--text-muted);}
  .bil-filter{display:flex; flex-wrap:wrap; gap:6px;}
  .nav-ic .bi,.page-ic .bi,.kpi-ic .bi,.sheet-act .bi{--bi-c:var(--cat);}
  .cmd-ic .bi{--bi-c:var(--tc); width:24px; height:24px;}
  .notif-ic .bi{--bi-c:var(--nc); width:20px; height:20px;}
  .co-ic{display:inline-grid; place-items:center;} .co-ic .bi{--bi-c:var(--cat); width:24px; height:24px;}
  .pf-h .bi{--bi-c:var(--cat); margin-right:2px;}
  .sheet-act .bi{width:26px; height:26px;}
  .bell{display:inline-grid; place-items:center;} .bell .bi{width:21px; height:21px;}
  .fs-list i .bi{width:11px; height:11px; --bi-sw:3;}
  .wt{display:inline-flex; align-items:center; gap:4px;} .wt .tg{margin:0;}
  .wtiers em{font-style:normal; display:inline-flex; align-items:center; gap:5px; color:var(--text);} .wtiers .tg{color:var(--wt);}
  .wt .tg{color:var(--wt, currentColor);}
  .wc-ic{display:inline-grid; place-items:center; font-size:0;}
  .wbar span .bi{color:var(--text-muted); --bi-c:#B48CF2;}
  .ss-nw .bi.good{color:#3BD17A;} .ss-nw .bi.bad{color:#FF8A8A;}
  #btn-endweek .bi{margin-left:4px; width:14px; height:14px;}
  .btn-quick .bi{--bi-c:#F2C14E;}
  .bil-panel{max-width:980px; width:min(980px,100%);}
  .wc-h{display:grid; grid-template-columns:auto minmax(0,1fr); column-gap:12px; row-gap:6px; align-items:start;}
  .wc-h > .wc-ic{grid-row:span 2;} .wc-h > .wt{grid-column:2; justify-self:start;} .wc-h b{overflow-wrap:normal;}
  .bi.good{color:#3BD17A;} .bi.bad{color:#FF8A8A;} .bi.bi-flat{color:#F2C14E;}
  .emp-split .bi,.emp-acts .bi{--bi-c:var(--accent-strong); margin-right:2px;}
