/* Boîtes console « réalistes » (classes .real et .real--<style> posées par
   js/gamebox.js). D'après des photos de boîtes européennes (PAL). Aucun logo officiel : noms de console en texte.
   Mêmes règles de rareté pour toutes les boîtes (comme PC, Master System, Mega Drive et Game Boy) :
     - rien dans les bandeaux (ni nom, ni points, ni couleurs argent / or / holo) ;
     - en bas à gauche de l'illustration : pastille initiales + six points, sur une légère vignette ;
     - pas de titre ni de note sur la jaquette (les illustrations portent déjà le nom du jeu ; tout est dans la fiche). */

/* ==== Règles communes ================================================================================ */
.gbox.real .gb-band .gb-rarity, .gbox.real .gb-band .pips { display: none; }
.gbox.real :is(.gb-sticker, .gb-series) { display: none; }
.gbox.real .gb-art { --safe-bottom: .1; }

/* Coin bas gauche de l'illustration : vignette en diagonale et pastille. */
.card.gbox.real .gb-art > .gb-plate { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; top: auto; width: auto; height: 42%;
  margin: 0; padding: 0 0 2cqw 2cqw; border: 0; border-radius: 0; order: 0; transform: none;
  display: flex; align-items: flex-end; justify-content: flex-start;
  background: linear-gradient(35deg, rgba(10, 10, 14, .6), rgba(10, 10, 14, .28) 22%, rgba(10, 10, 14, .08) 38%, transparent 50%); }
