  /* ===================== MOMENTS ET PERSONNALISATION ===================== */
  .mo{position:fixed; inset:0; z-index:600; display:grid; place-items:center; padding:16px; background:rgba(4,3,6,.72); backdrop-filter:blur(3px); opacity:0; transition:opacity .18s ease; cursor:pointer;}
  .mo.on{opacity:1;} .mo.leaving{opacity:0;}
  .mo-box{position:relative; width:min(560px,100%); border-radius:18px; overflow:hidden; background:#0c0a10; border:1px solid var(--border); box-shadow:0 24px 70px rgba(0,0,0,.6); transform:scale(.96); transition:transform .22s ease;}
  .mo.on .mo-box{transform:none;}
  .mo.tier-rare .mo-box{border-color:#F2C14E; box-shadow:0 0 0 1px #F2C14E, 0 24px 80px rgba(242,193,78,.25);}
  .mo.tier-major .mo-box{border-color:color-mix(in srgb,var(--accent) 70%,transparent);}
  .mo-stage{aspect-ratio:16/10; width:100%; background:#000;} .mo-stage > svg{width:100%; height:100%; display:block;}
  .mo-cap{display:flex; align-items:center; gap:12px; padding:12px 14px 16px; background:linear-gradient(180deg,#141018,#0c0a10);}
  .mo-ic{width:44px; height:44px; flex:none; display:grid; place-items:center; border-radius:12px; background:var(--surface-2); font-size:1.4rem;}
  .mo-cov{width:56px; height:56px; flex:none; border-radius:8px; overflow:hidden; box-shadow:0 4px 14px rgba(0,0,0,.5);} .mo-cov > svg{width:100%; height:100%; display:block;}
  .mo-txt{display:flex; flex-direction:column; gap:2px; min-width:0; animation:moUp .35s ease both;}
  .mo-kick{font-size:.66rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--accent);}
  .mo.tier-rare .mo-kick{color:#F2C14E;}
  .mo-txt b{font-family:var(--font-display); font-size:1.15rem; line-height:1.15; overflow-wrap:anywhere;} .mo-txt small{font-size:.8rem; color:var(--text-muted);}
  .mo-chips-row{display:flex; gap:6px; flex-wrap:wrap; margin-top:4px; animation:moUp .35s ease both; animation-delay:calc(var(--dur,3000ms) * .45);}
  .mo-chips-row span{font-size:.74rem; font-weight:800; padding:3px 9px; border-radius:999px; background:var(--surface-2); border:1px solid var(--border);}
  .mo-chips-row .good{color:#3BD17A; border-color:color-mix(in srgb,#3BD17A 50%,transparent);} .mo-chips-row .gold{color:#1B1216; background:#F2C14E; border-color:#F2C14E;}
  .mo-skip{position:absolute; top:10px; right:10px; z-index:2; background:rgba(0,0,0,.55); color:#fff; border:1px solid rgba(255,255,255,.25); border-radius:999px; padding:6px 12px; font:inherit; font-size:.78rem; font-weight:800; cursor:pointer; min-height:34px;}
  .mo-bar{position:absolute; left:0; bottom:0; height:3px; width:100%; background:var(--accent); transform-origin:left; animation:moBar var(--dur,3000ms) linear both;}
  .mo.tier-rare .mo-bar{background:#F2C14E;}
  @keyframes moBar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
  @keyframes moUp{from{opacity:0; transform:translateY(6px)}to{opacity:1; transform:none}}
  /* animations des scènes : --k accélère tout en version express */
  .mo svg *{animation-duration:calc(var(--t,1s) * var(--k,1)); animation-delay:calc(var(--d,0s) * var(--k,1)); animation-fill-mode:both;}
  .mo .mo-a{--t:.5s;}
  .mo .mo-in-l{animation-name:moInL; --t:.55s;} .mo .mo-in-r{animation-name:moInR; --t:.55s;}
  @keyframes moInL{from{transform:translateX(-60px); opacity:0}to{transform:none; opacity:1}} @keyframes moInR{from{transform:translateX(60px); opacity:0}to{transform:none; opacity:1}}
  .mo .mo-sway{animation:moSway 1.6s ease-in-out infinite alternate;} @keyframes moSway{from{transform:rotate(-2deg)}to{transform:rotate(2deg)}}
  .mo .mo-nod{animation:moNod .55s ease-in-out infinite alternate; animation-delay:var(--d,0s);} @keyframes moNod{from{transform:translateY(0)}to{transform:translateY(3px) rotate(1.5deg)}}
  .mo .mo-jump{animation:moJump .6s ease-in-out infinite alternate;} @keyframes moJump{from{transform:translateY(2px)}to{transform:translateY(-6px)}}
  .mo .mo-bob{animation:moBob .5s ease-in-out infinite alternate; animation-delay:var(--d,0s);} @keyframes moBob{from{transform:translateY(0)}to{transform:translateY(-4px)}}
  .mo .mo-wave{animation:moWave 1.1s ease-out infinite; animation-delay:var(--d,0s);} @keyframes moWave{0%{opacity:0; transform:scale(.6)}30%{opacity:1}100%{opacity:0; transform:scale(1.25)}}
  .mo .mo-float{animation:moFloat 1.8s ease-out infinite; animation-delay:var(--d,0s);} @keyframes moFloat{0%{opacity:0; transform:translateY(0)}20%{opacity:1}100%{opacity:0; transform:translateY(-60px)}}
  .mo .mo-eq{animation:moEq .45s ease-in-out infinite alternate; animation-delay:var(--d,0s);} @keyframes moEq{from{transform:scaleY(.2)}to{transform:scaleY(1)}}
  .mo .mo-fader{animation:moFader .7s ease-in-out infinite alternate; animation-delay:var(--d,0s);} @keyframes moFader{from{transform:translateY(-8px)}to{transform:translateY(4px)}}
  .mo .mo-pad{animation:moPad .9s steps(1) infinite; animation-delay:var(--d,0s);} @keyframes moPad{0%{opacity:.25}20%{opacity:1}40%{opacity:.25}}
  .mo .mo-blink{animation:moBlink .9s steps(1) infinite; animation-delay:var(--d,0s);} @keyframes moBlink{0%{opacity:1}50%{opacity:.15}}
  .mo .mo-sweep{animation:moSweep 2.2s ease-in-out infinite alternate; animation-delay:var(--d,0s);} @keyframes moSweep{from{transform:rotate(-20deg)}to{transform:rotate(20deg)}}
  .mo .mo-pulse{animation:moPulse .9s ease-in-out infinite alternate; transform-box:fill-box; transform-origin:center;} @keyframes moPulse{from{transform:scale(.92); opacity:.8}to{transform:scale(1.06); opacity:1}}
  .mo .mo-glow{animation:moGlow 1.2s ease-in-out infinite alternate;} @keyframes moGlow{from{opacity:.5}to{opacity:1}}
  .mo .mo-flame{animation:moFlame 1.4s ease-out infinite; animation-delay:var(--d,0s);} @keyframes moFlame{0%{transform:scaleY(0); opacity:0}15%{transform:scaleY(1.1); opacity:1}45%{transform:scaleY(.8); opacity:.9}70%,100%{transform:scaleY(0); opacity:0}}
  .mo .mo-flash{animation:moFlash 1.6s steps(1) infinite; animation-delay:var(--d,0s);} @keyframes moFlash{0%{opacity:.9}8%,100%{opacity:0}}
  .mo .mo-conf{animation:moConf 2.4s linear infinite; animation-delay:var(--d,0s);} @keyframes moConf{from{transform:translate(0,0) rotate(0)}to{transform:translate(var(--x,0),230px) rotate(540deg)}}
  .mo .mo-slide{--t:.6s; animation-name:moSlide;} @keyframes moSlide{from{transform:translateX(-90px); opacity:0}to{transform:none; opacity:1}}
  .mo .mo-sign{stroke-dasharray:70; animation:moSign calc(1s * var(--k,1)) ease-in-out both; animation-delay:calc(.9s * var(--k,1));} @keyframes moSign{from{stroke-dashoffset:70}to{stroke-dashoffset:0}}
  .mo .mo-pop{--t:.45s; animation-name:moPop; animation-timing-function:cubic-bezier(.3,1.6,.5,1);} @keyframes moPop{from{transform:scale(0); opacity:0}to{transform:scale(1); opacity:1}}
  .mo .mo-bubble{--t:.4s; animation-name:moPop;}
  .mo .mo-dot{animation:moDot .6s ease-in-out infinite alternate; animation-delay:var(--d,0s);} @keyframes moDot{from{opacity:.3}to{opacity:1}}
  .mo .mo-rise{--t:.8s; animation-name:moRise; animation-timing-function:cubic-bezier(.2,.9,.3,1);} @keyframes moRise{from{transform:translateY(120px); opacity:0}to{transform:none; opacity:1}}
  .mo .mo-zoom{--t:2.4s; animation-name:moZoom; animation-timing-function:ease-out;} @keyframes moZoom{from{transform:scale(.82)}to{transform:scale(1.04)}}
  .mo .mo-door-l{--t:.9s; --d:.5s; animation-name:moDoor;} .mo .mo-door-r{--t:.9s; --d:.5s; animation-name:moDoor;} @keyframes moDoor{to{transform:scaleX(.08)}}
  .mo .mo-light{--t:.8s; --d:.9s; animation-name:moLight;} @keyframes moLight{from{opacity:0}to{opacity:.55}}
  .mo .mo-shimmer{animation:moBlink 1.2s steps(1) infinite;}
  .mo .mo-drive{--t:1s; animation-name:moDrive; animation-timing-function:cubic-bezier(.15,.8,.3,1);} @keyframes moDrive{from{transform:translateX(330px)}to{transform:none}}
  .mo .mo-shine{animation:moShine 1.8s ease-in-out infinite; animation-delay:calc(1s * var(--k,1));} @keyframes moShine{from{transform:skewX(-18deg) translateX(-40px)}to{transform:skewX(-18deg) translateX(260px)}}
  .mo .mo-fly{animation:moFly calc(3.2s * var(--k,1)) ease-in-out both;} @keyframes moFly{from{transform:translateX(-300px) translateY(20px)}to{transform:translateX(80px) translateY(-10px)}}
  .mo .mo-cloud{animation:moCloud 3s linear infinite;} @keyframes moCloud{from{transform:translateX(40px)}to{transform:translateX(-40px)}}
  .mo .mo-hover{animation:moBob 1s ease-in-out infinite alternate;} .mo .mo-rotor{animation:moRotor .25s linear infinite;} @keyframes moRotor{from{transform:scaleX(1)}50%{transform:scaleX(.15)}to{transform:scaleX(1)}}
  .mo .mo-twinkle{animation:moTwinkle 1.1s ease-in-out infinite; animation-delay:var(--d,0s);} @keyframes moTwinkle{0%,100%{transform:scale(0); opacity:0}50%{transform:scale(1); opacity:1}}
  .mo .mo-curtain{--t:1.1s; --d:.4s; animation-name:moCurtain;} @keyframes moCurtain{to{transform:translateY(-110px)}}
  .mo .mo-merge{--t:.6s; animation-name:moPop;} .mo .mo-ring{animation:moRing 1.2s ease-out infinite; transform-box:fill-box; transform-origin:center;} @keyframes moRing{from{transform:scale(.6); opacity:1}to{transform:scale(1.6); opacity:0}}
  .mo .mo-ringout{animation:moRing 1.4s ease-out infinite; animation-delay:var(--d,0s);}
  .mo .mo-drop{--t:.6s; --d:.5s; animation-name:moDrop; animation-timing-function:cubic-bezier(.3,1.5,.5,1);} @keyframes moDrop{from{transform:translateY(-120px); opacity:0}to{transform:none; opacity:1}}
  .mo .mo-fadeout{--t:.9s; --d:.3s; animation-name:moFadeOut;} @keyframes moFadeOut{to{opacity:0; transform:scale(.96)}}
  .mo .mo-fadein{--t:1s; --d:.6s; animation-name:moFadeIn;} @keyframes moFadeIn{from{opacity:0; transform:scale(1.06)}to{opacity:1; transform:none}}
  .mo .mo-fo{width:100%; height:100%; display:grid; place-items:center;}
  .mo.still svg *, .mo.still .mo-txt, .mo.still .mo-chips-row{animation:none !important;}
  @media (prefers-reduced-motion:reduce){ .mo svg *{animation:none !important;} .mo-bar{animation:none;} }
  @media (max-width:560px){ .mo{padding:10px; align-items:end; padding-bottom:calc(84px + env(safe-area-inset-bottom,0px));} .mo-txt b{font-size:1rem;} }
  /* pastilles (micro-animations) et argent qui flotte */
  #mo-chips{position:fixed; left:50%; bottom:calc(96px + env(safe-area-inset-bottom,0px)); transform:translateX(-50%); z-index:590; display:flex; flex-direction:column; gap:6px; align-items:center; pointer-events:none;}
  .mo-chip{display:flex; align-items:center; gap:10px; padding:8px 14px 8px 10px; border-radius:14px; background:var(--surface); border:1px solid var(--border); box-shadow:0 10px 30px rgba(0,0,0,.45); animation:moChip .35s cubic-bezier(.3,1.4,.5,1) both; max-width:min(420px,calc(100vw - 32px));}
  .mo-chip.out{opacity:0; transform:translateY(8px); transition:all .35s ease;}
  .mo-chip b{font-size:.84rem; display:block;} .mo-chip small{font-size:.74rem; color:var(--text-muted);}
  .mo-chip.good{border-color:color-mix(in srgb,#3BD17A 60%,transparent);} .mo-chip.bad{border-color:color-mix(in srgb,#FF5A5A 60%,transparent);}
  .mo-chip-ic{width:30px; height:30px; flex:none; display:grid; place-items:center; border-radius:9px; background:var(--surface-2);}
  @keyframes moChip{from{opacity:0; transform:translateY(12px) scale(.95)}to{opacity:1; transform:none}}
  .mo-money{position:fixed; z-index:610; transform:translateX(-50%); font-family:var(--font-mono); font-weight:800; font-size:.9rem; padding:3px 9px; border-radius:999px; pointer-events:none; animation:moMoney 1.6s ease-out both;}
  .mo-money.up{color:#0b2a17; background:#3BD17A;} .mo-money.down{color:#fff; background:#b3263a;}
  @keyframes moMoney{0%{opacity:0; transform:translate(-50%,6px)}15%{opacity:1; transform:translate(-50%,0)}100%{opacity:0; transform:translate(-50%,26px)}}
  @media (prefers-reduced-motion:reduce){ .mo-chip,.mo-money{animation:none;} }
  /* garde-robe, identités, pochettes, véhicules, vitrine, accueil */
  .ward-panel,.cust-panel{max-width:760px; width:calc(100vw - 32px); text-align:left;}
  .ward-intro{font-size:.8rem; margin:0 0 8px;}
  .ward-tabs{flex-wrap:wrap;}
  .ward-grid,.id-grid{display:grid; grid-template-columns:200px minmax(0,1fr); gap:16px; margin-top:10px;}
  .ward-prev,.id-prev{display:flex; flex-direction:column; align-items:center; gap:8px; text-align:center;}
  .ward-av{width:170px; height:170px; border-radius:22px;}
  .ward-stage{font-size:.84rem;} .ward-auto{display:flex; gap:6px; align-items:center; font-size:.8rem; cursor:pointer;}
  .ward-opts,.id-opts{display:flex; flex-direction:column; gap:12px; min-width:0;}
  .opt-thumb.locked{opacity:.45; cursor:not-allowed;}
  .sym-row{display:flex; gap:6px; flex-wrap:wrap;}
  .sym-btn{width:40px; height:40px; display:grid; place-items:center; border-radius:10px; border:1px solid var(--border); background:var(--surface-2); color:var(--text-muted); cursor:pointer;}
  .sym-btn svg{width:22px; height:22px;} .sym-btn.selected{color:var(--text); border-color:var(--accent-strong); background:var(--accent-soft);}
  .lbl-badge-big{width:120px; height:120px;} .lbl-badge-big svg{width:100%; height:100%;}
  .sub-row{display:flex; gap:6px; flex-wrap:wrap;} .aes-dot{display:inline-block; width:12px; height:12px; border-radius:50%; margin-right:6px; vertical-align:-1px; border:1px solid rgba(255,255,255,.25);}
  .stage-row{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:8px;} .ex-opt.locked{opacity:.5; cursor:not-allowed;}
  .id-av{position:relative; width:120px; height:120px; border-radius:24px; overflow:hidden; box-shadow:0 0 0 3px var(--ic);}
  .id-sym{position:absolute; right:6px; bottom:6px; width:30px; height:30px; border-radius:50%; background:var(--ic); display:grid; place-items:center; box-shadow:0 2px 8px rgba(0,0,0,.4);} .id-sym svg{width:18px; height:18px;}
  .id-cover{width:120px; height:120px; border-radius:10px; overflow:hidden;} .id-cover svg{width:100%; height:100%; display:block;}
  .cover-pick{display:flex; gap:8px; flex-wrap:wrap;}
  .cov-opt{display:flex; flex-direction:column; align-items:center; gap:3px; padding:4px; border-radius:10px; border:1px solid var(--border); background:var(--surface-2); color:var(--text-muted); cursor:pointer; font:inherit;}
  .cov-opt svg{width:58px; height:58px; display:block; border-radius:6px;} .cov-opt small{font-size:.66rem;} .cov-opt.selected{border-color:var(--accent-strong); color:var(--text); background:var(--accent-soft);}
  .cat-cov{display:inline-block; width:30px; height:30px; border-radius:5px; overflow:hidden; vertical-align:middle; margin-right:8px; cursor:pointer; flex:none;} .cat-cov svg{width:100%; height:100%; display:block;}
  .car-ic{display:block; width:84px;} .car-ic svg{width:100%; height:auto; display:block;}
  .wcard .wc-ic .car-ic{width:72px;}
  .cust-prev{background:radial-gradient(ellipse at 50% 80%,#2a2a36,#0c0c12); border-radius:14px; padding:14px 10px;} .cust-prev svg{width:100%; max-height:170px; display:block;}
  #cust-body{display:flex; flex-direction:column; gap:12px;}
  .w-acts{display:flex; gap:4px; margin-left:auto; flex:none;}
  .w-fav,.w-vit{background:none; border:1px solid var(--border); border-radius:8px; color:var(--text-muted); cursor:pointer; font:inherit; font-size:.8rem; padding:4px 8px; min-height:30px;}
  .w-fav.on{color:#F2C14E; border-color:#F2C14E;} .w-vit.on{color:var(--text); border-color:var(--accent-strong); background:var(--accent-soft);}
  .vitrine .vit-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px;}
  .vit{display:flex; flex-direction:column; gap:6px; padding:12px; border-radius:14px; border:1px solid var(--border); background:var(--surface-2); align-items:flex-start;}
  .vit.main{grid-column:1/-1; flex-direction:row; align-items:center; border-color:#F2C14E; background:linear-gradient(135deg,color-mix(in srgb,#F2C14E 12%,var(--surface-2)),var(--surface-2));}
  .vit > div{display:flex; flex-direction:column; gap:2px; flex:1; min-width:0;} .vit b{overflow-wrap:anywhere;}
  .vit.main .car-ic{width:150px;} .vit-ic{flex:none;}
  .co-ic.branded{background:var(--cb) !important; border-radius:10px; display:grid; place-items:center;} .co-sym{width:22px; height:22px;}
  .co-brand-btn{margin-left:auto; flex:none;}
  .co-brand-prev{display:flex; align-items:center; gap:10px;} .co-logo{width:52px; height:52px; border-radius:14px; background:var(--cb); display:grid; place-items:center;} .co-logo svg{width:28px; height:28px;}
  #home-custom{display:flex; gap:12px; flex-wrap:wrap; margin:-4px 0 10px; font-size:.8rem;}
  .he-list{display:flex; flex-direction:column;} .he-row{display:flex; align-items:center; justify-content:space-between; gap:8px; padding:6px 0; border-bottom:1px solid var(--border);}
  .he-row label{display:flex; gap:8px; align-items:center; cursor:pointer;} .he-row.off label{opacity:.5;} .he-row .btn-ghost{min-width:40px; min-height:36px; padding:4px 8px;}
  @media (max-width:640px){ .ward-grid,.id-grid{grid-template-columns:1fr;} .ward-av{width:140px; height:140px;} }
