/* Boutique (chargée après home.css et patch-notes.css, dont elle réutilise le hero). */

.shop-hero .pn-copy{max-width:600px}
.shop-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);align-items:center}
.shop-hero .tags .ic{color:var(--accent)}

/* Formulaire du pseudo */
.shop-form{margin-top:34px;max-width:560px}
.shop-form label{display:block;font-family:var(--pix);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:10px}
.field{
  display:flex;align-items:center;gap:10px;padding:6px 6px 6px 14px;
  background:rgba(17,26,48,.85);border:1px solid var(--line-2);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:border-color .15s;
}
.field:focus-within{border-color:var(--accent-strong)}
.field.error{border-color:#ff8a7a}
.field .prefix{display:grid;place-items:center;color:var(--dim)}
.field input{flex:1;min-width:0;background:none;border:0;outline:0;color:var(--text);font:600 17px var(--sans);padding:10px 0}
.field input::placeholder{color:var(--dim);font-weight:400}
.field .btn{flex:none}
.help{margin-top:12px;font-size:13.5px;color:var(--dim)}
.help.err{color:#ffb0a5}

.soon{display:inline-flex;align-items:center;gap:8px;margin:10px 0 10px;font-family:var(--pix);font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:6px 10px;background:rgba(122,168,255,.12);border:1px solid rgba(122,168,255,.35);color:#bcd4ff}
.soon .dot{width:7px;height:7px;background:var(--green);box-shadow:0 0 8px var(--green);animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}

@media (max-width:600px){
  .field{flex-wrap:wrap;padding:6px}
  .field .prefix{padding-left:8px}
  .field .btn{width:100%}
}

/* ---------- Vitrine 3D ----------
   Le skin en 3D (skinview3d) sur un cercle de lumière, halo de lune derrière, lucioles. */
.stage{position:relative;height:clamp(440px,52vw,560px);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;isolation:isolate;overflow:hidden}
.stage canvas{position:absolute;inset:36px 0 70px;width:100%!important;height:calc(100% - 106px)!important;cursor:grab;z-index:2;outline:none}
.stage canvas:active{cursor:grabbing}

/* Halo de lune derrière le joueur */
.halo{position:absolute;left:50%;top:44%;width:min(420px,90%);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;z-index:0;
  background:radial-gradient(closest-side,rgba(207,224,255,.32),rgba(111,156,255,.14) 45%,rgba(111,156,255,.04) 70%,transparent);
  animation:halo 6s ease-in-out infinite alternate}
@keyframes halo{from{opacity:.75;transform:translate(-50%,-50%) scale(.94)}to{opacity:1;transform:translate(-50%,-50%) scale(1.05)}}

/* Cercle runique au sol (trois anneaux en perspective) */
.circle{position:absolute;left:50%;bottom:26px;width:min(300px,78%);aspect-ratio:1;transform:translateX(-50%) perspective(600px) rotateX(74deg);z-index:1}
.circle span{position:absolute;inset:0;border-radius:50%}
.circle span:nth-child(1){background:radial-gradient(closest-side,rgba(156,192,255,.45),rgba(111,156,255,.12) 60%,transparent);filter:blur(2px)}
.circle span:nth-child(2){inset:6%;border:3px dashed rgba(207,224,255,.55);animation:spin 26s linear infinite;box-shadow:0 0 24px rgba(111,156,255,.5),inset 0 0 24px rgba(111,156,255,.35)}
.circle span:nth-child(3){inset:22%;border:2px solid rgba(207,224,255,.35);animation:spin 18s linear infinite reverse}
@keyframes spin{to{transform:rotate(360deg)}}

/* Lucioles qui montent autour du joueur */
.motes{position:absolute;inset:0 0 70px;z-index:3;pointer-events:none;overflow:hidden}
.motes i{position:absolute;bottom:12%;width:4px;height:4px;background:#e3eeff;box-shadow:0 0 8px 2px rgba(156,192,255,.8);opacity:0;animation:mote 6s ease-in infinite}
.motes i:nth-child(1){left:30%;animation-delay:0s}
.motes i:nth-child(2){left:62%;animation-delay:-1.2s;animation-duration:7s}
.motes i:nth-child(3){left:44%;animation-delay:-2.4s}
.motes i:nth-child(4){left:70%;animation-delay:-3.1s;animation-duration:5.5s}
.motes i:nth-child(5){left:24%;animation-delay:-4s;animation-duration:7.5s}
.motes i:nth-child(6){left:55%;animation-delay:-4.8s}
.motes i:nth-child(7){left:38%;animation-delay:-5.5s;animation-duration:6.5s}
.motes i:nth-child(8){left:76%;animation-delay:-1.8s;background:#ffe2b0;box-shadow:0 0 8px 2px rgba(255,206,140,.7)}
.motes i:nth-child(9){left:20%;animation-delay:-3.6s;background:#ffe2b0;box-shadow:0 0 8px 2px rgba(255,206,140,.7)}
.motes i:nth-child(10){left:50%;animation-delay:-0.6s;animation-duration:8s}
@keyframes mote{0%{opacity:0;transform:translate(0,0)}15%{opacity:1}60%{transform:translate(14px,-200px)}100%{opacity:0;transform:translate(-8px,-340px)}}

/* ---------- Commandes de l'aperçu : vues, animations, cape, élytres ---------- */
.stage-top,.stage-bar{position:absolute;left:14px;right:14px;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.stage-top{top:14px}
.stage-bar{bottom:14px}
.seg{display:inline-flex;flex-wrap:wrap;gap:2px;padding:4px;background:rgba(10,15,29,.62);border:1px solid var(--line-2);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.seg button{font:600 13px var(--sans);color:var(--muted);background:none;border:0;padding:7px 11px;cursor:pointer;transition:background .15s,color .15s}
.seg button:hover{color:var(--text);background:rgba(255,255,255,.06)}
.seg button[aria-pressed="true"]{color:#fff;background:var(--accent-strong);}
.toggles{display:inline-flex;gap:6px}
.toggle{
  display:inline-flex;align-items:center;gap:7px;cursor:pointer;font:600 13px var(--sans);color:var(--muted);
  padding:8px 12px;background:rgba(10,15,29,.62);border:1px solid var(--line-2);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:transform .12s,box-shadow .12s,color .15s,border-color .15s;
}
.toggle .ic{width:15px;height:15px;color:var(--accent)}
.toggle:hover:not(:disabled){color:var(--text);transform:translateY(-1px)}
.toggle[aria-pressed="true"]{color:#fff;border-color:var(--accent-strong);background:rgba(47,90,200,.45);transform:translateY(2px);}
.toggle:disabled{opacity:.4;cursor:not-allowed}
#reload.busy .ic{animation:spin .8s linear infinite}
#reload.busy{pointer-events:none;opacity:.8}
.stage .drag{position:absolute;left:0;right:0;bottom:64px;z-index:3;text-align:center;font-size:12.5px;color:var(--dim);pointer-events:none}
.stage canvas{inset:64px 0 70px;height:calc(100% - 134px)!important}
/* Sans JavaScript (ou si la 3D ne se charge pas), on cache les commandes. */
.stage:not(.ready) .stage-top,.stage:not(.ready) .stage-bar,.stage:not(.ready) .drag{visibility:hidden}

/* ---------- Studio : aperçu à gauche, vestiaire à droite ---------- */
.studio{padding:24px 0 clamp(48px,6vw,80px)}
.studio .crumbs{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--dim);margin-bottom:16px}
.studio .crumbs a{display:inline-flex;align-items:center;gap:6px;color:var(--muted)}
.studio .crumbs a:hover{color:var(--text)}
.studio .crumbs .ic{width:14px;height:14px}
.studio-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:20px;align-items:start}
.studio-stage{
  position:sticky;top:80px;height:clamp(540px,calc(100vh - 120px),720px);
  background:radial-gradient(70% 55% at 50% 40%,rgba(111,156,255,.16),transparent 70%),linear-gradient(180deg,rgba(22,33,64,.72),rgba(12,19,36,.82));
  border:1px solid var(--line-2);
}
.studio-stage .drag{bottom:70px}
.studio-stage .circle{bottom:62px}

.locker{padding:22px;background:rgba(17,26,48,.82);border:1px solid var(--line-2);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.pcard{display:flex;gap:16px;align-items:flex-start}
.pcard .head{flex:none;width:64px;height:64px;image-rendering:pixelated;background:var(--panel-2);border:1px solid var(--line-2);}
.pinfo{min-width:0}
.pinfo h1{font-size:24px;font-weight:720;letter-spacing:-.02em;line-height:1.15;word-break:break-all}
.pmeta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:4px 9px;background:var(--panel-2);border:1px solid var(--line-2);color:var(--muted)}
.chip.soon{font-family:var(--pix);font-weight:400;font-size:10px;letter-spacing:.05em;text-transform:uppercase;margin:0}
.uuid{display:inline-flex;align-items:center;gap:8px;margin-top:10px;max-width:100%;cursor:pointer;background:none;border:0;padding:0;color:var(--dim)}
.uuid code{font:12px ui-monospace,Consolas,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uuid .ic{width:14px;height:14px;flex:none}
.uuid:hover{color:var(--text)}
.uuid.done{color:var(--green)}
.pmissing{margin-top:8px;font-size:13.5px;color:#ffb0a5}
.plinks{display:flex;flex-wrap:wrap;gap:8px 18px;margin:16px 0 4px;padding-bottom:18px;border-bottom:1px solid var(--line);font-size:14px}
.plinks a{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-weight:600}
.plinks a:hover{color:var(--accent-2)}
.plinks .ic{width:13px;height:13px}
.locker h2{font-size:19px;font-weight:700;margin:20px 0 6px}
.locker>p.muted{font-size:14px}

/* Article Mistly à essayer (première case de Capes et Ailes) */
.slot.item{
  display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:6px;padding:10px 8px;
  border-style:solid;border-color:rgba(156,192,255,.45);
  background:radial-gradient(80% 60% at 50% 35%,rgba(111,156,255,.22),transparent 70%),var(--panel-2);
}
.slot.item .thumb{flex:1;min-height:0;height:100%;width:auto;max-width:70%;image-rendering:pixelated;filter:drop-shadow(0 6px 10px rgba(0,0,0,.5))}
.slot.item strong{font-size:12px;font-weight:650;text-align:center;line-height:1.2}
.slot.item .equip{width:100%;padding:6px 8px;font-size:12.5px;}
.slot.item.equipped{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 24px -6px rgba(122,168,255,.7)}
.slot.item.equipped .equip{background:var(--panel);color:var(--text);border:1px solid var(--line-2)}

/* Avertissement à l'équipement */
.equip-warn{
  display:flex;align-items:flex-start;gap:10px;margin-top:12px;padding:11px 13px;font-size:13.5px;line-height:1.45;
  color:#ffd99a;background:rgba(255,190,90,.08);border:1px solid rgba(255,190,90,.35);
}
.equip-warn .ic{flex:none;width:17px;height:17px;margin-top:1px;color:#ffc56b}

/* Onglets des catégories */
.cat-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:16px}
.cat-tabs button{
  display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 6px;cursor:pointer;
  font:600 12.5px var(--sans);color:var(--muted);background:var(--panel);border:1px solid var(--line);transition:.15s;
}
.cat-tabs button .ic{width:20px;height:20px;color:var(--accent)}
.cat-tabs button:hover{color:var(--text);border-color:var(--line-2)}
.cat-tabs button[aria-selected="true"]{color:#fff;background:linear-gradient(160deg,#2d4f9c,#203a78);border-color:rgba(156,192,255,.45);}
.cat-tabs button[aria-selected="true"] .ic{color:#fff}
.cat-panel{margin-top:16px}
.cat-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.cat-head h3{display:inline-flex;align-items:center;gap:8px;font-size:16px;font-weight:650}
.cat-head h3 .ic{color:var(--accent)}
.cat-head .badge{font-family:var(--pix);font-size:9.5px;letter-spacing:.05em;padding:4px 8px;background:rgba(122,168,255,.12);border:1px solid rgba(122,168,255,.35);color:#bcd4ff;white-space:nowrap}
.cat-panel>p{font-size:14px;color:var(--muted);margin-top:6px}
.slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}
.slot{
  position:relative;aspect-ratio:1;display:grid;place-items:center;overflow:hidden;
  background:repeating-linear-gradient(135deg,rgba(255,255,255,.015) 0 10px,rgba(255,255,255,.04) 10px 20px),var(--panel);border:1px dashed var(--line-2);
}
.slot .ic{width:30px;height:30px;color:var(--dim);opacity:.45}
.slot span{position:absolute;bottom:7px;left:0;right:0;text-align:center;font-family:var(--pix);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}

@media (max-width:980px){
  .shop-grid,.studio-grid{grid-template-columns:minmax(0,1fr)}
  .stage{height:460px;margin-top:10px}
  .studio-stage{position:relative;top:0;height:520px}
}
@media (max-width:600px){
  .stage-top,.stage-bar{left:8px;right:8px}
  .seg button{padding:6px 8px;font-size:12px}
  .toggle{padding:7px 9px;font-size:12px}
  .toggle span{display:none}
  .stage{height:500px}
  .stage canvas{inset:56px 0 108px;height:calc(100% - 164px)!important}
  .stage .drag{display:none}
  .cat-tabs{grid-template-columns:repeat(4,minmax(0,1fr))}
  .cat-tabs button span{font-size:11px}
}