.card.gbox.real .gb-plate::before, .card.gbox.real .gb-plate::after { display: none; }
.card.gbox.real .gb-plate :is(.gb-title, .gb-meta, .gb-num) { position: absolute; width: 1px; height: 1px; margin: 0; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Pastille : initiales dans le carré à la couleur de la rareté, six points dans la bande blanche. */
.card.gbox.real .gb-rating--rarity { position: static; transform: none; grid-row: auto; grid-column: auto; align-self: auto; justify-self: auto;
  margin: 0; width: 11.5cqw; height: auto; padding: 0; overflow: hidden; border-radius: .6cqw;
  display: flex; flex-direction: column; align-items: stretch; justify-content: flex-start; line-height: 1; color: #1A1A20; background: #fff;
  box-shadow: 0 0 0 .45cqw #fff, .4cqw .6cqw 0 rgba(0, 0, 0, .35); }
.card.gbox.real .gb-rating--rarity strong { font-family: 'Anton', var(--font-display); font-weight: 400; font-size: 6cqw; line-height: 1;
  padding: 1.3cqw 0 .9cqw; text-align: center; color: #1A1A20; background: var(--r); }
.card.gbox.real .gb-rating--rarity .pips { display: flex; justify-content: center; gap: .45cqw; margin: 0; padding: .8cqw .3cqw .7cqw; background: #fff; }
.card.gbox.real .gb-rating--rarity .pips i { width: 1.3cqw; height: 1.3cqw; box-shadow: inset 0 0 0 .3cqw #1A1A20; }
.card.gbox.real .gb-rating--rarity .pips i.on { background: #1A1A20; }
.card.gbox.real[data-rarity="epique"] .gb-rating--rarity strong { background: linear-gradient(135deg, #C9CBD6, #F2F3F8 50%, #A9ADBD); }
.card.gbox.real[data-rarity="legendaire"] .gb-rating--rarity strong { background: linear-gradient(135deg, #C9A640, #F7E7A6 50%, #B58C22); }
.card.gbox.real[data-rarity="mythique"] .gb-rating--rarity strong { background: linear-gradient(135deg, #F5B8D2, #FFF0A8 30%, #B8F0D6 55%, #B8D6FF 80%, #DCC2FF); }

/* Tranche : nom de la console en haut (bloc à sa couleur), titre dessous. Couleurs par console :
   --spine-bg, --spine-ink, --spine-logo-bg, --spine-logo-ink. */
.card.gbox.real:not(.gbox--gb) .gbox-spine { flex-direction: column; justify-content: flex-start; align-items: stretch;
  background: var(--spine-bg, #0B0B0E); box-shadow: inset 0 0 0 .9cqw var(--spine-edge, var(--case, #1A1A20)); }
.card.gbox.real:not(.gbox--gb) .gbox-spine span { align-self: center; color: var(--spine-ink, #fff); margin: 0; padding: 3cqw 0 5cqw; }
.card.gbox.real .real-spine-logo { flex: none; display: flex; align-items: center; justify-content: center; margin: .9cqw .9cqw 0; padding: 2.6cqw 0;
  writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; overflow: hidden;
  background: var(--spine-logo-bg, transparent); color: var(--spine-logo-ink, #fff);
  font: 800 3cqw/1 var(--font-body); letter-spacing: .08em; text-transform: uppercase; }
/* Cartons : pas de bandeau de rareté qui fait le tour de la boîte. */
.card.gbox.real.gbox--nes :is(.gbox-spine, .gbox-right)::after { display: none; }

/* Nom de console des bandeaux : texte simple, sans l'étiquette pastel du style classic. */
.card.gbox.real .gb-platform { background: none; padding: 0; border-radius: 0; }

/* ==== Boîtiers DVD =================================================================================== */
/* PS2 : boîtier noir, bandeau noir « PlayStation 2 » à gauche, « PAL » à droite. */
.gbox.real--ps2 { --case: #16161A; --case-dark: #07070A; --case-light: #34343C; --sleeve: #0A0A0D;
  --spine-bg: #0A0A0D; --spine-logo-bg: #1E1E26; }
.card.gbox.real--ps2 .gbox-front { box-shadow: inset 0 0 0 .5cqw var(--case-dark), inset 0 0 5cqw rgba(0, 0, 0, .5); }
.card.gbox.real--ps2 .gb-band { background: linear-gradient(180deg, #1D1D24, #050507); color: #fff; padding: 2.2cqw 3cqw; border-bottom: .35cqw solid #3A3A46; }
.card.gbox.real--ps2 .gb-platform { color: #fff; font: italic 800 4.3cqw var(--font-body); letter-spacing: -.01em; }
.card.gbox.real--ps2 .gb-band::after { content: 'PAL'; margin-left: auto; font: 800 2.4cqw var(--font-body); letter-spacing: .12em; color: #BFC0CC; }

/* PS2 « PAL » plus fidèle (classe .ps2-pal2) : bandeau noir plus haut, logo en lettres larges
   avec le « 2 » détaché, « PAL » encadré, éditeur en bas à droite de l'illustration, tranche noire au logo blanc.
   Les règles ci-dessus restent la version 'pal'. */
.card.gbox.ps2-pal2 .gb-band { align-items: center; gap: 2cqw; padding: 3.3cqw 3.2cqw 3.1cqw; border-bottom: 0;
  background: linear-gradient(180deg, #17171C, #050507 55%, #000); box-shadow: inset 0 -.25cqw 0 rgba(255, 255, 255, .06); }
.card.gbox.ps2-pal2 .gb-band::after { display: none; }
.card.gbox.ps2-pal2 .gb-platform { display: flex; align-items: baseline; gap: 1.1cqw; font: 500 4.9cqw/1 var(--font-body); font-style: normal;
  letter-spacing: .015em; color: #fff; white-space: nowrap; }
.card.gbox.ps2-pal2 .gb-platform b { font-weight: 500; }
.card.gbox.ps2-pal2 .gb-platform i { font-style: normal; font-weight: 700; font-size: 1.22em; letter-spacing: 0; }
.card.gbox.ps2-pal2 .ps2-pal { margin-left: auto; padding: .7cqw 1.1cqw .6cqw; border: .3cqw solid #E8E9EF; border-radius: .3cqw;
  font: 800 2.3cqw/1 var(--font-body); letter-spacing: .12em; color: #E8E9EF; }
/* Éditeur : petit texte blanc en bas à droite de l'illustration (place du logo de l'éditeur sur les vraies boîtes). */
.card.gbox .real-editor { position: absolute; z-index: 2; right: 2.4cqw; bottom: 2.3cqw; max-width: 46%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font: 800 2.3cqw/1.2 var(--font-body); letter-spacing: .06em; text-transform: uppercase; color: #fff;
  text-shadow: 0 0 .8cqw rgba(0, 0, 0, .9), 0 .2cqw .3cqw rgba(0, 0, 0, .8); }
/* Tranche : noire, logo blanc sans bloc de couleur, séparé du titre par un filet. */
.gbox.real--ps2.ps2-pal2 { --spine-bg: #050507; --spine-logo-bg: transparent; }
.card.gbox.ps2-pal2 .real-spine-logo { gap: .9cqw; padding: 3.2cqw 0 3cqw; border-bottom: .3cqw solid rgba(255, 255, 255, .22);
  font: 500 3cqw/1 var(--font-body); letter-spacing: .02em; text-transform: none; }
.card.gbox.ps2-pal2 .real-spine-logo i { font-style: normal; font-weight: 700; font-size: 1.2em; }

/* PS3 : boîtier Blu-ray bleu (en-tête « Blu-ray Disc » moulé dans le plastique), bandeau noir argenté. */
.gbox.real--ps3 { --spine-bg: #0E0E12; --spine-logo-bg: linear-gradient(90deg, #2A2A30, #45454E, #2A2A30); --spine-logo-ink: #E6E8EE; }
.card.gbox.real--ps3 .gbox-front { padding-top: 7.4cqw; }
.card.gbox.real--ps3 .gb-band::before { content: 'Blu-ray Disc'; position: absolute; left: 4.4cqw; right: 2.4cqw; top: 1.6cqw; text-align: center;
  font: italic 800 3.2cqw/1 var(--font-body); letter-spacing: .04em; color: rgba(255, 255, 255, .85); text-shadow: 0 .2cqw 0 rgba(0, 0, 0, .3); }
.card.gbox.real--ps3 .gb-band { background: linear-gradient(180deg, #34343B, #0E0E12 70%); border-bottom: .4cqw solid #9EA3B0; padding: 2.4cqw 3cqw; }
.card.gbox.real--ps3 .gb-platform { color: #E6E8EE; font: 400 3.6cqw var(--font-display); letter-spacing: .22em; text-transform: uppercase; }

/* PS3 « PAL » (classe .ps3-pal), d'après des photos de vraies boîtes européennes : boîtier Blu-ray
   transparent (en-tête dépoli avec « Blu-ray Disc » moulé à droite), bandeau noir « PS3 » en lettres larges (Michroma,
   pas le logo officiel) + « PlayStation Network », filet rouge dessous, éditeur en bas à droite. Les règles ci-dessus
   restent la version 'v1'. */
.gbox.ps3-pal { --case: #D3D8DF; --case-dark: #98A1AD; --case-light: #F6F8FB;
  --spine-bg: #050507; --spine-logo-bg: transparent; --spine-logo-ink: #fff; --spine-edge: #C9CFD7; }
.card.gbox.ps3-pal .gbox-front { padding: 9.6cqw 1.8cqw 2cqw 3.6cqw;
  box-shadow: inset 0 0 0 .4cqw rgba(110, 120, 135, .55), inset 0 0 3cqw rgba(255, 255, 255, .55); }
.card.gbox.ps3-pal .gbox-front::before { opacity: .45; }
/* En-tête du boîtier : plastique dépoli, logo en relief. */
.card.gbox.ps3-pal .ps3-header { position: absolute; z-index: 3; top: 0; left: 3.6cqw; right: 1.8cqw; height: 9.6cqw;
  display: flex; align-items: center; justify-content: flex-end; gap: 1cqw; padding-right: 2.4cqw;
  font: italic 800 2.9cqw/1 var(--font-body); letter-spacing: .02em; color: #A3ABB8;
  text-shadow: 0 .18cqw 0 rgba(255, 255, 255, .95), 0 -.12cqw 0 rgba(70, 80, 95, .35); }
.card.gbox.ps3-pal .ps3-header::before { content: ''; position: absolute; inset: 1.4cqw -1.8cqw 1.2cqw -3.6cqw; z-index: -1;
  background: linear-gradient(180deg, rgba(255, 255, 255, .5), rgba(190, 198, 210, .25) 70%, rgba(150, 160, 175, .3)),
    repeating-linear-gradient(90deg, rgba(255, 255, 255, .06) 0 .3cqw, transparent .3cqw .9cqw); }
.card.gbox.ps3-pal .ps3-header i { width: 3cqw; aspect-ratio: 1; border-radius: 50%;
  border: .55cqw solid #A3ABB8; box-shadow: 0 .18cqw 0 rgba(255, 255, 255, .95), inset 0 0 0 .5cqw rgba(163, 171, 184, .3); }
/* Bandeau noir de la jaquette, filet rouge dessous. */
/* Dégradé horizontal : noir à gauche, gris clair vers la droite (sous « PlayStation Network »), comme les vraies jaquettes. */
.card.gbox.ps3-pal .gb-band { border-radius: 0; padding: 2.5cqw 2.8cqw 2.1cqw; border-bottom: .45cqw solid #C41E2A;
  background: linear-gradient(90deg, #050506 0 38%, #2A2A2F 62%, #6E6F76 84%, #A9AAB0); }
.card.gbox.ps3-pal .gb-band::before { display: none; }
.card.gbox.ps3-pal .gb-platform { font: inherit; letter-spacing: 0; text-transform: none; color: #fff; }
.card.gbox.ps3-pal .ps3-logo { font: 400 6.2cqw/1 'Michroma', var(--font-body); letter-spacing: .04em; color: #fff; }
.card.gbox.ps3-pal .ps3-psn { margin-left: auto; font: 700 2.5cqw/1 var(--font-body); color: #fff; white-space: nowrap;
  text-shadow: 0 .15cqw .5cqw rgba(0, 0, 0, .45); }
.card.gbox.ps3-pal .gb-art { border-radius: 0; }
/* Tranche : noire, « PS3 » blanc en haut. */
.card.gbox.ps3-pal .real-spine-logo { padding: 3cqw 0 2.6cqw; border-bottom: .3cqw solid #C41E2A;
  font: 400 3cqw/1 'Michroma', var(--font-body); letter-spacing: .04em; text-transform: none; }

/* PSP : boîtier UMD transparent, bandeau noir « PSP » argenté. */
.gbox.real--psp { --spine-bg: #0F0F14; --spine-logo-bg: #2A2A32; --spine-edge: var(--case); }
.card.gbox.real--psp .gb-band { background: linear-gradient(180deg, #1E1E26, #07070A); border-bottom: .4cqw solid #8F93A2; padding: 2.6cqw 3cqw; }
.card.gbox.real--psp .gb-platform { color: #E3E5EC; font: 400 6cqw/1 'Anton', var(--font-display); letter-spacing: .16em; }
.card.gbox.real--psp .gb-band::after { content: 'PlayStation Portable'; margin-left: auto; font: 700 2.8cqw var(--font-body); color: #A9ACBA; }

/* GameCube : petit boîtier noir, bandeau noir, logo centré avec son cube indigo. */
.gbox.real--gc { --case: #1E1D22; --case-dark: #0B0A0D; --case-light: #3C3A44; --sleeve: #0A0A0D;
  --spine-bg: #0A0A0D; --spine-logo-bg: #4B44A8; }
.card.gbox.real--gc .gb-band { background: #0A0A0D; justify-content: center; gap: 1.8cqw; padding: 2.2cqw 3cqw; border-bottom: .35cqw solid #4B44A8; }
.card.gbox.real--gc .gb-band::before { content: ''; flex: none; width: 3.6cqw; aspect-ratio: 1; border-radius: .5cqw; transform: rotate(45deg);
  background: linear-gradient(135deg, #8C85E8, #4B44A8 55%, #2E2878); box-shadow: inset 0 0 0 .7cqw #0A0A0D, 0 0 0 .35cqw #8C85E8; }
.card.gbox.real--gc .gb-platform { color: #fff; font: 800 3.6cqw var(--font-body); letter-spacing: .12em; text-transform: uppercase; }
.card.gbox.real--gc .gb-platform::before { content: 'Nintendo '; }

/* Xbox : boîtier noir, bandeau noir, « XBOX » vert lumineux au centre avec sa sphère. */
.gbox.real--xbox { --spine-bg: #0C0E0C; --spine-logo-bg: linear-gradient(90deg, #2E7016, #5CB82C, #2E7016); }
.card.gbox.real--xbox .gb-band { background: radial-gradient(ellipse at 50% 120%, rgba(92, 184, 44, .35), transparent 60%), #070807;
  justify-content: center; gap: 1.8cqw; padding: 2.4cqw 3cqw; border-bottom: .5cqw solid #5CB82C; }
.card.gbox.real--xbox .gb-band::before { content: ''; flex: none; width: 4.4cqw; aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #D8F7B8, #7ED23F 35%, #2E7016 75%); box-shadow: 0 0 1.6cqw rgba(126, 210, 63, .6); }
.card.gbox.real--xbox .gb-platform { color: #9BE060; font: 400 4.6cqw 'Anton', var(--font-display); letter-spacing: .2em; text-transform: uppercase;
  text-shadow: 0 0 1.4cqw rgba(126, 210, 63, .55); }

/* Xbox 360 : boîtier vert, bandeau blanc qui vire au gris, sphère argentée et « XBOX 360 » vert. */
.gbox.real--x360 { --spine-bg: linear-gradient(90deg, #F4F6F2, #FFFFFF 50%, #F4F6F2); --spine-ink: #1D2418;
  --spine-logo-bg: linear-gradient(90deg, #3F8A1E, #5DAE32, #3F8A1E); }
.card.gbox.real--x360 .gb-band { background: linear-gradient(180deg, #FFFFFF, #DDE3D8); gap: 1.6cqw; padding: 2.2cqw 3cqw; border-bottom: .6cqw solid #5DAE32; }
.card.gbox.real--x360 .gb-band::before { content: ''; flex: none; width: 4.4cqw; aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #FFFFFF, #C9CFC4 45%, #7E8779); box-shadow: inset 0 0 0 .5cqw #5DAE32; }
.card.gbox.real--x360 .gb-platform { color: #3F8A1E; font: 800 4cqw var(--font-body); letter-spacing: .06em; text-transform: uppercase; }

/* Wii : boîtier blanc, bandeau blanc, « Wii » gris, filet gris. */
.gbox.real--wii { --spine-bg: #FBFBFC; --spine-ink: #3A3D46; --spine-logo-bg: #E6E7EB; --spine-logo-ink: #8A8F9C; }
.card.gbox.real--wii .gb-band { background: #FFFFFF; padding: 2.2cqw 3cqw; border-bottom: .8cqw solid #C9CBD3; }
.card.gbox.real--wii .gb-platform { color: #8A8F9C; font: 800 5.6cqw/1 var(--font-body); letter-spacing: .01em; }
.card.gbox.real--wii .real-spine-logo { text-transform: none; font-size: 3.6cqw; }

/* Wii « PAL » (classe .wii-pal), d'après des photos de vraies boîtes européennes (Mario Party 8,
   Zelda Twilight Princess, Super Mario Galaxy 2) : boîtier blanc, illustration sur toute la hauteur, encoche blanche
   en haut à droite dont le bord gauche descend en courbe douce, « Wii » gris dedans ; « PAL » + éditeur en bas à droite
   (à la place de « PAL » + logo Nintendo). Tranche blanche, « Wii » gris en haut. Les règles ci-dessus restent la 'v1'. */
.gbox.real--wii.wii-pal { --spine-bg: #FFFFFF; --spine-ink: #2E3038; --spine-logo-bg: transparent; --spine-logo-ink: #9A9CA4; --spine-edge: #E9EAEE; }
/* Cadre blanc du boîtier un peu plus large que sur les autres boîtiers DVD (photos : Spectrobes, Smash Bros). */
.card.gbox.wii-pal .gbox-front { padding: 3cqw 3cqw 3cqw 4.4cqw; }
.card.gbox.wii-pal .gb-art { border-radius: .4cqw; }
/* Zone blanche en haut à droite : une seule longue courbe, sans palier plat, qui part du haut vers le milieu de la
   jaquette et descend jusqu'au bord droit (forme SVG étirée sur le bandeau) ; « Wii » grand, en bas à droite dedans.
   Essais précédents (courbe en S + partie droite plate) : M0 0 C14 0 16 100 34 100 (46 % × 14,5 %),
   M0 0 C30 0 38 100 66 100 (68 % × 12,5 %), M0 0 C16 0 24 92 52 100 H100 (76 % × 11 %). */
/* Mesures relevées sur la vraie jaquette PAL de LEGO Star Wars : The Complete Saga (GameTDB, RLGP64) : bande blanche
   droite de 3,3 % de la hauteur sur toute la largeur ; vague de 55 % à 80 % de la largeur ; partie droite haute de
   13,2 % ; « Wii » centré à 86 % de la largeur, au milieu de la hauteur de la partie droite, large de 18 %.
   (Essais précédents : longue courbe sans bande M0 0 C16 2 26 62 48 82 C62 94 82 99 100 100 (64 % × 15 %) ;
   bande + vague M0 0 H100 V100 H70 C62 100 60 26 51 26 H0 (13,5 %), « Wii » à left 66 %.) */
.card.gbox.wii-pal .gb-band { position: absolute; z-index: 3; top: 3cqw; left: 4.4cqw; right: 3cqw; height: 13.2%; padding: 0;
  border: 0; border-radius: .4cqw .4cqw 0 0; box-shadow: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M0 0 H100 V98.5 H80 C70 98.5 66 25 55 25 H0 Z' fill='%23fff'/%3E%3Cpath d='M0 25 H55 C66 25 70 98.5 80 98.5 H100' fill='none' stroke='%23A9ABB2' stroke-width='1.3' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat; }
/* (Liseré gris entre l'illustration et le blanc, vu sur les vraies jaquettes : second tracé du SVG ci-dessus, épaisseur
   constante quelle que soit la taille grâce à vector-effect.) */
.card.gbox.wii-pal .gb-platform { position: absolute; left: 72%; right: 0; top: 0; bottom: 0; display: flex; align-items: center; justify-content: center;
  color: #8C8E94; font: 800 9.8cqw/.8 var(--font-body); letter-spacing: .02em; }
/* Pied : « PAL » blanc + éditeur dans une pastille ovale cerclée (place du logo Nintendo). */
.card.gbox.wii-pal .wii-editor { display: flex; align-items: center; gap: 1.2cqw; max-width: 62%; overflow: visible; text-shadow: none; letter-spacing: 0; }
.card.gbox.wii-pal .wii-editor b { font: 800 2.6cqw/1 var(--font-body); color: #fff; text-shadow: 0 0 .8cqw rgba(0, 0, 0, .7); }
.card.gbox.wii-pal .wii-editor i { font: 800 2.1cqw/1 var(--font-body); font-style: normal; text-transform: none; color: #3A3D46;
  background: #fff; padding: .7cqw 1.6cqw; border-radius: 99px; box-shadow: inset 0 0 0 .3cqw #9A9CA4;
  min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.card.gbox.wii-pal .real-spine-logo { padding: 3.2cqw 0 2.6cqw; font: 800 4cqw/1 var(--font-body); letter-spacing: .03em; text-transform: none; }

/* Nintendo DS : petit boîtier gris clair, bandeau blanc argenté, « NINTENDO DS » gris. */
.gbox.real--ds { --spine-bg: #F7F7F9; --spine-ink: #3A3D46; --spine-logo-bg: linear-gradient(90deg, #C9CAD2, #E4E5EA, #C9CAD2); --spine-logo-ink: #4A4E5A; }
.card.gbox.real--ds .gb-band { background: linear-gradient(180deg, #FFFFFF, #D8D9E0); padding: 2cqw 3cqw; border-bottom: .5cqw solid #A3A6B0; }
.card.gbox.real--ds .gb-platform { color: #5B5F6C; font: 800 3.8cqw var(--font-body); letter-spacing: .1em; text-transform: uppercase; }

/* ==== Boîtiers CD ==================================================================================== */
/* PS1 (d'après des photos de boîtes européennes fournies par l'utilisateur) : boîtier noir, charnière large
   avec « PlayStation » moulé en gris ; jaquette pleine largeur, carré noir en haut à gauche avec l'étiquette
   blanche « PAL » dessous, grande bande noire en bas avec « PlayStation ». Pastille de rareté en bas à gauche
   de l'illustration, juste au-dessus de la bande (place du logo de l'éditeur). */
.gbox.real--ps1 { --hinge-w: 9cqw; --spine-bg: #0F0F14; --spine-edge: #26262D; --spine-logo-bg: #26252E;
  --back-case: #17171B; }
.card.gbox.real--ps1 :is(.gbox-front, .gbox-back, .gbox-right, .gbox-cap) { background:
    linear-gradient(115deg, rgba(255, 255, 255, .16) 0 6%, transparent 18% 70%, rgba(255, 255, 255, .1) 78%, transparent 86%),
    linear-gradient(180deg, #2C2C33, #18181D 40%, #0E0E12); }
.card.gbox.real--ps1 .gbox-front { grid-template-columns: 1fr; grid-template-rows: 1fr auto; padding: 1.6cqw 1.6cqw 1.6cqw calc(var(--hinge-w) + 1.2cqw);
  box-shadow: inset 0 0 0 .4cqw #050507, inset 0 0 0 1.4cqw rgba(255, 255, 255, .05); }
/* Charnière : plastique noir strié, « PlayStation » moulé à la verticale. */
.card.gbox.real--ps1 .gbox-front::before { content: 'PlayStation'; width: var(--hinge-w); display: flex; align-items: center; justify-content: center;
  writing-mode: vertical-rl; transform: rotate(180deg); font: 600 5.2cqw/1 var(--font-body); letter-spacing: .02em; color: #3E3E47;
  text-shadow: -.15cqw -.15cqw 0 rgba(255, 255, 255, .08), .15cqw .15cqw 0 rgba(0, 0, 0, .6);
  background: linear-gradient(90deg, #121216, #1E1E24 60%, #141418); box-shadow: inset -.4cqw 0 0 #050507; }
/* Fenêtre plus large que haute : le cadrage garde le titre (js/smartcrop.js), quitte à réduire un peu l'image. */
.card.gbox.real--ps1 .gb-art { grid-column: 1; grid-row: 1; border-radius: .6cqw .6cqw 0 0; --art-focus: title; }
.card.gbox.real--ps1 .art-shrunk, .card.gbox.real--ps1 .gb-art.art-shrunk { background: #0B0B0E; }
/* Bande du bas : « PlayStation » en grand, blanc cassé, et le ®. */
.card.gbox.real--ps1 .gb-band { grid-column: 1; grid-row: 2; flex-direction: row; align-items: center; justify-content: center; gap: .6cqw;
  height: 15cqw; padding: 0 3cqw; border-radius: 0 0 .6cqw .6cqw; background: #0B0B0E; }
.card.gbox.real--ps1 .gb-platform { writing-mode: horizontal-tb; transform: none; color: #ECECF0; font: 500 10cqw/1 var(--font-body);
  font-style: normal; letter-spacing: .01em; }
.card.gbox.real--ps1 .gb-band::after { content: '®'; align-self: flex-end; margin-bottom: 3cqw; font: 600 2.6cqw/1 var(--font-body); color: #ECECF0; }
/* Carré noir en haut à gauche (sans le logo officiel : quatre touches de couleur et le nom) + étiquette « PAL ». */
.card.gbox.real.real--ps1 .gb-sticker { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 1cqw;
  position: absolute; z-index: 3; left: calc(var(--hinge-w) + 3.4cqw); top: 3.2cqw; right: auto; width: 15cqw; height: 15cqw; aspect-ratio: auto;
  padding: 0 0 1.6cqw; border: 0; border-radius: 0; transform: none; background: #0B0B0E; box-shadow: 0 0 0 .3cqw rgba(255, 255, 255, .25); font-size: 0; }
.card.gbox.real.real--ps1 .gb-sticker > * { display: none; }
.card.gbox.real.real--ps1 .gb-sticker::before { content: ''; width: 7cqw; height: 6cqw;
  background:
    linear-gradient(#D8403A, #D8403A) 0 0 / 48% 48% no-repeat, linear-gradient(#F2C230, #F2C230) 100% 0 / 48% 48% no-repeat,
    linear-gradient(#3FA34D, #3FA34D) 0 100% / 48% 48% no-repeat, linear-gradient(#3C63C9, #3C63C9) 100% 100% / 48% 48% no-repeat;
  transform: skewX(-12deg); }
.card.gbox.real.real--ps1 .gb-sticker::after { content: 'PlayStation'; font: 600 2.2cqw/1 var(--font-body); color: #fff; }
.card.gbox.real--ps1 .gb-art::before { content: 'PAL'; position: absolute; z-index: 3; left: 2.2cqw; top: 17.4cqw; width: 15cqw; padding: .6cqw 0;
  text-align: center; background: #fff; color: #111; font: 800 2.3cqw/1 var(--font-body); letter-spacing: .06em; box-shadow: inset 0 0 0 .25cqw #111; }

/* Saturn : grand boîtier européen (plus haut que large), plastique fumé, bande noire à gauche « SEGA SATURN »
   écrit à la verticale et anneau de la planète en bas de la bande. */
.card.gbox.real--saturn { aspect-ratio: 142 / 196; }
.gbox.real--saturn { --half-h: 69cqw; --depth: 11cqw; --band-w: 13cqw; --sleeve: #09090C;
  --spine-bg: #09090C; --spine-edge: #2A2A33; --spine-logo-bg: #1E2A5C; --spine-logo-ink: #DDE3F5; }
.card.gbox.real--saturn :is(.gbox-front, .gbox-back, .gbox-right, .gbox-cap) { background:
    linear-gradient(115deg, rgba(255, 255, 255, .22) 0 6%, transparent 18% 70%, rgba(255, 255, 255, .14) 78%, transparent 86%),
    linear-gradient(180deg, #3A3A44, #1E1E24 40%, #111116); }
.card.gbox.real--saturn .gbox-front { box-shadow: inset 0 0 0 .4cqw #000, inset 0 0 0 1.6cqw rgba(255, 255, 255, .06); }
.card.gbox.real--saturn .gb-band { background: var(--sleeve); padding: 3.4cqw 0 3cqw; gap: 0; box-shadow: inset -.6cqw 0 0 #2E5FD9; }
.card.gbox.real--saturn .gb-platform { color: #E9ECF6; font: 400 5.4cqw 'Anton', var(--font-display); letter-spacing: .2em; text-transform: uppercase; }
.card.gbox.real--saturn .gb-platform::before { content: 'Sega '; }
.card.gbox.real--saturn .gb-band::after { content: ''; margin-top: auto; flex: none; width: 8cqw; height: 8cqw; border-radius: 50%;
  background: radial-gradient(circle at 40% 35%, #9DB7F2, #3E62C9 55%, #1E2F7A);
  box-shadow: 0 0 0 .5cqw #09090C, 0 0 0 .9cqw #C8CDDB; transform: rotate(-20deg); }
.card.gbox.real--saturn .gb-art { border-radius: 0 .8cqw .8cqw 0; }
.zoom-stage .card.gbox.real--saturn { --w: min(400px, 74vw, calc((100dvh - 150px) * 142 / 196)); }
.reveal-slot .card.gbox.real--saturn { --w: min(260px, 64vw, calc((100dvh - 360px) * 142 / 196)); }
.style-preview .card.gbox.real--saturn { --w: 130px; }

/* Dreamcast : boîtier CD carré, bandeau bleu en haut avec la spirale et « Dreamcast » en blanc. */
.gbox.real--dc { --sleeve: #1C4DB0; --spine-bg: #F4F6FB; --spine-ink: #1C2A55; --spine-edge: rgba(231, 227, 236, .85);
  --spine-logo-bg: #1C4DB0; --spine-logo-ink: #fff; }
.card.gbox.real--dc .gbox-front { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
.card.gbox.real--dc .gb-band { grid-column: 1; grid-row: 1; flex-direction: row; justify-content: flex-start; gap: 1.8cqw; padding: 2cqw 3cqw;
  border-radius: .8cqw .8cqw 0 0; background: linear-gradient(180deg, #2A60CC, #1A479F); box-shadow: inset 0 -.5cqw 0 #0F3278; }
.card.gbox.real--dc .gb-band::before { width: 6.4cqw; height: 6.4cqw;
  background:
    radial-gradient(circle at 58% 44%, transparent 0 .95cqw, #fff 1cqw 1.5cqw, transparent 1.55cqw),
    radial-gradient(circle at 50% 50%, transparent 0 2.15cqw, #fff 2.2cqw 2.8cqw, transparent 2.85cqw); }
.card.gbox.real--dc .gb-platform { writing-mode: horizontal-tb; transform: none; color: #fff; font: 800 4.6cqw var(--font-body);
  text-transform: none; letter-spacing: .01em; }
.card.gbox.real--dc .gb-art { grid-column: 1; grid-row: 2; border-radius: 0 0 .8cqw .8cqw; }

/* ==== Cartons ======================================================================================== */
/* Petite pastille rouge « Unboxd » (à la place de l'ovale du constructeur), comme sur la Game Boy v2. */
.card.gbox.real:is(.real--snes, .real--n64) .gb-sticker { display: block; position: absolute; z-index: 3; top: 2.6cqw; left: 5.5cqw; right: auto;
  width: auto; height: auto; aspect-ratio: auto; transform: none; padding: .35cqw 1.6cqw .45cqw; border-radius: 99px;
  background: #fff; border: .45cqw solid #D8262E; box-shadow: none; font-size: 0; }
.card.gbox.real:is(.real--snes, .real--n64) .gb-sticker > * { display: none; }
.card.gbox.real:is(.real--snes, .real--n64) .gb-sticker::before { content: 'Unboxd'; font: italic 800 2.6cqw/1 var(--font-body); color: #D8262E; }

/* Super Nintendo : carton gris, illustration cadrée de blanc, bande noire en bas avec les quatre boutons
   de couleur, « SUPER NINTENDO » et « PAL VERSION ». Format portrait gardé (les jaquettes sont en portrait). */
.gbox.real--snes { --board: #D6D5DC; --board-edge: #A9A7B3; --grid: rgba(58, 44, 64, .035); --band-h: 13cqw;
  --spine-bg: linear-gradient(90deg, #CFCED6, #E4E3E9 50%, #CFCED6); --spine-edge: #A9A7B3; --spine-ink: #26252C;
  --spine-logo-bg: #111114; --spine-logo-ink: #D9D8E0; }
.card.gbox.real--snes .gbox-front { box-shadow: inset 0 0 0 .5cqw var(--board-edge), inset 0 0 6cqw rgba(58, 44, 64, .15); }
.card.gbox.real--snes .gb-art { order: 2; margin: 8.6cqw 5.5cqw 3.4cqw; border: .9cqw solid #fff; border-radius: .3cqw;
  box-shadow: 0 0 0 .3cqw #9C9AA7, .5cqw .7cqw 0 rgba(58, 44, 64, .18); }
.card.gbox.real--snes .gb-band { order: 4; height: var(--band-h); padding: 0 5.5cqw; gap: 1.8cqw; background: #0E0E11; border: 0; color: #D9D8E0; }
.card.gbox.real--snes .gb-band::before { content: ''; flex: none; width: 5.6cqw; height: 5.6cqw;
  background:
    radial-gradient(circle, #3C63C9 0 .95cqw, transparent 1.05cqw) 50% 0 / 2.4cqw 2.4cqw no-repeat,
    radial-gradient(circle, #3FA34D 0 .95cqw, transparent 1.05cqw) 0 50% / 2.4cqw 2.4cqw no-repeat,
    radial-gradient(circle, #F2C230 0 .95cqw, transparent 1.05cqw) 100% 50% / 2.4cqw 2.4cqw no-repeat,
    radial-gradient(circle, #D8403A 0 .95cqw, transparent 1.05cqw) 50% 100% / 2.4cqw 2.4cqw no-repeat; }
.card.gbox.real--snes .gb-platform { color: #D9D8E0; font: 400 4.6cqw/1 'Anton', var(--font-display); letter-spacing: .1em; text-transform: uppercase; }
.card.gbox.real--snes .gb-band::after { content: 'PAL VERSION'; margin-left: auto; font: 800 2.2cqw var(--font-body); letter-spacing: .1em; color: #8E8C99; }

/* Nintendo 64 (d'après une photo de boîtes européennes fournie par l'utilisateur) : carton noir au format
   paysage (18 × 13 cm). En haut à gauche, le cube aux quatre couleurs et « NINTENDO 64 » en grand ; illustration
   dans un cadre au centre ; à droite, une colonne de petits pictogrammes (accessoires) ; en bas, « PAL VERSION »
   et la pastille « Unboxd » rouge à droite. La pastille de rareté prend la place du sceau rond, en bas à gauche.
   L'illustration remplit tout le cadre : image paysage étirée, ou jaquette en portrait recadrée en gardant le titre. */
.card.gbox.real--n64 { aspect-ratio: 180 / 130; }
.gbox.real--n64 { --half-h: 36.1cqw; --depth: 20cqw; --spine-bg: #0E0D12; --spine-logo-bg: #1F1E26; }
.card.gbox.real--n64 .gbox-front { display: block; }
.card.gbox.real--n64 .gb-band { position: absolute; left: 3.6cqw; top: 3.4cqw; height: auto; padding: 0; gap: 2.2cqw; background: none; border: 0; color: #fff; }
.card.gbox.real--n64 .gb-band::before { content: ''; flex: none; width: 5.4cqw; aspect-ratio: 1; border-radius: .5cqw; transform: rotate(45deg) skew(-8deg, -8deg);
  background: conic-gradient(#3C63C9 0 25%, #3FA34D 0 50%, #D8403A 0 75%, #F2C230 0); box-shadow: 0 0 0 .4cqw #0B0B0E, 0 0 0 .7cqw #4A4957; margin: 0 .6cqw; }
.card.gbox.real--n64 .gb-platform { color: #fff; font: 400 7cqw/1 'Anton', var(--font-display); letter-spacing: .03em; text-transform: uppercase; }
.card.gbox.real--n64 .gb-art { position: absolute; left: 13cqw; right: 15.5cqw; top: 14cqw; bottom: 11.5cqw; margin: 0;
  border: .5cqw solid #5A5966; border-radius: .3cqw; }
/* Image paysage SteamGridDB (data/wide-covers.json, classe art-wide) : presque le bon format, étirée pour remplir le cadre. */
.card.gbox.real--n64 .gb-art.art-wide img.art-main { object-fit: fill; }
/* Jaquette en portrait (exemplaire d'import japonais, ou jeu sans image paysage) : l'étirer la déformerait (portrait
   3:4 dans un cadre 3:2) : elle est recadrée, en gardant le titre (--art-focus: title, js/smartcrop.js). */
.card.gbox.real--n64 .gb-art:not(.art-wide) { --art-focus: title; }
.gbox.real--n64 { --grid: rgba(255, 255, 255, .018); } /* carton noir presque uni */
.card.gbox.real--n64 .gb-art::after { display: none; } /* pas de lignes d'écran (style NES) */
/* Pastille de rareté dans la marge noire, en bas à gauche (place du sceau rond des vraies boîtes). */
.card.gbox.real--n64 .gb-plate { position: absolute; z-index: 2; left: 1.8cqw; bottom: 2cqw; top: auto; right: auto; width: auto; height: auto;
  padding: 0; background: none; border: 0; display: block; }
.card.gbox.real--n64 .gb-rating--rarity { width: 9.4cqw; }
.card.gbox.real--n64 .gb-rating--rarity strong { font-size: 4.8cqw; padding: 1cqw 0 .7cqw; }
.card.gbox.real--n64 .gb-rating--rarity .pips { gap: .3cqw; padding: .6cqw .2cqw .55cqw; }
.card.gbox.real--n64 .gb-rating--rarity .pips i { width: 1.05cqw; height: 1.05cqw; box-shadow: inset 0 0 0 .25cqw #1A1A20; }
/* « PAL VERSION » sous l'illustration, à gauche. */
.card.gbox.real--n64 .gb-series { display: block; position: absolute; left: 13cqw; bottom: 4.6cqw; padding: 0; font-size: 0; }
.card.gbox.real--n64 .gb-series::before { content: 'PAL VERSION'; font: 800 2cqw/1 var(--font-body); letter-spacing: .12em; color: #C9C8D2; }
/* Pastille rouge « Unboxd » en bas à droite ; au-dessus, la colonne de pictogrammes (manette, accessoires). */
.card.gbox.real.real--n64 .gb-sticker { top: auto; left: auto; right: 2.6cqw; bottom: 3.6cqw; }
.card.gbox.real.real--n64 .gb-sticker::after { content: ''; position: absolute; right: 1.2cqw; bottom: 9cqw; width: 7cqw; height: 26cqw;
  background:
    radial-gradient(circle at 50% 38%, #0E0D12 0 .8cqw, transparent .9cqw) 50% 0 / 5cqw 5cqw no-repeat,
    linear-gradient(#BDBCC6, #BDBCC6) 50% 0 / 5cqw 5cqw no-repeat,
    linear-gradient(#0E0D12, #0E0D12) 50% 8.6cqw / 3cqw .6cqw no-repeat,
    linear-gradient(#BDBCC6, #BDBCC6) 50% 7.4cqw / 5cqw 4cqw no-repeat,
    radial-gradient(ellipse at 50% 60%, #BDBCC6 0 2.2cqw, transparent 2.3cqw) 50% 14cqw / 6cqw 5cqw no-repeat,
    linear-gradient(#BDBCC6, #BDBCC6) 50% 21cqw / 4cqw 4.4cqw no-repeat; border-radius: .4cqw; opacity: .9; }
/* Tranche courte (format paysage) : textes plus petits pour que le titre tienne. */
.card.gbox.real--n64 .gbox-spine span { font-size: 3.6cqw; max-height: 52cqw; padding: 2cqw 0 2.4cqw; }
.card.gbox.real--n64 .real-spine-logo { padding: 1.4cqw 0; font-size: 2.2cqw; }
.zoom-stage .card.gbox.real--n64 { --w: min(660px, 90vw, calc((100dvh - 170px) * 180 / 130)); }
.reveal-slot .card.gbox.real--n64 { --w: min(440px, 88vw, calc((100dvh - 360px) * 180 / 130)); }

/* ==== Game Boy Color et Advance : mise en page Game Boy v2 (classe .gbox--gb ajoutée par gamebox.js) ======= */
/* Color : bande gris bleuté, « GAME BOY » bleu nuit et « COLOR » en lettres de couleur. */
.gbox.gbox--gb.real--gbc { --gb-ink: #262B5E; }
.card.gbox.gbox--gb.real--gbc .gb-band { background: linear-gradient(90deg, #E9EAF1, #CDD0DD 80%, #BEC2D2); box-shadow: inset -.5cqw 0 0 #A9AEC2; }
/* Advance : bande indigo, lettres argentées. */
.gbox.gbox--gb.real--gba { --gb-ink: #EEF0FA; }
.card.gbox.gbox--gb.real--gba .gb-band { background: linear-gradient(90deg, #2F3591, #232873 80%, #1A1E5C); box-shadow: inset -.5cqw 0 0 #12154A; }
.card.gbox.gbox--gb.real--gba .gb-platform--stretch text { stroke: rgba(10, 12, 50, .6); }
.card.gbox.gbox--gb.real--gba .gbox-spine { background: linear-gradient(90deg, #232873, #2F3591 50%, #232873); box-shadow: inset 0 0 0 .5cqw #12154A; }
.card.gbox.gbox--gb.real--gba .gbox-spine span { color: #EEF0FA; }
.card.gbox.gbox--gb.real--gba :is(.gbox-right, .gbox-cap) { background: linear-gradient(90deg, #D6D6DD, #EDEDF1 50%, #D6D6DD); }

/* =====================================================================================================
   Palier 2 (2026-10-06) : 18 nouvelles consoles. Même principe que les boîtes ci-dessus (couleurs et proportions des
   boîtes européennes, nom de console en texte, aucun logo officiel). Familles (js/design.js BOX_FAMILY) :
   boîtier DVD / Blu-ray (ps2) pour les consoles en plastique, boîtier CD (ps1) pour la 3DO, carton (nes) pour les
   ordinateurs et l'Atari 2600. À valider avec l'utilisateur sur test-consoles.html.
   ===================================================================================================== */

/* ---- Formats (largeur / hauteur réelles ; --half-h = 50 × hauteur / largeur, en cqw) ---- */
.card:is(.gbox--ps4, .gbox--ps5, .gbox--xone, .gbox--xsx) { aspect-ratio: 135 / 171; }
.gbox:is(.gbox--ps4, .gbox--ps5, .gbox--xone, .gbox--xsx) { --half-h: 63.3cqw; --depth: 10cqw; }
.card.gbox--switch { aspect-ratio: 105 / 170; }  .gbox--switch { --half-h: 81cqw; --depth: 7.5cqw; }
.card.gbox--n3ds   { aspect-ratio: 125 / 137; }  .gbox--n3ds   { --half-h: 54.8cqw; --depth: 11cqw; }
.card.gbox--vita   { aspect-ratio: 105 / 135; }  .gbox--vita   { --half-h: 64.3cqw; --depth: 9cqw; }
.card.gbox--gg     { aspect-ratio: 112 / 150; }  .gbox--gg     { --half-h: 67cqw; --depth: 14cqw; }
.card.gbox--neogeo { aspect-ratio: 215 / 305; }  .gbox--neogeo { --half-h: 70.9cqw; --depth: 20cqw; }
.card.gbox--mcd    { aspect-ratio: 140 / 200; }  .gbox--mcd    { --half-h: 71.4cqw; --depth: 15cqw; }
.card.gbox--a2600  { aspect-ratio: 140 / 197; }  .gbox--a2600  { --half-h: 70.4cqw; --depth: 24cqw; }
.card:is(.gbox--amiga, .gbox--st, .gbox--c64, .gbox--cpc, .gbox--zx) { aspect-ratio: 220 / 290; }
.gbox:is(.gbox--amiga, .gbox--st, .gbox--c64, .gbox--cpc, .gbox--zx) { --half-h: 65.9cqw; --depth: 20cqw; }
.zoom-stage .card.gbox--switch { --w: min(330px, 70vw, calc((100dvh - 150px) * 105 / 170)); }
.reveal-slot .card.gbox--switch { --w: min(240px, 60vw, calc((100dvh - 360px) * 105 / 170)); }

/* ---- Boîtiers Blu-ray et DVD récents ---- */
/* PS4 : boîtier bleu, bandeau bleu « PS4 » en lettres larges, filet clair dessous. */
.gbox.real--ps4 { --case: #1F4FA8; --case-dark: #12326E; --case-light: #5C86D6; --sleeve: #0B3A8C;
  --spine-bg: linear-gradient(90deg, #0B3A8C, #1450B4 50%, #0B3A8C); --spine-logo-bg: transparent; }
.card.gbox.real--ps4 .gb-band { background: linear-gradient(90deg, #0A2F78, #1556C2 60%, #2B6FD8); padding: 2.6cqw 3cqw; border-bottom: .4cqw solid #9CC0F2; }
.card.gbox.real--ps4 .gb-platform { color: #fff; font: 400 6cqw/1 'Michroma', var(--font-body); letter-spacing: .04em; }
.card.gbox.real--ps4 .gb-band::after { content: 'PlayStation Network'; margin-left: auto; font: 700 2.4cqw var(--font-body); color: #DCE8FB; }
.card.gbox.real--ps4 .real-spine-logo { font: 400 3cqw/1 'Michroma', var(--font-body); border-bottom: .3cqw solid #9CC0F2; }

/* PS5 : boîtier blanc bleuté, bandeau blanc « PS5 » noir, filet gris. */
.gbox.real--ps5 { --case: #E8EDF4; --case-dark: #AEB8C8; --case-light: #FFFFFF; --sleeve: #FFFFFF;
  --spine-bg: #FFFFFF; --spine-ink: #15171C; --spine-logo-bg: transparent; --spine-logo-ink: #15171C; --spine-edge: #DCE2EB; }
.card.gbox.real--ps5 .gb-band { background: #FFFFFF; padding: 2.6cqw 3cqw; border-bottom: .35cqw solid #C9D0DB; }
.card.gbox.real--ps5 .gb-platform { color: #111318; font: 400 6cqw/1 'Michroma', var(--font-body); letter-spacing: .04em; }
.card.gbox.real--ps5 .real-spine-logo { font: 400 3cqw/1 'Michroma', var(--font-body); border-bottom: .3cqw solid #C9D0DB; }

/* Xbox One : boîtier vert, bandeau vert dégradé, sphère blanche et « XBOX ONE » blanc. */
.gbox.real--xone { --case: #1E8A1E; --case-dark: #0F5A10; --case-light: #4CB84A; --sleeve: #107C10;
  --spine-bg: linear-gradient(90deg, #0E6A0E, #128A12 50%, #0E6A0E); --spine-logo-bg: transparent; }
.card.gbox.real--xone .gb-band { background: linear-gradient(180deg, #19A019, #0D6E0D); gap: 1.6cqw; padding: 2.4cqw 3cqw; border-bottom: .4cqw solid #0A4F0A; }
.card.gbox.real--xone .gb-band::before { content: ''; flex: none; width: 4.4cqw; aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #FFFFFF, #E2E6E2 55%, #A9B3A9); }
.card.gbox.real--xone .gb-platform { color: #fff; font: 800 4cqw var(--font-body); letter-spacing: .1em; text-transform: uppercase; }

/* Xbox Series : boîtier vert, bandeau noir « XBOX SERIES X|S » blanc, filet vert. */
.gbox.real--xsx { --case: #1E8A1E; --case-dark: #0F5A10; --case-light: #4CB84A; --sleeve: #050505;
  --spine-bg: #050505; --spine-logo-bg: transparent; }
.card.gbox.real--xsx .gb-band { background: #050505; gap: 1.6cqw; padding: 2.6cqw 3cqw; border-bottom: .6cqw solid #1DB21D; }
.card.gbox.real--xsx .gb-band::before { content: ''; flex: none; width: 4cqw; aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #FFFFFF, #CFD3CF 55%, #8C948C); }
.card.gbox.real--xsx .gb-platform { color: #fff; font: 800 3.6cqw var(--font-body); letter-spacing: .14em; text-transform: uppercase; }
.card.gbox.real--xsx .real-spine-logo { border-bottom: .3cqw solid #1DB21D; }

/* Wii U : boîtier bleu, bandeau bleu ciel « Wii U » blanc. */
.gbox.real--wiiu { --case: #1A9AD0; --case-dark: #0E6A93; --case-light: #63C3EA; --sleeve: #0E8CC4;
  --spine-bg: #FFFFFF; --spine-ink: #1B3A4E; --spine-logo-bg: #0E8CC4; --spine-logo-ink: #fff; --spine-edge: #1A9AD0; }
.card.gbox.real--wiiu .gb-band { background: linear-gradient(180deg, #2BB0E6, #0E8CC4); padding: 2.2cqw 3cqw; border-bottom: .5cqw solid #0A6A97; }
.card.gbox.real--wiiu .gb-platform { color: #fff; font: 800 5.6cqw/1 var(--font-body); letter-spacing: .01em; }
.card.gbox.real--wiiu .real-spine-logo { text-transform: none; font-size: 3.6cqw; }

/* Switch : petit boîtier rouge, bandeau rouge « NINTENDO SWITCH » et ses deux manettes stylisées. */
.gbox.real--switch { --case: #E2212C; --case-dark: #A3141D; --case-light: #F2646B; --sleeve: #E60012;
  --spine-bg: #E60012; --spine-logo-bg: transparent; --spine-edge: #B3101A; }
.card.gbox.real--switch .gbox-front { padding: 2.2cqw 2.2cqw 2.2cqw 3.6cqw; }
.card.gbox.real--switch .gb-band { background: #E60012; gap: 1.8cqw; padding: 3cqw 3cqw; border-radius: .8cqw .8cqw 0 0; }
.card.gbox.real--switch .gb-band::before { content: ''; flex: none; width: 6.4cqw; height: 4.4cqw;
  background: linear-gradient(#fff, #fff) 0 0 / 46% 100% no-repeat, linear-gradient(#fff, #fff) 100% 0 / 46% 100% no-repeat;
  border-radius: 1.4cqw; -webkit-mask: radial-gradient(circle at 22% 32%, transparent .55cqw, #000 .6cqw); mask: radial-gradient(circle at 22% 32%, transparent .55cqw, #000 .6cqw); }
.card.gbox.real--switch .gb-platform { color: #fff; font: 800 4.6cqw var(--font-body); letter-spacing: .06em; text-transform: uppercase; }
.card.gbox.real--switch .gb-platform::before { content: 'Nintendo '; }
.card.gbox.real--switch .gb-art { border-radius: 0 0 .8cqw .8cqw; }

/* Nintendo 3DS : petit boîtier blanc, bandeau blanc, « NINTENDO 3DS » gris, « 3D » rouge. */
.gbox.real--n3ds { --case: #EEEFF2; --case-dark: #B9BCC6; --case-light: #FFFFFF; --sleeve: #FFFFFF;
  --spine-bg: #FFFFFF; --spine-ink: #2E3038; --spine-logo-bg: #E9EAEE; --spine-logo-ink: #D2232A; --spine-edge: #E1E2E8; }
.card.gbox.real--n3ds .gb-band { background: linear-gradient(180deg, #FFFFFF, #E6E7EC); padding: 2cqw 3cqw; border-bottom: .5cqw solid #D2232A; }
.card.gbox.real--n3ds .gb-platform { color: #6A6E7A; font: 800 3.8cqw var(--font-body); letter-spacing: .08em; text-transform: uppercase; }
.card.gbox.real--n3ds .gb-band::after { content: ''; margin-left: auto; flex: none; width: 3cqw; aspect-ratio: 1; border-radius: 50%; background: #D2232A; }

/* PS Vita : petit boîtier bleu transparent, bandeau noir « PS Vita » blanc, filet bleu. */
.gbox.real--vita { --case: #5A86C8; --case-dark: #2F558F; --case-light: #A6C2EA; --sleeve: #07070A;
  --spine-bg: #07070A; --spine-logo-bg: transparent; --spine-edge: #5A86C8; }
.card.gbox.real--vita .gb-band { background: linear-gradient(180deg, #23232B, #050507); padding: 2.4cqw 3cqw; border-bottom: .45cqw solid #3D7BD6; }
.card.gbox.real--vita .gb-platform { color: #fff; font: 600 5cqw/1 var(--font-body); letter-spacing: .02em; }

/* ---- Rétro en plastique ---- */
/* Game Gear : boîtier noir, bandeau noir « GAME GEAR » blanc, trois filets de couleur. */
.gbox.real--gg { --case: #1A1A1E; --case-dark: #08080A; --case-light: #3A3A42; --sleeve: #0A0A0D;
  --spine-bg: #0A0A0D; --spine-logo-bg: #1E2A5C; }
.card.gbox.real--gg .gb-band { background: #0A0A0D; padding: 2.6cqw 3cqw; border-bottom: 1.2cqw solid transparent;
  border-image: linear-gradient(90deg, #2E5FD9 0 34%, #E6E8EE 34% 66%, #D73A3A 66%) 1; }
.card.gbox.real--gg .gb-platform { color: #fff; font: 400 5.6cqw/1 'Anton', var(--font-display); letter-spacing: .12em; text-transform: uppercase; }

/* Neo Geo : grand boîtier noir épais, bandeau noir, « NEO·GEO » en lettres larges dégradées. */
.gbox.real--neogeo { --case: #141416; --case-dark: #050506; --case-light: #2E2E33; --sleeve: #050506;
  --spine-bg: #050506; --spine-logo-bg: linear-gradient(90deg, #8E1A1A, #D23A2A, #8E1A1A); }
.card.gbox.real--neogeo .gb-band { background: #050506; justify-content: center; padding: 2.8cqw 3cqw; border-bottom: .5cqw solid #C9A640; }
.card.gbox.real--neogeo .gb-platform { font: 400 7cqw/1 'Anton', var(--font-display); letter-spacing: .14em; text-transform: uppercase;
  background: linear-gradient(180deg, #F2F4FA 20%, #8FA8D8 55%, #F2F4FA 80%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.card.gbox.real--neogeo .gb-band::after { content: 'Max 330 Mega'; position: absolute; right: 3.4cqw; font: 800 2.2cqw var(--font-body); letter-spacing: .1em;
  text-transform: uppercase; color: #C9A640; }
.card.gbox.real--neogeo .gb-band { position: relative; }

/* Mega-CD : grand boîtier noir, bandeau noir « MEGA-CD » argenté, filet rouge. */
.gbox.real--mcd { --case: #18181C; --case-dark: #07070A; --case-light: #36363E; --sleeve: #0A0A0D;
  --spine-bg: #0A0A0D; --spine-logo-bg: #26252E; }
.card.gbox.real--mcd .gb-band { background: linear-gradient(180deg, #2A2A31, #0A0A0D 70%); padding: 2.6cqw 3cqw; border-bottom: .7cqw solid #D7282F; }
.card.gbox.real--mcd .gb-platform { color: #E3E5EC; font: 400 6cqw/1 'Anton', var(--font-display); letter-spacing: .12em; text-transform: uppercase; }
.card.gbox.real--mcd .gb-band::after { content: 'Pour Mega Drive'; margin-left: auto; font: 700 2.4cqw var(--font-body); color: #A9ACBA; }

/* 3DO : boîtier CD noir, bande à gauche « 3DO » et ses trois touches de couleur. */
.gbox.real--3do { --sleeve: #0B0B0E; --spine-bg: #0F0F14; --spine-logo-bg: #26252E; }
.card.gbox.real--3do .gb-band { background: #0B0B0E; padding: 3.4cqw 0 3cqw; gap: 2cqw; box-shadow: inset -.6cqw 0 0 #D9A23A; }
.card.gbox.real--3do .gb-platform { color: #F2F2F5; font: 400 6cqw 'Anton', var(--font-display); letter-spacing: .12em; }
.card.gbox.real--3do .gb-band::after { content: ''; margin-top: auto; flex: none; width: 6cqw; height: 6cqw;
  background:
    radial-gradient(circle, #D8403A 0 1.1cqw, transparent 1.2cqw) 0 0 / 3cqw 3cqw no-repeat,
    radial-gradient(circle, #F2C230 0 1.1cqw, transparent 1.2cqw) 100% 0 / 3cqw 3cqw no-repeat,
    radial-gradient(circle, #3C63C9 0 1.1cqw, transparent 1.2cqw) 50% 100% / 3cqw 3cqw no-repeat; }
.card.gbox.real--3do .gb-art { border-radius: 0 .8cqw .8cqw 0; }

/* ---- Cartons ---- */
/* Mise en page commune : bandeau en haut (nom de la machine), illustration pleine largeur dessous. */
.card.gbox.real:is(.real--a2600, .real--amiga, .real--st, .real--c64, .real--cpc, .real--zx) .gb-band {
  order: 0; height: auto; padding: 3cqw 5cqw; gap: 2cqw; border: 0; box-shadow: none; }
.card.gbox.real:is(.real--a2600, .real--amiga, .real--st, .real--c64, .real--cpc, .real--zx) .gb-art {
  order: 2; margin: 0 4cqw 4cqw; border: .5cqw solid rgba(0, 0, 0, .55); border-radius: .3cqw; }
.card.gbox.real:is(.real--a2600, .real--amiga, .real--st, .real--c64, .real--cpc, .real--zx) .gb-art::after { display: none; } /* pas de lignes d'écran */
.card.gbox.real:is(.real--a2600, .real--amiga, .real--st, .real--c64, .real--cpc, .real--zx) .gb-platform { color: #fff; }
.card.gbox.real:is(.real--a2600, .real--amiga, .real--st, .real--c64, .real--cpc, .real--zx) .gbox-spine span { font-style: normal; margin-bottom: 0; }

/* Atari 2600 : carton noir, bandeau argenté « ATARI 2600 » et filets rouges, « Game Program » à droite. */
.gbox.real--a2600 { --board: #0F0F12; --board-edge: #2A2A31; --spine-logo-bg: linear-gradient(90deg, #8A8C96, #D6D8E0, #8A8C96); --spine-logo-ink: #111; }
.card.gbox.real--a2600 .gb-band { margin-top: 3cqw; background: linear-gradient(180deg, #E4E6EC, #9A9DA8); border-top: .9cqw solid #C8282E; border-bottom: .9cqw solid #C8282E; }
.card.gbox.real.real--a2600 .gb-platform { color: #15161B; font: 400 6cqw/1 'Anton', var(--font-display); letter-spacing: .1em; text-transform: uppercase; }
.card.gbox.real--a2600 .gb-band::after { content: 'Game Program'; margin-left: auto; font: italic 800 2.6cqw var(--font-body); color: #2A2A31; }

/* Amiga : carton blanc, bandeau blanc à damier rouge et blanc, « AMIGA » rouge. */
.gbox.real--amiga { --board: #F2F0EC; --board-edge: #C9C5BD; --grid: rgba(58, 44, 64, .035); --spine-ink: #2A2530; --spine-logo-bg: #D7282F; }
.card.gbox.real--amiga .gb-band { background: #F2F0EC; }
.card.gbox.real--amiga .gb-band::before { content: ''; flex: none; width: 5cqw; height: 5cqw; border-radius: 50%;
  background: conic-gradient(#D7282F 0 25%, #fff 0 50%, #D7282F 0 75%, #fff 0) 0 0 / 2.5cqw 2.5cqw; box-shadow: 0 0 0 .3cqw #D7282F; }
.card.gbox.real.real--amiga .gb-platform { color: #D7282F; font: 400 6.4cqw/1 'Anton', var(--font-display); letter-spacing: .1em; text-transform: uppercase; }
.card.gbox.real--amiga .gb-band::after { content: 'Commodore'; margin-left: auto; font: 800 2.6cqw var(--font-body); color: #6A6470; }
.card.gbox.real--amiga .gb-art { border-color: #C9C5BD; }

/* Atari ST : carton noir, « ATARI ST » blanc, filet rouge en dessous. */
.gbox.real--st { --board: #121216; --board-edge: #2B2A31; --spine-logo-bg: #C8282E; }
.card.gbox.real--st .gb-band { background: none; border-bottom: .8cqw solid #C8282E; margin: 0 4cqw 3cqw; padding: 3cqw 1cqw 2cqw; }
.card.gbox.real--st .gb-platform { font: 400 6.4cqw/1 'Anton', var(--font-display); letter-spacing: .12em; text-transform: uppercase; }
.card.gbox.real--st .gb-band::after { content: '520 · 1040'; margin-left: auto; font: 800 2.6cqw var(--font-body); color: #9A99A6; }

/* Commodore 64 : carton bleu nuit, « COMMODORE 64 » blanc et cinq filets de couleur. */
.gbox.real--c64 { --board: #1B2350; --board-edge: #2E3A7A; --grid: rgba(255, 255, 255, .04); --spine-logo-bg: #3D4DB0; }
.card.gbox.real--c64 .gb-band { background: none; }
.card.gbox.real--c64 .gb-platform { font: 400 5.8cqw/1 'Anton', var(--font-display); letter-spacing: .08em; text-transform: uppercase; }
.card.gbox.real--c64 .gb-band::after { content: ''; margin-left: auto; flex: none; width: 14cqw; height: 5cqw;
  background: repeating-linear-gradient(180deg, transparent 0 .2cqw, #D7282F .2cqw 1cqw, transparent 1cqw 1.2cqw) 0 0 / 100% 20% no-repeat,
    linear-gradient(#E67E22, #E67E22) 0 25% / 100% 16% no-repeat, linear-gradient(#F2C230, #F2C230) 0 50% / 100% 16% no-repeat,
    linear-gradient(#3FA34D, #3FA34D) 0 75% / 100% 16% no-repeat, linear-gradient(#3C9BD6, #3C9BD6) 0 100% / 100% 16% no-repeat; }

/* Amstrad CPC : carton noir, trois carrés rouge, vert, bleu et « AMSTRAD CPC » blanc. */
.gbox.real--cpc { --board: #101013; --board-edge: #2A2A31; --spine-logo-bg: #1E1E26; }
.card.gbox.real--cpc .gb-band { background: none; }
.card.gbox.real--cpc .gb-band::before { content: ''; flex: none; width: 9cqw; height: 2.6cqw;
  background: linear-gradient(90deg, #D7282F 0 30%, transparent 30% 35%, #3FA34D 35% 65%, transparent 65% 70%, #3C63C9 70%); }
.card.gbox.real--cpc .gb-platform { font: 400 6cqw/1 'Anton', var(--font-display); letter-spacing: .1em; text-transform: uppercase; }
.card.gbox.real--cpc .gb-band::after { content: '464 · 6128'; margin-left: auto; font: 800 2.6cqw var(--font-body); color: #9A99A6; }

/* ZX Spectrum : carton noir, « ZX SPECTRUM » blanc, bande arc-en-ciel en diagonale dans le coin. */
.gbox.real--zx { --board: #0C0C0F; --board-edge: #26262D; --spine-logo-bg: linear-gradient(90deg, #D7282F, #F2C230, #3FA34D, #3CB4D6); --spine-logo-ink: #0C0C0F; }
.card.gbox.real--zx .gb-band { background: none; position: relative; overflow: hidden; }
.card.gbox.real--zx .gb-platform { font: 400 6cqw/1 'Anton', var(--font-display); letter-spacing: .08em; text-transform: uppercase; }
.card.gbox.real--zx .gb-band::after { content: ''; position: absolute; right: -2cqw; top: 0; bottom: 0; width: 18cqw; transform: skewX(-35deg);
  background: linear-gradient(90deg, #D7282F 0 25%, #F2C230 25% 50%, #3FA34D 50% 75%, #3CB4D6 75%); }
