
.gs-collection-game-root,
.gs-collection-game-root * {
  box-sizing: border-box;
}

body.gs-collection-game-page {
  background:
    radial-gradient(circle at 20% 10%, rgba(226,53,69,.08), transparent 26%),
    radial-gradient(circle at 80% 0%, rgba(36,111,185,.06), transparent 25%),
    #060a0d;
}

body.gs-collection-game-page .entry-header,
body.gs-collection-game-page .page-header,
body.gs-collection-game-page .page-title,
body.gs-collection-game-page .entry-title,
body.gs-collection-game-page .entry-meta,
body.gs-collection-game-page .breadcrumbs,
body.gs-collection-game-page .breadcrumb,
body.gs-collection-game-page .yoast-breadcrumb,
body.gs-collection-game-page nav[aria-label="breadcrumb"] {
  display: none !important;
}

body.gs-collection-game-page .site-main,
body.gs-collection-game-page .content-area,
body.gs-collection-game-page .entry-content,
body.gs-collection-game-page article,
body.gs-collection-game-page .wp-block-post-content {
  max-width: 100% !important;
  width: 100% !important;
}

.gs-collection-game-root {
  --gs-bg: #060a0d;
  --gs-panel: rgba(9, 16, 21, .92);
  --gs-panel-2: rgba(13, 21, 28, .96);
  --gs-line: rgba(127, 170, 212, .12);
  --gs-line-strong: rgba(215, 169, 78, .26);
  --gs-text: #eef4fa;
  --gs-muted: #92a3b5;
  --gs-red: #d84a4a;
  --gs-red-dark: #7a1d26;
  --gs-gold: #f2c76b;
  --gs-cyan: #53d5ff;
  --gs-shadow: 0 26px 80px rgba(0, 0, 0, .44);
  color: var(--gs-text);
  margin: 12px auto 24px;
  width: min(1420px, 100%);
  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.gs-game-loader {
  min-height: 420px;
  display: grid;
  place-items: center;
  text-align: center;
  gap: 14px;
  background: linear-gradient(180deg, rgba(7, 11, 15, .96), rgba(5, 9, 12, .98));
  border: 1px solid var(--gs-line);
  border-radius: 28px;
  padding: 36px 18px;
  box-shadow: var(--gs-shadow);
}

.gs-game-loader__logo {
  font-size: clamp(22px, 4vw, 34px);
  font-weight: 900;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.gs-game-loader__logo span { color: var(--gs-red); }
.gs-game-loader__bar {
  width: min(280px, 75vw);
  height: 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .06);
  overflow: hidden;
  border: 1px solid var(--gs-line);
}
.gs-game-loader__bar i {
  display: block;
  width: 40%;
  height: 100%;
  background: linear-gradient(90deg, var(--gs-red), var(--gs-gold));
  animation: gsLoader 1.2s ease-in-out infinite alternate;
}
@keyframes gsLoader { from { transform: translateX(-20%);} to { transform: translateX(120%);} }

.gs-game-shell {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(circle at top, rgba(83, 213, 255, .04), transparent 22%),
    radial-gradient(circle at 75% 0%, rgba(232, 74, 74, .05), transparent 22%),
    linear-gradient(180deg, rgba(5, 9, 12, .98), rgba(3, 6, 9, 1));
  border: 1px solid rgba(255, 255, 255, .07);
  border-radius: 28px;
  box-shadow: var(--gs-shadow);
}
.gs-game-shell::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(255,255,255,.02), transparent 10%),
    linear-gradient(90deg, transparent, rgba(255,255,255,.02), transparent);
}

.gs-game-topbar {
  display: grid;
  grid-template-columns: minmax(220px, 1.6fr) repeat(4, minmax(110px, .75fr)) repeat(4, minmax(105px, .68fr));
  gap: 0;
  border-bottom: 1px solid rgba(255,255,255,.06);
  background: linear-gradient(180deg, rgba(8,13,18,.96), rgba(5,8,11,.98));
}
.gs-brand,
.gs-stat,
.gs-icon-btn {
  min-height: 78px;
  padding: 14px 16px;
  border-right: 1px solid rgba(255,255,255,.06);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
}
.gs-brand {
  position: relative;
  background: linear-gradient(135deg, rgba(17, 23, 31, .95), rgba(8, 12, 17, .92));
}
.gs-brand b {
  display: block;
  font-size: clamp(17px, 2vw, 27px);
  line-height: 1;
  letter-spacing: .05em;
  text-transform: uppercase;
  font-weight: 900;
}
.gs-brand b span { color: var(--gs-red); }
.gs-brand small,
.gs-stat small {
  color: var(--gs-muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .1em;
}
.gs-stat strong {
  font-size: clamp(20px, 2vw, 30px);
  font-weight: 900;
  color: #fff;
  line-height: 1;
}
.gs-stat:nth-child(3) strong { color: var(--gs-gold); }
.gs-stat:nth-child(4) strong { color: var(--gs-cyan); }
.gs-stat:nth-child(5) strong { color: #bb86ff; }
.gs-icon-btn {
  appearance: none;
  border: 0;
  cursor: pointer;
  background: transparent;
  color: #dbe8f5;
  font-weight: 800;
  text-align: left;
  transition: background .2s ease, color .2s ease;
}
.gs-icon-btn:hover { background: rgba(255,255,255,.04); }
.gs-icon-btn[disabled] {
  opacity: .55;
  cursor: not-allowed;
  color: #6f8091;
}

.gs-tabs {
  display: flex;
  gap: 10px;
  padding: 16px 18px 0;
  flex-wrap: wrap;
}
.gs-tabs button {
  appearance: none;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(14,22,29,.92), rgba(7,11,15,.92));
  color: #c6d1dc;
  min-height: 46px;
  padding: 0 18px;
  border-radius: 16px;
  cursor: pointer;
  font-weight: 800;
  font-size: 15px;
  transition: all .2s ease;
}
.gs-tabs button:hover { transform: translateY(-1px); color: #fff; }
.gs-tabs button.active {
  color: #fff;
  border-color: rgba(232,74,74,.48);
  background: linear-gradient(180deg, rgba(108,24,32,.65), rgba(48,12,18,.75));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.06), 0 10px 22px rgba(232,74,74,.12);
}

.gs-content-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 290px;
  gap: 18px;
  padding: 18px;
}
.gs-room {
  position: relative;
  min-height: 660px;
  border-radius: 24px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.08);
  background: #05080b;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.02), 0 20px 50px rgba(0,0,0,.34);
  grid-column: 1;
  grid-row: 1 / span 2;
}
.gs-room-bg,
.gs-room-shade,
.gs-room-vignette,
.gs-room-content { position: absolute; inset: 0; }
.gs-room-world {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 1;
  transform-origin: 50% 50%;
  will-change: transform;
  touch-action: none;
}
.gs-room-bg {
  background-size: 100% 100%;
  background-position: center center;
  background-color: #0d0d12;
  image-rendering: pixelated;
  transform: none;
}
.gs-room-bedroom .gs-room-bg { background-image: none; }
.gs-room-bedroom .gs-room-bg-night { background-image: url("../img/room-bedroom-pixel-night.webp"); opacity: 0; transition: opacity .24s linear; will-change: opacity; }
.gs-room-bedroom .gs-room-bg-evening { background-image: url("../img/room-bedroom-pixel-evening.webp"); opacity: 1; transition: opacity .24s linear; will-change: opacity; }
.gs-room-bedroom .gs-room-bg-day { background-image: url("../img/room-bedroom-pixel-day.webp"); opacity: 0; transition: opacity .24s linear; will-change: opacity; }
.gs-room-bedroom.is-window-scene-day .gs-room-bg-day { opacity: 1; }
.gs-room-bedroom.is-window-scene-day .gs-room-bg-evening,
.gs-room-bedroom.is-window-scene-day .gs-room-bg-night { opacity: 0; }
.gs-room-bedroom.is-window-scene-evening .gs-room-bg-day,
.gs-room-bedroom.is-window-scene-evening .gs-room-bg-night { opacity: 0; }
.gs-room-bedroom.is-window-scene-evening .gs-room-bg-evening { opacity: 1; }
.gs-room-bedroom.is-window-scene-night .gs-room-bg-day,
.gs-room-bedroom.is-window-scene-night .gs-room-bg-evening { opacity: 0; }
.gs-room-bedroom.is-window-scene-night .gs-room-bg-night { opacity: 1; }
.gs-room-studio .gs-room-bg { background-image: url("../img/room-studio-pixel.webp"); }
.gs-room-shade {
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(3,7,10,.42), rgba(3,7,10,.08) 24%, rgba(3,7,10,.10) 76%, rgba(3,7,10,.48)),
    linear-gradient(90deg, rgba(3,7,10,.36), transparent 20%, transparent 80%, rgba(3,7,10,.28));
}
.gs-room-vignette {
  box-shadow: inset 0 0 140px rgba(0,0,0,.45);
  pointer-events: none;
}
/* Cycle jour / nuit : teinte légère au-dessus de la pièce, sans toucher aux sprites. */
.gs-room-time-tint { position:absolute; inset:0; z-index:2; pointer-events:none; mix-blend-mode:soft-light; opacity:.16; transition:background .45s ease, opacity .45s ease; }
.gs-room.is-day-cycle-morning .gs-room-time-tint { background:linear-gradient(180deg, rgba(255,216,139,.38), rgba(255,178,96,.10)); opacity:.15; }
.gs-room.is-day-cycle-day .gs-room-time-tint { background:linear-gradient(180deg, rgba(255,255,225,.10), rgba(130,205,255,.06)); opacity:.08; }
.gs-room.is-day-cycle-evening .gs-room-time-tint { background:linear-gradient(180deg, rgba(255,132,84,.28), rgba(118,39,63,.10)); opacity:.20; }
.gs-room.is-day-cycle-night .gs-room-time-tint { background:linear-gradient(180deg, rgba(47,79,170,.40), rgba(13,25,68,.25)); opacity:.28; }
.gs-room-content {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 16px;
}
.gs-room-titlebar {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}
.gs-room-arrange-btn {
  flex: 1 1 180px;
  align-self: stretch;
  min-width: 120px;
  min-height: 56px;
  padding: 8px 14px;
  border: 1px solid rgba(219, 67, 87, .62);
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(139, 24, 43, .88), rgba(72, 14, 27, .94));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 8px 22px rgba(0,0,0,.24);
  color: #fff4e5;
  font: inherit;
  text-align: center;
  cursor: pointer;
  touch-action: manipulation;
}
.gs-room-arrange-btn span,
.gs-room-arrange-btn strong { display: block; }
.gs-room-arrange-btn span { font-size: 11px; line-height: 1.05; color: rgba(255,244,229,.78); }
.gs-room-arrange-btn strong { margin-top: 2px; font-size: 15px; line-height: 1.05; letter-spacing: .01em; }
.gs-room-arrange-btn:active { transform: translateY(1px); }
.gs-room-arrange-btn:focus-visible { outline: 2px solid #f0b86b; outline-offset: 2px; }
.gs-room-chip,
.gs-room-mini-score {
  backdrop-filter: blur(12px);
  background: rgba(7, 12, 17, .82);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 16px;
  padding: 12px 14px;
  box-shadow: 0 10px 30px rgba(0,0,0,.25);
}
.gs-room-chip strong,
.gs-room-mini-score strong { display: block; font-size: 20px; line-height: 1.1; }
.gs-room-chip small,
.gs-room-mini-score small { color: var(--gs-muted); }
.gs-room-mini-score { text-align: right; }
.gs-day-cycle-hud {
  min-width:124px; display:flex; align-items:center; justify-content:flex-end; gap:8px;
  padding:9px 11px; border:1px solid rgba(255,255,255,.11); border-radius:14px;
  background:rgba(7,12,17,.78); box-shadow:0 10px 28px rgba(0,0,0,.28); backdrop-filter:blur(12px);
  color:#f3f6fb; text-align:right;
}
.gs-day-cycle-icon { font-size:21px; filter:drop-shadow(0 2px 5px rgba(0,0,0,.35)); }
.gs-day-cycle-hud small { display:block; font-style:normal; font-size:10px; line-height:1.25; color:rgba(223,232,244,.72); white-space:nowrap; }
.gs-day-cycle-hud strong { display:block; font-size:17px; line-height:1.05; letter-spacing:.04em; }
.gs-day-cycle-night { border-color:rgba(126,161,255,.34); }
.gs-day-cycle-evening { border-color:rgba(255,164,111,.34); }
.gs-room-bottom {
  display: grid;
  grid-template-columns: minmax(240px, 1.1fr) minmax(220px, .9fr);
  gap: 14px;
  align-items: end;
}
.gs-lot-hotspots {
  position: relative;
  min-height: 240px;
}
.gs-room-hotspot {
  position: absolute;
  appearance: none;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(255,255,255,.05);
  color: #fff6d9;
  border-radius: 14px;
  width: 108px;
  height: 112px;
  font-weight: 900;
  letter-spacing: .08em;
  cursor: pointer;
  display: grid;
  place-items: center;
  text-transform: uppercase;
  backdrop-filter: blur(2px);
  box-shadow: 0 10px 28px rgba(0,0,0,.24), inset 0 0 0 1px rgba(255,255,255,.04);
}
.gs-room-hotspot span { display:block; text-align:center; line-height: 1.15; }
.gs-room-hotspot::after {
  content: "Chercher";
  position: absolute;
  left: 50%; bottom: 8px;
  transform: translateX(-50%);
  font-size: 10px;
  color: rgba(255,255,255,.72);
  letter-spacing: .1em;
}
.gs-room-hotspot:hover { transform: translateY(-2px); }
.gs-room-hotspot.is-pulse { box-shadow: 0 0 0 0 rgba(255,210,96,.44), 0 10px 28px rgba(0,0,0,.28); animation: gsPulse 1.8s infinite; }
@keyframes gsPulse {
  0% { box-shadow: 0 0 0 0 rgba(255,210,96,.40), 0 10px 28px rgba(0,0,0,.28); }
  80% { box-shadow: 0 0 0 18px rgba(255,210,96,0), 0 10px 28px rgba(0,0,0,.28); }
  100% { box-shadow: 0 0 0 0 rgba(255,210,96,0), 0 10px 28px rgba(0,0,0,.28); }
}
.gs-box-1 { left: 17%; bottom: 28%; transform: rotate(-5deg); }
.gs-box-2 { left: 40%; bottom: 11%; transform: rotate(3deg); }
.gs-box-3 { left: 62%; bottom: 17%; transform: rotate(-4deg); }

.gs-room-collection-panel {
  padding: 14px;
  border-radius: 18px;
  background: rgba(6, 11, 15, .78);
  border: 1px solid rgba(255,255,255,.08);
  backdrop-filter: blur(14px);
}
.gs-room-collection-panel h4 {
  margin: 0 0 8px;
  font-size: 14px;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: #fff;
}
.gs-room-collection-panel p {
  margin: 0 0 10px;
  color: var(--gs-muted);
  font-size: 12px;
}
.gs-mini-items {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 8px;
}
.gs-mini-item {
  min-height: 58px;
  border-radius: 12px;
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.08);
  padding: 8px;
  display: grid;
  align-content: start;
  gap: 4px;
}
.gs-mini-item i {
  width: 28px;
  height: 28px;
  display: block;
  border-radius: 8px;
  background: linear-gradient(180deg, #30576b, #1d2f40);
  border: 1px solid rgba(255,255,255,.12);
}
.gs-mini-item small {
  display: block;
  font-size: 10px;
  line-height: 1.25;
  color: #d7e1eb;
}
.gs-mini-item.is-anomaly { box-shadow: 0 0 0 1px rgba(232,74,74,.48), 0 0 18px rgba(232,74,74,.16); }
.gs-mini-item.empty { opacity: .5; }
.gs-mini-item.empty i { background: rgba(255,255,255,.05); border-style: dashed; }

.gs-side {
  display: grid;
  gap: 14px;
}
.gs-side-left { grid-column: 2; grid-row: 1; }
.gs-side-right { grid-column: 2; grid-row: 2; }
.gs-panel {
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 20px;
  padding: 16px;
  background: linear-gradient(180deg, rgba(10,16,22,.95), rgba(7,11,15,.92));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.02);
}
.gs-panel h3 { margin: 0 0 10px; font-size: 13px; letter-spacing: .08em; text-transform: uppercase; color: var(--gs-gold); }
.gs-panel p { margin: 0 0 8px; }
.gs-panel small, .gs-panel em { color: var(--gs-muted); font-style: normal; display: block; }
.gs-danger { color: #ff8181 !important; margin-top: 8px; }
.gs-progress { height: 10px; border-radius: 999px; background: rgba(255,255,255,.07); overflow: hidden; border: 1px solid rgba(255,255,255,.05); margin: 10px 0 8px; }
.gs-progress i { display: block; height: 100%; background: linear-gradient(90deg, var(--gs-red), var(--gs-gold)); }
.gs-rival-line { display:flex; gap:10px; align-items:center; }
.gs-rival-line .gs-npc { flex: 0 0 58px; width:58px; height:58px; }
.gs-skill { display:grid; grid-template-columns: 1fr 84px 28px; gap: 8px; align-items:center; margin: 10px 0; }
.gs-skill span, .gs-skill em { font-size: 12px; color: var(--gs-muted); }
.gs-skill i { display:block; height: 8px; border-radius: 999px; overflow:hidden; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.05); }
.gs-skill b { display:block; height:100%; background: linear-gradient(90deg, var(--gs-gold), #f1ae31); }
.gs-small-btn {
  width: 100%;
  appearance:none; border:1px solid rgba(255,255,255,.08); cursor:pointer;
  background: linear-gradient(180deg, rgba(21,31,40,.9), rgba(10,15,21,.92));
  color: #fff; font-weight: 800; padding: 12px 14px; border-radius: 14px; text-align:left;
}
.gs-small-btn + .gs-small-btn { margin-top: 10px; }
.gs-small-btn.ghost { color: var(--gs-muted); }

.gs-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  padding: 0 18px 18px;
}
.gs-actions button {
  appearance: none;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 20px;
  min-height: 100px;
  padding: 16px;
  text-align: left;
  color: #fff;
  cursor: pointer;
  background: linear-gradient(180deg, rgba(12,19,25,.95), rgba(7,12,16,.92));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.02);
}
.gs-actions button:hover { border-color: var(--gs-line-strong); transform: translateY(-1px); }
.gs-actions strong { display:block; font-size: 17px; margin-bottom: 6px; }
.gs-actions small { color: var(--gs-muted); display:block; font-size: 13px; line-height: 1.35; }
.gs-actions button[data-action="search-lot"] { border-color: rgba(242,199,107,.55); }

.gs-log {
  margin: 0 18px 18px;
  padding: 18px;
  border-radius: 20px;
  background: linear-gradient(180deg, rgba(7,11,15,.98), rgba(4,7,10,.98));
  border: 1px solid rgba(255,255,255,.08);
}
.gs-log h3 { margin: 0 0 12px; font-size: 14px; letter-spacing: .08em; text-transform: uppercase; }
.gs-log p { margin: 10px 0 0; color: var(--gs-muted); }
.gs-log p:first-of-type { color: #dfe8f0; }

.gs-lot-view {
  display:grid;
  grid-template-columns: minmax(0, 1fr) 228px;
  gap: 12px;
  padding: 16px;
}
.gs-lot-main,
.gs-lot-actions,
.gs-empty,
.gs-card-list,
.gs-profile-view,
.gs-archives-locked {
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 22px;
  background: linear-gradient(180deg, rgba(10,16,22,.94), rgba(6,11,15,.92));
  padding: 18px;
}
.gs-lot-head { display:flex; align-items:center; gap:14px; margin-bottom: 12px; }
.gs-lot-head .gs-npc { width:74px; height:74px; flex:0 0 74px; }
.gs-kicker { color: var(--gs-gold); font-size: 11px; text-transform: uppercase; letter-spacing: .1em; }
.gs-lot-head h2, .gs-card-list h2, .gs-empty h2, .gs-profile-view h2, .gs-archives-locked h2 { margin: 6px 0 4px; }
.gs-lot-head p, .gs-empty p, .gs-profile-view p, .gs-archives-locked p { color: var(--gs-muted); }
.gs-lot-price {
  display:flex; align-items: baseline; flex-wrap:wrap; gap: 10px; margin-bottom: 12px;
  padding: 11px 12px; border-radius: 14px; border:1px solid rgba(255,255,255,.08); background: rgba(0,0,0,.18);
}
.gs-lot-price strong { color: var(--gs-gold); font-size: 24px; }
.gs-lot-items { display:grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 8px; }
.gs-lot-actions {
  display:grid;
  gap: 10px;
  align-content:start;
}
.gs-lot-action-group {
  display:grid;
  gap: 8px;
}
.gs-lot-action-group--tools {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.gs-lot-action-group--negos {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.gs-lot-action-group--final {
  grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr);
}
.gs-lot-actions button,
.gs-empty button,
.gs-contest-card button,
.gs-event-choices button {
  appearance:none; border:1px solid rgba(255,255,255,.08); cursor:pointer;
  background: linear-gradient(180deg, rgba(15,24,31,.92), rgba(8,13,18,.92));
  color: #fff; border-radius: 12px; padding: 10px 12px; font-weight: 800; font-size: 13px; line-height: 1.2; text-align:center;
}
.gs-lot-actions button {
  display:flex;
  align-items:center;
  justify-content:center;
  min-height: 42px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.03);
}
.gs-lot-actions .primary { background: linear-gradient(180deg, rgba(216,74,74,.94), rgba(117,27,36,.94)); border-color: rgba(255,255,255,.12); }
.gs-lot-actions .ghost { color: var(--gs-muted); }

.gs-lot-action-notice {
  padding: 9px 10px;
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 12px;
  background: rgba(255,255,255,.055);
  color: #dce8f0;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.35;
  animation: gsLotActionNoticeIn .18s ease-out;
}
.gs-lot-action-notice.is-success { border-color: rgba(96, 193, 126, .42); background: rgba(48, 121, 73, .16); color: #bdf2c9; }
.gs-lot-action-notice.is-warning { border-color: rgba(239, 182, 84, .42); background: rgba(133, 90, 25, .16); color: #ffdf9b; }
.gs-lot-action-notice.is-danger { border-color: rgba(225, 96, 96, .46); background: rgba(126, 36, 36, .18); color: #ffc1c1; }
@keyframes gsLotActionNoticeIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }
.gs-item-card {
  display:flex; gap: 10px; align-items:center; padding:10px; border-radius: 14px;
  border:1px solid rgba(255,255,255,.08); background: rgba(255,255,255,.03); min-height:72px;
}
.gs-item-card.is-suspect { border-color: rgba(242,199,107,.28); }
.gs-item-card.is-anomaly { border-color: rgba(232,74,74,.48); box-shadow: 0 0 18px rgba(232,74,74,.12); }
.gs-item-visual { width: 46px; height:46px; border-radius: 12px; background:#18232d; border:1px solid rgba(255,255,255,.1); display:grid; place-items:center; flex:0 0 46px; }
.gs-item-visual span { display:block; width:26px; height:32px; border-radius:6px; background: linear-gradient(180deg, #467191, #233648); border:2px solid #0d1115; }
.gs-item-disc .gs-item-visual span { width:32px; height:32px; border-radius:50%; background: radial-gradient(circle,#d6dce2 0 18%,#5f7688 19% 40%,#1b252c 41%); }
.gs-item-manual .gs-item-visual span { width:28px; height:34px; border-radius:3px; background: linear-gradient(90deg,#c58d2b,#493016); }
.gs-item-mem .gs-item-visual span { width:28px; height:24px; border-radius:4px; background: linear-gradient(180deg,#232323,#49515a); }
.gs-item-pad .gs-item-visual span { width:34px; height:20px; border-radius:13px; background: linear-gradient(180deg,#44515c,#1b2026); }
.gs-item-cable .gs-item-visual span { width:32px; height:8px; border-radius:999px; background:#1a1a1a; box-shadow: 0 8px 0 #30363d; }
.gs-item-box .gs-item-visual span { width:28px; height:34px; border-radius:4px; background: linear-gradient(135deg,#7e2e2e,#d47c2c); }
.gs-item-proto .gs-item-visual span { background: linear-gradient(180deg,#141414,#757575); box-shadow:0 0 14px rgba(232,50,68,.5); }
.gs-item-info strong { display:block; font-size:13px; line-height: 1.2; }
.gs-item-info small, .gs-item-info em { display:block; font-size:11px; color: var(--gs-muted); margin-top: 2px; font-style: normal; line-height: 1.2; }
.gs-item-info em { color: var(--gs-gold); }

.gs-card-list h2, .gs-profile-view h2 { margin-top: 0; }


.gs-contest-card { display:flex; justify-content: space-between; align-items:center; gap: 14px; border: 1px solid rgba(255,255,255,.08); border-radius: 18px; background: rgba(255,255,255,.03); padding: 14px; margin-top: 12px; }
.gs-contest-card p { margin: 4px 0 0; color: var(--gs-muted); }
.gs-empty { text-align:center; }
.gs-empty button { text-align:center; }
.gs-profile-grid { display:grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px; margin: 16px 0; }
.gs-profile-grid div { padding: 14px; border-radius:16px; border:1px solid rgba(255,255,255,.08); background: rgba(255,255,255,.03); }
.gs-profile-grid strong { display:block; font-size: 24px; color:#fff; }
.gs-profile-grid small { color:var(--gs-muted); }
.gs-profile-view ul { padding-left: 20px; }
.gs-profile-view li { margin: 8px 0; color: var(--gs-muted); }
.gs-archives-locked {
  min-height: 460px;
  display:grid;
  place-items:center;
  text-align:center;
  position:relative;
  overflow:hidden;
}
.gs-archives-locked::before {
  content:""; position:absolute; inset:0;
  background: radial-gradient(circle at 50% 30%, rgba(216,74,74,.18), transparent 32%);
}
.gs-archive-door {
  width: 120px; height: 170px; border-radius: 58px 58px 10px 10px;
  background: linear-gradient(180deg,#221716,#090707);
  border: 4px solid #654239; box-shadow: 0 0 30px rgba(216,74,74,.1);
  position:relative; z-index:1;
}
.gs-archives-locked.is-open .gs-archive-door { box-shadow: 0 0 46px rgba(216,74,74,.42); }
.gs-archives-locked h2, .gs-archives-locked p { position:relative; z-index:1; max-width: 640px; }

.gs-event-modal {
  position: fixed; inset: 0; z-index: 99999; background: rgba(0,0,0,.72); display:grid; place-items:center; padding: 18px;
}
.gs-event-card {
  width: min(780px, 96vw);
  display:grid; grid-template-columns: 200px 1fr; overflow:hidden;
  border-radius: 24px; border: 1px solid rgba(216,74,74,.34);
  background: linear-gradient(180deg, rgba(14,22,29,.98), rgba(8,13,18,.98)); box-shadow: 0 30px 90px rgba(0,0,0,.6);
}
.gs-event-npc {
  padding: 18px; display:flex; flex-direction:column; gap:12px; align-items:center; justify-content:center; text-align:center;
  background: radial-gradient(circle at 50% 25%, rgba(216,74,74,.18), transparent 45%), rgba(0,0,0,.22);
}
.gs-event-npc .gs-npc { width: 116px; height: 116px; }
.gs-event-content { padding: 22px; }
.gs-event-content h3 { margin: 6px 0 10px; font-size: 25px; }
.gs-event-content p { color: var(--gs-muted); }
.gs-event-content blockquote {
  margin: 14px 0; padding: 14px 16px; border-left: 3px solid var(--gs-red); background: rgba(216,74,74,.08); border-radius: 0 12px 12px 0; font-weight: 700;
}
.gs-event-choices { display:grid; gap: 10px; margin-top: 16px; }
.gs-event-choices button { width:100%; }

.gs-npc {
  position:relative; display:block; width:64px; height:64px; border-radius: 16px;
  background: linear-gradient(180deg,#26313a,#11171c); border:1px solid rgba(255,255,255,.12);
  overflow:hidden; box-shadow: inset 0 0 24px rgba(255,255,255,.03);
}
.gs-npc-head { position:absolute; left:50%; top:10px; width:34px; height:34px; transform:translateX(-50%); border-radius:50%; background:#d59b6c; }
.gs-npc-head i { position:absolute; left:2px; right:2px; top:-4px; height:14px; border-radius:15px 15px 6px 6px; background:#3a302d; }
.gs-npc-head b { position:absolute; left:6px; top:15px; width:22px; height:5px; border-radius:5px; border:2px solid #111; background:transparent; }
.gs-npc-head span { position:absolute; left:9px; bottom:3px; width:16px; height:7px; border-radius:0 0 8px 8px; background:#5c4037; }
.gs-npc-body { position:absolute; left:17px; bottom:4px; width:30px; height:28px; border-radius:10px 10px 4px 4px; background:#78313b; }
.gs-npc-grandma .gs-npc-head i { background:#d9d3c6; }
.gs-npc-grandma .gs-npc-body { background:#516f58; }
.gs-npc-scalper .gs-npc-head i { background:#111; }
.gs-npc-scalper .gs-npc-head b { background:#111; }
.gs-npc-scalper .gs-npc-body { background:#1a1a1a; }
.gs-npc-pixel .gs-npc-head i { background:#da3b3b; }
.gs-npc-pixel .gs-npc-body { background:#246eb9; }
.gs-npc-terminal .gs-npc-head { width:42px; height:32px; border-radius:4px; background:#111; border:4px solid #484848; }
.gs-npc-terminal .gs-npc-head:after { content:"ERR"; position:absolute; inset:4px; color:var(--gs-red); font-size:9px; display:grid; place-items:center; text-shadow:0 0 8px var(--gs-red); }
.gs-npc-terminal .gs-npc-head i, .gs-npc-terminal .gs-npc-head b, .gs-npc-terminal .gs-npc-head span { display:none; }
.gs-npc-terminal .gs-npc-body { background:#222; }
.gs-npc-ghost { opacity:.86; filter: drop-shadow(0 0 14px rgba(232,50,68,.45)); }
.gs-npc-ghost .gs-npc-head, .gs-npc-ghost .gs-npc-body { background:#27212d; }








/* V0.2.2 — Brocante */
.gs-brocante-view {
  padding: 18px;
  display: grid;
  gap: 18px;
}
.gs-brocante-hero {
  min-height: 190px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 24px;
  padding: 22px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  overflow: hidden;
  position: relative;
  background:
    radial-gradient(circle at 12% 20%, rgba(242,199,107,.14), transparent 22%),
    radial-gradient(circle at 90% 0%, rgba(216,74,74,.13), transparent 24%),
    linear-gradient(135deg, rgba(13,21,28,.96), rgba(6,10,14,.96));
}
.gs-brocante-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  opacity: .18;
  background:
    linear-gradient(90deg, transparent 0 8%, rgba(255,255,255,.08) 8% 9%, transparent 9% 18%),
    linear-gradient(180deg, rgba(255,255,255,.04), transparent 40%);
  pointer-events: none;
}
.gs-brocante-hero h2 {
  position: relative;
  margin: 8px 0 8px;
  font-size: clamp(28px, 5vw, 48px);
  letter-spacing: -.04em;
}
.gs-brocante-hero p {
  position: relative;
  color: var(--gs-muted);
  max-width: 720px;
  margin: 0;
}
.gs-brocante-sign {
  position: relative;
  flex: 0 0 150px;
  min-height: 112px;
  border-radius: 20px;
  display: grid;
  place-items: center;
  text-align: center;
  color: #fff;
  font-weight: 1000;
  letter-spacing: .08em;
  background: linear-gradient(135deg, rgba(216,74,74,.92), rgba(85,20,28,.95));
  border: 1px solid rgba(255,255,255,.15);
  box-shadow: 0 20px 50px rgba(0,0,0,.32);
  transform: rotate(2deg);
}
.gs-brocante-sign span {
  color: #ffd67a;
  font-size: 12px;
}
.gs-stands-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 14px;
}
.gs-stand-card {
  appearance: none;
  cursor: pointer;
  min-height: 210px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(15,24,31,.96), rgba(7,12,16,.95));
  color: #fff;
  text-align: left;
  padding: 14px;
  position: relative;
  overflow: hidden;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.02), 0 14px 34px rgba(0,0,0,.22);
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.gs-stand-card:hover {
  transform: translateY(-3px);
  border-color: rgba(242,199,107,.38);
  box-shadow: 0 20px 48px rgba(0,0,0,.28);
}
.gs-stand-card::before {
  content: "";
  position: absolute;
  left: 12px;
  right: 12px;
  top: 58px;
  height: 76px;
  border-radius: 12px 12px 4px 4px;
  background:
    linear-gradient(90deg, rgba(124,85,47,.9), rgba(183,128,66,.9)),
    linear-gradient(180deg, rgba(255,255,255,.12), transparent);
  box-shadow:
    0 44px 0 rgba(70,48,32,.86),
    0 78px 0 rgba(35,25,20,.85);
}
.gs-stand-card::after {
  content: "";
  position: absolute;
  left: 26px;
  right: 26px;
  top: 86px;
  height: 34px;
  background:
    linear-gradient(90deg, rgba(36,45,54,.96) 0 24%, transparent 24% 30%, rgba(44,55,65,.96) 30% 54%, transparent 54% 60%, rgba(36,45,54,.96) 60% 84%, transparent 84%);
  border-radius: 6px;
  opacity: .95;
}
.gs-stand-awning {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 44px;
  background: repeating-linear-gradient(90deg, rgba(216,74,74,.92) 0 24px, rgba(245,214,151,.88) 24px 48px);
  border-bottom: 1px solid rgba(255,255,255,.12);
}
.gs-stand-card strong,
.gs-stand-card small,
.gs-stand-card em {
  position: relative;
  z-index: 1;
  display: block;
}
.gs-stand-card strong {
  margin-top: 128px;
  font-size: 16px;
  line-height: 1.15;
}
.gs-stand-card small {
  color: var(--gs-muted);
  margin-top: 7px;
  line-height: 1.25;
}
.gs-stand-card em {
  color: var(--gs-gold);
  font-style: normal;
  font-size: 12px;
  margin-top: 10px;
}
.gs-stand-geek .gs-stand-awning {
  background: repeating-linear-gradient(90deg, rgba(65,145,184,.92) 0 24px, rgba(18,42,56,.95) 24px 48px);
}
.gs-stand-scalper .gs-stand-awning {
  background: repeating-linear-gradient(90deg, rgba(25,25,25,.95) 0 24px, rgba(216,74,74,.9) 24px 48px);
}
.gs-stand-rush .gs-stand-awning {
  background: repeating-linear-gradient(90deg, rgba(242,199,107,.92) 0 24px, rgba(108,61,29,.94) 24px 48px);
}
.gs-stand-ghost {
  border-color: rgba(216,74,74,.22);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.02), 0 0 28px rgba(216,74,74,.08);
}
.gs-stand-ghost .gs-stand-awning {
  background: repeating-linear-gradient(90deg, rgba(67,36,92,.94) 0 24px, rgba(15,19,28,.95) 24px 48px);
}
.gs-seller-line {
  margin-top: 6px !important;
  color: #d6e0ea !important;
  opacity: .9;
}





/* V0.2.4 — personnage vivant */
.gs-life-character {
  position: absolute;
  z-index: 8;
  width: 76px;
  height: 112px;
  pointer-events: none;
  filter: drop-shadow(0 14px 18px rgba(0,0,0,.35));
  transition: left .9s ease, right .9s ease, top .9s ease, bottom .9s ease, transform .9s ease;
}
.gs-life-body {
  position: absolute;
  left: 16px;
  top: 16px;
  width: 44px;
  height: 80px;
  animation: gsLifeBreathe 2.8s ease-in-out infinite;
  transform-origin: 50% 82%;
}
.gs-life-shadow {
  position: absolute;
  left: 10px;
  bottom: 2px;
  width: 58px;
  height: 18px;
  border-radius: 50%;
  background: rgba(0,0,0,.34);
  filter: blur(2px);
}
.gs-life-head {
  position: absolute;
  left: 8px;
  top: 0;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: linear-gradient(180deg, #d7a172, #b77956);
  border: 2px solid rgba(20,16,14,.9);
}
.gs-life-head i {
  position: absolute;
  left: 4px;
  right: 4px;
  top: -3px;
  height: 12px;
  border-radius: 12px 12px 5px 5px;
  background: #251f23;
}
.gs-life-head b {
  position: absolute;
  left: 8px;
  top: 14px;
  width: 14px;
  height: 4px;
  border-radius: 99px;
  background: #111;
  box-shadow: 0 0 0 1px rgba(255,255,255,.12);
}
.gs-life-torso {
  position: absolute;
  left: 7px;
  top: 29px;
  width: 31px;
  height: 36px;
  border-radius: 12px 12px 7px 7px;
  background: linear-gradient(180deg, #b52f3b, #501821);
  border: 2px solid rgba(15,12,16,.92);
}
.gs-life-arm,
.gs-life-leg {
  position: absolute;
  display: block;
  background: #242d35;
  border: 2px solid rgba(15,12,16,.9);
}
.gs-life-arm {
  top: 33px;
  width: 12px;
  height: 34px;
  border-radius: 10px;
  transform-origin: 50% 8%;
}
.gs-life-arm.left { left: -1px; transform: rotate(15deg); }
.gs-life-arm.right { right: -1px; transform: rotate(-15deg); }
.gs-life-leg {
  top: 62px;
  width: 13px;
  height: 32px;
  border-radius: 8px;
  transform-origin: 50% 5%;
}
.gs-life-leg.left { left: 8px; }
.gs-life-leg.right { right: 8px; }
.gs-life-bubble {
  position: absolute;
  left: 50%;
  bottom: 100%;
  transform: translateX(-50%) translateY(8px);
  min-width: 132px;
  max-width: 180px;
  padding: 8px 10px;
  border-radius: 12px;
  background: rgba(7, 12, 17, .86);
  border: 1px solid rgba(255,255,255,.12);
  color: #e9f2fb;
  font-size: 11px;
  font-weight: 800;
  text-align: center;
  opacity: 0;
  transition: opacity .2s ease, transform .2s ease;
  backdrop-filter: blur(10px);
}
.gs-life-character:hover .gs-life-bubble,
.gs-life-checking .gs-life-bubble,
.gs-life-negotiating .gs-life-bubble,
.gs-life-celebrating .gs-life-bubble,
.gs-life-worried .gs-life-bubble {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.gs-life-place-desk {
  right: 28%;
  bottom: 27%;
  transform: scale(.92);
}
.gs-life-place-shelf {
  right: 13%;
  bottom: 36%;
  transform: scale(.82);
}
.gs-life-place-center {
  left: 45%;
  bottom: 26%;
  transform: scale(.94);
}
.gs-life-place-market {
  left: 50%;
  bottom: 10%;
  transform: translateX(-50%) scale(.82);
}
.gs-life-checking .gs-life-arm.right { animation: gsTapDesk .7s ease-in-out infinite; }
.gs-life-sorting .gs-life-arm.left,
.gs-life-looking .gs-life-arm.left { animation: gsReachShelf 1.1s ease-in-out infinite; }
.gs-life-coffee .gs-life-arm.right { animation: gsSipCoffee 2s ease-in-out infinite; }
.gs-life-phone .gs-life-arm.right { transform: rotate(-55deg); }
.gs-life-brocante .gs-life-body { animation: gsWalk .55s ease-in-out infinite; }
.gs-life-brocante .gs-life-leg.left { animation: gsLegLeft .55s ease-in-out infinite; }
.gs-life-brocante .gs-life-leg.right { animation: gsLegRight .55s ease-in-out infinite; }
.gs-life-brocante .gs-life-arm.left { animation: gsArmLeft .55s ease-in-out infinite; }
.gs-life-brocante .gs-life-arm.right { animation: gsArmRight .55s ease-in-out infinite; }
.gs-life-negotiating .gs-life-arm.right { animation: gsNegotiate 1.3s ease-in-out infinite; }
.gs-life-celebrating .gs-life-arm.left,
.gs-life-celebrating .gs-life-arm.right { animation: gsCelebrate .8s ease-in-out infinite alternate; }
.gs-life-worried .gs-life-body { animation: gsWorried .18s linear infinite; }
.mood-worried .gs-life-head b { background: #ffdd76; }
.mood-happy .gs-life-head b { height: 6px; border-radius: 0 0 999px 999px; }
.mood-curious .gs-life-head b { width: 18px; left: 6px; }

@keyframes gsLifeBreathe {
  0%, 100% { transform: translateY(0) scaleY(1); }
  50% { transform: translateY(1px) scaleY(.985); }
}
@keyframes gsTapDesk {
  0%, 100% { transform: rotate(-25deg); }
  50% { transform: rotate(-58deg) translateY(4px); }
}
@keyframes gsReachShelf {
  0%, 100% { transform: rotate(8deg); }
  50% { transform: rotate(-45deg) translateY(-4px); }
}
@keyframes gsSipCoffee {
  0%, 100% { transform: rotate(-12deg); }
  45%, 60% { transform: rotate(-72deg) translateY(-6px); }
}
@keyframes gsWalk {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}
@keyframes gsLegLeft {
  0%, 100% { transform: rotate(18deg); }
  50% { transform: rotate(-18deg); }
}
@keyframes gsLegRight {
  0%, 100% { transform: rotate(-18deg); }
  50% { transform: rotate(18deg); }
}
@keyframes gsArmLeft {
  0%, 100% { transform: rotate(-18deg); }
  50% { transform: rotate(25deg); }
}
@keyframes gsArmRight {
  0%, 100% { transform: rotate(20deg); }
  50% { transform: rotate(-22deg); }
}
@keyframes gsNegotiate {
  0%, 100% { transform: rotate(-8deg); }
  50% { transform: rotate(-45deg) translateY(-3px); }
}
@keyframes gsCelebrate {
  from { transform: rotate(-90deg) translateY(-6px); }
  to { transform: rotate(-120deg) translateY(-8px); }
}
@keyframes gsWorried {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(1px); }
}
.gs-brocante-hero .gs-market-runner {
  position: absolute;
  right: 190px;
  bottom: 18px;
  width: 120px;
  height: 130px;
}
.gs-brocante-hero .gs-market-runner .gs-life-character {
  left: 20px;
  bottom: 0;
}




/* =====================================================
   GS COLLECTION MENU — V0.2.4
   Écran d'accueil animé — Gaming Secrets Archive
   ===================================================== */

.gs-menu-screen {
  position: relative;
  min-height: 100dvh;
  min-height: 680px;
  width: 100%;
  background: radial-gradient(ellipse at 50% 80%, rgba(180,28,28,.18), transparent 52%),
              radial-gradient(ellipse at 20% 10%, rgba(100,20,20,.12), transparent 38%),
              linear-gradient(180deg, #050508 0%, #08030a 40%, #0a0005 100%);
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: 0;
  border-radius: 28px;
  border: 1px solid rgba(255,255,255,.05);
  box-shadow: 0 40px 100px rgba(0,0,0,.7);
  transition: opacity .52s ease, transform .52s ease;
}
.gs-menu-screen.gs-menu-out {
  opacity: 0;
  transform: scale(.97);
  pointer-events: none;
}

/* -- Bookshelves background -- */
.gs-menu-shelf {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 140px;
  pointer-events: none;
  z-index: 0;
}
.gs-menu-shelf-l { left: 0; }
.gs-menu-shelf-r { right: 0; transform: scaleX(-1); }
.gs-menu-shelf::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(
      0deg,
      transparent 0 36px,
      rgba(52,32,18,.92) 36px 40px
    ),
    linear-gradient(90deg, rgba(20,12,8,.98), rgba(28,16,10,.95));
}
/* Book spines on shelves */
.gs-menu-shelf::after {
  content: "";
  position: absolute;
  inset: 8px 8px 8px 8px;
  background:
    repeating-linear-gradient(90deg,
      rgba(180,40,40,.7) 0 14px,
      rgba(20,10,6,.9) 14px 18px,
      rgba(90,60,20,.65) 18px 36px,
      rgba(20,10,6,.9) 36px 40px,
      rgba(40,30,60,.7) 40px 58px,
      rgba(20,10,6,.9) 58px 62px,
      rgba(80,55,25,.65) 62px 82px,
      rgba(20,10,6,.9) 82px 86px,
      rgba(160,35,35,.6) 86px 100px,
      rgba(20,10,6,.9) 100px 104px,
      rgba(45,30,60,.7) 104px 124px,
      rgba(20,10,6,.9) 124px 128px,
      rgba(75,50,20,.65) 128px 140px
    );
  opacity: .9;
}
/* Shelf fade to center */
.gs-menu-shelf-l { mask-image: linear-gradient(90deg, rgba(0,0,0,.9) 0%, transparent 100%); }
.gs-menu-shelf-r { mask-image: linear-gradient(90deg, rgba(0,0,0,.9) 0%, transparent 100%); }

/* -- Cork board (top center) -- */
.gs-menu-board {
  position: absolute;
  top: -10px;
  left: 50%;
  transform: translateX(-50%);
  width: 420px;
  height: 240px;
  background: linear-gradient(180deg, rgba(85,52,28,.55), rgba(65,38,18,.45));
  border: 1px solid rgba(120,75,35,.3);
  border-radius: 0 0 14px 14px;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
}
.gs-menu-board::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 30% 40%, rgba(255,200,100,.06), transparent 40%),
              radial-gradient(circle at 70% 60%, rgba(220,60,60,.08), transparent 40%),
              repeating-linear-gradient(45deg, transparent, transparent 18px, rgba(255,255,255,.015) 18px, rgba(255,255,255,.015) 19px);
}
/* Pinned paper snippets on board */
.gs-menu-board::after {
  content: "STRATÉGIES\A STUCESSECRETS";
  position: absolute;
  white-space: pre;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .15em;
  color: rgba(240,220,180,.4);
  top: 28px;
  right: 36px;
  line-height: 2.2;
  text-transform: uppercase;
}

/* -- Red glow below title -- */
.gs-menu-glow {
  position: absolute;
  left: 50%;
  bottom: 20%;
  transform: translateX(-50%);
  width: 500px;
  height: 300px;
  background: radial-gradient(ellipse, rgba(200,30,30,.22) 0%, transparent 65%);
  pointer-events: none;
  z-index: 1;
}

/* -- Edge vignette -- */
.gs-menu-vignette {
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 50% 50%, transparent 40%, rgba(0,0,0,.72) 100%);
  pointer-events: none;
  z-index: 1;
}

/* -- Floating embers -- */
.gs-menu-embers {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
}
.gs-menu-embers span {
  position: absolute;
  bottom: -10px;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: radial-gradient(circle, #ff6444 0%, #e53535 50%, transparent 100%);
  box-shadow: 0 0 6px 2px rgba(229,53,53,.5);
  animation: gsMenuEmber linear infinite;
  opacity: 0;
}
@keyframes gsMenuEmber {
  0%   { transform: translateY(0) translateX(0) scale(1); opacity: 0; }
  8%   { opacity: .9; }
  60%  { opacity: .6; }
  80%  { transform: translateY(-55vh) translateX(calc(sin(var(--i,1)*1.3rad)*28px)) scale(.5); opacity: .3; }
  100% { transform: translateY(-72vh) translateX(calc(sin(var(--i,1)*1.3rad)*40px)) scale(0); opacity: 0; }
}
.gs-menu-embers span:nth-child(1)  { --i:1; }
.gs-menu-embers span:nth-child(2)  { --i:2; }
.gs-menu-embers span:nth-child(3)  { --i:3; }
.gs-menu-embers span:nth-child(4)  { --i:4; }
.gs-menu-embers span:nth-child(5)  { --i:5; }
.gs-menu-embers span:nth-child(6)  { --i:6; }
.gs-menu-embers span:nth-child(7)  { --i:7; }
.gs-menu-embers span:nth-child(8)  { --i:8; }
.gs-menu-embers span:nth-child(9)  { --i:9; }
.gs-menu-embers span:nth-child(10) { --i:10; }
.gs-menu-embers span:nth-child(11) { --i:11; }
.gs-menu-embers span:nth-child(12) { --i:12; }
.gs-menu-embers span:nth-child(13) { --i:13; }
.gs-menu-embers span:nth-child(14) { --i:14; }

/* -- Content panel (right / center) -- */
.gs-menu-content {
  position: relative;
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 60px 60px 60px 40px;
  gap: 14px;
  animation: gsMenuReveal .7s ease .1s both;
}
@keyframes gsMenuReveal {
  from { opacity: 0; transform: translateY(22px); }
  to   { opacity: 1; transform: none; }
}

.gs-menu-badge-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
.gs-menu-badge {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--gs-red);
  border: 1px solid rgba(216,74,74,.42);
  border-radius: 3px;
  padding: 3px 10px;
  font-family: "Courier New", monospace;
}
.gs-menu-version {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .18em;
  color: rgba(255,255,255,.22);
  font-family: "Courier New", monospace;
}
.gs-menu-logo {
  font-size: clamp(36px, 5.5vw, 62px);
  font-weight: 900;
  line-height: .95;
  letter-spacing: -.03em;
  color: #fff;
  text-transform: uppercase;
}
.gs-menu-logo em {
  color: var(--gs-red);
  font-style: normal;
}
.gs-menu-subtitle {
  font-size: clamp(14px, 2vw, 20px);
  font-weight: 800;
  letter-spacing: .25em;
  text-transform: uppercase;
  color: rgba(255,255,255,.35);
  margin-top: -8px;
}
.gs-menu-tagline {
  font-size: 13px;
  color: rgba(255,255,255,.38);
  font-style: italic;
  margin: 0;
  line-height: 1.5;
}

.gs-menu-save {
  display: flex;
  align-items: center;
  gap: 8px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.09);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 12px;
  color: rgba(255,255,255,.55);
  margin-top: 4px;
}
.gs-menu-save-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--gs-gold);
  box-shadow: 0 0 8px rgba(242,199,107,.7);
  flex-shrink: 0;
  animation: gsSavePulse 2s ease-in-out infinite;
}
.gs-menu-save-new .gs-menu-save-dot { background: var(--gs-muted); box-shadow: none; }
@keyframes gsSavePulse {
  0%,100% { opacity: 1; }
  50%      { opacity: .4; }
}

.gs-menu-play {
  display: flex;
  align-items: center;
  gap: 12px;
  appearance: none;
  border: none;
  cursor: pointer;
  background: linear-gradient(135deg, #c41c1c, #8b0a0a);
  color: #fff;
  font-size: 15px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  padding: 16px 32px;
  border-radius: 10px;
  margin-top: 8px;
  box-shadow: 0 8px 32px rgba(200,28,28,.55), inset 0 1px 0 rgba(255,255,255,.15);
  transition: transform .15s, box-shadow .15s, filter .15s;
  position: relative;
  overflow: hidden;
}
.gs-menu-play::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,.1) 0%, transparent 60%);
}
.gs-menu-play:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 42px rgba(200,28,28,.7), inset 0 1px 0 rgba(255,255,255,.2);
  filter: brightness(1.08);
}
.gs-menu-play:active { transform: scale(.97); }

.gs-menu-note {
  font-size: 10px;
  color: rgba(255,255,255,.18);
  font-family: "Courier New", monospace;
  letter-spacing: .05em;
  margin: 0;
}

/* -- Character scene (left column) -- */
.gs-menu-char-area {
  position: relative;
  z-index: 5;
  min-height: 480px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding-bottom: 60px;
  animation: gsMenuCharIn .8s ease .25s both;
}
@keyframes gsMenuCharIn {
  from { opacity: 0; transform: translateX(-30px); }
  to   { opacity: 1; transform: none; }
}
/* Scale up the CSS character for the menu */
.gs-menu-char-area .gs-life-character {
  position: relative !important;
  left: auto !important;
  right: auto !important;
  top: auto !important;
  bottom: auto !important;
  transform: scale(2.4) !important;
  transform-origin: 50% 100% !important;
  width: 76px;
  height: 112px;
  margin-bottom: 20px;
  filter: drop-shadow(0 0 32px rgba(200,30,30,.5)) drop-shadow(0 18px 24px rgba(0,0,0,.6)) !important;
}
/* Override red torso to match GS brand exactly */
.gs-menu-char-area .gs-life-torso {
  background: linear-gradient(180deg, #c41c1c, #6b0c0c);
}
/* Glowing eyes */
.gs-menu-char-area .gs-life-head b {
  background: #e03535;
  box-shadow: 0 0 6px rgba(224,53,53,.9);
}

/* Menu desk scene */
.gs-menu-desk {
  position: absolute;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);
  width: 220px;
  height: 22px;
  background: linear-gradient(180deg, rgba(55,35,20,.92), rgba(38,22,12,.95));
  border-radius: 4px;
  border: 1px solid rgba(100,65,30,.5);
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 0 12px;
}
.gs-menu-desk::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -18px;
  height: 20px;
  background: linear-gradient(180deg, rgba(38,22,12,.95), rgba(25,12,6,.92));
  border-radius: 0 0 4px 4px;
  border: 1px solid rgba(80,50,20,.4);
  border-top: none;
}

.gs-menu-paper {
  position: absolute;
  bottom: 22px;
  font-size: 7px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
  text-align: center;
  padding: 6px 8px;
  border-radius: 3px;
  line-height: 1.4;
  transform-origin: bottom center;
}
.gs-menu-paper small { font-size: 8px; display: block; font-weight: 700; color: var(--gs-red); }
.gs-menu-paper-1 {
  left: 20px;
  background: rgba(240,225,195,.92);
  color: #222;
  transform: rotate(-6deg);
  border: 1px solid rgba(0,0,0,.15);
  box-shadow: 2px 4px 8px rgba(0,0,0,.4);
}
.gs-menu-paper-2 {
  right: 24px;
  background: rgba(15,12,18,.9);
  color: rgba(255,255,255,.7);
  border: 1px solid rgba(200,30,30,.4);
  transform: rotate(4deg);
  box-shadow: 2px 4px 8px rgba(0,0,0,.5);
}
.gs-menu-mug {
  position: absolute;
  bottom: 22px;
  left: 50%;
  transform: translateX(-50%);
  width: 16px;
  height: 18px;
  background: linear-gradient(180deg, #1a1a1a, #111);
  border-radius: 3px 3px 5px 5px;
  border: 1px solid #333;
}
.gs-menu-mug::before {
  content: "";
  position: absolute;
  right: -6px;
  top: 3px;
  width: 6px;
  height: 9px;
  border: 2px solid #333;
  border-radius: 0 4px 4px 0;
  border-left: none;
  background: transparent;
}
.gs-menu-mug::after {
  content: "";
  position: absolute;
  top: -4px;
  left: 3px;
  width: 2px;
  height: 5px;
  background: rgba(255,200,160,.18);
  border-radius: 99px;
  animation: gsSteam 1.6s ease-in-out infinite;
}
@keyframes gsSteam {
  0%,100% { transform: translateY(0) scaleX(1); opacity: .18; }
  50%      { transform: translateY(-4px) scaleX(1.4); opacity: 0; }
}

/* -- Responsive menu -- */



/* Bug Fix — pointer-events on bubble  */
.gs-life-character .gs-life-bubble {
  pointer-events: none;
}


/* V0.3.3 — pastilles de scène plus propres, vibe Kairo mobile */
.gs-room-action-hotspots {
  position: absolute;
  inset: 0;
  z-index: 12;
  pointer-events: none;
}
.gs-scene-action {
  pointer-events: auto;
  position: absolute;
  appearance: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 9px 7px 7px;
  min-width: 92px;
  max-width: 122px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.18);
  background: linear-gradient(180deg, rgba(9,15,22,.88), rgba(5,9,14,.92));
  color: #f6f7fb;
  box-shadow: 0 8px 18px rgba(0,0,0,.26), inset 0 0 0 1px rgba(255,255,255,.04);
  cursor: pointer;
  text-align: left;
}
.gs-scene-action:hover { transform: translateY(-1px); }
.gs-scene-action:active {
  transform: translateY(2px);
  box-shadow: 0 3px 10px rgba(0,0,0,.22), inset 0 0 0 1px rgba(255,255,255,.04);
}
.gs-scene-icon {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  flex: 0 0 26px;
  background: linear-gradient(180deg, rgba(255,255,255,.18), rgba(255,255,255,.06));
  font-size: 14px;
  line-height: 1;
}
.gs-scene-copy {
  display: block;
  min-width: 0;
}
.gs-scene-action strong {
  display: block;
  font-size: 12px;
  line-height: 1.05;
  white-space: nowrap;
}
.gs-scene-action small {
  display: block;
  margin-top: 2px;
  font-size: 9px;
  letter-spacing: .02em;
  color: rgba(225,232,240,.84);
}
.gs-scene-brocante .gs-scene-icon {
  background: linear-gradient(180deg, rgba(255,212,100,.34), rgba(123,89,18,.34));
}
.gs-scene-collection .gs-scene-icon,
.gs-scene-price .gs-scene-icon,
.gs-scene-concours .gs-scene-icon,
.gs-scene-archives .gs-scene-icon {
  background: linear-gradient(180deg, rgba(95,170,255,.30), rgba(37,73,148,.30));
}
.gs-scene-brocante { left: 18%; bottom: 21%; }
.gs-scene-collection { right: 8%; top: 26%; }
.gs-scene-price { right: 12%; top: 47%; }
.gs-scene-concours { right: 6%; bottom: 22%; }
.gs-scene-archives { left: 10%; top: 28%; }

.gs-tab-menu {
  appearance: none;
  border: 1px solid rgba(255,255,255,.1);
  background: linear-gradient(180deg, rgba(242,199,107,.92), rgba(136,75,24,.92));
  color: #180d08;
  font-weight: 1000;
  border-radius: 16px;
  min-height: 46px;
  padding: 0 18px;
  cursor: pointer;
}




/* V0.2.7 — Accueils illustrés desktop/mobile */
.gs-menu-screen.gs-menu-screen-art {
  min-height: 100dvh;
  min-height: 680px;
  background: #040406;
  grid-template-columns: 1fr;
  border-radius: 28px;
  isolation: isolate;
}
.gs-menu-screen-art .gs-menu-art {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  opacity: 1;
}
.gs-menu-screen-art .gs-menu-art-desktop {
  display: block;
  background-image: url("../img/menu-home-desktop-safe.webp");
}
.gs-menu-screen-art .gs-menu-art-mobile {
  display: none;
  background-image: url("../img/menu-home-mobile-safe.webp");
}
.gs-menu-screen-art .gs-menu-vignette {
  z-index: 1;
  background: radial-gradient(ellipse at center, transparent 35%, rgba(0,0,0,.48) 78%, rgba(0,0,0,.78) 100%);
}
.gs-menu-redpulse {
  position: absolute;
  inset: auto 50% 8% auto;
  transform: translateX(50%);
  width: min(62vw, 860px);
  height: min(34vh, 240px);
  z-index: 1;
  pointer-events: none;
  background: radial-gradient(ellipse, rgba(230,35,35,.20) 0%, rgba(230,35,35,.10) 36%, transparent 72%);
  filter: blur(18px);
  animation: gsMenuRedPulse 2.8s ease-in-out infinite;
}
@keyframes gsMenuRedPulse {
  0%,100% { opacity: .45; transform: translateX(50%) scale(1); }
  50% { opacity: .9; transform: translateX(50%) scale(1.06); }
}
.gs-menu-screen-art .gs-menu-embers {
  z-index: 2;
  mix-blend-mode: screen;
}
.gs-menu-screen-art .gs-menu-embers span {
  width: 4px;
  height: 4px;
  box-shadow: 0 0 8px 3px rgba(229,53,53,.65), 0 0 18px 6px rgba(255,80,50,.18);
}
.gs-menu-hitarea {
  position: absolute;
  inset: 0;
  z-index: 4;
  border: 0;
  background: transparent;
  cursor: pointer;
}
.gs-menu-ui {
  position: absolute;
  inset: 0;
  z-index: 5;
  pointer-events: none;
}
.gs-menu-save-floating {
  position: absolute;
  left: 50%;
  bottom: calc(clamp(56px, 8.2%, 120px) + 66px);
  transform: translateX(-50%);
  max-width: min(76vw, 620px);
  backdrop-filter: blur(8px);
  background: rgba(10,10,12,.48);
  border-color: rgba(255,255,255,.10);
}
.gs-menu-tap-note {
  position: absolute;
  left: 50%;
  bottom: clamp(14px, 4.4%, 44px);
  transform: translateX(-50%);
  padding: 8px 14px;
  color: rgba(255,245,232,.88);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .16em;
  text-transform: uppercase;
  text-shadow: 0 2px 10px rgba(0,0,0,.72), 0 0 16px rgba(155,20,20,.36);
  animation: gsTapPrompt 1.8s ease-in-out infinite;
}
@keyframes gsTapPrompt {
  0%,100% { opacity: .78; }
  50% { opacity: 1; }
}
.gs-menu-play-stealth {
  position: absolute;
  left: 50%;
  bottom: 4.2%;
  transform: translateX(-50%);
  width: min(84vw, 760px);
  height: 12.5%;
  min-height: 70px;
  border: 0;
  background: transparent;
  opacity: 0;
  pointer-events: auto;
}
.gs-menu-note-floating {
  position: absolute;
  left: 50%;
  bottom: 1.4%;
  transform: translateX(-50%);
  color: rgba(255,255,255,.24);
  text-shadow: none;
}

/* Neutralise legacy menu furniture without deleting CSS */
.gs-menu-screen-art .gs-menu-shelf,
.gs-menu-screen-art .gs-menu-board,
.gs-menu-screen-art .gs-menu-glow,
.gs-menu-screen-art .gs-menu-content,
.gs-menu-screen-art .gs-menu-char-area {
  display: none !important;
}




/* V0.2.8 — protagoniste personnalisé pixel-art */
.gs-life-character {
  width: 96px;
  height: 118px;
  transform-origin: 50% 100%;
  filter: drop-shadow(0 10px 14px rgba(0,0,0,.36));
}
.gs-life-shadow {
  left: 50%;
  transform: translateX(-50%);
  bottom: 6px;
  width: 52px;
  height: 14px;
  background: rgba(0,0,0,.28);
  filter: blur(3px);
}
.gs-life-sprite {
  position: absolute;
  inset: 0;
  background-repeat: no-repeat;
  background-position: center bottom;
  background-size: contain;
  image-rendering: pixelated;
  transform-origin: 50% 88%;
  animation: gsSpriteIdle 2.8s ease-in-out infinite;
}
.gs-life-character .gs-life-body,
.gs-life-character .gs-life-head,
.gs-life-character .gs-life-torso,
.gs-life-character .gs-life-arm,
.gs-life-character .gs-life-leg {
  display: none !important;
}
.gs-life-place-center .gs-life-sprite,
.gs-life-idle .gs-life-sprite {
  background-image: url("../img/avatar/front.webp");
}
.gs-life-place-desk .gs-life-sprite,
.gs-life-checking .gs-life-sprite,
.gs-life-phone .gs-life-sprite,
.gs-life-coffee .gs-life-sprite {
  background-image: url("../img/avatar/front_right.webp");
}
.gs-life-place-shelf .gs-life-sprite,
.gs-life-sorting .gs-life-sprite,
.gs-life-looking .gs-life-sprite {
  background-image: url("../img/avatar/right.webp");
}
.gs-life-place-market .gs-life-sprite,
.gs-life-brocante .gs-life-sprite,
.gs-life-negotiating .gs-life-sprite,
.gs-life-celebrating .gs-life-sprite,
.gs-life-worried .gs-life-sprite {
  background-image: url("../img/avatar/front_left.webp");
}

.gs-life-place-desk { right: 29%; bottom: 25%; transform: scale(.92); }
.gs-life-place-shelf { right: 12%; bottom: 34%; transform: scale(.88); }
.gs-life-place-center { left: 45%; bottom: 23%; transform: scale(.94); }
.gs-life-place-market { left: 50%; bottom: 10%; transform: translateX(-50%) scale(.9); }

.gs-life-checking .gs-life-sprite { animation: gsSpriteCheck .85s ease-in-out infinite; }
.gs-life-sorting .gs-life-sprite,
.gs-life-looking .gs-life-sprite { animation: gsSpriteReach 1.2s ease-in-out infinite; }
.gs-life-coffee .gs-life-sprite { animation: gsSpriteSip 2s ease-in-out infinite; }
.gs-life-phone .gs-life-sprite { animation: gsSpritePhone 1.1s ease-in-out infinite; }
.gs-life-brocante .gs-life-sprite { animation: gsSpriteWalk .55s steps(2) infinite; }
.gs-life-negotiating .gs-life-sprite { animation: gsSpriteTalk 1.1s ease-in-out infinite; }
.gs-life-celebrating .gs-life-sprite { animation: gsSpriteCelebrate 0.8s ease-in-out infinite alternate; }
.gs-life-worried .gs-life-sprite { animation: gsSpriteWorried .18s linear infinite; }

@keyframes gsSpriteIdle {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}
@keyframes gsSpriteCheck {
  0%,100% { transform: translate(0,0) rotate(0deg); }
  50% { transform: translate(2px,-2px) rotate(1deg); }
}
@keyframes gsSpriteReach {
  0%,100% { transform: translateY(0) translateX(0); }
  50% { transform: translateY(-2px) translateX(2px); }
}
@keyframes gsSpriteSip {
  0%,100% { transform: translateY(0); }
  45%,60% { transform: translateY(-3px) rotate(-1deg); }
}
@keyframes gsSpritePhone {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px) rotate(.8deg); }
}
@keyframes gsSpriteWalk {
  0%,100% { transform: translateY(0) translateX(0); }
  50% { transform: translateY(-3px) translateX(1px); }
}
@keyframes gsSpriteTalk {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px) translateX(1px); }
}
@keyframes gsSpriteCelebrate {
  from { transform: translateY(0) scale(1); }
  to { transform: translateY(-4px) scale(1.03); }
}
@keyframes gsSpriteWorried {
  0%,100% { transform: translateX(0); }
  50% { transform: translateX(1px); }
}




/* V0.2.9 — déplacement au clic et sprites 4+ directions */
.gs-room {
  position: relative;
}
.gs-room-walk-layer {
  position: absolute;
  inset: 0;
  border: 0;
  padding: 0;
  background: transparent;
  cursor: crosshair;
  z-index: 1;
}
.gs-room-action-hotspots,
.gs-room-bottom,
.gs-room-titlebar,
.gs-room-collection-panel,
.gs-lot-hotspots,
.gs-scene-action,
.gs-room-hotspot {
  position: relative;
  z-index: 2;
}
.gs-room-content { z-index: 3; } /* UI au-dessus du calque monde */
.gs-life-character {
  transition: left .55s ease, bottom .55s ease, transform .55s ease, filter .25s ease;
  z-index: 2;
}
.gs-life-character.is-seated {
  width: 98px;
  height: 112px;
}
.gs-life-character .gs-life-bubble {
  pointer-events: none;
}
.gs-life-character:hover .gs-life-bubble,
.gs-life-character.mood-happy .gs-life-bubble,
.gs-life-character.gs-life-negotiating .gs-life-bubble,
.gs-life-character.gs-life-brocante .gs-life-bubble {
  opacity: 1;
  transform: translate(-50%, 0);
}
.gs-life-shadow { z-index: 0; }
.gs-life-sprite { z-index: 1; }
.gs-sprite-front .gs-life-sprite { background-image: url("../img/avatar/front.webp"); }
.gs-sprite-front_left .gs-life-sprite { background-image: url("../img/avatar/front_left.webp"); }
.gs-sprite-front_right .gs-life-sprite { background-image: url("../img/avatar/front_right.webp"); }
.gs-sprite-left .gs-life-sprite { background-image: url("../img/avatar/left.webp"); }
.gs-sprite-right .gs-life-sprite { background-image: url("../img/avatar/right.webp"); }
.gs-sprite-back .gs-life-sprite { background-image: url("../img/avatar/back.webp"); }
.gs-sprite-back_left .gs-life-sprite { background-image: url("../img/avatar/back_left.webp"); }
.gs-sprite-back_right .gs-life-sprite { background-image: url("../img/avatar/back_right.webp"); }
.gs-sprite-tv_back .gs-life-sprite { background-image: url("../img/avatar/tv/tv_sit_back.webp"); background-position: center bottom; }
.gs-sprite-tv_back_left .gs-life-sprite { background-image: url("../img/avatar/tv/tv_sit_back_left.webp"); background-position: center bottom; }
.gs-sprite-tv_back_right .gs-life-sprite { background-image: url("../img/avatar/tv/tv_sit_back_right.webp"); background-position: center bottom; }
.gs-sprite-desk .gs-life-sprite { background-image: url("../img/avatar/desk.webp"); background-position: center bottom; }

.gs-life-checking .gs-life-sprite { animation: gsSpriteCheck .95s ease-in-out infinite; }
.gs-life-sorting .gs-life-sprite,
.gs-life-looking .gs-life-sprite { animation: gsSpriteReach 1.15s ease-in-out infinite; }
.gs-life-coffee .gs-life-sprite { animation: gsSpriteSip 2.1s ease-in-out infinite; }
.gs-life-phone .gs-life-sprite { animation: gsSpritePhone 1.05s ease-in-out infinite; }
.gs-life-brocante .gs-life-sprite { animation: gsSpriteWalk .65s ease-in-out infinite; }
.gs-life-negotiating .gs-life-sprite { animation: gsSpriteTalk 1.05s ease-in-out infinite; }
.gs-life-celebrating .gs-life-sprite { animation: gsSpriteCelebrate .82s ease-in-out infinite alternate; }
.gs-life-worried .gs-life-sprite { animation: gsSpriteWorried .16s linear infinite; }

.gs-life-zone-market .gs-life-bubble { top: -18px; }
.gs-brocante-hero .gs-market-runner .gs-life-character { position: relative; left: auto !important; right: auto !important; bottom: auto !important; transform: translateX(0) scale(.88) !important; margin: 6px auto 0; }




/* V0.3.0 — correctifs mobile lisibilité + déplacement */





/* V0.3.2 — amélioration lisibilité mobile et déplacement */
.gs-room-target-hint {
  position: absolute;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: rgba(255,255,255,.8);
  box-shadow: 0 0 0 2px rgba(54,170,255,.4), 0 0 14px rgba(54,170,255,.45);
}






/* V0.3.3 — sensation plus Kairosoft mobile */
.gs-game-topbar {
  background: linear-gradient(180deg, rgba(29,47,89,.76), rgba(11,20,32,.78));
}
.gs-tabs button,
.gs-tab-menu {
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03), 0 4px 12px rgba(0,0,0,.16);
}
.gs-tabs button.active {
  background: linear-gradient(180deg, rgba(205,86,86,.92), rgba(128,38,46,.96));
}
.gs-room-chip,
.gs-room-mini-score {
  background: rgba(9, 15, 21, .84);
}






/* V0.3.4 — dialogues NPC et visiteurs */
.gs-room-side-stack {
  display: grid;
  gap: 10px;
}
.gs-room-visitor {
  padding: 12px;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(11,17,24,.92), rgba(8,12,18,.94));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03);
}
.gs-room-visitor-head {
  display: grid;
  grid-template-columns: 70px 1fr;
  gap: 12px;
  align-items: center;
}
.gs-room-visitor-head .gs-npc {
  width: 70px;
  height: 70px;
}
.gs-room-visitor-head h4 {
  margin: 2px 0 4px;
  font-size: 16px;
}
.gs-room-visitor-head p {
  margin: 0;
  color: var(--gs-muted);
  font-size: 13px;
}
.gs-room-visitor-actions {
  margin-top: 10px;
}
.gs-room-visitor-actions button,
.gs-lot-dialogue-banner button,
.gs-archives-guide button {
  appearance: none;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 12px;
  padding: 10px 14px;
  background: linear-gradient(180deg, rgba(212,86,86,.96), rgba(124,31,43,.98));
  color: #fff;
  font-weight: 700;
  cursor: pointer;
}
.gs-lot-dialogue-banner {
  margin-top: 14px;
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  padding: 12px 14px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 16px;
  background: linear-gradient(180deg, rgba(16,24,32,.9), rgba(10,15,21,.92));
}
.gs-lot-dialogue-copy strong {
  display: block;
  margin-bottom: 3px;
}
.gs-lot-dialogue-copy p {
  margin: 0;
  color: var(--gs-muted);
}
.gs-archives-guide {
  margin-top: 14px;
  display: grid;
  grid-template-columns: 74px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 12px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 16px;
  background: rgba(9,14,20,.76);
}
.gs-archives-guide .gs-npc {
  width: 74px;
  height: 74px;
}
.gs-event-card {
  width: min(900px, 96vw);
  grid-template-columns: 240px 1fr;
}
.gs-event-npc {
  padding: 20px;
  gap: 14px;
}
.gs-event-portrait-wrap {
  padding: 12px;
  border-radius: 20px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.06);
}
.gs-event-npc .gs-npc {
  width: 132px;
  height: 132px;
}
.gs-event-npc strong {
  font-size: 18px;
}
.gs-event-npc small {
  color: var(--gs-muted);
  text-align: center;
}
.gs-event-content {
  padding: 26px;
}
.gs-event-content blockquote {
  font-size: 18px;
  line-height: 1.45;
}
.gs-event-choices button {
  text-align: left;
  font-size: 15px;
  border-radius: 14px;
}



/* Custom pixel NPC portraits */
.gs-npc-image {
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: radial-gradient(circle at 50% 35%, rgba(255,255,255,.06), rgba(255,255,255,0) 60%);
  border-radius: 16px;
}
.gs-npc-image img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  image-rendering: pixelated;
  filter: drop-shadow(0 6px 10px rgba(0,0,0,.28));
}
.gs-lot-head .gs-npc.gs-npc-image,
.gs-rival-line .gs-npc.gs-npc-image,
.gs-room-visitor-head .gs-npc.gs-npc-image,
.gs-event-npc .gs-npc.gs-npc-image,
.gs-archives-guide .gs-npc.gs-npc-image {
  background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(8,10,18,.02));
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.02);
}
.gs-event-npc .gs-npc.gs-npc-image { border-radius: 18px; }


/* V0.3.6 — HOTFIX mobile, NPC assets et clics */
.gs-room-walk-layer {
  z-index: 1 !important;
}
.gs-room-content,
.gs-room-bottom,
.gs-room-side-stack,
.gs-room-visitor,
.gs-room-visitor * ,
.gs-room-collection-panel,
.gs-room-action-hotspots,
.gs-scene-action,
.gs-lot-head,
.gs-lot-actions,
.gs-lot-dialogue-banner,
.gs-archives-guide {
  position: relative;
  z-index: 20;
  pointer-events: auto;
}
/* V0.3.7 — Fix: le modal de dialogue doit rester en position fixed (overlay),
   sinon il s'insère dans le flux et bloque le scroll mobile. */
.gs-event-modal {
  pointer-events: auto;
}
.gs-room-visitor-actions button,
.gs-lot-dialogue-banner button,
.gs-archives-guide button,
.gs-event-choices button {
  position: relative;
  z-index: 30;
  pointer-events: auto;
  touch-action: manipulation;
}
.gs-menu-hitarea {
  z-index: 40 !important;
  pointer-events: auto !important;
  touch-action: manipulation;
}
.gs-menu-ui {
  z-index: 50 !important;
}
.gs-menu-start-btn {
  position: absolute;
  left: 50%;
  bottom: clamp(56px, 8.2%, 120px);
  transform: translateX(-50%);
  z-index: 60;
  pointer-events: auto;
  touch-action: manipulation;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 999px;
  padding: 13px 28px;
  min-width: 180px;
  background: linear-gradient(180deg, rgba(225,82,83,.96), rgba(129,31,43,.98));
  color: #fff;
  font-weight: 900;
  font-size: 16px;
  letter-spacing: .04em;
  box-shadow: 0 12px 26px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.22);
}
.gs-npc-image.is-img-missing::before {
  content: attr(data-npc);
  color: #fff;
  font-size: 10px;
  text-align: center;
  padding: 4px;
  opacity: .78;
}



/* =========================================================
   V0.3.7 — HOTFIX dialogues mobiles
   - L'overlay devient lui-même scrollable (plus fiable que
     overflow:auto sur la carte sur iOS / Android).
   - Bouton "Fermer" (X) ajouté pour ne plus rester bloqué.
   - Verrou du scroll body quand un dialogue est ouvert.
   ========================================================= */
html.gs-modal-open,
body.gs-modal-open {
  overflow: hidden !important;
  touch-action: none !important;
}
html.gs-modal-open.gs-rpg-open,
body.gs-modal-open.gs-rpg-open {
  touch-action: auto !important;
}
.gs-event-modal {
  position: fixed !important;
  inset: 0 !important;
  z-index: 100000 !important;
  display: block !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  touch-action: pan-y;
  background: rgba(0,0,0,.78);
  padding: max(18px, env(safe-area-inset-top)) 14px max(24px, env(safe-area-inset-bottom));
  box-sizing: border-box;
}
.gs-event-modal::before {
  content: "";
  display: block;
  height: 0;
}
.gs-event-card {
  position: relative;
  margin: 0 auto;
  max-height: none !important;
  overflow: visible !important;
  width: min(780px, 96vw);
}
.gs-event-card-close {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.18);
  background: rgba(0,0,0,.55);
  color: #fff;
  font-size: 22px;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
  z-index: 5;
  pointer-events: auto;
  touch-action: manipulation;
}
.gs-event-card-close:hover,
.gs-event-card-close:focus { background: rgba(216,74,74,.78); outline: none; }




/* V0.3.9 — patience vendeur + patience visiteur */
.gs-npc-image img {
  display: block;
}
.gs-patience-meter {
  flex: 1 1 220px;
  min-width: 190px;
  display: grid;
  gap: 7px;
  padding: 9px 10px;
  border-radius: 13px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.035);
}
.gs-patience-meter-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.gs-patience-meter-head strong {
  color: #fff;
  font-size: 12px;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.gs-patience-meter-head em {
  color: var(--gs-muted);
  font-size: 11px;
  font-style: normal;
  text-align: right;
}
.gs-patience-meter > span {
  height: 9px;
  border-radius: 999px;
  overflow: hidden;
  background: rgba(0,0,0,.34);
  border: 1px solid rgba(255,255,255,.06);
}
.gs-patience-meter > span i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #e84a4a, #f2c76b);
  box-shadow: 0 0 12px rgba(242,199,107,.22);
  transition: width .28s ease;
}
.gs-patience-meter.is-warning > span i {
  background: linear-gradient(90deg, #e84a4a, #f2a84b);
}
.gs-patience-meter.is-danger {
  border-color: rgba(232,74,74,.36);
}
.gs-patience-meter.is-danger > span i {
  background: linear-gradient(90deg, #8f1f2b, #e84a4a);
}



/* V0.3.9 — patience spécifique aux visiteurs de salle */
.gs-room-visitor .gs-visitor-patience {
  flex: none;
  min-width: 0;
  width: 100%;
  margin-top: 10px;
  padding: 7px 9px;
  background: rgba(9,15,24,.54);
}
.gs-room-visitor .gs-visitor-patience .gs-patience-meter-head strong {
  font-size: 10px;
}
.gs-room-visitor .gs-visitor-patience .gs-patience-meter-head em {
  font-size: 10px;
}
.gs-room-visitor .gs-visitor-patience > span {
  height: 7px;
}


/* V0.4.0 — nettoyage mobile, visiteur fermable, scroll léger, scènes auto */
.gs-room-visitor {
  position: relative;
}
.gs-room-visitor-close {
  appearance: none;
  position: absolute;
  top: 10px;
  right: 10px;
  width: 32px;
  height: 32px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 999px;
  background: linear-gradient(180deg, #ea6b6b, #8a1f2a);
  color: #fff;
  font-size: 20px;
  line-height: 1;
  font-weight: 800;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 8px 18px rgba(0,0,0,.25);
}
.gs-room-visitor-close:active {
  transform: scale(.97);
}



/* V0.4.1 — avatar chambre + étagères cliquables */
.gs-room-shelf-hitbox {
  position: absolute;
  left: 48%;
  top: 14%;
  width: 22%;
  height: 40%;
  appearance: none;
  border: 0;
  background: transparent;
  border-radius: 18px;
  z-index: 3;
  cursor: pointer;
}
.gs-room-shelf-hitbox span {
  position: absolute;
  left: 50%;
  bottom: 8px;
  transform: translateX(-50%);
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(7, 12, 17, .72);
  border: 1px solid rgba(255,255,255,.12);
  color: #fff;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .08em;
  opacity: .78;
}
.gs-room-shelf-hitbox:hover span,
.gs-room-shelf-hitbox:focus-visible span {
  opacity: 1;
}
.gs-room-collection-panel {
  position: relative;
}
.gs-room-collection-panel:not(.is-open) {
  display: none !important;
}
.gs-room-collection-close {
  appearance: none;
  position: absolute;
  top: 10px;
  right: 10px;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.16);
  background: linear-gradient(180deg, #ea6b6b, #8a1f2a);
  color: #fff;
  font-size: 18px;
  font-weight: 800;
  line-height: 1;
}




/* === V0.5.0 — PNJ visiteur (arrivee animee) + compte a rebours brocante === */
.gs-room-npc { position: absolute; left: 30%; bottom: 10%; width: 64px; height: 96px; z-index: 7; background-repeat: no-repeat; background-position: center bottom; background-size: contain; image-rendering: pixelated; filter: drop-shadow(0 8px 10px rgba(0,0,0,.35)); transform: translateX(-50%); animation: gsNpcIdle 2.6s ease-in-out infinite; pointer-events: none; }
.gs-room-npc.is-entering { animation: gsNpcEnter 1.5s ease-out both, gsNpcIdle 2.6s ease-in-out 1.5s infinite; }
.gs-intro-mover { position: absolute; left: 30%; bottom: 10%; width: 64px; height: 96px; z-index: 8; background-repeat: no-repeat; background-position: 0 0; image-rendering: pixelated; filter: drop-shadow(0 10px 12px rgba(0,0,0,.38)); transform: translateX(-50%); animation: none; pointer-events: none; will-change: left, bottom, background-position; backface-visibility: hidden; transform-origin: center bottom; }
.gs-intro-mover.is-walking { animation: none; }
.gs-intro-mover.is-placing { transform: translateX(-50%); }
.gs-room-prop.is-intro-pop { animation: gsIntroPropPop .34s ease-out both; transform-origin: center bottom; }
@keyframes gsIntroPropPop { 0% { transform: scale(0.72); opacity: .15; } 65% { transform: scale(1.08); opacity: 1; } 100% { transform: scale(1); opacity: 1; } }
.gs-room-npc-bubble { position: absolute; top: -16px; left: 50%; width: 22px; height: 22px; border-radius: 50%; background: #ffd75e; color: #3a2c00; font-weight: 900; font-size: 14px; line-height: 20px; text-align: center; border: 2px solid rgba(20,16,10,.85); transform: translateX(-50%) scale(1); }
.gs-room-npc.is-entering .gs-room-npc-bubble { transform: translateX(-50%) scale(0); animation: gsNpcBubble .45s ease-out 1.45s forwards; }
@keyframes gsNpcEnter { from { transform: translateX(calc(-50% - 220px)); opacity: 0; } 15% { opacity: 1; } to { transform: translateX(-50%); opacity: 1; } }
@keyframes gsNpcIdle { 0%, 100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-2px); } }
@keyframes gsNpcBubble { from { transform: translateX(-50%) scale(0); } 70% { transform: translateX(-50%) scale(1.25); } to { transform: translateX(-50%) scale(1); } }
.gs-brocante-countdown { margin-left: auto; font-style: normal; font-weight: 800; color: #ffd75e; letter-spacing: .04em; }


/* === V0.5.0 — Fix onglets : le header sticky du thème recouvrait le jeu === */
body.gs-collection-game-page .gs-header { position: static !important; }
body.gs-collection-game-page #wpadminbar { position: absolute; }



/* === V0.6.0 — Ancrage image-space, pile des couches, calibration === */
.gs-room .gs-room-titlebar { position: relative; z-index: 20; }
.gs-room .gs-room-bottom { position: relative; z-index: 16; }
.gs-room .gs-life-character { z-index: 6; }
.gs-room .gs-room-npc { z-index: 5; }
.gs-calib-layer {
  position: absolute;
  inset: 0;
  z-index: 40;
  cursor: crosshair;
}
.gs-calib-panel {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 41;
  width: 230px;
  background: rgba(5, 9, 13, .94);
  border: 1px solid rgba(255, 215, 94, .45);
  border-radius: 10px;
  padding: 10px;
  color: #fff;
  font-size: 12px;
  display: grid;
  gap: 6px;
  cursor: default;
}
.gs-calib-panel select,
.gs-calib-panel textarea {
  width: 100%;
  background: #0a0f14;
  color: #9fe3a0;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 6px;
  font-size: 11px;
  padding: 4px;
}
.gs-calib-panel small { color: rgba(255,255,255,.65); line-height: 1.35; }



/* === V0.8.0 — Décor cliquable (zones diégétiques) + popups === */
.gs-decor-zone {
  position: absolute;
  appearance: none;
  border: 0;
  margin: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
  pointer-events: auto;
  -webkit-tap-highlight-color: transparent;
  border-radius: 12px;
  z-index: 14;
  transition: background .18s ease, box-shadow .18s ease;
}
/* Ordre de profondeur pour résoudre les chevauchements de clic */
.gs-decor-shelf { z-index: 16; }
.gs-decor-pc { z-index: 18; }
.gs-decor-cartons { z-index: 17; }
.gs-decor-zone:hover,
.gs-decor-zone:focus-visible {
  background: rgba(255, 215, 94, .12);
  box-shadow: inset 0 0 0 2px rgba(255, 215, 94, .55), 0 0 22px rgba(255, 215, 94, .25);
  outline: none;
}
.gs-decor-hint {
  position: absolute;
  top: 6px;
  left: 50%;
  transform: translateX(-50%) translateY(-4px) scale(.8);
  font-size: clamp(14px, 3.4vw, 20px);
  line-height: 1;
  filter: drop-shadow(0 2px 3px rgba(0,0,0,.6));
  opacity: 0;
  transition: opacity .18s ease, transform .18s ease;
  pointer-events: none;
}
.gs-decor-zone:hover .gs-decor-hint,
.gs-decor-zone:focus-visible .gs-decor-hint {
  opacity: 1;
  transform: translateX(-50%) translateY(0) scale(1);
}
.gs-decor-label {
  position: absolute;
  left: 50%;
  bottom: 100%;
  transform: translateX(-50%) translateY(-4px);
  white-space: nowrap;
  background: rgba(7, 12, 17, .92);
  border: 1px solid rgba(255, 215, 94, .4);
  color: #ffe6b0;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .02em;
  padding: 4px 9px;
  border-radius: 8px;
  opacity: 0;
  pointer-events: none;
  transition: opacity .18s ease;
}
.gs-decor-zone:hover .gs-decor-label,
.gs-decor-zone:focus-visible .gs-decor-label {
  opacity: 1;
}
/* Pastille de découverte : un léger halo pulsant pour signaler l'interactivité */
.gs-decor-zone::after {
  content: "";
  position: absolute;
  top: 8px;
  left: 50%;
  width: 9px;
  height: 9px;
  margin-left: -4.5px;
  border-radius: 50%;
  background: rgba(255, 215, 94, .9);
  box-shadow: 0 0 0 0 rgba(255, 215, 94, .55);
  animation: gsDecorPulse 2.4s ease-out infinite;
  pointer-events: none;
}
.gs-decor-zone:hover::after,
.gs-decor-zone:focus-visible::after { opacity: 0; }
@keyframes gsDecorPulse {
  0% { box-shadow: 0 0 0 0 rgba(255, 215, 94, .5); opacity: .9; }
  70% { box-shadow: 0 0 0 12px rgba(255, 215, 94, 0); opacity: .9; }
  100% { box-shadow: 0 0 0 0 rgba(255, 215, 94, 0); opacity: .5; }
}

.gs-room-prompt-backdrop {
  position: absolute;
  inset: 0;
  z-index: 60;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  background: rgba(3, 6, 10, .62);
  backdrop-filter: blur(3px);
  animation: gsPromptFade .18s ease;
}
@keyframes gsPromptFade { from { opacity: 0; } to { opacity: 1; } }
.gs-room-prompt-backdrop.is-opening { pointer-events: none; }
.gs-room-prompt {
  width: min(340px, 92%);
  background: linear-gradient(180deg, #141b24, #0c1219);
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 18px;
  padding: 20px 18px 16px;
  text-align: center;
  box-shadow: 0 24px 60px rgba(0,0,0,.5);
  animation: gsPromptPop .24s cubic-bezier(.3,1.3,.5,1);
}
@keyframes gsPromptPop { from { transform: translateY(10px) scale(.94); opacity: 0; } to { transform: none; opacity: 1; } }
.gs-room-prompt h3 { margin: 0 0 8px; font-size: 17px; color: #fff; }
.gs-room-prompt p { margin: 0 0 16px; font-size: 13px; line-height: 1.5; color: rgba(233,242,251,.78); }
.gs-room-prompt-actions { display: grid; gap: 8px; }
.gs-room-prompt-btn {
  appearance: none;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(255,255,255,.06);
  color: #e9f2fb;
  font-size: 13px;
  font-weight: 700;
  padding: 11px 12px;
  border-radius: 11px;
  cursor: pointer;
  transition: transform .12s ease, background .15s ease, border-color .15s ease;
}
.gs-room-prompt-btn:hover { transform: translateY(-1px); background: rgba(255,255,255,.1); }
.gs-room-prompt-btn.is-primary {
  background: linear-gradient(180deg, #d8233b, #a8172c);
  border-color: rgba(255,140,150,.5);
  color: #fff;
}
.gs-room-prompt-btn.is-primary:hover { background: linear-gradient(180deg, #e63048, #b81b32); }
/* Variante ordinateur : terminal CRT vert */
.gs-room-prompt-computer {
  background: linear-gradient(180deg, #07140d, #04100a);
  border-color: rgba(80, 255, 160, .35);
  box-shadow: 0 24px 60px rgba(0,0,0,.55), inset 0 0 60px rgba(40,255,140,.05);
  font-family: "Courier New", monospace;
}
.gs-room-prompt-computer h3 { color: #7dffb0; text-shadow: 0 0 8px rgba(80,255,160,.5); letter-spacing: .08em; }
.gs-room-prompt-computer p { color: rgba(150,255,200,.7); }
.gs-room-prompt-computer .gs-room-prompt-btn {
  background: rgba(20, 60, 40, .5);
  border-color: rgba(80, 255, 160, .3);
  color: #aaffcc;
  text-align: left;
}
.gs-room-prompt-computer .gs-room-prompt-btn:hover { background: rgba(30, 90, 60, .6); border-color: rgba(80,255,160,.6); }
.gs-room-prompt-computer .gs-room-prompt-btn.is-primary {
  background: rgba(40, 120, 75, .55);
  border-color: rgba(120, 255, 180, .6);
  color: #ddffe9;
}
.gs-shelf-tip {
  font-style: italic;
  color: rgba(255, 224, 150, .9) !important;
  border-left: 2px solid rgba(255, 215, 94, .5);
  padding-left: 8px;
}

/* TV allumable (easter-egg) */
.gs-tv-zone {
  position: absolute;
  appearance: none;
  border: 0;
  margin: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
  pointer-events: auto;
  -webkit-tap-highlight-color: transparent;
  z-index: 13;
  transition: box-shadow .15s ease;
}
.gs-tv-zone:hover,
.gs-tv-zone:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 2px rgba(255, 215, 94, .45);
  border-radius: 5px;
}
.gs-tv-glow {
  position: absolute;
  inset: 0%;
  border-radius: 12%;
  background:
    radial-gradient(68% 62% at 50% 47%, rgba(228, 236, 244, .95) 0%, rgba(196, 208, 220, .88) 44%, rgba(150, 164, 178, .5) 72%, rgba(120, 134, 150, 0) 100%);
  opacity: 0;
  transition: opacity .14s ease;
}
.gs-tv-zone.is-on .gs-tv-glow {
  opacity: 1;
  animation: gsTvFlicker 3.4s steps(1) infinite;
}
@keyframes gsTvFlicker {
  0%, 94%, 100% { opacity: 1; }
  95% { opacity: .8; }
  96% { opacity: 1; }
  97% { opacity: .9; }
  98% { opacity: 1; }
}

/* === V0.7.2 — Réaction au clic : saut + emoji === */
.gs-room .gs-life-character[data-action="poke-avatar"] {
  cursor: pointer;
  pointer-events: auto;
  -webkit-tap-highlight-color: transparent;
}
.gs-room .gs-life-character[data-action="poke-avatar"] .gs-life-sprite {
  pointer-events: auto;
}
.gs-room .gs-life-character[data-action="poke-avatar"] .gs-life-bubble,
.gs-room .gs-life-character[data-action="poke-avatar"] .gs-poke-emoji,
.gs-room .gs-life-character[data-action="poke-avatar"] .gs-life-shadow {
  pointer-events: none;
}
.gs-room.has-near-interaction .gs-life-character[data-action="poke-avatar"] { pointer-events: none !important; }
.gs-life-character.is-poked .gs-life-sprite {
  animation: gsPokeJump .5s cubic-bezier(.3, 1.4, .5, 1) !important;
}
@keyframes gsPokeJump {
  0%   { transform: translateY(0) scale(1, 1); }
  18%  { transform: translateY(0) scale(1.12, .86); }
  45%  { transform: translateY(-26%) scale(.94, 1.08); }
  70%  { transform: translateY(0) scale(1.06, .94); }
  100% { transform: translateY(0) scale(1, 1); }
}
.gs-poke-emoji {
  position: absolute;
  left: 50%;
  bottom: 96%;
  transform: translate(-50%, 6px) scale(.4);
  font-size: clamp(22px, 6vw, 34px);
  line-height: 1;
  pointer-events: none;
  opacity: 0;
  z-index: 50;
  filter: drop-shadow(0 2px 3px rgba(0,0,0,.5));
  will-change: transform, opacity;
}
.gs-poke-emoji.is-live {
  animation: gsPokeEmoji .9s ease-out forwards;
}
@keyframes gsPokeEmoji {
  0%   { opacity: 0; transform: translate(-50%, 8px) scale(.4); }
  25%  { opacity: 1; transform: translate(-50%, -14px) scale(1.15); }
  60%  { opacity: 1; transform: translate(-50%, -30px) scale(1); }
  100% { opacity: 0; transform: translate(-50%, -52px) scale(.9); }
}

/* === V0.7.0 — Props d'occlusion & marche === */
.gs-room-prop {
  position: absolute;
  pointer-events: none;
  background-repeat: no-repeat;
  background-position: left bottom;
  background-size: 100% 100%;
  image-rendering: pixelated;
}
.gs-room-prop.is-flipped {
  transform: scaleX(-1);
  transform-origin: center bottom;
}
.gs-room-prop.gs-prop-tv::before,
.gs-room-prop.gs-prop-tv::after {
  content: none !important;
}
.gs-room-prop.gs-prop-tv.is-on {
  filter:
    drop-shadow(0 0 4px rgba(103, 196, 255, .28))
    drop-shadow(0 0 10px rgba(79, 166, 236, .18));
  animation: gsTvAuraPulse 2.15s ease-in-out infinite;
}
@keyframes gsTvAuraPulse {
  0%, 100% {
    filter:
      drop-shadow(0 0 4px rgba(103, 196, 255, .26))
      drop-shadow(0 0 9px rgba(79, 166, 236, .16));
    transform: translateZ(0) scale(1);
  }
  50% {
    filter:
      drop-shadow(0 0 6px rgba(120, 214, 255, .38))
      drop-shadow(0 0 14px rgba(88, 178, 244, .24));
    transform: translateZ(0) scale(1.003);
  }
}

/* === V0.9.50 — Activité tapis : pompes ===
   Les trois phases utilisent des spritesheets transparentes : aucune image
   n'est remplacée frame par frame, donc pas de flash sur mobile. */
.gs-room-exercise {
  position: absolute;
  pointer-events: none;
  z-index: 24;
  filter: drop-shadow(0 9px 10px rgba(0,0,0,.36));
}
.gs-room-exercise[data-phase="start"] {
  animation: gsPushupIntro .16s ease-out both;
}
.gs-room-exercise[data-phase="loop"] .gs-room-exercise-sprite {
  animation: none;
  will-change: auto;
}
.gs-room-exercise[data-phase="recover"] .gs-room-exercise-sprite {
  animation: gsPushupRecover .22s ease-out both;
}
.gs-room-exercise-sprite {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center bottom;
  display: block;
  background: transparent !important;
  /* V0.9.98 : l'anti-aliasing est maintenant CUIT dans l'alpha du sprite (comme
     les sprites debout/NPC). On revient donc à pixelated pour rester cohérent
     avec le reste du jeu : bords nets et lisses, sans escalier ni halo. */
  image-rendering: pixelated;
  transform-origin: 50% 100%;
  user-select: none;
  -webkit-user-drag: none;
}
@keyframes gsPushupIntro { from { opacity: 0; transform: translateY(2px) scale(.985); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes gsPushupRecover {
  from { opacity: .96; transform: translateY(2px); }
  to { opacity: 1; transform: translateY(0); }
}
.gs-room-exercise-count {
  position: absolute;
  left: 50%;
  top: -7px;
  transform: translateX(-50%);
  min-width: 48px;
  padding: 3px 7px;
  border: 1px solid rgba(255,226,120,.72);
  border-radius: 999px;
  background: rgba(7,13,14,.78);
  color: #fff5c3;
  box-shadow: 0 3px 10px rgba(0,0,0,.35);
  font: 800 11px/1 system-ui, sans-serif;
  letter-spacing: .02em;
  text-align: center;
  white-space: nowrap;
}

.gs-life-character.is-walking {
  transition: none !important;
}
.gs-life-character.is-walking .gs-life-sprite {
  /* Les poses de la planche contiennent deja la cadence des pas. Ne pas ajouter un second
     rebond CSS : cela provoquait un saut supplementaire et accentuait le flash. */
  animation: none !important;
}
@keyframes gsWalkBob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}

/* === V0.6.1 — Blindage géométrie de la pièce (référence du layout JS) === */
body.gs-collection-game-page .gs-room {
  position: relative !important;
  overflow: hidden !important;
}
body.gs-collection-game-page .gs-room-content {
  position: absolute !important;
  inset: 0 !important;
}
body.gs-collection-game-page .gs-room-bg {
  /* Les nouvelles maps ont leurs dimensions source exactes : pas de crop structurel. */
  transform: scale(1) !important;
  transform-origin: center center !important;
}
body.gs-collection-game-page .gs-room .gs-room-titlebar { z-index: 40 !important; }
body.gs-collection-game-page .gs-room .gs-room-action-hotspots { z-index: 36 !important; }
body.gs-collection-game-page .gs-room .gs-room-bottom { z-index: 35 !important; }
body.gs-collection-game-page .gs-room .gs-life-character { z-index: 6 !important; }
body.gs-collection-game-page .gs-room .gs-room-npc { z-index: 5 !important; }

/* === V0.9.0 — Brocante explorable (scène + joystick) === */
.gs-market-screen {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  background: #05080b;
  overflow: hidden;
}
.gs-market-scene {
  position: relative;
  flex: 1;
  overflow: hidden;
  min-height: 0;
  touch-action: none;
}
.gs-market-world {
  position: absolute;
  left: 0;
  top: 0;
  will-change: transform;
}
.gs-market-bg {
  position: absolute;
  inset: 0;
  background-image: url("../img/room-market-pixel.webp");
  background-size: 100% 100%;
  background-color: #0d0d12;
  image-rendering: pixelated;
}
.gs-market-vendor {
  position: absolute;
  border: 0;
  padding: 0;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: center bottom;
  background-size: contain;
  image-rendering: pixelated;
  /* V0.9.324 : contour pixel discret + ombre au sol. Le contour évite que
     les pieds se fondent dans une caisse/table du décor aplati. */
  filter:
    drop-shadow(1px 0 0 rgba(4,7,10,.82))
    drop-shadow(-1px 0 0 rgba(4,7,10,.82))
    drop-shadow(0 1px 0 rgba(4,7,10,.82))
    drop-shadow(0 -1px 0 rgba(4,7,10,.82))
    drop-shadow(0 6px 8px rgba(0,0,0,.45));
  pointer-events: auto;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.gs-market-vendor:active {
  filter:
    drop-shadow(1px 0 0 rgba(4,7,10,.82))
    drop-shadow(-1px 0 0 rgba(4,7,10,.82))
    drop-shadow(0 1px 0 rgba(4,7,10,.82))
    drop-shadow(0 -1px 0 rgba(4,7,10,.82))
    drop-shadow(0 6px 8px rgba(0,0,0,.45))
    brightness(1.12);
}
.gs-market-vendor.is-walking { will-change: left, top, background-position; }
.gs-market-hero {
  position: absolute;
  transform: translateX(-50%);
  image-rendering: pixelated;
  background-repeat: no-repeat;
  background-position: center bottom;
  background-size: contain;
  filter: drop-shadow(0 8px 10px rgba(0,0,0,.45));
  pointer-events: none;
  transition: none;
}
.gs-market-hero.is-walking { animation: none !important; }
.gs-market-hero-shadow {
  position: absolute;
  left: 50%;
  bottom: -4px;
  width: 64%;
  height: 12%;
  transform: translateX(-50%);
  background: rgba(0,0,0,.34);
  border-radius: 50%;
  filter: blur(2px);
  z-index: -1;
}
/* sprites du héros marché : réutilise les images d'avatar par direction */
.gs-market-hero.gs-sprite-front { background-image: url("../img/avatar/front.webp"); }
.gs-market-hero.gs-sprite-front_left { background-image: url("../img/avatar/front_left.webp"); }
.gs-market-hero.gs-sprite-front_right { background-image: url("../img/avatar/front_right.webp"); }
.gs-market-hero.gs-sprite-left { background-image: url("../img/avatar/left.webp"); }
.gs-market-hero.gs-sprite-right { background-image: url("../img/avatar/right.webp"); }
.gs-market-hero.gs-sprite-back { background-image: url("../img/avatar/back.webp"); }
.gs-market-hero.gs-sprite-back_left { background-image: url("../img/avatar/back_left.webp"); }
.gs-market-hero.gs-sprite-back_right { background-image: url("../img/avatar/back_right.webp"); }
.gs-market-stall {
  position: absolute;
  appearance: none;
  border: 0;
  margin: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
  pointer-events: auto;
  -webkit-tap-highlight-color: transparent;
  border-radius: 10px;
  z-index: 30;
  transition: background .15s ease, box-shadow .15s ease;
}
/* Petit point jaune (même esprit que les zones de la chambre) : signale le stand,
   et entre en surbrillance quand le joueur est assez proche pour parler au marchand */
.gs-market-stall::after {
  content: "";
  position: absolute;
  top: 8px;
  left: 50%;
  width: 9px;
  height: 9px;
  margin-left: -4.5px;
  border-radius: 50%;
  background: rgba(255, 215, 94, .9);
  box-shadow: 0 0 0 0 rgba(255, 215, 94, .55);
  animation: gsDecorPulse 2.4s ease-out infinite;
  pointer-events: none;
  transition: background .2s ease, transform .2s ease;
}
.gs-market-stall.is-near::after {
  background: #fff3c4;
  transform: scale(1.45);
  animation: gsStallNearPulse 1s ease-in-out infinite;
}
@keyframes gsStallNearPulse {
  0%, 100% { box-shadow: 0 0 8px 3px rgba(255, 215, 94, .85); }
  50% { box-shadow: 0 0 16px 7px rgba(255, 215, 94, 1); }
}
.gs-market-stall-tag {
  position: absolute;
  left: 50%;
  bottom: 100%;
  transform: translate(-50%, -4px);
  white-space: nowrap;
  background: rgba(7, 12, 17, .92);
  border: 1px solid rgba(255, 215, 94, .4);
  color: #ffe6b0;
  font-size: 11px;
  font-weight: 700;
  padding: 3px 8px;
  border-radius: 7px;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s ease;
}
.gs-market-stall.is-near .gs-market-stall-tag,
.gs-market-stall:hover .gs-market-stall-tag,
.gs-market-stall:focus-visible .gs-market-stall-tag { opacity: 1; }
.gs-market-zoom {
  position: absolute;
  left: 10px;
  right: auto;
  bottom: 10px;
  z-index: 45;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.gs-market-zoom-btn {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.16);
  background: rgba(10,14,20,.74);
  color: #e8e8ee;
  font-size: 19px;
  font-weight: 700;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  box-shadow: 0 4px 14px rgba(0,0,0,.34);
  padding: 0;
}
.gs-market-zoom-btn:hover { background: rgba(20,26,36,.85); }
.gs-market-zoom-btn:active { transform: scale(.93); }
.gs-market-hud {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: #0c1219;
  border-top: 1px solid rgba(255, 215, 94, .2);
  flex-wrap: wrap;
}
.gs-market-exit {
  appearance: none;
  border: 1px solid rgba(255,255,255,.18);
  background: rgba(255,255,255,.06);
  color: #fff;
  font-weight: 700;
  font-size: 13px;
  padding: 8px 12px;
  border-radius: 10px;
  cursor: pointer;
}
.gs-market-exit:hover { background: rgba(255,255,255,.1); }
.gs-market-hint { color: rgba(233,242,251,.6); font-size: 12px; }
.gs-joystick {
  position: absolute;
  left: auto;
  right: 18px;
  bottom: 64px;
  width: 116px;
  height: 116px;
  border-radius: 50%;
  background: rgba(10,16,22,.45);
  border: 2px solid rgba(255,255,255,.16);
  touch-action: none;
  z-index: 40;
}
.gs-joystick-knob {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 50px;
  height: 50px;
  margin: -25px 0 0 -25px;
  border-radius: 50%;
  background: radial-gradient(circle at 40% 35%, #ffe6b0, #d8233b);
  box-shadow: 0 4px 12px rgba(0,0,0,.5);
}
/* joystick masqué sur desktop (souris : clic-sol) */


/* Bouton retour au marché depuis le marchandage (V0.9.2) */
.gs-lot-back {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 5;
  appearance: none;
  border: 1px solid rgba(255,255,255,.18);
  background: rgba(12,18,25,.85);
  color: #fff;
  font-weight: 700;
  font-size: 13px;
  padding: 7px 12px;
  border-radius: 10px;
  cursor: pointer;
}
.gs-lot-back:hover { background: rgba(255,255,255,.12); }
.gs-lot-head { position: relative; }

/* V0.9.14 — points d'action visibles + notice brocante */
.gs-market-actions {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-weight: 800;
  font-size: 13px;
  color: #ffd36b;
  background: rgba(255, 215, 94, .12);
  border: 1px solid rgba(255, 215, 94, .35);
  padding: 6px 10px;
  border-radius: 999px;
  white-space: nowrap;
}
.gs-market-notice {
  position: absolute;
  top: 14%;
  left: 50%;
  transform: translateX(-50%);
  max-width: 80%;
  z-index: 60;
  background: rgba(20, 12, 6, .94);
  border: 1px solid rgba(255, 180, 80, .55);
  color: #ffe6c0;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  text-align: center;
  padding: 10px 14px;
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, .45);
  animation: gsMarketNoticeIn .25s ease;
  pointer-events: none;
}
@keyframes gsMarketNoticeIn {
  from { opacity: 0; transform: translate(-50%, -8px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

/* ===== V0.9.15 — Dialogue marchand (style Daggerfall, panneau bas) ===== */
.gs-market-dialogue {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  z-index: 70;
  display: flex;
  justify-content: center;
  padding: 14px 12px calc(14px + env(safe-area-inset-bottom, 0px));
  background: linear-gradient(to top, rgba(0,0,0,.6), rgba(0,0,0,0));
  pointer-events: none;
  animation: gs-md-rise .18s ease-out;
}
.gs-market-dialogue-card {
  pointer-events: auto;
  width: 100%;
  max-width: 560px;
  display: flex;
  gap: 12px;
  align-items: stretch;
  background: rgba(10, 14, 20, .97);
  border: 2px solid rgba(255, 215, 94, .5);
  border-radius: 14px;
  box-shadow: 0 -8px 30px rgba(0,0,0,.55);
  padding: 12px;
}
.gs-market-dialogue-portrait {
  flex: 0 0 auto;
  width: 84px; height: 84px;
  border-radius: 10px;
  overflow: hidden;
  background: rgba(0,0,0,.35);
  border: 1px solid rgba(255, 215, 94, .35);
  display: grid; place-items: center;
}
.gs-market-dialogue-portrait .gs-npc { width: 100%; height: 100%; display: block; }
.gs-market-dialogue-portrait img { width: 100%; height: 100%; object-fit: cover; image-rendering: pixelated; }
.gs-market-dialogue-body {
  flex: 1 1 auto; min-width: 0;
  display: flex; flex-direction: column; gap: 8px;
}
.gs-market-dialogue-name {
  font-weight: 800; color: #ffd75e; font-size: 15px;
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
}
.gs-market-dialogue-stall { font-weight: 600; color: #9fb4c8; font-size: 12px; }
.gs-market-dialogue-line { margin: 0; color: #e8eef5; font-size: 14px; line-height: 1.45; }
.gs-market-dialogue-aside { margin: 2px 0 0; color: #b9c7d8; font-size: 13px; line-height: 1.4; font-style: italic; }
.gs-market-dialogue-trait { margin: 2px 0 0; color: #ffd75e; font-size: 12px; font-weight: 700; }
.gs-market-dialogue-actions { display: flex; gap: 10px; margin-top: auto; flex-wrap: wrap; }
.gs-md-btn {
  appearance: none; border: 0; border-radius: 10px;
  padding: 10px 14px; font-size: 14px; font-weight: 700;
  cursor: pointer; -webkit-tap-highlight-color: transparent;
}
.gs-md-look { background: #ffd75e; color: #1a1206; }
.gs-md-leave { background: rgba(255,255,255,.1); color: #cdd8e4; }
@keyframes gs-md-rise {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* === V0.9.19 : contrôle de zoom de la chambre === */
.gs-room-zoom { position: absolute; right: 10px; bottom: 92px; z-index: 45; display: flex; flex-direction: column; gap: 6px; }
.gs-room-zoom-btn { width: 38px; height: 38px; border-radius: 10px; border: 1px solid rgba(255,255,255,.16); background: rgba(10,14,20,.74); color: #e8e8ee; font-size: 19px; font-weight: 700; line-height: 1; display: flex; align-items: center; justify-content: center; cursor: pointer; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); box-shadow: 0 4px 14px rgba(0,0,0,.34); padding: 0; }
.gs-room-zoom-btn:hover { background: rgba(20,26,36,.85); }
.gs-room-zoom-btn:active { transform: scale(.93); }

/* --- Points d'interaction par-objet (V0.9.20) --- */
/* V0.9.95 : le z-index est désormais piloté par le moteur (data-ground-y) pour que
   le dot se trie en profondeur avec le perso. On retire le z-index:38 fixe qui le
   faisait passer devant le personnage. Valeur de repli basse via le layout JS. */
.gs-obj-dot { position:absolute; border:0; background:transparent; padding:0; cursor:pointer; z-index:6; display:flex; align-items:center; justify-content:center; -webkit-tap-highlight-color:transparent; transition:transform .16s ease; }
.gs-obj-dot::after { content:''; position:absolute; inset:-12px; background:transparent; border-radius:50%; }
.gs-obj-dot::before { content:""; position:relative; width:62%; height:62%; border-radius:50%; background:radial-gradient(circle at 35% 30%, #fff0b8, #ffce2e 55%, #d99a00); border:2px solid rgba(90,60,0,.7); box-shadow:0 0 9px 3px rgba(255,200,50,.5), 0 2px 4px rgba(0,0,0,.45); transition:box-shadow .18s ease, filter .18s ease; }
.gs-obj-dot-pulse { position:absolute; left:50%; top:50%; width:60%; height:60%; transform:translate(-50%,-50%); border-radius:50%; border:2px solid rgba(255,210,70,.75); animation:gsObjPulse 1.8s ease-out infinite; pointer-events:none; }
@keyframes gsObjPulse { 0%{transform:translate(-50%,-50%) scale(.7);opacity:.85;} 100%{transform:translate(-50%,-50%) scale(1.7);opacity:0;} }
.gs-obj-dot:hover::before, .gs-obj-dot:active::before { filter:brightness(1.15); }
/* Label de proximité (style brocante) : masqué par défaut, révélé quand le perso approche. */
.gs-obj-dot-label {
  position:absolute; left:50%; bottom:118%; transform:translate(-50%, 6px);
  padding:3px 9px; border-radius:999px; white-space:nowrap;
  font:800 11px/1 system-ui, "Segoe UI", sans-serif; letter-spacing:.02em;
  color:#fff6cf; background:rgba(9,12,14,.86); border:1px solid rgba(255,206,46,.7);
  box-shadow:0 4px 12px rgba(0,0,0,.45); opacity:0; pointer-events:none;
  transition:opacity .18s ease, transform .18s ease;
}
/* État « proche » : le dot grossit, brille plus fort et fait apparaître le label. */
.gs-obj-dot.is-near { z-index:32 !important; }
.gs-obj-dot.is-near::before { box-shadow:0 0 14px 5px rgba(255,214,72,.85), 0 2px 6px rgba(0,0,0,.5); filter:brightness(1.18); }
.gs-obj-dot.is-near .gs-obj-dot-label { opacity:1; transform:translate(-50%, 0); }
.gs-obj-dot.is-near .gs-obj-dot-pulse { border-color:rgba(255,226,120,.95); }



/* === V0.9.26 — Zoom calque monde stable ===
   La chambre zoome desormais comme un seul calque. Les props, dots et sprites
   restent donc verrouilles ensemble pendant le pincement. */
.gs-room.is-zooming .gs-room-world {
  will-change: transform;
}
.gs-room.is-zooming .gs-life-character {
  transition: none !important;
  will-change: left, bottom, width, height;
}
.gs-room.is-zooming .gs-life-sprite,
.gs-room.is-zooming .gs-room-npc,
.gs-room.is-zooming .gs-obj-dot-pulse {
  animation-play-state: paused !important;
}


/* === V0.9.27 — Pan caméra mobile sur zones vides ===
   L'UI ne doit pas former un voile tactile invisible au-dessus de la pièce :
   seuls ses éléments visibles restent cliquables. Le reste laisse le glisser
   parvenir au calque monde. */
body.gs-collection-game-page .gs-room-content {
  pointer-events: none !important;
}
body.gs-collection-game-page .gs-room-content .gs-room-titlebar,
body.gs-collection-game-page .gs-room-content .gs-room-bottom,
body.gs-collection-game-page .gs-room-content .gs-room-side-stack,
body.gs-collection-game-page .gs-room-content .gs-room-action-hotspots {
  pointer-events: none !important;
}
body.gs-collection-game-page .gs-room-content .gs-room-zoom,
body.gs-collection-game-page .gs-room-content .gs-room-visitor,
body.gs-collection-game-page .gs-room-content .gs-room-collection-panel,
body.gs-collection-game-page .gs-room-content .gs-scene-action,
body.gs-collection-game-page .gs-room-content [data-action],
body.gs-collection-game-page .gs-room-content [data-screen],
body.gs-collection-game-page .gs-room-content button {
  pointer-events: auto !important;
}
.gs-room.is-panning .gs-room-world {
  will-change: transform;
}
.gs-room.is-panning .gs-life-character {
  transition: none !important;
}
.gs-room.is-panning .gs-life-sprite,
.gs-room.is-panning .gs-room-npc {
  animation-play-state: paused !important;
}

/* Marche RPG Maker : la planche garde le gabarit du sprite immobile. */
.gs-life-sprite[data-walk-dir],
.gs-market-hero[data-walk-dir] {
  background-repeat: no-repeat !important;
  image-rendering: pixelated;
}


/* === V0.9.30 — Commande de marche a droite ===
   La main droite pilote le personnage ; les commandes de zoom passent a gauche
   pour conserver deux zones tactiles distinctes, meme sur petit ecran. */
.gs-market-screen .gs-joystick {
  left: auto;
  right: 18px;
}
.gs-market-screen .gs-market-zoom {
  left: 10px;
  right: auto;
}


/* === V0.9.32 — accès musique depuis le menu === */
.gs-menu-music-toggle {
  position: absolute;
  left: 50%;
  bottom: 74px;
  z-index: 9;
  transform: translateX(-50%);
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 999px;
  padding: 8px 13px;
  background: rgba(7,10,15,.72);
  color: #f7f1e7;
  font: 700 12px/1 system-ui, sans-serif;
  letter-spacing: .02em;
  box-shadow: 0 5px 18px rgba(0,0,0,.32);
  cursor: pointer;
}
.gs-menu-music-toggle:active { transform: translateX(-50%) scale(.96); }


/* === V0.9.34 — Atelier Personnalisation : porter / poser / ranger === */
.gs-room.is-customize-mode .gs-room-shade {
  background:
    linear-gradient(180deg, rgba(3,7,10,.32), rgba(3,7,10,.04) 24%, rgba(3,7,10,.08) 76%, rgba(3,7,10,.42)),
    linear-gradient(90deg, rgba(3,7,10,.20), transparent 20%, transparent 80%, rgba(3,7,10,.18));
}
.gs-room.is-customize-mode .gs-life-character { z-index: 34 !important; }
.gs-room-prop.is-customize-prop { transition: filter .14s ease, opacity .14s ease; }
.gs-room-prop.is-customize-prop.is-placement-obstacle {
  filter: sepia(1) saturate(2.8) brightness(1.34) hue-rotate(4deg) drop-shadow(0 0 7px rgba(255,215,55,.62));
}
.gs-custom-carry-preview {
  pointer-events: none !important;
  opacity: .50 !important;
  background-blend-mode: normal;
  transition: filter .1s ease, opacity .1s ease;
}
.gs-room-prop.gs-custom-carry-preview.gs-prop-tv.is-on {
  animation: none !important;
  filter: none !important;
  opacity: .46 !important;
}
.gs-custom-carry-preview.is-valid {
  filter: drop-shadow(0 0 5px rgba(75,255,151,.82)) drop-shadow(0 0 11px rgba(58,215,111,.52)) !important;
}
.gs-custom-carry-preview.is-invalid {
  filter: grayscale(.08) sepia(1) saturate(3.2) hue-rotate(322deg) drop-shadow(0 0 7px rgba(255,69,69,.86)) !important;
}
.gs-custom-prop-actions {
  position: absolute;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  opacity: 0;
  pointer-events: none;
  transform: translateY(-4px) scale(.92);
  transition: opacity .14s ease, transform .14s ease;
  white-space: nowrap;
}
.gs-custom-prop-actions.is-near {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(-7px) scale(1);
}
.gs-custom-green-dot {
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #d8ffe3, #5cf494 53%, #139a4e);
  border: 2px solid rgba(4,65,30,.86);
  box-shadow: 0 0 0 4px rgba(76,255,143,.22), 0 0 13px 5px rgba(76,255,143,.58);
  animation: gsCustomizeGreenPulse 1.3s ease-in-out infinite alternate;
}
@keyframes gsCustomizeGreenPulse { from { transform: scale(.9); } to { transform: scale(1.14); } }
.gs-custom-prop-actions button {
  appearance: none;
  border: 1px solid rgba(238,255,242,.7);
  background: rgba(8,46,27,.94);
  color: #effff4;
  padding: 4px 6px;
  border-radius: 7px;
  font-size: 9px;
  line-height: 1;
  font-weight: 900;
  letter-spacing: .03em;
  cursor: pointer;
  box-shadow: 0 3px 9px rgba(0,0,0,.42);
}
.gs-custom-prop-actions button:last-child { background: rgba(61,41,10,.94); color: #ffe9a8; }
.gs-customize-hud {
  position: absolute;
  left: 10px;
  bottom: 12px;
  z-index: 44;
  width: min(270px, calc(100% - 146px));
  display: grid;
  gap: 7px;
  pointer-events: auto;
}
.gs-customize-carry-card,
.gs-customize-storage,
.gs-customize-help {
  border: 1px solid rgba(192,239,213,.28);
  background: rgba(5,16,13,.88);
  color: #eaffef;
  border-radius: 11px;
  padding: 8px;
  box-shadow: 0 6px 18px rgba(0,0,0,.34);
  -webkit-backdrop-filter: blur(5px);
  backdrop-filter: blur(5px);
}
.gs-customize-carry-card strong,
.gs-customize-storage strong { display:block; font-size: 12px; }
.gs-customize-carry-card small,
.gs-customize-storage small { display:block; margin-top: 3px; color: rgba(232,255,240,.76); font-size: 10px; line-height: 1.25; }
.gs-custom-carry-status { color: #90ffb7 !important; font-weight: 800; }
.gs-custom-carry-status.is-invalid { color: #ff9c9c !important; }
.gs-customize-carry-card > div { display:flex; gap:5px; margin-top: 7px; flex-wrap: wrap; }
.gs-customize-carry-card button,
.gs-customize-storage button {
  appearance:none;
  border:1px solid rgba(255,255,255,.24);
  background:rgba(255,255,255,.09);
  color:#f3fff6;
  padding:5px 7px;
  border-radius:7px;
  font-size:10px;
  font-weight:900;
  cursor:pointer;
}
.gs-customize-carry-card button.is-primary { background:linear-gradient(180deg,#2dba69,#10763d); border-color:rgba(190,255,212,.72); }
.gs-customize-carry-card button[disabled] { opacity:.42; cursor:not-allowed; }
.gs-customize-storage > div { display:flex; gap:5px; flex-wrap:wrap; margin-top:6px; }
.gs-customize-storage.is-empty { opacity:.75; }
.gs-customize-help { display:flex; gap:7px; align-items:center; flex-wrap:wrap; padding:6px 8px; font-size:10px; }
.gs-customize-help span { font-weight:800; }
.gs-customize-help small { color:rgba(232,255,240,.72); }
.gs-room.is-customize-mode .gs-room-zoom { left: 10px; right:auto; bottom: 152px; }
.gs-room.is-customize-mode .gs-customize-joystick { left:auto; right:16px; bottom:16px; z-index:46; }




/* === V0.9.35 — Atelier épuré et joystick robuste === */
.gs-room.is-customize-mode .gs-room-titlebar,
.gs-room.is-customize-mode .gs-room-zoom { display: none !important; }
.gs-customize-exit {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 48;
  appearance: none;
  border: 1px solid rgba(230,255,240,.45);
  border-radius: 10px;
  padding: 8px 11px;
  background: rgba(5,20,14,.86);
  color: #eaffef;
  font-size: 12px;
  font-weight: 900;
  box-shadow: 0 4px 14px rgba(0,0,0,.34);
  cursor: pointer;
}
.gs-customize-exit:active { transform: scale(.96); }
.gs-customize-mode-header {
  position: absolute;
  top: 10px;
  left: 10px;
  right: 10px;
  z-index: 200;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  pointer-events: none;
}
.gs-customize-mode-header .gs-customize-exit {
  position: relative;
  top: auto;
  left: auto;
  z-index: 201;
  flex: 0 0 auto;
  pointer-events: auto;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}
.gs-customize-mode-banner {
  display: grid;
  gap: 2px;
  max-width: min(390px, 100%);
  padding: 8px 11px;
  border: 1px solid rgba(255, 216, 107, .7);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(61, 43, 9, .96), rgba(24, 20, 8, .94));
  color: #fff2bb;
  box-shadow: 0 5px 18px rgba(0, 0, 0, .34), inset 0 0 0 1px rgba(255, 247, 195, .08);
  pointer-events: none;
}
.gs-customize-mode-banner strong {
  color: #ffe07a;
  font-size: 12px;
  letter-spacing: .08em;
  line-height: 1.1;
}
.gs-customize-mode-banner small {
  color: rgba(255, 248, 213, .9);
  font-size: 10px;
  line-height: 1.25;
}
.gs-customize-mode-banner b { color: #fff; }
.gs-customize-joystick {
  pointer-events: auto !important;
  touch-action: none;
  -webkit-user-select: none;
  user-select: none;
}
.gs-room.is-customize-mode .gs-customize-hud:empty { display: none; }



/* === Agide GS — signature moteur visible, sans modifier les identifiants historiques === */
.gs-menu-engine-watermark {
  position: absolute;
  right: clamp(14px, 3.2vw, 42px);
  top: clamp(14px, 3.2vw, 42px);
  z-index: 6;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
  pointer-events: none;
  user-select: none;
  color: rgba(255,247,235,.66);
  text-align: right;
  text-transform: uppercase;
  text-shadow: 0 2px 14px rgba(0,0,0,.92), 0 0 22px rgba(174,18,26,.22);
  opacity: .78;
}
.gs-menu-engine-watermark span {
  font-size: clamp(8px, .75vw, 11px);
  font-weight: 800;
  letter-spacing: .16em;
}
.gs-menu-engine-watermark strong {
  font-size: clamp(14px, 1.45vw, 24px);
  line-height: 1;
  letter-spacing: .06em;
  font-weight: 900;
}
.gs-menu-engine-watermark strong b {
  color: #e75046;
  font-style: normal;
}



/* === V0.9.47 — Prologue du nouveau départ === */
.gs-game-shell.is-intro-shell {
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  min-height: 660px;
}
.gs-game-shell.is-intro-shell .gs-intro-content {
  grid-row: 1;
  min-height: 0;
  height: 100%;
}
.gs-game-shell.is-intro-shell .gs-room {
  height: 100%;
  min-height: 0;
  border-radius: 0;
  border: 0;
}
.gs-room.is-intro-mode .gs-room-shade {
  background:
    linear-gradient(180deg, rgba(3,7,10,.53), rgba(3,7,10,.10) 26%, rgba(3,7,10,.16) 76%, rgba(3,7,10,.62)),
    linear-gradient(90deg, rgba(3,7,10,.36), transparent 22%, transparent 78%, rgba(3,7,10,.34));
}
.gs-room.is-intro-mode .gs-room-vignette {
  box-shadow: inset 0 0 180px rgba(0,0,0,.63);
}
.gs-room.is-intro-mode .gs-room-prop,
.gs-room.is-intro-mode .gs-life-character {
  pointer-events: none !important;
}
.gs-room.is-intro-mode.is-intro-walk .gs-life-character {
  animation: gsIntroArrival .46s ease-out both;
}
@keyframes gsIntroArrival {
  from { opacity: 0; filter: brightness(.72); }
  to { opacity: 1; filter: none; }
}
.gs-first-home-dialogue {
  position: absolute;
  inset: 0;
  z-index: 82;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding: clamp(16px, 4vw, 44px);
  pointer-events: none;
  background: linear-gradient(180deg, transparent 34%, rgba(2,5,8,.10) 54%, rgba(2,5,8,.64));
  animation: gsIntroDialogueFade .32s ease both;
}
@keyframes gsIntroDialogueFade { from { opacity: 0; } to { opacity: 1; } }
.gs-first-home-dialogue-card {
  width: min(570px, 100%);
  pointer-events: auto;
  padding: 18px 18px 16px;
  border: 1px solid rgba(255,233,172,.36);
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(21,25,26,.96), rgba(8,13,15,.98));
  color: #f4f0e5;
  box-shadow: 0 22px 58px rgba(0,0,0,.60), inset 0 1px 0 rgba(255,255,255,.05);
  text-align: left;
  animation: gsIntroDialogueRise .36s cubic-bezier(.3,1.25,.55,1) both;
}
@keyframes gsIntroDialogueRise { from { transform: translateY(18px); opacity: 0; } to { transform:none; opacity:1; } }
.gs-first-home-kicker {
  display: block;
  color: #f1ca69;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .14em;
  margin-bottom: 5px;
}
.gs-first-home-dialogue-card h2 {
  margin: 0 0 8px;
  font-size: clamp(20px, 4vw, 28px);
  line-height: 1;
  color: #fff8e8;
}
.gs-first-home-dialogue-card p {
  margin: 0 0 15px;
  color: rgba(243,242,234,.84);
  font-size: clamp(13px, 2.8vw, 16px);
  line-height: 1.48;
}
.gs-first-home-dialogue-card button {
  appearance: none;
  width: 100%;
  border: 1px solid rgba(255,233,173,.62);
  border-radius: 11px;
  padding: 12px 14px;
  background: linear-gradient(180deg, #e43e4f, #a9182d);
  color: #fff;
  font-weight: 900;
  font-size: 13px;
  letter-spacing: .02em;
  cursor: pointer;
  box-shadow: 0 6px 18px rgba(0,0,0,.28);
}
.gs-first-home-dialogue-card button:active { transform: scale(.98); }



/* === V0.9.48 — Préchargement réel du prologue ===
   Première connexion : la chambre reste noire tant que les images utiles ne
   sont pas décodées. Le reveal ne peut donc plus afficher des props par à-coups. */
.gs-room.is-intro-mode.is-intro-loading .gs-room-world,
.gs-room.is-intro-mode.is-intro-loading .gs-room-shade,
.gs-room.is-intro-mode.is-intro-loading .gs-room-vignette {
  opacity: 0;
  visibility: hidden;
}
.gs-first-home-loader {
  position: absolute;
  inset: 0;
  z-index: 96;
  display: grid;
  place-items: center;
  padding: 24px;
  background: #020304;
  color: #f1eee6;
  text-align: center;
}
.gs-first-home-loader > div {
  display: grid;
  gap: 7px;
  justify-items: center;
  animation: gsIntroLoaderIn .24s ease both;
}
.gs-first-home-loader-mark {
  color: #efc65e;
  font-size: 11px;
  font-weight: 950;
  letter-spacing: .18em;
}
.gs-first-home-loader strong { font-size: 16px; letter-spacing: .01em; }
.gs-first-home-loader small { color: rgba(236,234,226,.58); font-size: 12px; }
@keyframes gsIntroLoaderIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }


/* === V0.9.49 — Navigation par la porte de sortie === */
.gs-door-dot { z-index: 40 !important; }


/* V0.9.51 — dialogue d'effort */
.gs-room-prompt-training { background:linear-gradient(180deg,#16221d,#0b1510); border-color:rgba(115,240,158,.34); box-shadow:0 24px 60px rgba(0,0,0,.58), inset 0 0 54px rgba(73,255,135,.05); }
.gs-room-prompt-training h3 { color:#caffd8; }



/* === V0.9.59 — Entrée en fondu après préchargement du menu ===
   La scène est déjà décodée derrière ce voile noir avant d'être révélée. */
.gs-launch-curtain {
  position: absolute;
  inset: 0;
  z-index: 220;
  display: grid;
  place-items: center;
  overflow: hidden;
  pointer-events: all;
  background: #020304;
  color: rgba(244,238,224,.48);
  opacity: 1;
  will-change: opacity;
}
.gs-launch-curtain::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 58%, rgba(165,25,32,.12), transparent 36%),
    linear-gradient(180deg, rgba(255,255,255,.015), transparent 18%);
}
.gs-launch-curtain span {
  position: relative;
  z-index: 1;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .14em;
  text-transform: uppercase;
  opacity: .72;
}
.gs-launch-curtain.is-revealing {
  animation: gsLaunchSceneReveal .72s cubic-bezier(.22,.74,.25,1) forwards;
  pointer-events: none;
}
@keyframes gsLaunchSceneReveal {
  0% { opacity: 1; }
  22% { opacity: .98; }
  100% { opacity: 0; }
}



/* === V0.9.61 — Pause rêverie sur le tapis ===
   Le personnage est sans tapis : le prop tapis de la chambre reste le support visuel. */
.gs-room-relax {
  position: absolute;
  pointer-events: none;
  z-index: 24;
  filter: drop-shadow(0 7px 9px rgba(0,0,0,.32));
  animation: gsRelaxAppear .16s ease-out both;
}
.gs-room-relax-sprite {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center bottom;
  display: block;
  background: transparent !important;
  /* V0.9.98 : anti-aliasing cuit dans l'alpha -> retour à pixelated, cohérent. */
  image-rendering: pixelated;
  user-select: none;
  -webkit-user-drag: none;
}
.gs-room-relax-thought {
  position: absolute;
  left: 68%;
  top: 30%;
  width: 23%;
  max-height: 25%;
  object-fit: contain;
  object-position: center;
  image-rendering: pixelated;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,.24));
  animation: gsRelaxThoughtFloat 2.4s ease-in-out infinite;
}
.gs-room-relax[data-phase="up"] .gs-room-relax-sprite { animation: gsRelaxReturn .15s ease-out both; }
@keyframes gsRelaxAppear { from { opacity: 0; transform: translateY(2px) scale(.985); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes gsRelaxReturn { from { opacity: .88; } to { opacity: 1; } }
@keyframes gsRelaxThoughtFloat { 0%, 100% { transform: translate(-50%, 0) rotate(-2deg); opacity: .92; } 50% { transform: translate(-50%, -7px) rotate(2deg); opacity: 1; } }


/* === V0.9.63 — TV : choix de chaîne + séance installée === */
.gs-tv-series-overlay {
  position: absolute;
  inset: 0;
  z-index: 100;
  display: grid;
  place-items: center;
  padding: clamp(8px, 2.4vw, 28px);
  overflow: auto;
  background: rgba(1, 4, 7, .80);
  backdrop-filter: blur(5px);
  animation: gsTvHudFade .18s ease both;
}
@keyframes gsTvHudFade { from { opacity: 0; } to { opacity: 1; } }
.gs-tv-series-panel {
  --gs-tv-hud-scale: 1;
  --gs-tv-hud-scale-start: .965;
  position: relative;
  width: min(1120px, 100%);
  aspect-ratio: 1672 / 941;
  flex: 0 0 auto;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  filter: drop-shadow(0 26px 54px rgba(0,0,0,.72));
  animation: gsTvHudPanel .24s cubic-bezier(.25, 1.28, .48, 1) both;
}
@keyframes gsTvHudPanel { from { transform: translateY(14px) scale(var(--gs-tv-hud-scale-start)); opacity: 0; } to { transform: scale(var(--gs-tv-hud-scale)); opacity: 1; } }
.gs-tv-series-hotspot {
  position: absolute;
  display: block;
  border: 0;
  border-radius: 13px;
  padding: 0;
  cursor: pointer;
  background: transparent;
  color: transparent;
  -webkit-tap-highlight-color: transparent;
  transition: box-shadow .12s ease, background .12s ease, transform .12s ease;
}
.gs-tv-series-hotspot span {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.gs-tv-series-hotspot-1 { left: 27.1%; top: 23.6%; width: 22.8%; height: 26.6%; }
.gs-tv-series-hotspot-2 { left: 50.7%; top: 23.6%; width: 22.8%; height: 26.6%; }
.gs-tv-series-hotspot-3 { left: 27.1%; top: 51.4%; width: 22.8%; height: 25.4%; }
.gs-tv-series-hotspot-4 { left: 50.7%; top: 51.4%; width: 22.8%; height: 25.4%; }
.gs-tv-series-hotspot:hover,
.gs-tv-series-hotspot:focus-visible {
  outline: 0;
  background: rgba(255, 255, 255, .035);
  box-shadow: inset 0 0 0 3px rgba(255, 234, 190, .85), 0 0 0 2px rgba(0,0,0,.72), 0 0 20px rgba(208, 56, 57, .68);
}
.gs-tv-series-hotspot:active { transform: scale(.985); }
.gs-tv-series-close {
  position: absolute;
  top: 4.4%;
  right: 8.1%;
  min-height: 28px;
  padding: 5px 9px;
  border: 1px solid rgba(249, 221, 177, .42);
  border-radius: 7px;
  background: rgba(2, 5, 8, .76);
  color: #f5d9ad;
  font: 800 clamp(9px, 1.2vw, 13px)/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .07em;
  text-transform: uppercase;
  cursor: pointer;
  opacity: .84;
  transition: opacity .12s ease, background .12s ease, transform .12s ease;
}
.gs-tv-series-close:hover,
.gs-tv-series-close:focus-visible {
  outline: 0;
  opacity: 1;
  background: rgba(112, 18, 25, .88);
  transform: translateY(-1px);
}
/* V0.9.64 : vrais sprites assis au sol. Aucun écrasement CSS ni fausse chaise. */
.gs-life-watching-tv.is-seated .gs-life-sprite {
  animation: gsTvWatcherIdle 3.1s ease-in-out infinite;
  transform-origin: 50% 100%;
}
.gs-life-watching-tv.is-seated .gs-life-shadow {
  bottom: 0;
  width: 72%;
  height: 9%;
  opacity: .72;
}
.gs-life-watching-tv.is-seated .gs-life-bubble {
  min-width: 156px;
  color: #d8edff;
  border-color: rgba(83, 213, 255, .34);
  background: rgba(5, 13, 22, .88);
}
@keyframes gsTvWatcherIdle {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-1.6%); }
}




/* === V0.9.69 — Navigation basse affinée (hauteurs, press/hover, rendu premium) === */
.gs-tabs.gs-tabs-room-nav {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
  padding: 8px 10px 12px;
  margin: 0;
  background: linear-gradient(180deg, rgba(7,9,13,.96), rgba(2,4,7,.985));
  border-top: 1px solid rgba(255,255,255,.05);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.025), 0 -10px 24px rgba(0,0,0,.34);
  overflow: visible;
  isolation: isolate;
}
.gs-tabs.gs-tabs-room-nav::before {
  content: "";
  position: absolute;
  left: 10px;
  right: 10px;
  top: 7px;
  height: 52px;
  background: url("../img/ui/nav/bar-bg.webp") center / 100% 100% no-repeat;
  opacity: .68;
  pointer-events: none;
  z-index: 0;
}
.gs-tabs.gs-tabs-room-nav button,
.gs-tabs.gs-tabs-room-nav .gs-tab-menu {
  position: relative;
  z-index: 1;
  appearance: none;
  min-height: 47px;
  border: 0 !important;
  border-radius: 0;
  background-color: transparent !important;
  background-image: url("../img/ui/nav/tab-normal.webp");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 100% 100%;
  box-shadow: none !important;
  color: #f5efe4;
  text-shadow: 0 2px 0 rgba(0,0,0,.62);
  font-weight: 800;
  font-size: 12px;
  letter-spacing: .01em;
  line-height: 1;
  padding: 0 8px 2px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  transform: translateY(0) scale(1);
  transition: transform .14s ease, filter .14s ease, color .14s ease, opacity .14s ease;
  -webkit-tap-highlight-color: transparent;
  image-rendering: pixelated;
}
.gs-tabs.gs-tabs-room-nav button::after,
.gs-tabs.gs-tabs-room-nav .gs-tab-menu::after {
  content: "";
  position: absolute;
  inset: 10% 8% auto 8%;
  height: 26%;
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(255,255,255,.18), rgba(255,255,255,0));
  opacity: .28;
  pointer-events: none;
}
.gs-tabs.gs-tabs-room-nav button:hover,
.gs-tabs.gs-tabs-room-nav .gs-tab-menu:hover,
.gs-tabs.gs-tabs-room-nav button:focus-visible,
.gs-tabs.gs-tabs-room-nav .gs-tab-menu:focus-visible {
  transform: translateY(-1px) scale(1.01);
  filter: brightness(1.06);
  outline: none;
}
.gs-tabs.gs-tabs-room-nav button:active,
.gs-tabs.gs-tabs-room-nav .gs-tab-menu:active {
  transform: translateY(1px) scale(.985);
  filter: brightness(.95);
}
.gs-tabs.gs-tabs-room-nav button.active {
  background-image: url("../img/ui/nav/tab-active.webp");
  color: #fff8e6;
  text-shadow: 0 1px 0 rgba(111,12,12,.36), 0 2px 0 rgba(58,0,0,.52);
  filter: saturate(1.03) brightness(1.015);
}
.gs-tabs.gs-tabs-room-nav button.active::after {
  opacity: .18;
}
.gs-tabs.gs-tabs-room-nav .gs-tab-menu {
  grid-column: 1 / -1;
  min-height: 45px;
  background-image: url("../img/ui/nav/menu-normal.webp");
  color: #ece7de;
  font-size: 13px;
  letter-spacing: .015em;
}






/* === V0.9.70 — Programmes TV : narration lisible, arrêt immédiat et progression === */
.gs-tv-series-hotspot b {
  position: absolute;
  right: 7px;
  bottom: 7px;
  display: grid;
  place-items: center;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  border-radius: 99px;
  background: rgba(5, 9, 14, .82);
  border: 1px solid rgba(249, 221, 177, .52);
  color: #f8dfb7;
  font: 800 10px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  box-shadow: 0 2px 7px rgba(0,0,0,.42);
}
.gs-tv-series-hotspot.is-empty { opacity: .46; cursor: not-allowed; }
.gs-tv-series-hotspot.is-empty b { color: #c7a99a; border-color: rgba(199,169,154,.32); }
.gs-room.is-tv-watching .gs-room-bottom,
.gs-room.is-tv-watching .gs-room-action-hotspots,
.gs-room.is-tv-watching .gs-room-zoom { opacity: 0; pointer-events: none !important; }
.gs-tv-watching-hud {
  position: absolute;
  z-index: 62;
  left: clamp(10px, 5.2%, 84px);
  right: clamp(10px, 5.2%, 84px);
  bottom: clamp(10px, 3.1%, 34px);
  max-width: 900px;
  margin: 0 auto;
  padding: 13px 15px 12px;
  border: 1px solid rgba(245, 213, 154, .48);
  border-radius: 13px;
  background:
    linear-gradient(135deg, rgba(54, 9, 14, .94), rgba(12, 14, 20, .96) 54%, rgba(7, 10, 15, .97)),
    rgba(7, 10, 15, .96);
  box-shadow: 0 18px 48px rgba(0,0,0,.56), inset 0 1px 0 rgba(255,255,255,.09), inset 0 0 34px rgba(201, 33, 42, .08);
  backdrop-filter: blur(9px);
  animation: gsTvNarrativeIn .22s ease both;
}
@keyframes gsTvNarrativeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.gs-tv-watching-meta { display: flex; align-items: flex-start; gap: 14px; justify-content: space-between; }
.gs-tv-watching-meta > div { min-width: 0; display: grid; gap: 2px; }
.gs-tv-watching-meta small { color: rgba(255,229,190,.7); font: 800 10px/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .08em; text-transform: uppercase; }
.gs-tv-watching-meta strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #fff0d1; font-size: 18px; line-height: 1.1; letter-spacing: .01em; }
.gs-tv-watching-meta em { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: rgba(219,226,234,.72); font-size: 11px; line-height: 1.2; font-style: normal; }
.gs-tv-watching-count { flex: 0 0 auto; margin-top: 2px; padding: 6px 8px; border-radius: 6px; background: rgba(0,0,0,.35); border: 1px solid rgba(245,213,154,.23); color: #f6d39d; font: 800 10px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .06em; }
.gs-tv-watching-progress { height: 4px; overflow: hidden; margin: 10px 0 10px; border-radius: 99px; background: rgba(255,255,255,.10); box-shadow: inset 0 1px 2px rgba(0,0,0,.42); }
.gs-tv-watching-progress i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #a8252e, #f0be73); box-shadow: 0 0 10px rgba(240,190,115,.28); transition: width .3s ease; }
.gs-tv-watching-text { margin: 0; min-height: 6.2em; max-height: none; overflow: hidden; padding-right: 0; color: #f7f2e9; font-size: 14px; line-height: 1.52; text-wrap: pretty; }
.gs-tv-watching-whisper { display: block; margin-top: 7px; color: rgba(246,210,162,.78); font-size: 11px; font-style: italic; }
.gs-tv-watching-actions { display: flex; gap: 8px; justify-content: flex-end; align-items: center; margin-top: 11px; }
.gs-tv-watching-actions button { min-height: 32px; padding: 0 10px; border-radius: 8px; cursor: pointer; font-weight: 800; font-size: 12px; transition: transform .12s ease, filter .12s ease, background .12s ease; }
.gs-tv-watching-actions button:hover,
.gs-tv-watching-actions button:focus-visible { outline: 0; transform: translateY(-1px); filter: brightness(1.08); }
.gs-tv-watching-actions button:active { transform: translateY(1px); }
.gs-tv-next-scene { border: 1px solid rgba(255,225,178,.52); background: linear-gradient(180deg, #d9a65d, #9d5b2d); color: #21150e; text-shadow: 0 1px 0 rgba(255,255,255,.22); }
.gs-tv-stop { border: 1px solid rgba(255,255,255,.18); background: rgba(4,7,11,.74); color: #f7eee2; }



/* === V0.9.71 — Références TV partagées avec les PNJ === */
.gs-room-visitor-tv-reference {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 6px;
  margin: 8px 0 2px;
  padding: 6px 8px;
  border: 1px solid rgba(225, 162, 68, .32);
  border-radius: 9px;
  background: linear-gradient(90deg, rgba(92, 44, 19, .52), rgba(23, 18, 24, .64));
  color: #f7e6c8;
  font-size: 10px;
}
.gs-room-visitor-tv-reference span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 17px;
  border-radius: 4px;
  background: rgba(205, 62, 46, .86);
  color: #fff6eb;
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .08em;
}
.gs-room-visitor-tv-reference strong {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-size: 10px;
}
.gs-room-visitor-tv-reference small {
  color: rgba(255, 234, 199, .72);
  font-size: 9px;
  white-space: nowrap;
}


/* === V0.9.73 — Lecture TV sans scroll + joystick de chambre === */
.gs-tv-watching-text {
  max-height: none;
  overflow: visible;
  padding-right: 0;
}
.gs-tv-watching-text::-webkit-scrollbar { display: none; }
.gs-tv-watching-page {
  display: block;
  margin-top: 7px;
  color: rgba(246,210,162,.72);
  font: 800 9px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .09em;
}
.gs-room-joystick {
  left: auto;
  right: 18px;
  bottom: 64px;
  width: 116px;
  height: 116px;
  z-index: 48;
  display: block;
  pointer-events: auto;
  -webkit-tap-highlight-color: transparent;
  border-color: rgba(240,190,115,.38);
  background: radial-gradient(circle at 40% 35%, rgba(45,26,25,.68), rgba(8,12,17,.78));
  box-shadow: 0 10px 28px rgba(0,0,0,.42), inset 0 0 0 1px rgba(255,255,255,.04);
}
.gs-room-joystick::before {
  content: "DÉPLACER";
  position: absolute;
  left: 50%;
  top: calc(100% + 4px);
  transform: translateX(-50%);
  color: rgba(255,235,201,.76);
  font: 800 8px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .08em;
  white-space: nowrap;
  text-shadow: 0 1px 1px rgba(0,0,0,.85);
  pointer-events: none;
}
.gs-room-joystick .gs-joystick-knob {
  background: radial-gradient(circle at 40% 35%, #ffe8ba, #b62635 62%, #57101b);
}
.gs-room.is-tv-watching .gs-room-joystick { display: none !important; }




/* === V0.9.74 — TV lisible sur mobile + cadrage cinéma pendant la lecture === */
.gs-room.is-tv-watching .gs-room-world {
  transition: transform .46s cubic-bezier(.22,.8,.25,1);
}
.gs-room.is-tv-watching .gs-room-vignette {
  box-shadow: inset 0 0 150px rgba(0,0,0,.58), inset 0 -56px 74px rgba(0,0,0,.32);
}
.gs-room.is-tv-watching .gs-room-time-tint {
  opacity: .84;
}



/* === V0.9.75 — Fiche de programme TV et historique profil === */
.gs-tv-report-overlay {
  position: absolute;
  inset: 0;
  z-index: 66;
  display: grid;
  place-items: center;
  padding: 14px;
  background: rgba(4, 7, 11, .56);
  backdrop-filter: blur(4px);
}
.gs-tv-report-card {
  width: min(100%, 520px);
  border-radius: 18px;
  border: 1px solid rgba(245, 213, 154, .34);
  background: linear-gradient(180deg, rgba(39, 9, 16, .97), rgba(11, 14, 20, .98));
  box-shadow: 0 22px 56px rgba(0,0,0,.52), inset 0 1px 0 rgba(255,255,255,.08);
  padding: 16px 16px 14px;
  color: #f8f1e3;
}
.gs-tv-report-kicker { display:block; color: rgba(255,229,190,.7); font: 800 10px/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; text-transform: uppercase; letter-spacing: .08em; }
.gs-tv-report-card h3 { margin: 6px 0 6px; font-size: 24px; line-height: 1.05; color: #fff0d1; }
.gs-tv-report-tagline { margin: 0 0 10px; color: rgba(247,242,233,.84); font-size: 13px; line-height: 1.45; }
.gs-tv-report-grid { display:grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 8px; margin: 10px 0; }
.gs-tv-report-grid div, .gs-tv-profile-mini-grid div { padding: 11px 10px; border-radius: 14px; border:1px solid rgba(255,255,255,.07); background: rgba(255,255,255,.04); }
.gs-tv-report-grid strong, .gs-tv-profile-mini-grid strong { display:block; font-size: 20px; color: #fff; }
.gs-tv-report-grid small, .gs-tv-profile-mini-grid small { color: var(--gs-muted); }
.gs-tv-report-meta { color: rgba(219,226,234,.72); font-size: 12px; margin: 2px 0 10px; }
.gs-tv-report-effect { display:grid; gap: 2px; margin: 10px 0 0; padding: 11px 12px; border-radius: 14px; border:1px solid rgba(255,255,255,.08); }
.gs-tv-report-effect strong { font-size: 13px; }
.gs-tv-report-effect span { font-size: 12px; color: rgba(247,242,233,.86); }
.gs-tv-report-effect.is-granted { background: linear-gradient(180deg, rgba(149, 89, 28, .22), rgba(61, 22, 8, .34)); border-color: rgba(240,190,115,.38); }
.gs-tv-report-effect.is-repeat { background: rgba(255,255,255,.03); }
.gs-tv-report-effect.is-neutral { background: rgba(255,255,255,.03); }
.gs-tv-report-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; margin-top: 13px; }
.gs-tv-report-actions button { appearance:none; min-height: 36px; padding: 0 12px; border-radius: 10px; cursor:pointer; border:1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.04); color:#fff; font-weight:800; }
.gs-tv-report-actions button.primary { background: linear-gradient(180deg, #d9a65d, #9d5b2d); color:#21150e; border-color: rgba(255,225,178,.42); }
.gs-tv-report-actions button.ghost { color: #e5ddd1; }
.gs-tv-profile-sections { display:grid; grid-template-columns: 1.2fr .8fr; gap: 14px; margin-top: 16px; }
.gs-tv-profile-card { padding: 16px; border-radius: 18px; border:1px solid rgba(255,255,255,.08); background: rgba(255,255,255,.03); }
.gs-tv-profile-card h3, .gs-tv-profile-card h4 { margin: 0 0 8px; }
.gs-tv-profile-card h4 { margin-top: 16px; font-size: 13px; letter-spacing: .03em; color: #f1d39a; text-transform: uppercase; }
.gs-tv-profile-intro, .gs-tv-profile-empty { color: var(--gs-muted); }
.gs-tv-profile-mini-grid { display:grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; margin: 12px 0 4px; }
.gs-tv-history-list { list-style:none; padding:0; margin:0; display:grid; gap:8px; }
.gs-tv-history-list li { margin:0; padding:10px 12px; border-radius: 14px; border:1px solid rgba(255,255,255,.08); background: rgba(0,0,0,.15); }
.gs-tv-history-list strong { display:block; font-size: 14px; color:#fff; }
.gs-tv-history-list small { display:block; margin-top:4px; color: var(--gs-muted); }


/* === V0.9.76 — AGIDES, loyer hebdomadaire et concours narratif === */
.gs-rent-stat strong { color: #f0be73 !important; }
.gs-weekly-contest > .gs-kicker { display: block; margin-bottom: 3px; }
.gs-weekly-contest .gs-contest-card { border-color: rgba(240,190,115,.30); background: linear-gradient(135deg, rgba(111,38,22,.24), rgba(13,20,28,.72)); }
.gs-weekly-contest .gs-contest-card small { display: block; margin-top: 10px; color: #f0cf9a; }
.gs-weekly-contest-note { margin: 13px 0 0; color: var(--gs-muted); }
.gs-contest-card button:disabled { cursor: not-allowed; opacity: .5; filter: grayscale(.25); }

.gs-new-life-modal {
  position: fixed;
  inset: 0;
  z-index: 100020;
  display: grid;
  place-items: center;
  padding: 18px;
  background: radial-gradient(circle at 50% 42%, rgba(127,38,31,.25), rgba(0,0,0,.80) 68%);
  backdrop-filter: blur(5px);
}
.gs-new-life-card {
  width: min(100%, 560px);
  padding: 24px;
  border: 1px solid rgba(240,190,115,.38);
  border-radius: 22px;
  background: linear-gradient(160deg, rgba(51,10,18,.98), rgba(10,15,21,.98) 58%, rgba(8,11,16,.99));
  box-shadow: 0 28px 78px rgba(0,0,0,.62), inset 0 1px 0 rgba(255,255,255,.08), inset 0 0 44px rgba(201,33,42,.09);
  color: #fff6e5;
  text-align: left;
}
.gs-new-life-card h3 { margin: 8px 0 10px; color: #fff0d1; font-size: clamp(23px, 5vw, 32px); line-height: 1.04; }
.gs-new-life-card p { margin: 0; color: rgba(250,244,235,.94); font-size: 16px; line-height: 1.58; }
.gs-new-life-reward { margin: 17px 0 0; padding: 11px 13px; border:1px solid rgba(240,190,115,.26); border-radius: 13px; background: rgba(240,190,115,.08); color: #f7e5c4; font-size: 13px; }
.gs-new-life-reward strong { color: #ffd47d; }
.gs-new-life-step { display: block; margin: 18px 0 9px; color: rgba(255,229,190,.62); font: 800 10px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .08em; }
.gs-new-life-card button { width: 100%; min-height: 44px; appearance:none; border:1px solid rgba(255,225,178,.48); border-radius: 12px; cursor:pointer; background: linear-gradient(180deg, #d9a65d, #9d5b2d); color:#24160d; font-size:14px; font-weight:900; }
.gs-new-life-card button:active { transform: translateY(1px); }

.gs-economy-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; margin: 16px 0; }
.gs-economy-card, .gs-community-missions { border: 1px solid rgba(255,255,255,.08); border-radius: 18px; background: rgba(255,255,255,.03); padding: 15px; }
.gs-economy-card h3, .gs-community-missions h3 { margin: 6px 0 8px; font-size: 16px; color: #f8e8ca; }
.gs-economy-card > strong { display:block; color: #ffd47d; font-size: 25px; line-height: 1; }
.gs-economy-card p { margin: 9px 0 8px; color: var(--gs-muted); }
.gs-economy-card small { color: rgba(222,230,238,.64); line-height: 1.35; }
.gs-economy-card .gs-small-btn { margin-top: 11px; text-align: center; }
.gs-community-missions { margin: 0 0 16px; background: linear-gradient(120deg, rgba(119,41,28,.14), rgba(255,255,255,.025)); }
.gs-community-missions p { margin: 7px 0 8px; }
.gs-community-missions ul { margin: 9px 0 13px; }
.gs-community-missions li { margin: 6px 0; }
.gs-community-missions strong { color: #ffd47d; }
.gs-community-missions .gs-small-btn { max-width: 310px; text-align: center; }
.gs-community-login, .gs-community-last-sync { display:block; color: var(--gs-muted); margin-top: 10px; font-size: 12px; }



/* === V0.9.78 — Planches objets & catalogue WordPress === */
.gs-catalog-sprite {
  display: block;
  background-color: transparent;
  background-repeat: no-repeat;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}
.gs-item-visual .gs-item-catalog-sprite {
  width: 48px;
  height: 48px;
  border: 0;
  border-radius: 9px;
  background-color: transparent;
  box-shadow: none;
}
.gs-mini-catalog-sprite {
  width: 30px;
  height: 30px;
  border-radius: 7px;
  background-color: transparent;
}
.gs-item-card.gs-item-catalog .gs-item-visual { background: linear-gradient(180deg, rgba(30,45,56,.9), rgba(12,20,27,.96)); }
.gs-item-description { color: rgba(225,234,240,.82)!important; line-height: 1.36; }
.gs-item-tags { color: #f0c879!important; font-size: 10px!important; text-transform: lowercase; }


/* ===== V0.9.82 Contest engine ===== */
.gs-contest-overview{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:16px 0}
.gs-contest-overview-card,.gs-contest-result,.gs-contest-selection{background:rgba(6,12,22,.86);border:1px solid rgba(143,173,255,.18);border-radius:18px;padding:16px;box-shadow:0 14px 40px rgba(0,0,0,.22)}
.gs-contest-tag-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.gs-contest-tag-row span{padding:6px 10px;border-radius:999px;background:rgba(167,43,62,.18);border:1px solid rgba(255,170,170,.18);font-size:12px;text-transform:uppercase;letter-spacing:.06em}
.gs-contest-judge-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}.gs-contest-judge-list li{padding:10px 12px;border-radius:14px;background:rgba(255,255,255,.04)}.gs-contest-judge-list strong{display:block}.gs-contest-judge-list small{display:block;opacity:.84;line-height:1.35;margin-top:4px}
.gs-contest-mini-score,.gs-contest-score-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:10px;margin-top:12px}.gs-contest-mini-score div,.gs-contest-score-grid div{padding:12px;border-radius:14px;background:rgba(255,255,255,.05);text-align:center}.gs-contest-mini-score strong,.gs-contest-score-grid strong{display:block;font-size:1.15rem}.gs-contest-mini-score small,.gs-contest-score-grid small{display:block;opacity:.78}
.gs-contest-actions-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.gs-contest-picked-grid,.gs-contest-candidate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-top:12px}
.gs-contest-picked,.gs-contest-candidate{padding:10px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(255,255,255,.03)}
.gs-contest-candidate.is-active{border-color:rgba(255,180,180,.45);box-shadow:0 0 0 1px rgba(255,180,180,.24) inset;background:rgba(120,16,26,.18)}
.gs-contest-candidate-head,.gs-contest-picked-meta{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;margin-bottom:8px}.gs-contest-candidate-head small,.gs-contest-picked-meta small{display:block;opacity:.76;line-height:1.35}
.gs-contest-picked .gs-item-card,.gs-contest-candidate .gs-item-card{min-height:unset;background:transparent;border:none;padding:0}.gs-contest-picked .gs-item-info strong,.gs-contest-candidate .gs-item-info strong{font-size:.96rem}
.gs-contest-empty{padding:14px;border-radius:14px;background:rgba(255,255,255,.04);opacity:.84}
.gs-contest-breakdown{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-top:14px}.gs-contest-breakdown div{padding:12px;border-radius:14px;background:rgba(255,255,255,.04)}.gs-contest-breakdown span{display:block;opacity:.76}.gs-contest-breakdown strong{display:block;font-size:1.08rem;margin-top:4px}
.gs-contest-comments{margin:14px 0 0;padding-left:18px}.gs-contest-comments li{margin-bottom:6px}



/* ===== V0.9.83 — Salle de concours composée ===== */
.gs-contest-cinematic{max-width:1180px;margin:0 auto}.gs-contest-cinematic-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}.gs-contest-cinematic-head h2{margin:.25rem 0}.gs-contest-cinematic-head p{margin:0;opacity:.84;max-width:780px}.gs-contest-audience-count{padding:8px 11px;border:1px solid rgba(255,214,145,.22);background:rgba(255,188,93,.10);border-radius:999px;white-space:nowrap;font-size:.8rem}
.gs-contest-stage{position:relative;isolation:isolate;overflow:hidden;min-height:560px;border-radius:22px;border:1px solid rgba(255,224,170,.20);background:linear-gradient(180deg,#101a2c 0%,#1a1322 43%,#2a1712 44%,#100a10 100%);box-shadow:0 22px 70px rgba(0,0,0,.38)}
.gs-contest-stage-atmosphere{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 24%,rgba(153,196,255,.18),transparent 34%),radial-gradient(ellipse at 50% 74%,rgba(255,139,71,.15),transparent 44%),linear-gradient(90deg,rgba(0,0,0,.36),transparent 25%,transparent 75%,rgba(0,0,0,.36));z-index:0}.gs-contest-stage:after{content:"";position:absolute;left:0;right:0;bottom:0;height:42%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 2px,transparent 2px 54px),linear-gradient(180deg,transparent,rgba(0,0,0,.46));z-index:1;pointer-events:none}
.gs-contest-stage-audience{position:absolute;z-index:2;left:0;right:0;bottom:2px;height:42%;overflow:hidden;opacity:.65;filter:brightness(.72) saturate(.82)}.gs-contest-stage-crowd{position:absolute;left:var(--crowd-x);bottom:calc(var(--crowd-row, 0) * 22px);width:72px;max-height:154px;object-fit:contain;transform:translateX(-50%) scale(var(--crowd-scale));transform-origin:bottom;animation:gsContestAudienceIn .45s both;animation-delay:var(--crowd-delay)}.gs-contest-stage-crowd.row-1{bottom:22px;opacity:.76}.gs-contest-stage-crowd.row-2{bottom:43px;opacity:.55}
.gs-contest-stage-lights{position:absolute;inset:0;z-index:3;pointer-events:none;mix-blend-mode:screen;opacity:.80}.gs-contest-stage-light{position:absolute;top:-18px;width:min(30%,230px);height:330px;object-fit:contain;filter:drop-shadow(0 0 18px rgba(255,223,144,.50));animation:gsContestLightPulse 2.6s ease-in-out infinite}.gs-contest-stage-light.light-0{left:7%;transform:rotate(-3deg)}.gs-contest-stage-light.light-1{right:7%;transform:scaleX(-1) rotate(-3deg);animation-delay:.7s}
.gs-contest-stage-jury{position:absolute;z-index:5;left:50%;top:7%;width:min(83%,820px);height:230px;transform:translateX(-50%)}.gs-contest-stage-judge-row{position:absolute;inset:0 5% 18%}.gs-contest-stage-judge{position:absolute;left:var(--judge-x);bottom:0;transform:translateX(-50%);width:130px;text-align:center;filter:drop-shadow(0 8px 5px rgba(0,0,0,.34));animation:gsContestJudgeIn .42s both}.gs-contest-stage-judge img{width:100%;height:148px;object-fit:contain;object-position:bottom;display:block}.gs-contest-stage-judge small{display:block;font-size:10px;opacity:.0;transition:opacity .2s;white-space:nowrap}.gs-contest-stage-judge:hover small{opacity:.86}.gs-contest-stage-jury-table{position:absolute;bottom:0;left:50%;width:100%;height:92px;object-fit:contain;transform:translateX(-50%);filter:drop-shadow(0 12px 8px rgba(0,0,0,.45))}
.gs-contest-stage-display{position:absolute;z-index:6;left:50%;bottom:7%;width:min(84%,760px);height:212px;transform:translateX(-50%)}.gs-contest-stage-display-table{position:absolute;left:50%;bottom:0;width:100%;height:144px;object-fit:contain;transform:translateX(-50%);filter:drop-shadow(0 12px 8px rgba(0,0,0,.48))}.gs-contest-stage-items{position:absolute;left:10%;right:10%;bottom:72px;height:120px}.gs-contest-stage-item{position:absolute;left:var(--item-x);bottom:0;transform:translateX(-50%);width:82px;text-align:center;animation:gsContestItemIn .45s both;animation-delay:var(--item-delay);filter:drop-shadow(0 8px 5px rgba(0,0,0,.48))}.gs-contest-stage-catalog-sprite,.gs-contest-stage-generic{display:block;width:66px;height:66px;margin:0 auto;object-fit:contain;object-position:center;background-size:1000% 1000%;image-rendering:pixelated}.gs-contest-stage-generic{border-radius:10px;background:linear-gradient(135deg,#f2d59d,#8b4924);border:2px solid rgba(255,255,255,.45)}.gs-contest-stage-item small{display:block;margin-top:3px;font-size:9px;line-height:1.1;max-height:2.2em;overflow:hidden;text-shadow:0 1px 2px #000}
.gs-contest-stage-verdict{position:absolute;z-index:8;left:50%;bottom:14px;transform:translateX(-50%);width:min(94%,520px);padding:12px 16px;border-radius:16px;text-align:center;background:rgba(5,8,15,.84);border:1px solid rgba(255,255,255,.14);box-shadow:0 10px 30px rgba(0,0,0,.42)}.gs-contest-stage-verdict span{display:block;font-size:10px;letter-spacing:.12em;opacity:.74}.gs-contest-stage-verdict strong{display:block;font-size:1.35rem;color:#ffe5a7}.gs-contest-stage-verdict small{display:block;margin-top:3px;opacity:.84}.gs-contest-stage-verdict.is-win{border-color:rgba(255,210,104,.68);background:rgba(74,44,10,.89)}.gs-contest-stage-verdict.is-loss{border-color:rgba(179,191,233,.35)}
.gs-contest-cinematic-panel{margin-top:14px;padding:16px;border:1px solid rgba(143,173,255,.18);border-radius:18px;background:rgba(6,12,22,.86)}.gs-contest-cinematic-panel h3,.gs-contest-cinematic-panel p{margin:.1rem 0 .55rem}.gs-contest-stage-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
@keyframes gsContestItemIn{from{opacity:0;transform:translateX(-50%) translateY(22px) scale(.65)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}@keyframes gsContestJudgeIn{from{opacity:0;transform:translateX(-50%) translateY(-12px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}@keyframes gsContestAudienceIn{from{opacity:0;transform:translateX(-50%) translateY(12px) scale(var(--crowd-scale))}to{opacity:1;transform:translateX(-50%) translateY(0) scale(var(--crowd-scale))}}@keyframes gsContestLightPulse{0%,100%{opacity:.66}50%{opacity:1}}



/* ===== V0.9.84 — Concurrents, portraits et présentations de concours ===== */
.gs-contest-stage-competitors{position:absolute;z-index:4;inset:0;pointer-events:none}
.gs-contest-stage-competitor{position:absolute;left:var(--competitor-x);bottom:8%;width:126px;transform:translateX(-50%);text-align:center;opacity:.68;filter:brightness(.72) saturate(.78) drop-shadow(0 8px 6px rgba(0,0,0,.46));transition:transform .22s ease,opacity .22s ease,filter .22s ease;animation:gsContestCompetitorIn .45s backwards;animation-delay:var(--competitor-delay)}
.gs-contest-stage-competitor img{display:block;width:100%;height:190px;object-fit:contain;object-position:bottom;image-rendering:auto}
.gs-contest-stage-competitor small{display:block;font-size:10px;font-weight:800;white-space:nowrap;text-shadow:0 1px 2px #000}.gs-contest-stage-competitor em{display:block;font-size:8px;font-style:normal;opacity:.78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gs-contest-stage-competitor.is-speaking{z-index:7;opacity:1;filter:brightness(1.16) saturate(1.08) drop-shadow(0 0 15px rgba(255,218,142,.54)) drop-shadow(0 9px 7px rgba(0,0,0,.55));transform:translateX(-50%) translateY(-12px) scale(1.10)}
.gs-contest-stage-competitor.is-featured small:after{content:"RIVAL";margin-left:5px;padding:2px 4px;border-radius:4px;background:#a62b3b;color:#fff;font-size:7px;letter-spacing:.06em}
.gs-contest-dialogue{display:flex;align-items:center;gap:13px;margin:10px 0 6px;padding:10px 12px;border-radius:16px;border:1px solid rgba(255,218,155,.22);background:linear-gradient(135deg,rgba(15,22,37,.95),rgba(37,17,30,.90));box-shadow:0 10px 30px rgba(0,0,0,.24)}
.gs-contest-dialogue.is-ready{border-color:rgba(167,213,255,.28);background:linear-gradient(135deg,rgba(11,30,42,.95),rgba(20,26,38,.94))}
.gs-contest-dialogue-portrait{width:108px;height:94px;flex:0 0 108px;align-self:stretch;display:grid;place-items:end center;overflow:hidden;border-radius:12px;background:radial-gradient(circle at 50% 20%,rgba(252,226,173,.24),transparent 52%),rgba(0,0,0,.20)}
.gs-contest-dialogue-portrait img{width:100%;height:100%;object-fit:contain;object-position:center bottom;display:block}.gs-contest-dialogue-player-icon{display:grid;place-items:center;width:58px;height:58px;border-radius:50%;font-size:28px;color:#ffe5a7;background:rgba(255,215,129,.18);border:1px solid rgba(255,229,169,.44)}
.gs-contest-dialogue-copy{min-width:0}.gs-contest-dialogue-copy small{display:block;font-size:10px;letter-spacing:.09em;opacity:.70}.gs-contest-dialogue-copy strong{display:block;margin-top:2px;color:#fff0cf;font-size:1.05rem}.gs-contest-dialogue-copy p{margin:5px 0 0;line-height:1.48}.gs-contest-cinematic-note{font-size:.82rem;opacity:.72;margin:.8rem 0 0}
@keyframes gsContestCompetitorIn{from{opacity:0;transform:translateX(-50%) translateY(18px)}to{opacity:.68;transform:translateX(-50%) translateY(0)}}



/* ===== V0.9.86 — boucle cartons → collection → concours ===== */
.gs-contest-stage{background-image:linear-gradient(180deg,rgba(7,11,22,.18) 0%,rgba(12,11,18,.2) 42%,rgba(14,8,12,.35) 100%),var(--contest-stage-bg);background-size:cover;background-position:center;background-repeat:no-repeat}
.gs-contest-stage-atmosphere{background:radial-gradient(ellipse at 50% 30%,rgba(153,196,255,.14),transparent 36%),radial-gradient(ellipse at 50% 73%,rgba(255,139,71,.12),transparent 48%),linear-gradient(90deg,rgba(0,0,0,.28),transparent 25%,transparent 75%,rgba(0,0,0,.28));mix-blend-mode:screen}
.gs-box-sorting{max-width:1100px;margin:0 auto;padding:20px;border:1px solid rgba(255,210,135,.22);border-radius:22px;background:linear-gradient(145deg,rgba(43,22,10,.96),rgba(11,16,26,.98));box-shadow:0 24px 64px rgba(0,0,0,.34)}
.gs-box-sorting h2{margin:.2rem 0 .45rem;color:#ffe2a6}.gs-box-sorting>p{max-width:760px;line-height:1.55;color:rgba(246,239,226,.86)}
.gs-box-sorting-progress{position:relative;overflow:hidden;display:flex;align-items:baseline;gap:9px;margin:18px 0;border-radius:14px;padding:12px 14px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08)}.gs-box-sorting-progress strong{font-size:1.2rem;z-index:1}.gs-box-sorting-progress small{z-index:1;opacity:.82}.gs-box-sorting-progress i{position:absolute;left:0;bottom:0;height:4px;background:linear-gradient(90deg,#d98c3c,#ffe5a1);transition:width .35s ease}
.gs-box-sorting-main{display:grid;gap:16px;padding:18px;border-radius:18px;background:rgba(0,0,0,.22);border:1px solid rgba(255,225,180,.12)}.gs-box-next-preview{display:flex;gap:16px;align-items:center}.gs-box-question{display:grid;place-items:center;width:72px;height:72px;flex:0 0 72px;border-radius:18px;border:2px dashed rgba(255,221,160,.6);background:radial-gradient(circle,rgba(245,194,108,.26),rgba(91,37,12,.25));font-size:2rem;font-weight:900;color:#ffe7b5}.gs-box-next-preview.is-complete .gs-box-question{border-style:solid;background:rgba(91,157,83,.25);color:#d8ffd0}
.gs-box-next-preview strong{display:block;font-size:1.05rem}.gs-box-next-preview small{display:block;margin-top:5px;line-height:1.42;opacity:.78}.gs-box-sorting-actions{display:flex;gap:10px;flex-wrap:wrap}
.gs-box-found{margin-top:20px}.gs-box-found h3{margin:0 0 10px}.gs-box-found-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:12px}.gs-box-found-item{padding:9px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07)}.gs-box-found-item .gs-item-card{min-height:auto;border:none;background:transparent;padding:0}



/* === V0.9.87 — Activités tapis : gabarit -10 % et alpha propre ===
   Les sprites restent ceux déjà livrés. Les WebP sont réencodés sans matte et
   l'isolation évite les franges claires sur certains décodeurs mobiles. */
.gs-room-exercise,
.gs-room-relax {
  isolation: isolate;
  transform: translateZ(0);
}
.gs-room-exercise-sprite,
.gs-room-relax-sprite {
  mix-blend-mode: normal;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}


/* === V0.9.88 — Contrôles chambre alignés sur la brocante === */
.gs-room-controls-hint {
  position: absolute;
  right: 18px;
  bottom: 188px;
  z-index: 47;
  max-width: 176px;
  padding: 7px 9px;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 9px;
  background: rgba(8,12,18,.72);
  color: rgba(245,239,229,.75);
  font: 800 8px/1.25 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  text-align: right;
  letter-spacing: .045em;
  pointer-events: none;
}
.gs-room.is-customize-mode .gs-room-controls-hint,
.gs-room.is-tv-watching .gs-room-controls-hint { display:none; }



/* === V0.9.89 — HUD mobile compact + vignettes de brocante propres ===
   Les objets de catalogue sont désormais fournis sous forme de vignettes
   détourées : aucun débordement de cellule voisine ne peut apparaître. */
.gs-item-visual {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.gs-item-visual .gs-item-catalog-sprite {
  display: block;
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
  flex: 0 0 auto;
  object-fit: contain;
  object-position: center;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.gs-mini-item .gs-mini-catalog-sprite {
  display: block;
  object-fit: contain;
  object-position: center;
  image-rendering: pixelated;
  image-rendering: crisp-edges;
}



/* === V0.9.91 — Vitrine ouvrable et commandes séparées sur mobile === */
.gs-vitrine-panel-head {
  position: relative;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding-right: 38px;
}
.gs-vitrine-panel-head .gs-kicker { display: block; margin-bottom: 4px; }
.gs-vitrine-panel-head h4 { margin: 0 0 4px; }
.gs-vitrine-panel-head p { margin: 0; }
.gs-vitrine-panel-head .gs-room-collection-close {
  top: 0;
  right: 0;
}
.gs-vitrine-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
  margin: 11px 0;
}
.gs-vitrine-stats > div {
  min-width: 0;
  padding: 8px 7px;
  border: 1px solid rgba(245, 208, 137, .20);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(63, 39, 22, .38), rgba(10, 16, 22, .50));
}
.gs-vitrine-stats strong {
  display: block;
  color: #ffe4a6;
  font-size: 15px;
  line-height: 1;
}
.gs-vitrine-stats small {
  display: block;
  margin-top: 4px;
  color: rgba(225, 235, 243, .72);
  font-size: 9px;
  line-height: 1.18;
}
.gs-vitrine-items {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  max-height: 340px;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 2px 3px 2px 1px;
}
.gs-vitrine-items .gs-item-card {
  min-width: 0;
  min-height: 72px;
  align-items: flex-start;
  gap: 8px;
  padding: 8px;
}
.gs-vitrine-items .gs-item-visual {
  width: 42px;
  height: 42px;
  flex-basis: 42px;
  border-radius: 10px;
}
.gs-vitrine-items .gs-item-visual span {
  transform: scale(.78);
}
.gs-vitrine-items .gs-item-info {
  min-width: 0;
}
.gs-vitrine-items .gs-item-info strong {
  font-size: 11px;
  line-height: 1.18;
}
.gs-vitrine-items .gs-item-info small,
.gs-vitrine-items .gs-item-info em {
  font-size: 9px;
  line-height: 1.23;
}
.gs-vitrine-items .gs-item-description,
.gs-vitrine-items .gs-item-tags {
  display: none !important;
}
.gs-vitrine-empty {
  grid-column: 1 / -1;
  display: grid;
  gap: 5px;
  min-height: 136px;
  align-content: center;
  padding: 15px;
  border: 1px dashed rgba(245, 208, 137, .28);
  border-radius: 12px;
  background: rgba(0, 0, 0, .17);
  color: #f7ebd2;
  text-align: center;
}
.gs-vitrine-empty small { color: var(--gs-muted); font-size: 11px; line-height: 1.4; }





/* === V0.9.92 — HUD micro + caméra chambre synchronisée avec la brocante === */


/* Même implantation et mêmes limites de zoom que la brocante :
   + / vue / − à gauche, joystick de déplacement à droite. */
.gs-room:not(.is-vitrine-open) .gs-room-zoom {
  left: 10px !important;
  right: auto !important;
  bottom: 10px !important;
  z-index: 49;
}
.gs-room-joystick {
  right: 18px !important;
  bottom: 64px !important;
  width: 116px !important;
  height: 116px !important;
  border-color: rgba(255,255,255,.16) !important;
  background: rgba(10,16,22,.45) !important;
  box-shadow: none !important;
}
.gs-room-joystick::before { display: none !important; }
.gs-room-joystick .gs-joystick-knob {
  width: 50px !important;
  height: 50px !important;
  margin: -25px 0 0 -25px !important;
  background: radial-gradient(circle at 40% 35%, #ffe6b0, #d8233b) !important;
}
.gs-room-controls-hint { display: none !important; }
.gs-room.is-customize-mode .gs-customize-joystick {
  right: 18px !important;
  bottom: 64px !important;
}



/* === V0.9.93 — Paramètres de jeu, audio local et commandes adaptatives === */
.gs-settings-screen {
  margin: 18px;
  padding: 20px;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 22px;
  background:
    radial-gradient(circle at 88% 0%, rgba(83,213,255,.10), transparent 30%),
    linear-gradient(145deg, rgba(14,22,31,.98), rgba(7,11,16,.98));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05), 0 18px 50px rgba(0,0,0,.22);
}
.gs-settings-header { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:14px; }
.gs-settings-header h2 { margin:4px 0 6px; font-size:clamp(23px, 3vw, 34px); }
.gs-settings-header p { margin:0; color:var(--gs-muted); }
.gs-settings-close {
  width:36px; height:36px; flex:0 0 36px; border:1px solid rgba(255,255,255,.14); border-radius:11px;
  color:#fff; background:rgba(0,0,0,.24); font-size:24px; line-height:1; cursor:pointer;
}
.gs-settings-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.gs-settings-card {
  padding:15px; min-width:0; border:1px solid rgba(255,255,255,.09); border-radius:16px;
  background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(0,0,0,.17));
}
.gs-settings-card h3 { margin:4px 0 9px; font-size:18px; }
.gs-settings-card h4 { margin:16px 0 8px; color:var(--gs-muted); font-size:12px; text-transform:uppercase; letter-spacing:.08em; }
.gs-settings-help { min-height:40px; margin:0 0 12px; color:var(--gs-muted); font-size:12px; line-height:1.42; }
.gs-settings-range { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:5px 12px; align-items:center; margin-top:12px; color:#f1f5fa; font-size:13px; font-weight:750; }
.gs-settings-range output { color:var(--gs-gold); font:800 12px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.gs-settings-range input { grid-column:1/-1; width:100%; accent-color:#e85e60; cursor:pointer; }
.gs-settings-range input:disabled { opacity:.38; cursor:not-allowed; }
.gs-settings-inline-actions { display:flex; gap:8px; margin-top:15px; }
.gs-settings-toggle, .gs-settings-choice, .gs-settings-reset {
  appearance:none; border:1px solid rgba(255,255,255,.13); border-radius:11px; cursor:pointer;
  color:#eaf1f8; background:rgba(255,255,255,.045); font:800 12px/1.1 Inter,system-ui,sans-serif;
}
.gs-settings-toggle { flex:1; min-height:40px; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:9px 10px; }
.gs-settings-toggle b { color:#a9b6c3; font-size:10px; letter-spacing:.08em; }
.gs-settings-toggle.is-on { border-color:rgba(242,199,107,.50); background:rgba(168,102,32,.20); }
.gs-settings-toggle.is-on b { color:#ffe3a3; }
.gs-settings-toggle:disabled { opacity:.4; cursor:not-allowed; }
.gs-settings-choice-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.gs-settings-choice-row-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.gs-settings-choice { min-height:38px; padding:8px; }
.gs-settings-choice:hover { border-color:rgba(242,199,107,.42); }
.gs-settings-choice.is-selected { border-color:rgba(242,199,107,.72); color:#ffebbd; background:linear-gradient(180deg,rgba(180,112,31,.34),rgba(91,38,24,.28)); box-shadow:inset 0 0 0 1px rgba(255,235,191,.08); }
.gs-settings-preview { position:relative; height:82px; overflow:hidden; margin-top:14px; border:1px dashed rgba(255,255,255,.18); border-radius:14px; background:rgba(0,0,0,.16); }
.gs-settings-preview-stick { position:absolute; right:13px; bottom:11px; width:42px; height:42px; border:2px solid rgba(255,255,255,.28); border-radius:50%; }
.gs-settings-preview-stick::after { content:""; position:absolute; left:50%; top:50%; width:18px; height:18px; transform:translate(-50%,-50%); border-radius:50%; background:#d84a4a; }
.gs-settings-preview span { position:absolute; right:7px; bottom:0; color:rgba(255,255,255,.5); font:800 7px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; letter-spacing:.05em; }
.gs-settings-preview b { position:absolute; left:13px; bottom:10px; display:grid; width:31px; height:55px; place-items:center; border:1px solid rgba(255,255,255,.24); border-radius:9px; color:#f4f1ea; font-size:15px; line-height:.8; }
.gs-settings-preview-left .gs-settings-preview-stick { left:13px; right:auto; }
.gs-settings-preview-left span { left:7px; right:auto; }
.gs-settings-preview-left b { left:auto; right:13px; }
.gs-settings-current-layout { margin-top:12px; padding:9px 10px; border-radius:10px; background:rgba(0,0,0,.18); color:var(--gs-muted); font-size:12px; }
.gs-settings-current-layout strong { color:#eaf2fa; text-transform:capitalize; }
.gs-settings-check { display:flex; align-items:flex-start; gap:10px; padding:11px 0; border-bottom:1px solid rgba(255,255,255,.07); cursor:pointer; }
.gs-settings-check input { width:18px; height:18px; flex:0 0 18px; margin:1px 0 0; accent-color:#e85e60; }
.gs-settings-check span { display:grid; gap:4px; }
.gs-settings-check b { font-size:13px; }
.gs-settings-check small { color:var(--gs-muted); font-size:11px; line-height:1.38; }
.gs-settings-reset { width:100%; margin-top:13px; min-height:39px; color:#c3d0dc; }
.gs-settings-reset:hover { border-color:rgba(255,128,128,.52); color:#ffd0d0; }
.gs-agide-purchase-note { margin:0 0 12px; padding:10px 12px; border-radius:12px; border:1px solid rgba(242,199,107,.20); color:#dfd2b7; background:rgba(89,53,16,.13); font-size:12px; line-height:1.4; }

/* Gaucher : joystick et zoom inversés partout, sans modifier les gestes. */
.gs-collection-game-root.gs-controls-left .gs-market-zoom,
.gs-collection-game-root.gs-controls-left .gs-room:not(.is-vitrine-open) .gs-room-zoom { left:auto !important; right:10px !important; }
.gs-collection-game-root.gs-controls-left .gs-market-screen .gs-joystick,
.gs-collection-game-root.gs-controls-left .gs-room-joystick,
.gs-collection-game-root.gs-controls-left .gs-room.is-customize-mode .gs-customize-joystick { left:18px !important; right:auto !important; }


/* Confort et taille de l’interface. */
.gs-collection-game-root.gs-reduce-motion *,
.gs-collection-game-root.gs-reduce-motion *::before,
.gs-collection-game-root.gs-reduce-motion *::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; scroll-behavior:auto !important; }
.gs-collection-game-root.gs-ui-compact { font-size:.90em; }
.gs-collection-game-root.gs-ui-large { font-size:1.12em; }
.gs-collection-game-root.gs-ui-large .gs-game-topbar .gs-stat strong { font-size:1.08em; }





/* Barre desktop : cinq statistiques et cinq raccourcis depuis l’ajout des paramètres. */



/* === V0.9.94 — réglages réellement défilables sur mobile === */



/* === V0.9.99 — vignettes catalogue sans recadrage ===
   Les cellules sont déjà transparentes et centrées. Cette règle commune évite
   qu’un contexte (brocante, vitrine ou scène de concours) ne les étire ou ne
   les décale au moment du rendu. */
.gs-item-visual > img.gs-catalog-sprite,
.gs-mini-item > img.gs-catalog-sprite,
.gs-contest-stage-item > img.gs-catalog-sprite {
  display: block;
  box-sizing: border-box;
  object-fit: contain;
  object-position: center;
  max-width: 100%;
  max-height: 100%;
  pointer-events: none;
}
.gs-item-visual > img.gs-catalog-sprite {
  width: 100%;
  height: 100%;
}


/* === V0.9.100 — TV sans barre basse et bilan lisible sur mobile ===
   La TV est une vue dédiée : la navigation globale n'est pas rendue pendant
   le choix de chaîne, la lecture ou le bilan. Le rapport reste lui-même
   défilable sur les petits écrans. */
.gs-game-shell.is-tv-focus .gs-tabs { display: none !important; }
.gs-tv-report-overlay {
  display: block;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  touch-action: pan-y;
  padding: max(14px, env(safe-area-inset-top, 0px)) 14px max(18px, env(safe-area-inset-bottom, 0px));
}
.gs-tv-report-card {
  margin: 0 auto;
}



/* === V0.9.101 — HUD haut au même habillage que la navigation basse ===
   Les compteurs ne forment plus une bande bleue technique : ils reprennent les
   mêmes cadres rouge/noir/or que les boutons Collection, Concours, Archives et Profil. */


/* === V0.9.102 — uniformisation rouge / noir / or impérial ===
   Audit des menus et boîtes de dialogue : on reskinne les écrans et cartes
   encore trop neutres / bleutés pour les rapprocher du nouveau HUD/navigation. */
:root {
  --gs-imperial-panel-bg:
    radial-gradient(circle at 50% 0%, rgba(203, 61, 61, .16), transparent 34%),
    linear-gradient(165deg, rgba(48, 10, 18, .97), rgba(14, 10, 14, .98) 44%, rgba(6, 8, 12, .99));
  --gs-imperial-panel-soft:
    linear-gradient(180deg, rgba(77, 22, 28, .52), rgba(14, 10, 14, .92) 56%, rgba(8, 10, 14, .96));
  --gs-imperial-border: rgba(240, 190, 115, .34);
  --gs-imperial-border-strong: rgba(255, 218, 151, .50);
  --gs-imperial-text: #f8f0df;
  --gs-imperial-muted: #d9c7aa;
}

.gs-settings-screen,
.gs-room-collection-panel,
.gs-panel,
.gs-card-list,
.gs-profile-view,
.gs-empty,
.gs-archives-locked,
.gs-tv-profile-card,
.gs-tv-history-list li,
.gs-tv-report-grid div,
.gs-tv-profile-mini-grid div,
.gs-economy-card,
.gs-community-missions,
.gs-settings-card,
.gs-contest-card,
.gs-mini-item,
.gs-event-card,
.gs-market-dialogue-card {
  border-color: var(--gs-imperial-border) !important;
  background: var(--gs-imperial-panel-bg) !important;
  color: var(--gs-imperial-text);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.05),
    inset 0 0 0 1px rgba(255,235,191,.02),
    0 18px 48px rgba(0,0,0,.24);
}

.gs-profile-grid div,
.gs-tv-report-effect,
.gs-settings-preview,
.gs-settings-current-layout,
.gs-contest-dialogue,
.gs-contest-dialogue.is-ready,
.gs-event-content blockquote {
  border-color: rgba(255, 222, 165, .24) !important;
  background: var(--gs-imperial-panel-soft) !important;
  color: var(--gs-imperial-text);
}

.gs-contest-dialogue.is-ready {
  border-color: rgba(240, 190, 115, .42) !important;
}

.gs-settings-screen {
  background:
    radial-gradient(circle at 100% 0%, rgba(240, 190, 115, .10), transparent 26%),
    radial-gradient(circle at 0% 100%, rgba(216, 74, 74, .13), transparent 28%),
    linear-gradient(165deg, rgba(46, 10, 18, .98), rgba(12, 9, 13, .985) 50%, rgba(6, 8, 12, .99)) !important;
}
.gs-settings-header p,
.gs-settings-help,
.gs-settings-check small,
.gs-settings-current-layout,
.gs-panel small,
.gs-panel em,
.gs-event-content p,
.gs-room-collection-panel p,
.gs-tv-profile-intro,
.gs-tv-profile-empty,
.gs-tv-history-list small,
.gs-economy-card p,
.gs-community-missions p,
.gs-economy-card small,
.gs-market-dialogue-stall,
.gs-tv-report-meta,
.gs-tv-report-grid small,
.gs-tv-profile-mini-grid small,
.gs-contest-card p,
.gs-profile-view li,
.gs-empty p,
.gs-archives-locked p {
  color: var(--gs-imperial-muted) !important;
}

.gs-room-collection-panel h4,
.gs-settings-card h3,
.gs-settings-card h4,
.gs-panel h3,
.gs-economy-card h3,
.gs-community-missions h3,
.gs-tv-profile-card h3,
.gs-tv-profile-card h4,
.gs-market-dialogue-name,
.gs-profile-grid strong,
.gs-tv-report-card h3,
.gs-contest-dialogue-copy strong,
.gs-event-content h3 {
  color: #ffe7b1 !important;
}

.gs-settings-close,
.gs-event-card-close,
.gs-md-btn,
.gs-settings-toggle,
.gs-settings-choice,
.gs-settings-reset,
.gs-small-btn,
.gs-tv-report-actions button,
.gs-new-life-card button {
  appearance: none;
  border: 1px solid rgba(255, 225, 178, .34) !important;
  color: var(--gs-imperial-text) !important;
  background: linear-gradient(180deg, rgba(88, 28, 34, .95), rgba(24, 13, 17, .97)) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05), 0 8px 20px rgba(0,0,0,.24);
}
.gs-settings-toggle:hover,
.gs-settings-choice:hover,
.gs-settings-reset:hover,
.gs-small-btn:hover,
.gs-tv-report-actions button:hover,
.gs-md-btn:hover,
.gs-new-life-card button:hover {
  border-color: rgba(255, 232, 184, .54) !important;
  filter: brightness(1.05);
}
.gs-settings-choice.is-selected,
.gs-settings-toggle.is-on,
.gs-tv-report-actions button.primary,
.gs-md-look,
.gs-new-life-card button,
.gs-small-btn.is-primary,
.gs-contest-stage-actions .is-primary {
  color: #2b180b !important;
  border-color: rgba(255, 232, 184, .52) !important;
  background: linear-gradient(180deg, #f0c068, #b56c31) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.22), 0 8px 20px rgba(92,38,7,.26);
}
.gs-small-btn.ghost,
.gs-tv-report-actions button.ghost,
.gs-md-leave {
  color: #eadcc2 !important;
  background: linear-gradient(180deg, rgba(61, 21, 27, .92), rgba(16, 10, 13, .96)) !important;
}

.gs-settings-toggle b,
.gs-settings-range output,
.gs-new-life-reward strong,
.gs-economy-card > strong,
.gs-community-missions strong,
.gs-tv-report-kicker,
.gs-new-life-step,
.gs-contest-cinematic-note,
.gs-agide-purchase-note {
  color: #ffd47d !important;
}

.gs-settings-preview-stick,
.gs-settings-preview b {
  border-color: rgba(255,225,178,.28) !important;
}
.gs-settings-preview span { color: rgba(255, 227, 178, .54) !important; }

.gs-mini-item i,
.gs-event-npc,
.gs-market-dialogue-portrait,
.gs-contest-dialogue-portrait,
.gs-tv-history-list li,
.gs-profile-grid div {
  border-color: rgba(255,225,178,.22) !important;
  background:
    radial-gradient(circle at 50% 12%, rgba(255, 228, 180, .08), transparent 44%),
    linear-gradient(180deg, rgba(55, 16, 22, .72), rgba(10, 8, 12, .88)) !important;
}

.gs-event-content blockquote {
  border-left-color: #e3a556 !important;
  color: #f5e7cb;
}
.gs-agide-purchase-note,
.gs-new-life-reward {
  border-color: rgba(240, 190, 115, .30) !important;
  background: linear-gradient(180deg, rgba(104, 55, 16, .18), rgba(48, 20, 10, .22)) !important;
  color: #ead7b4 !important;
}




/* === V0.9.103 — confirmations internes impériales ===
   Les achats, déblocages et remises à zéro ne passent plus par les alertes
   natives : la fenêtre garde le cadre rouge / noir / or du jeu sur tout mobile. */
.gs-imperial-confirm-modal {
  position: fixed;
  inset: 0;
  z-index: 100120;
  display: grid;
  place-items: center;
  padding: max(16px, env(safe-area-inset-top, 0px)) 16px max(16px, env(safe-area-inset-bottom, 0px));
  overflow: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  background:
    radial-gradient(circle at 50% 40%, rgba(194, 52, 60, .20), transparent 34%),
    rgba(0, 0, 0, .78);
  backdrop-filter: blur(6px);
  touch-action: pan-y;
}
.gs-imperial-confirm-card {
  position: relative;
  width: min(100%, 510px);
  overflow: hidden;
  padding: 22px;
  border: 1px solid rgba(247, 203, 120, .54);
  border-radius: 22px;
  color: #f8f0df;
  background:
    linear-gradient(90deg, rgba(229, 180, 88, .72), rgba(229, 180, 88, .14) 38%, transparent 70%) top / 100% 2px no-repeat,
    radial-gradient(circle at 88% 0%, rgba(235, 183, 93, .12), transparent 31%),
    radial-gradient(circle at 0% 100%, rgba(193, 45, 55, .17), transparent 34%),
    linear-gradient(160deg, rgba(58, 10, 19, .99), rgba(17, 10, 14, .99) 58%, rgba(5, 7, 11, 1));
  box-shadow:
    0 30px 84px rgba(0,0,0,.70),
    inset 0 1px 0 rgba(255,255,255,.10),
    inset 0 0 0 1px rgba(255,229,174,.04);
}
.gs-imperial-confirm-card::before,
.gs-imperial-confirm-card::after {
  content: "";
  position: absolute;
  pointer-events: none;
}
.gs-imperial-confirm-card::before {
  inset: 7px;
  border: 1px solid rgba(255, 220, 153, .13);
  border-radius: 16px;
}
.gs-imperial-confirm-card::after {
  left: 22px;
  right: 22px;
  bottom: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(240,190,115,.72), transparent);
}
.gs-imperial-confirm-card .gs-kicker {
  position: relative;
  z-index: 1;
  display: block;
  color: #ffd47d;
  font: 900 10px/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .13em;
}
.gs-imperial-confirm-card h3 {
  position: relative;
  z-index: 1;
  margin: 8px 0 10px;
  color: #fff0d0;
  font-size: clamp(23px, 6vw, 31px);
  line-height: 1.06;
}
.gs-imperial-confirm-body {
  position: relative;
  z-index: 1;
  margin: 0;
  color: #ede2cf;
  font-size: 15px;
  line-height: 1.52;
}
.gs-imperial-confirm-note {
  position: relative;
  z-index: 1;
  margin: 15px 0 0;
  padding: 11px 12px;
  border: 1px solid rgba(240, 190, 115, .27);
  border-radius: 13px;
  color: #f1d7a8;
  background: linear-gradient(180deg, rgba(112, 65, 20, .23), rgba(57, 21, 16, .29));
  font-size: 12px;
  line-height: 1.42;
}
.gs-imperial-confirm-actions {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
  gap: 10px;
  margin-top: 19px;
}
.gs-imperial-confirm-actions button {
  min-height: 46px;
  appearance: none;
  cursor: pointer;
  border-radius: 12px;
  font: 900 13px/1.1 Inter, system-ui, sans-serif;
  transition: transform .16s ease, filter .16s ease, border-color .16s ease;
}
.gs-imperial-confirm-actions button:active { transform: translateY(1px); }
.gs-imperial-confirm-actions button:focus-visible {
  outline: 2px solid #ffe0a0;
  outline-offset: 3px;
}
.gs-imperial-confirm-cancel {
  border: 1px solid rgba(255, 224, 178, .28);
  color: #eadcc2;
  background: linear-gradient(180deg, rgba(77, 23, 29, .92), rgba(19, 11, 15, .98));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05), 0 8px 20px rgba(0,0,0,.24);
}
.gs-imperial-confirm-approve {
  border: 1px solid rgba(255, 234, 187, .58);
  color: #2b180b;
  background: linear-gradient(180deg, #f2c66f, #b96e31);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.30), 0 10px 24px rgba(92,38,7,.28);
}
.gs-imperial-confirm-approve.is-danger {
  border-color: rgba(255, 194, 194, .52);
  color: #fff4e8;
  background: linear-gradient(180deg, #ca5257, #751d28);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18), 0 10px 24px rgba(81,8,14,.34);
}
.gs-imperial-confirm-actions button:hover { filter: brightness(1.07); }
.gs-imperial-confirm-card.is-danger {
  border-color: rgba(224, 93, 99, .57);
  background:
    linear-gradient(90deg, rgba(224, 93, 99, .70), rgba(224, 93, 99, .12) 38%, transparent 70%) top / 100% 2px no-repeat,
    radial-gradient(circle at 84% 0%, rgba(213, 63, 70, .16), transparent 31%),
    linear-gradient(160deg, rgba(59, 9, 18, .99), rgba(18, 8, 13, .99) 58%, rgba(5, 7, 11, 1));
}
.gs-imperial-confirm-card.is-danger .gs-imperial-confirm-note {
  border-color: rgba(224, 93, 99, .34);
  color: #f5c9c9;
  background: linear-gradient(180deg, rgba(140, 31, 39, .28), rgba(51, 12, 18, .34));
}





/* === V0.9.104 — économie : vitrine, vente et enchères === */
.gs-vitrine-managed-item { position:relative; display:grid; gap:8px; padding:9px; border:1px solid rgba(240,190,115,.19); border-radius:14px; background:linear-gradient(180deg,rgba(56,16,23,.64),rgba(10,9,13,.88)); }
.gs-vitrine-managed-item.is-stored { opacity:.78; border-style:dashed; }
.gs-vitrine-managed-item.is-displayed { border-color:rgba(240,190,115,.48); box-shadow:inset 0 0 0 1px rgba(255,230,177,.05); }
.gs-vitrine-item-status { color:#e5c78b; font-size:10px; font-weight:800; letter-spacing:.03em; }
.gs-vitrine-item-actions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }
.gs-vitrine-item-actions button { appearance:none; min-height:31px; padding:5px 6px; border:1px solid rgba(255,225,178,.25); border-radius:8px; background:linear-gradient(180deg,rgba(90,27,34,.92),rgba(25,12,17,.96)); color:#f6ead5; font-weight:800; font-size:10px; cursor:pointer; }
.gs-vitrine-item-actions button:hover { border-color:rgba(255,225,178,.5); }
.gs-vitrine-auctions { display:grid; gap:4px; margin:10px 0; padding:10px 11px; border:1px solid rgba(240,190,115,.30); border-radius:12px; background:linear-gradient(180deg,rgba(110,60,18,.18),rgba(48,17,20,.30)); }
.gs-vitrine-auctions strong { color:#ffd77f; font-size:12px; }
.gs-vitrine-auctions small { color:#e5d3b3; font-size:11px; line-height:1.35; }


/* === V0.9.105 — concours vivants : prises de parole, jurés et rivalités === */
.gs-contest-rivalry-strip {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: baseline;
  gap: 3px 9px;
  margin: 0 0 10px;
  padding: 9px 11px;
  border: 1px solid rgba(240,190,115,.30);
  border-radius: 13px;
  background:
    radial-gradient(circle at 100% 0%, rgba(240,190,115,.10), transparent 43%),
    linear-gradient(135deg, rgba(82,22,30,.50), rgba(17,10,14,.88));
}
.gs-contest-rivalry-strip span,
.gs-contest-result-rivalry span {
  color: #ffd47d;
  font: 900 9px/1 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  letter-spacing: .08em;
}
.gs-contest-rivalry-strip strong { color: #fff0ca; font-size: 13px; }
.gs-contest-rivalry-strip small { grid-column: 1 / -1; color: #d8c6aa; font-size: 11px; }

.gs-contest-dialogue.is-rival {
  border-color: rgba(224, 93, 93, .52) !important;
  background:
    radial-gradient(circle at 0% 12%, rgba(223, 74, 74, .16), transparent 42%),
    linear-gradient(135deg, rgba(62,14,23,.96), rgba(20,10,14,.96)) !important;
}
.gs-contest-dialogue.is-rival .gs-contest-dialogue-copy small { color: #ffc0b7; }

.gs-contest-statement-choices {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 12px;
}
.gs-contest-statement-choice {
  min-height: 68px;
  padding: 9px;
  appearance: none;
  cursor: pointer;
  text-align: left;
  border: 1px solid rgba(255, 224, 164, .27);
  border-radius: 12px;
  color: #f8eddc;
  background:
    linear-gradient(180deg, rgba(95,28,36,.80), rgba(24,12,16,.94));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05), 0 7px 18px rgba(0,0,0,.20);
}
.gs-contest-statement-choice:hover,
.gs-contest-statement-choice:focus-visible {
  border-color: rgba(255, 220, 145, .66);
  background:
    linear-gradient(180deg, rgba(146,67,39,.72), rgba(65,18,22,.97));
  outline: none;
}
.gs-contest-statement-choice strong { display:block; color:#ffe1a1; font-size:12px; line-height:1.2; }
.gs-contest-statement-choice small { display:block; margin-top:5px; color:#e7cdb0; font-size:10px; line-height:1.25; }
.gs-contest-choice-hint { color:#e8c78d; font-size:12px; font-weight:800; }

.gs-contest-result-rivalry {
  display:grid;
  grid-template-columns:auto 1fr;
  align-items:baseline;
  gap:3px 8px;
  margin-top:12px;
  padding:10px 12px;
  border:1px solid rgba(240,190,115,.27);
  border-radius:14px;
  background:linear-gradient(135deg, rgba(99,31,37,.36), rgba(19,12,15,.82));
}
.gs-contest-result-rivalry strong { color:#fff0cf; font-size:13px; }
.gs-contest-result-rivalry small { grid-column:1/-1; color:#d9c8ae; font-size:11px; }




/* === V0.9.107 — 50 fonds de concours et fiche d'entrée cinématique === */
.gs-contest-card--hero {
  position: relative;
  isolation: isolate;
  display: block;
  min-height: 340px;
  margin-top: 14px;
  padding: 0 !important;
  overflow: hidden;
  border: 1px solid rgba(255, 218, 151, .50) !important;
  border-radius: 22px !important;
  background:
    linear-gradient(90deg, rgba(15, 5, 9, .98) 0%, rgba(19, 7, 12, .90) 45%, rgba(12, 7, 10, .30) 100%),
    var(--contest-card-bg) center / cover no-repeat !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.10),
    inset 0 0 0 1px rgba(255,220,157,.08),
    0 20px 56px rgba(0,0,0,.34) !important;
}
.gs-contest-card--hero::before {
  content: "";
  position: absolute;
  z-index: 0;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(255,217,145,.10), transparent 20%, rgba(0,0,0,.22) 100%),
    linear-gradient(90deg, rgba(115,17,31,.20), transparent 52%);
}
.gs-contest-card-scrim {
  position: absolute;
  z-index: 1;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(8,6,10,.82) 0%, rgba(16,7,12,.68) 51%, rgba(9,6,10,.06) 100%),
    linear-gradient(180deg, rgba(0,0,0,.10), rgba(0,0,0,.32));
}
.gs-contest-card-copy {
  position: relative;
  z-index: 2;
  display: grid;
  align-content: start;
  gap: 10px;
  width: min(100%, 660px);
  min-height: 340px;
  padding: 26px 28px 22px;
}
.gs-contest-card--hero .gs-kicker { color: #f6ca71; }
.gs-contest-card--hero h3 {
  max-width: 590px;
  margin: 0;
  color: #fff1d3 !important;
  font-size: clamp(26px, 4.4vw, 44px);
  line-height: 1.05;
  letter-spacing: -.025em;
  text-wrap: balance;
  text-shadow: 0 2px 5px rgba(0,0,0,.80);
}
.gs-contest-card--hero p {
  max-width: 620px;
  margin: 0 !important;
  color: rgba(249, 241, 228, .89) !important;
  font-size: 15px;
  line-height: 1.52;
  text-shadow: 0 1px 2px rgba(0,0,0,.78);
}
.gs-contest-hero-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  max-width: 620px;
  margin-top: 2px;
}
.gs-contest-hero-facts div {
  min-width: 0;
  padding: 10px 11px;
  border: 1px solid rgba(255, 222, 165, .24);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(55, 14, 22, .76), rgba(10, 8, 11, .86));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.04);
}
.gs-contest-hero-facts small,
.gs-contest-hero-facts strong {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.gs-contest-hero-facts small {
  color: rgba(255,230,188,.68);
  font-size: 9px;
  font-weight: 850;
  letter-spacing: .075em;
  text-transform: uppercase;
}
.gs-contest-hero-facts strong {
  margin-top: 3px;
  color: #ffe2a0;
  font-size: 14px;
  font-weight: 900;
}
.gs-contest-hero-status {
  color: #f1d29b;
  font-size: 13px;
  line-height: 1.38;
  text-shadow: 0 1px 2px rgba(0,0,0,.78);
}
.gs-contest-card--hero .gs-contest-tag-row {
  margin-top: 0;
}
.gs-contest-card--hero .gs-contest-tag-row span {
  color: #ffe4b0;
  border-color: rgba(255,213,135,.34);
  background: rgba(80,21,29,.58);
}
.gs-contest-stage {
  background-position: center center;
}
.gs-contest-stage::before {
  content: "";
  position: absolute;
  z-index: 1;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(7,5,8,.18), transparent 40%, rgba(4,4,7,.46) 100%);
}
.gs-contest-stage > :not(.gs-contest-stage-atmosphere) { position: absolute; }
.gs-contest-stage-atmosphere { z-index: 2; }
.gs-contest-stage-audience { z-index: 3; }
.gs-contest-stage-lights { z-index: 4; }
.gs-contest-stage-competitors { z-index: 5; }
.gs-contest-stage-jury { z-index: 6; }
.gs-contest-stage-display { z-index: 7; }
.gs-contest-stage-verdict { z-index: 9; }




/* === V0.9.108 — discussion marchand plein écran et limites de chambre ===
   La navigation globale disparaît pendant une discussion de brocante. La
   conversation devient un panneau interne défilable, avec fermeture évidente
   en haut et bouton de sortie en bas. */
.gs-game-shell.is-market-dialogue-open .gs-tabs,
.gs-game-shell.is-market-interaction-open .gs-tabs { display: none !important; }
.gs-market-dialogue {
  position: absolute;
  inset: 0;
  z-index: 96;
  display: block;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  touch-action: pan-y;
  padding: max(12px, env(safe-area-inset-top, 0px)) 12px max(16px, env(safe-area-inset-bottom, 0px));
  background:
    radial-gradient(circle at 50% 12%, rgba(135, 35, 42, .18), transparent 42%),
    linear-gradient(180deg, rgba(4, 6, 9, .78), rgba(4, 6, 9, .93));
  pointer-events: auto;
  animation: gs-md-rise .18s ease-out;
}
.gs-market-dialogue-card {
  width: min(100%, 640px);
  min-height: min(100%, 360px);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 0;
  overflow: hidden;
  border: 1px solid rgba(240, 190, 115, .42) !important;
  border-radius: 18px;
  background:
    radial-gradient(circle at 84% 0%, rgba(216, 74, 74, .15), transparent 34%),
    linear-gradient(160deg, rgba(48, 10, 18, .985), rgba(12, 9, 13, .99) 56%, rgba(6, 8, 12, .995)) !important;
  box-shadow: 0 26px 72px rgba(0,0,0,.62), inset 0 1px 0 rgba(255,255,255,.06);
}
.gs-market-dialogue-head {
  position: sticky;
  top: 0;
  z-index: 2;
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr) 38px;
  gap: 12px;
  align-items: center;
  padding: 14px;
  border-bottom: 1px solid rgba(240, 190, 115, .20);
  background: linear-gradient(180deg, rgba(48, 10, 18, .995), rgba(24, 10, 15, .98));
}
.gs-market-dialogue-portrait {
  width: 76px;
  height: 76px;
  border-color: rgba(240, 190, 115, .40) !important;
  background: linear-gradient(180deg, rgba(77, 22, 28, .76), rgba(10, 8, 12, .92)) !important;
}
.gs-market-dialogue-heading { min-width: 0; display: grid; gap: 5px; }
.gs-market-dialogue-heading > small {
  color: rgba(255, 228, 180, .66);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.gs-market-dialogue-close {
  width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid rgba(255, 225, 178, .40);
  border-radius: 11px;
  color: #fff0d2;
  background: linear-gradient(180deg, rgba(107, 30, 38, .95), rgba(28, 12, 17, .96));
  font-size: 25px;
  line-height: 1;
  cursor: pointer;
}
.gs-market-dialogue-close:active { transform: scale(.95); }
.gs-market-dialogue-scroll {
  display: grid;
  gap: 16px;
  padding: 18px 16px calc(18px + env(safe-area-inset-bottom, 0px));
}
.gs-market-dialogue-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 220px;
  gap: 14px;
  align-items: start;
}
.gs-market-dialogue-copy {
  display: grid;
  gap: 14px;
  min-width: 0;
}
.gs-market-dialogue-line {
  margin: 0;
  color: #f6ead2 !important;
  font-size: 16px;
  line-height: 1.58;
}
.gs-market-dialogue-quote {
  margin: 0;
  color: #dde7f6;
  font-size: 15px;
  line-height: 1.52;
  font-style: italic;
  padding: 14px 15px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(12,18,28,.40), rgba(7,12,18,.58));
}
.gs-market-dialogue-help {
  margin: 0;
  color: rgba(232, 211, 178, .74);
  font-size: 12px;
  line-height: 1.45;
}
.gs-market-dialogue-bond {
  display: grid;
  gap: 7px;
  padding: 14px 15px;
  border-radius: 14px;
  border: 1px solid rgba(240, 190, 115, .24);
  background: linear-gradient(180deg, rgba(82, 25, 32, .52), rgba(18, 14, 18, .66));
}
.gs-market-dialogue-bond > span {
  color: #ffd675;
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.gs-market-dialogue-bond > p {
  margin: 0;
  color: #f7ecda;
  font-size: 13px;
  line-height: 1.45;
}
.gs-market-dialogue-bond > em {
  color: rgba(248, 227, 190, .76);
  font-size: 11px;
  font-style: normal;
}
.gs-market-dialogue-actions-col {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  align-content: start;
}
.gs-market-dialogue .gs-md-btn {
  min-height: 48px;
  border: 1px solid rgba(255, 225, 178, .34);
  border-radius: 12px;
  font-size: 13px;
  font-weight: 900;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 8px 20px rgba(0,0,0,.22);
}
.gs-market-dialogue .gs-md-look {
  color: #2b180b;
  background: linear-gradient(180deg, #f0c068, #b56c31);
}
.gs-market-dialogue .gs-md-leave {
  color: #f7ead2;
  background: linear-gradient(180deg, rgba(83, 25, 33, .96), rgba(22, 11, 15, .97));
}



/* === V0.9.109 — fonds de concours réellement visibles dans l’aperçu ===
   Les visuels ne dépendent plus seulement d’une image CSS sous un voile dense.
   Un vrai <img> est rendu dans la carte et dans la cérémonie, pour que les 50
   fonds soient évidents à l’écran, même avec une ancienne sauvegarde locale. */
.gs-contest-card--hero {
  min-height: 430px !important;
  background: #0b080b !important;
  isolation: isolate;
}
.gs-contest-card-backdrop {
  position: absolute;
  z-index: 0;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  opacity: 1;
  pointer-events: none;
}
.gs-contest-card--hero::before {
  z-index: 1;
  background:
    linear-gradient(180deg, rgba(255,220,153,.09), transparent 24%, rgba(0,0,0,.24) 100%),
    linear-gradient(90deg, rgba(76,14,25,.20), transparent 58%) !important;
}
.gs-contest-card-scrim {
  z-index: 2;
  background:
    linear-gradient(180deg, rgba(5,4,7,.08) 0%, rgba(5,4,7,.10) 37%, rgba(4,4,7,.55) 100%),
    linear-gradient(90deg, rgba(5,4,7,.34), transparent 58%) !important;
}
.gs-contest-card-copy {
  position: absolute;
  z-index: 3;
  left: 16px;
  right: auto;
  bottom: 16px;
  width: min(620px, calc(100% - 32px));
  min-height: 0 !important;
  max-height: calc(100% - 32px);
  padding: 17px 18px 15px !important;
  overflow: auto;
  border: 1px solid rgba(255,223,163,.30);
  border-radius: 17px;
  background:
    linear-gradient(145deg, rgba(48,12,20,.88), rgba(11,8,12,.92) 62%, rgba(5,6,9,.94));
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.07),
    0 12px 34px rgba(0,0,0,.40);
  backdrop-filter: blur(3px);
}
.gs-contest-card--hero h3 {
  font-size: clamp(24px, 3.3vw, 37px);
}
.gs-contest-card--hero p {
  font-size: 14px;
  line-height: 1.42;
}
.gs-contest-hero-facts {
  max-width: none;
}
.gs-contest-stage {
  background-image: none !important;
}
.gs-contest-stage-backdrop {
  position: absolute;
  z-index: 0;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  pointer-events: none;
}
.gs-contest-stage::before { z-index: 1; }
.gs-contest-stage::after { z-index: 1; }




/* === V0.9.110 — progression de vitrine reliée aux pièces exposées === */
.gs-vitrine-visual-progress {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  margin: 10px 0 2px;
  padding: 8px 10px;
  border: 1px solid rgba(240,190,115,.24);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(74,25,28,.36), rgba(13,10,14,.72));
}
.gs-vitrine-visual-progress::before {
  content: "";
  grid-column: 1;
  grid-row: 1;
  display: block;
  height: 7px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(0,0,0,.42);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.06);
}
.gs-vitrine-visual-progress > span {
  grid-column: 1;
  grid-row: 1;
  display: block;
  height: 7px;
  min-width: 0;
  border-radius: 999px;
  background: linear-gradient(90deg, #bb682c, #f0c068);
  box-shadow: 0 0 10px rgba(240,190,115,.25);
}
.gs-vitrine-visual-progress small {
  grid-column: 2;
  grid-row: 1;
  color: #e7d2ab;
  font-size: 10px;
  font-weight: 700;
  text-align: right;
}



/* V0.9.115 — résultat Price Checker : analyse de marché sans patience perdue */
.gs-price-check-result {
  margin: 2px 0 4px;
  padding: 9px 10px;
  border: 1px solid rgba(232, 196, 89, .42);
  border-radius: 13px;
  background: linear-gradient(180deg, rgba(41, 35, 17, .9), rgba(16, 20, 25, .96));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05);
}
.gs-price-check-result > span {
  display: block;
  margin-bottom: 5px;
  color: var(--gs-gold);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .12em;
}
.gs-price-check-result > strong {
  display: block;
  color: #f3ecd4;
  font-size: 11px;
  line-height: 1.3;
}
.gs-price-check-result p {
  margin: 6px 0 4px;
  color: var(--gs-muted);
  font-size: 11px;
  line-height: 1.28;
}
.gs-price-check-result p b { color: var(--gs-gold); }
.gs-price-check-result em {
  display: inline-flex;
  align-items: center;
  min-height: 21px;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(255,255,255,.08);
  color: #eaeaea;
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
}
.gs-price-check-result em.is-bonne-affaire { background: rgba(68, 159, 98, .25); color: #a8edb6; }
.gs-price-check-result em.is-prix-correct { background: rgba(89, 131, 182, .25); color: #b9d8ff; }
.gs-price-check-result em.is-prix-élevé { background: rgba(197, 137, 48, .25); color: #ffd99a; }
.gs-price-check-result em.is-trop-risqué { background: rgba(184, 64, 64, .28); color: #ffbbbb; }
.gs-price-check-result small {
  display: block;
  margin-top: 6px;
  color: var(--gs-muted);
  font-size: 11px;
  line-height: 1.35;
}


.gs-lot-bond-card {
  display: grid;
  gap: 4px;
  padding: 9px 10px;
  border-radius: 14px;
  border: 1px solid rgba(240, 190, 115, .18);
  background: linear-gradient(180deg, rgba(84, 27, 35, .28), rgba(9, 15, 24, .56));
}
.gs-lot-bond-card > span {
  color: #ffd56e;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.gs-lot-bond-card > strong {
  color: #fff0d5;
  font-size: 13px;
  line-height: 1.18;
}
.gs-lot-bond-card > p {
  margin: 0;
  color: #d3dfef;
  font-size: 11px;
  line-height: 1.32;
}
.gs-lot-bond-card > em {
  color: rgba(243, 227, 196, .78);
  font-size: 10px;
  font-style: normal;
}
.gs-lot-bond-card.is-compact > p {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.gs-lot-dialogue-copy.is-impatient p { color: #ffd4cb; }


.gs-shell.screen-city .gs-main {
  padding: 0;
}
.gs-city-view {
  display: grid;
  gap: 14px;
  padding: 14px;
}
.gs-city-head {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  gap: 12px;
  align-items: start;
  padding: 14px;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(16,22,34,.88), rgba(9,14,22,.92));
}
.gs-city-head h2 {
  margin: 4px 0 8px;
  color: #fff3da;
}
.gs-city-head p {
  margin: 0;
  color: #cedbeb;
  line-height: 1.5;
  font-size: 13px;
}
.gs-city-home-btn {
  min-height: 44px;
  padding: 0 16px;
  border-radius: 12px;
  border: 1px solid rgba(255,224,178,.22);
  background: linear-gradient(180deg, rgba(57,72,98,.95), rgba(35,45,62,.95));
  color: #fff2d7;
  font-weight: 800;
}
.gs-city-stage {
  position: relative;
  overflow: hidden;
  min-height: 520px;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, #96ccff 0%, #d5ecff 38%, #cfe6d3 39%, #9fc28f 53%, #4d5669 54%, #2f3442 100%);
}
.gs-city-skyline {
  position: absolute;
  left: 0; right: 0; top: 48px;
  height: 170px;
}
.gs-city-skyline i {
  position: absolute;
  bottom: 0;
  display: block;
  width: 14%;
  border-radius: 10px 10px 0 0;
  background: linear-gradient(180deg, rgba(91,126,164,.85), rgba(53,74,102,.95));
  box-shadow: inset 0 0 0 2px rgba(255,255,255,.05);
}
.gs-city-skyline .c1 { left: 2%; height: 120px; }
.gs-city-skyline .c2 { left: 17%; height: 150px; }
.gs-city-skyline .c3 { left: 35%; height: 132px; }
.gs-city-skyline .c4 { left: 57%; height: 162px; }
.gs-city-skyline .c5 { left: 78%; height: 138px; }
.gs-city-strip {
  position: absolute;
  left: 0; right: 0;
  bottom: 168px;
  display: grid;
  grid-template-columns: 1.25fr 1fr 1fr 1fr;
  gap: 10px;
  padding: 0 12px;
  align-items: end;
}
.gs-city-block {
  display: grid;
  gap: 8px;
  align-items: end;
}
.gs-city-building {
  position: relative;
  min-height: 156px;
  border-radius: 18px 18px 0 0;
  padding: 12px;
  background: linear-gradient(180deg, rgba(241,197,132,.92), rgba(178,129,79,.97));
  box-shadow: inset 0 0 0 2px rgba(80,55,29,.28);
}
.gs-city-building-home {
  min-height: 204px;
  background: linear-gradient(180deg, rgba(249,219,170,.96), rgba(193,147,95,.98));
}
.gs-city-building-cafe { background: linear-gradient(180deg, rgba(224,187,150,.94), rgba(155,106,72,.98)); }
.gs-city-building-cinema { background: linear-gradient(180deg, rgba(183,202,232,.95), rgba(104,130,165,.99)); }
.gs-city-building-shop { background: linear-gradient(180deg, rgba(189,212,173,.95), rgba(113,148,96,.99)); }
.gs-city-building em {
  position: absolute;
  left: 10px; right: 10px; bottom: 14px;
  display: block;
  padding: 9px 10px;
  border-radius: 10px;
  background: rgba(22,26,34,.72);
  color: #fff3da;
  font-style: normal;
  font-weight: 800;
  text-align: center;
  font-size: 12px;
}
.gs-city-building b,
.gs-city-window-row span {
  display: inline-block;
  width: 18px;
  height: 24px;
  margin: 4px;
  border-radius: 6px;
  background: rgba(241,245,196,.95);
  box-shadow: inset 0 0 0 2px rgba(69,52,31,.18);
}
.gs-city-window-row { display: flex; gap: 6px; }
.gs-city-awning,
.gs-city-door-mark {
  position: absolute;
  left: 16px;
  right: 16px;
  text-align: center;
  background: rgba(34,40,53,.84);
  color: #fff0d0;
  border-radius: 10px;
  padding: 8px 10px;
  font-size: 12px;
  font-weight: 800;
}
.gs-city-awning { bottom: 44px; }
.gs-city-door-mark { bottom: 10px; }
.gs-city-caption {
  text-align: center;
  color: #eef5ff;
  font-size: 12px;
  font-weight: 700;
  text-shadow: 0 2px 6px rgba(0,0,0,.35);
}
.gs-city-road {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 178px;
  background: linear-gradient(180deg, #515766 0%, #3a4050 100%);
}
.gs-city-lane {
  position: absolute;
  left: 7%; right: 7%; top: 52%;
  height: 8px;
  transform: translateY(-50%);
  background: repeating-linear-gradient(90deg, #f4e3a6 0 42px, transparent 42px 76px);
  opacity: .8;
}
.gs-city-hero {
  position: absolute;
  left: 18%;
  bottom: 44px;
  width: 128px;
  height: 128px;
}
.gs-city-hero .gs-life-character {
  position: absolute !important;
  inset: auto 0 0 0 !important;
  width: 100%;
  max-width: none;
}
.gs-city-hero .gs-life-bubble { display: none; }
.gs-city-footnote {
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: 8px;
  color: rgba(255,245,227,.72);
  font-size: 11px;
  text-align: center;
}
.gs-city-notes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 12px;
}
.gs-city-notes article {
  padding: 13px 14px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(17,23,35,.82), rgba(9,13,21,.90));
}
.gs-city-notes strong {
  display: block;
  color: #fff2d7;
  margin-bottom: 6px;
}
.gs-city-notes p {
  margin: 0;
  color: #ced9e8;
  font-size: 13px;
  line-height: 1.45;
}




/* === V0.9.123 — maps générées intégrées (chambre, brocante, Triplonville) === */
.gs-game-shell.gs-screen-city {
  grid-template-rows: auto minmax(0, 1fr) auto;
}
.gs-game-shell.gs-screen-city .gs-city-map-screen {
  min-height: 0;
  padding: 10px;
  display: grid;
}
.gs-city-map-stage {
  position: relative;
  min-height: min(72vh, 760px);
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.09);
  border-radius: 22px;
  background:
    radial-gradient(circle at 50% 32%, rgba(72,110,164,.18), transparent 48%),
    linear-gradient(180deg, #0a1019, #03070c);
  box-shadow: inset 0 0 70px rgba(0,0,0,.35), 0 18px 44px rgba(0,0,0,.28);
}
.gs-city-map-bg {
  position: absolute;
  inset: 0;
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;
  background-color: #0d0d12;
  image-rendering: pixelated;
}
.gs-city-map-hero {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 3;
}
.gs-city-map-hero .gs-life-character {
  left: 55.2% !important;
  bottom: 43.2% !important;
  width: clamp(58px, 10.7vw, 126px) !important;
  height: auto !important;
  transform: translateX(-50%) scale(.90) !important;
  filter: drop-shadow(0 7px 7px rgba(0,0,0,.5));
}
.gs-city-map-hero .gs-life-shadow,
.gs-city-map-hero .gs-life-bubble { display: none !important; }
.gs-city-map-hud {
  position: absolute;
  z-index: 5;
  inset: 12px 12px auto 12px;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  pointer-events: none;
}
.gs-city-map-title {
  display: grid;
  gap: 2px;
  padding: 9px 11px;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 13px;
  background: rgba(5,10,16,.82);
  box-shadow: 0 7px 20px rgba(0,0,0,.28);
  backdrop-filter: blur(8px);
}
.gs-city-map-title span { color: #ffd66e; font-size: 10px; font-weight: 900; letter-spacing: .12em; }
.gs-city-map-title strong { color: #fff4df; font-size: 15px; line-height: 1.1; }
.gs-city-map-title small { color: #b9c9dc; font-size: 11px; }
.gs-city-map-home {
  pointer-events: auto;
  min-height: 38px;
  padding: 0 12px;
  border: 1px solid rgba(255,225,178,.32);
  border-radius: 11px;
  color: #fff2d7;
  background: linear-gradient(180deg, rgba(56,75,105,.96), rgba(29,40,58,.96));
  font-size: 12px;
  font-weight: 900;
  box-shadow: 0 7px 18px rgba(0,0,0,.25);
}
.gs-city-map-note {
  position: absolute;
  z-index: 5;
  left: 50%;
  bottom: max(10px, env(safe-area-inset-bottom, 0px));
  width: min(88%, 520px);
  transform: translateX(-50%);
  padding: 8px 11px;
  border-radius: 999px;
  color: rgba(239,246,255,.90);
  background: rgba(5,10,16,.78);
  border: 1px solid rgba(255,255,255,.08);
  text-align: center;
  font-size: 11px;
  line-height: 1.32;
  box-shadow: 0 7px 18px rgba(0,0,0,.22);
}



/* === V0.9.125 — Discussion marchand en deux temps ===
   Étape 1 : vrai échange visuel, portrait large à droite.
   Étape 2 : menu explicite pour le stand ou la conversation approfondie. */
.gs-market-dialogue-card {
  width: min(100%, 720px);
  min-height: 0;
}
.gs-market-dialogue-head {
  grid-template-columns: minmax(0, 1fr) 44px;
  align-items: center;
  padding: 15px 16px;
}
.gs-market-dialogue-heading {
  display: grid;
  gap: 6px;
}
.gs-market-dialogue-name {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: baseline;
  color: #fff1d6;
  font-size: 22px;
  line-height: 1.1;
  font-weight: 900;
}
.gs-market-dialogue-stall {
  color: rgba(255, 226, 183, .78);
  font-size: 14px;
  font-weight: 700;
}
.gs-market-dialogue-scroll {
  display: grid;
  gap: 16px;
  padding: 16px;
}
.gs-md-dialogue-stage {
  display: grid;
  grid-template-columns: 174px minmax(0, 1fr);
  gap: 16px;
  align-items: stretch;
  min-width: 0;
}
.gs-md-dialogue-copy {
  display: grid;
  align-content: center;
  gap: 12px;
  min-width: 0;
}
.gs-md-dialogue-copy .gs-kicker {
  color: rgba(255, 211, 128, .9);
}
.gs-md-speech {
  margin: 0;
  color: #fff1d9;
  font-size: clamp(17px, 2.7vw, 21px);
  line-height: 1.45;
  font-weight: 760;
}
.gs-md-speech-reply {
  margin: 0;
  padding: 12px 13px;
  color: #dae5f7;
  font-size: 14px;
  line-height: 1.45;
  font-style: italic;
  border-left: 3px solid rgba(244, 193, 101, .75);
  border-radius: 0 12px 12px 0;
  background: rgba(6, 12, 20, .42);
}
.gs-md-stage-portrait {
  position: relative;
  display: grid;
  place-items: end center;
  min-height: 184px;
  overflow: hidden;
  border: 1px solid rgba(242, 195, 114, .38);
  border-radius: 18px;
  background:
    radial-gradient(circle at 50% 22%, rgba(232, 104, 98, .25), transparent 46%),
    linear-gradient(180deg, rgba(76, 22, 31, .96), rgba(12, 11, 16, .98));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 12px 28px rgba(0,0,0,.24);
}
.gs-md-stage-portrait::after {
  content: "";
  position: absolute;
  left: 12%; right: 12%; bottom: 8px;
  height: 20px;
  border-radius: 50%;
  background: rgba(0,0,0,.42);
  filter: blur(5px);
}
.gs-md-stage-portrait .gs-npc {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  min-height: 184px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.gs-md-stage-portrait .gs-npc img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  image-rendering: pixelated;
}
.gs-md-connection-note {
  display: grid;
  gap: 4px;
  padding: 10px 11px;
  border: 1px solid rgba(242, 195, 114, .22);
  border-radius: 12px;
  background: rgba(75, 24, 32, .38);
}
.gs-md-connection-note strong {
  color: #ffd475;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.gs-md-connection-note span {
  color: rgba(255, 239, 214, .86);
  font-size: 12px;
  line-height: 1.35;
}
.gs-md-action-menu {
  display: grid;
  gap: 10px;
  padding-top: 2px;
  border-top: 1px solid rgba(240, 190, 115, .16);
}
.gs-market-dialogue .gs-md-btn {
  width: 100%;
  min-height: 54px;
  padding: 12px 16px;
  border-radius: 15px;
  font-size: 16px;
  line-height: 1.2;
  text-align: center;
}
.gs-market-dialogue .gs-md-look {
  color: #2b1709;
  background: linear-gradient(180deg, #f5c86f, #b86d31);
}
.gs-market-dialogue .gs-md-talk {
  color: #f0f5ff;
  border-color: rgba(168, 203, 244, .26);
  background: linear-gradient(180deg, rgba(28, 44, 62, .98), rgba(10, 18, 29, .98));
}
.gs-market-dialogue .gs-md-leave {
  color: rgba(248, 234, 211, .92);
  background: linear-gradient(180deg, rgba(83, 25, 33, .96), rgba(22, 11, 15, .97));
}
/* Old layout blocks are no longer used in this screen. */
.gs-market-dialogue-layout,
.gs-market-dialogue-actions-col,
.gs-market-dialogue-portrait,
.gs-market-dialogue-quote,
.gs-market-dialogue-bond { display: none; }







/* === V0.9.131 — Objets de stand un peu plus grands, sans débordement === */
.gs-lot-main .gs-item-card {
  min-height: 84px;
}
.gs-lot-main .gs-item-visual {
  width: 66px;
  height: 66px;
  flex: 0 0 66px;
  padding: 2px;
  overflow: hidden;
}
.gs-lot-main .gs-item-visual .gs-item-catalog-sprite,
.gs-lot-main .gs-item-visual > img.gs-catalog-sprite {
  width: 112%;
  height: 112%;
  max-width: 112%;
  max-height: 112%;
  object-fit: contain;
  object-position: center;
}


/* === V0.9.132 — Triplonville jouable : marche, collisions et caméra mobile === */
.gs-game-shell.gs-screen-city .gs-city-map-screen {
  position: relative;
  min-height: 0;
  padding: 8px;
  display: block;
}
.gs-game-shell.gs-screen-city .gs-city-map-stage {
  min-height: clamp(430px, 67dvh, 720px);
  height: min(74dvh, 760px);
  aspect-ratio: auto;
  overflow: hidden;
  touch-action: none;
  background: radial-gradient(circle at 50% 35%, rgba(108, 143, 189, .16), transparent 48%), #05090e;
}
.gs-city-map-world {
  position: absolute;
  left: 0;
  top: 0;
  will-change: transform;
  transform-origin: 0 0;
}
.gs-city-map-world .gs-city-map-bg {
  inset: 0;
  background-size: 100% 100%;
  background-position: center;
  background-color: #0d0d12;
  image-rendering: pixelated;
  pointer-events: none;
}
.gs-city-map-world .gs-city-map-hero {
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
}
.gs-city-map-world .gs-city-map-hero .gs-market-hero {
  pointer-events: none;
}
.gs-city-map-world .gs-market-hero[data-walk-dir] {
  background-repeat: no-repeat !important;
  image-rendering: pixelated;
}
.gs-city-home-door {
  position: absolute;
  z-index: 40;
  width: 102px;
  height: 68px;
  transform: translate(-50%, -100%);
  padding: 0;
  border: 0;
  background: transparent;
  color: transparent;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.gs-city-home-door::before {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 5px;
  width: 24px;
  height: 10px;
  transform: translateX(-50%);
  border-radius: 50%;
  background: rgba(0,0,0,.28);
  opacity: .2;
  transition: opacity .18s ease, transform .18s ease;
}
.gs-city-home-door span {
  position: absolute;
  left: 50%;
  bottom: 14px;
  transform: translate(-50%, 4px);
  padding: 5px 8px;
  border: 1px solid rgba(255,220,150,.36);
  border-radius: 999px;
  color: #fff0d2;
  background: rgba(31,11,16,.88);
  font-size: 10px;
  font-weight: 900;
  opacity: 0;
  white-space: nowrap;
  box-shadow: 0 5px 12px rgba(0,0,0,.3);
  transition: opacity .18s ease, transform .18s ease;
}
.gs-city-home-door.is-near::before { opacity: .95; transform: translateX(-50%) scale(1.45); }
.gs-city-home-door.is-near span { opacity: 1; transform: translate(-50%, 0); }
.gs-city-map-hud {
  z-index: 20;
}
.gs-city-map-tools {
  display: flex;
  align-items: center;
  gap: 6px;
  pointer-events: auto;
}
.gs-city-map-zoom {
  width: 34px;
  min-width: 34px;
  height: 34px;
  padding: 0;
  border: 1px solid rgba(255,225,178,.20);
  border-radius: 10px;
  color: #fff0d2;
  background: linear-gradient(180deg, rgba(55,26,34,.94), rgba(17,13,18,.96));
  font-size: 17px;
  font-weight: 900;
  line-height: 1;
}
.gs-city-map-home {
  background: linear-gradient(180deg, rgba(108,39,46,.96), rgba(42,15,20,.98));
}
.gs-city-map-context {
  position: absolute;
  z-index: 21;
  left: 50%;
  bottom: max(12px, env(safe-area-inset-bottom, 0px));
  width: min(78%, 500px);
  transform: translateX(-50%);
  padding: 7px 10px;
  border: 1px solid rgba(255,230,190,.13);
  border-radius: 999px;
  color: rgba(248,236,216,.82);
  background: rgba(12,10,14,.78);
  box-shadow: 0 7px 18px rgba(0,0,0,.25);
  text-align: center;
  font-size: 11px;
  line-height: 1.24;
  pointer-events: none;
}
.gs-city-map-context.is-active {
  color: #ffe6b0;
  border-color: rgba(244,193,101,.45);
  background: rgba(77,22,30,.86);
}
.gs-city-map-notice {
  position: absolute;
  z-index: 23;
  left: 50%;
  bottom: 52px;
  width: min(80%, 430px);
  transform: translateX(-50%);
  padding: 8px 10px;
  border: 1px solid rgba(245,198,112,.32);
  border-radius: 11px;
  color: #ffe9c0;
  background: rgba(66,22,29,.92);
  box-shadow: 0 8px 22px rgba(0,0,0,.34);
  text-align: center;
  font-size: 11px;
  line-height: 1.3;
}
.gs-city-map-stage .gs-city-joystick {
  z-index: 30;
  right: 14px;
  bottom: 66px;
}
.gs-collection-game-root.gs-controls-left .gs-city-map-stage .gs-city-joystick {
  left: 14px !important;
  right: auto !important;
}




/* === V0.9.139 — Passages aléatoires au pas de la porte === */
.gs-room-visitor.is-passage {
  border-color: rgba(255, 198, 92, .36);
  background: linear-gradient(180deg, rgba(70, 36, 23, .62), rgba(8, 12, 18, .96));
  box-shadow: inset 0 0 0 1px rgba(255, 226, 157, .05), 0 10px 26px rgba(0,0,0,.22);
}
.gs-room-visitor.is-passage .gs-room-visitor-head .gs-npc {
  border-color: rgba(255, 202, 97, .36);
}
.gs-room-passage-notice {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 3px 8px;
  margin-top: 9px;
  padding: 7px 9px;
  border: 1px solid rgba(255, 205, 102, .28);
  border-radius: 10px;
  background: linear-gradient(90deg, rgba(104, 54, 24, .55), rgba(18, 22, 31, .62));
}
.gs-room-passage-notice span {
  grid-row: span 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 46px;
  height: 25px;
  border-radius: 7px;
  color: #fff1c5;
  background: rgba(175, 78, 35, .82);
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .08em;
}
.gs-room-passage-notice strong { color: #ffe6a6; font-size: 11px; }
.gs-room-passage-notice small { color: rgba(255, 237, 203, .72); font-size: 10px; }
.gs-event-card .gs-event-content .gs-kicker + p { margin-top: 5px; }


/* === V0.9.141 — PNJ de passage : la sonnette reste à la porte === */
.gs-door-dot.is-ringing {
  z-index: 46 !important;
}
.gs-door-dot.is-ringing::before {
  background: radial-gradient(circle at 35% 28%, #fff8cf, #ffd861 46%, #b87308 82%);
  box-shadow: 0 0 0 3px rgba(255, 218, 102, .16), 0 0 18px 8px rgba(255, 197, 58, .7), 0 2px 6px rgba(0,0,0,.58);
  animation: gsDoorBellGlow .76s ease-in-out infinite;
}
.gs-door-dot.is-ringing .gs-obj-dot-pulse {
  width: 88%;
  height: 88%;
  border-color: rgba(255, 231, 132, .98);
  animation-duration: .8s;
}
.gs-door-bell-callout {
  position: absolute;
  left: 50%;
  bottom: 86%;
  transform: translateX(-50%);
  min-width: 112px;
  padding: 5px 8px 6px;
  border: 1px solid rgba(255, 213, 103, .72);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(47, 18, 22, .96), rgba(14, 11, 16, .97));
  color: #fff2cf;
  box-shadow: 0 5px 15px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.08);
  text-align: center;
  white-space: nowrap;
  pointer-events: none;
  animation: gsDoorBellCallout .76s ease-in-out infinite;
}
.gs-door-bell-callout b,
.gs-door-bell-callout small {
  display: block;
}
.gs-door-bell-callout b {
  color: #ffdc74;
  font-size: 9px;
  letter-spacing: .12em;
}
.gs-door-bell-callout small {
  margin-top: 1px;
  color: #f1dfc0;
  font-size: 10px;
}
@keyframes gsDoorBellGlow {
  0%, 100% { filter: brightness(1); transform: scale(1); }
  50% { filter: brightness(1.2); transform: scale(1.12); }
}
@keyframes gsDoorBellCallout {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-3px); }
}

/* === V0.9.150 — sauvegardes exportables, importables et copies de secours === */
.gs-save-system-notice {
  position: relative;
  z-index: 120;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 10px 14px 0;
  padding: 11px 12px;
  border: 1px solid rgba(255, 219, 144, .34);
  border-radius: 13px;
  color: #f7ead2;
  background: linear-gradient(180deg, rgba(56, 25, 28, .97), rgba(17, 13, 17, .98));
  box-shadow: 0 10px 28px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.04);
}
.gs-save-system-notice > div {
  min-width: 0;
  display: grid;
  gap: 3px;
}
.gs-save-system-notice strong {
  color: #ffe3a5;
  font-size: 12px;
  letter-spacing: .025em;
}
.gs-save-system-notice span {
  color: rgba(244, 231, 207, .78);
  font-size: 11px;
  line-height: 1.4;
}
.gs-save-system-notice button {
  appearance: none;
  width: 30px;
  height: 30px;
  flex: 0 0 30px;
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 9px;
  color: #fff2d5;
  background: rgba(0,0,0,.24);
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
}
.gs-save-system-notice.is-success { border-color: rgba(111, 214, 155, .40); }
.gs-save-system-notice.is-success strong { color: #baf2cf; }
.gs-save-system-notice.is-warning { border-color: rgba(255, 196, 82, .48); }
.gs-save-system-notice.is-error { border-color: rgba(255, 104, 111, .52); }
.gs-save-system-notice.is-error strong { color: #ffbdc1; }
.gs-menu-screen .gs-save-system-notice {
  position: absolute;
  top: 12px;
  left: 50%;
  width: min(680px, calc(100% - 24px));
  margin: 0;
  transform: translateX(-50%);
  z-index: 150;
}
.gs-settings-save-card {
  border-color: rgba(240, 190, 115, .30) !important;
}
.gs-settings-save-actions {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 8px;
}
.gs-settings-save-actions .gs-small-btn {
  width: 100%;
  min-height: 40px;
  white-space: normal;
  line-height: 1.25;
}
.gs-save-import-input {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}
.gs-settings-backup-status {
  display: grid;
  gap: 4px;
  margin-top: 12px;
  padding: 10px 11px;
  border: 1px solid rgba(111, 214, 155, .20);
  border-radius: 11px;
  background: rgba(36, 104, 65, .12);
}
.gs-settings-backup-status strong {
  color: #b9ebca;
  font-size: 12px;
}
.gs-settings-backup-status small {
  color: rgba(221, 236, 225, .70);
  font-size: 10px;
  line-height: 1.42;
}


/* === V0.9.152 — Mode administrateur privé === */
.gs-tabs button[data-screen="admin"] {
  color: #ffe59a;
  border-color: rgba(242,199,107,.42);
}
.gs-tabs button[data-screen="admin"].active {
  color: #fff6d9;
  background: linear-gradient(180deg, rgba(125,89,22,.88), rgba(55,35,8,.96));
  border-color: rgba(255,226,145,.68);
}
.gs-admin-screen {
  padding: 18px;
  display: grid;
  gap: 16px;
}
.gs-admin-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 20px;
  border: 1px solid rgba(242,199,107,.24);
  border-radius: 20px;
  background: linear-gradient(135deg, rgba(28,22,10,.96), rgba(8,13,18,.97));
}
.gs-admin-header h2 { margin: 5px 0 6px; }
.gs-admin-header p { margin: 0; color: var(--gs-muted); }
.gs-admin-lock {
  flex: 0 0 auto;
  padding: 8px 11px;
  border: 1px solid rgba(242,199,107,.42);
  border-radius: 999px;
  color: #ffe59a;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .08em;
}
.gs-admin-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 14px;
}
.gs-admin-card {
  display: grid;
  align-content: start;
  gap: 12px;
  padding: 18px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(13,20,27,.96), rgba(7,11,16,.98));
}
.gs-admin-card h3 { margin: 0; }
.gs-admin-card p { margin: 0; color: var(--gs-muted); line-height: 1.45; }
.gs-admin-card > small { color: var(--gs-muted); line-height: 1.4; }
.gs-admin-balance {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 10px;
  padding: 12px;
  border-radius: 12px;
  background: rgba(242,199,107,.08);
  border: 1px solid rgba(242,199,107,.18);
}
.gs-admin-balance small { color: var(--gs-muted); }
.gs-admin-balance strong { font-size: 24px; color: var(--gs-gold); }
.gs-admin-field { display: grid; gap: 6px; }
.gs-admin-field span { color: #dce8f4; font-size: 12px; font-weight: 800; }
.gs-admin-field input {
  width: 100%;
  min-height: 44px;
  padding: 9px 11px;
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 11px;
  background: rgba(3,7,10,.86);
  color: #fff;
  font: inherit;
}
.gs-admin-primary,
.gs-admin-inline-actions button,
.gs-admin-teleports button,
.gs-admin-danger-button {
  appearance: none;
  min-height: 44px;
  border: 1px solid rgba(255,255,255,.11);
  border-radius: 11px;
  background: rgba(255,255,255,.055);
  color: #eef4fa;
  font-weight: 850;
  cursor: pointer;
}
.gs-admin-primary {
  background: linear-gradient(180deg, rgba(174,126,34,.94), rgba(91,59,10,.96));
  border-color: rgba(255,223,139,.34);
}
.gs-admin-inline-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 8px;
}
.gs-admin-teleports {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 9px;
}
.gs-admin-teleports button {
  padding: 11px;
  display: grid;
  gap: 4px;
  text-align: left;
}
.gs-admin-teleports button b { color: #fff; }
.gs-admin-teleports button small { color: var(--gs-muted); font-weight: 600; }
.gs-admin-card.gs-admin-danger {
  grid-column: 1 / -1;
  border-color: rgba(216,74,74,.28);
  background: linear-gradient(180deg, rgba(40,12,17,.94), rgba(15,7,10,.98));
}
.gs-admin-danger-button {
  background: linear-gradient(180deg, rgba(190,55,64,.96), rgba(102,23,31,.98));
  border-color: rgba(255,157,163,.35);
}
.gs-admin-notice {
  padding: 11px 13px;
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 12px;
  background: rgba(255,255,255,.05);
}
.gs-admin-notice.is-success { border-color: rgba(97,214,143,.34); color: #b9f6d0; }
.gs-admin-notice.is-danger { border-color: rgba(232,74,74,.42); color: #ffc2c5; }


/* === V0.9.153 — Nouvelle partie accessible à tous les joueurs === */
.gs-settings-danger-card {
  border-color: rgba(232, 74, 74, .30);
  background: linear-gradient(180deg, rgba(118, 25, 36, .16), rgba(20, 8, 12, .24));
}
.gs-settings-danger-button {
  width: 100%;
  min-height: 42px;
  appearance: none;
  border: 1px solid rgba(255, 132, 132, .45);
  border-radius: 11px;
  padding: 10px 13px;
  cursor: pointer;
  color: #fff3f3;
  background: linear-gradient(180deg, rgba(190, 55, 63, .92), rgba(104, 24, 35, .96));
  font: 850 12px/1.15 Inter, system-ui, sans-serif;
}
.gs-settings-danger-button:hover {
  border-color: rgba(255, 188, 188, .72);
  background: linear-gradient(180deg, rgba(216, 67, 73, .96), rgba(119, 29, 41, .98));
}
.gs-settings-danger-note {
  display: block;
  margin-top: 9px;
  color: #c9aeb2;
  font-size: 11px;
  line-height: 1.4;
}
.gs-menu-new-game {
  position: absolute;
  left: clamp(14px, 3.2vw, 42px);
  top: clamp(14px, 3.2vw, 42px);
  z-index: 62;
  pointer-events: auto;
  appearance: none;
  min-height: 34px;
  border: 1px solid rgba(255,255,255,.20);
  border-radius: 999px;
  padding: 8px 13px;
  cursor: pointer;
  color: rgba(255,245,245,.90);
  background: rgba(8, 11, 16, .68);
  backdrop-filter: blur(8px);
  font: 800 11px/1 Inter, system-ui, sans-serif;
  letter-spacing: .03em;
}
.gs-menu-new-game:hover {
  color: #fff;
  border-color: rgba(255, 134, 134, .48);
  background: rgba(90, 24, 34, .72);
}


/* === V0.9.156 — aperçu main dominante cohérent avec le jeu === */
.gs-settings-preview-right .gs-settings-preview-stick { left:13px; right:auto; }
.gs-settings-preview-right span { left:7px; right:auto; }
.gs-settings-preview-right b { left:auto; right:13px; }
.gs-settings-preview-left .gs-settings-preview-stick { left:auto; right:13px; }
.gs-settings-preview-left span { left:auto; right:7px; }
.gs-settings-preview-left b { left:13px; right:auto; }

/* V0.9.157 — Fenêtres RPG et pixels nets. Responsive dans le fichier dédié. */
#gs-collection-game-root .gs-rpg-overlay {
  position: fixed !important; inset: 0 !important; z-index: 100050;
  display: flex !important; align-items: flex-end !important; justify-content: center;
  width: 100% !important; height: 100dvh; max-height: none !important;
  padding: 24px; box-sizing: border-box;
  background: rgba(9, 10, 24, .34) !important;
  backdrop-filter: none !important; animation: none !important;
  pointer-events: auto !important;
}
#gs-collection-game-root .gs-rpg-event-host {
  display: block !important; width: min(100%, 860px) !important;
  max-width: 860px !important; min-height: 0 !important; max-height: none !important;
  padding: 0 !important; margin: 0 !important; border: 0 !important;
  border-radius: 0 !important; background: none !important; box-shadow: none !important;
  overflow: visible !important; transform: none !important; animation: none !important;
}
#gs-collection-game-root .gs-rpg-dialogue {
  --rpg-ink: #f6f0d8; --rpg-muted: #d6b7a7; --rpg-line: #efad58;
  position: relative; width: min(100%, 860px); min-width: 0;
  max-height: min(82dvh, 680px); overflow-y: auto; overscroll-behavior: contain;
  box-sizing: border-box; margin: 0; padding: 18px 22px 12px;
  color: var(--rpg-ink); background: linear-gradient(180deg, #741d2b, #1b0b13 72%);
  border: 3px solid var(--rpg-line); border-radius: 3px;
  outline: 2px solid #1b0b13; outline-offset: 1px;
  box-shadow: inset 0 0 0 2px #9c5234, 0 6px 0 #1b0b13;
  font-family: 'Lucida Console', 'Courier New', monospace;
  text-align: left; line-height: 1.5; font-size: 16px;
  scrollbar-color: #bd763e #1b0b13; scrollbar-width: thin;
  isolation: isolate;
  pointer-events: auto;
  touch-action: pan-y;
}
#gs-collection-game-root .gs-rpg-dialogue *,
#gs-collection-game-root .gs-rpg-dialogue *::before,
#gs-collection-game-root .gs-rpg-dialogue *::after { box-sizing: border-box; }
#gs-collection-game-root .gs-rpg-header {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
  padding: 0 0 12px; margin: 0; border-bottom: 1px solid #9c5234;
}
#gs-collection-game-root .gs-rpg-header strong {
  display: block; color: #ffe8a6; font: bold 20px/1.3 'Lucida Console', 'Courier New', monospace;
  text-shadow: 2px 2px #1b0b13; letter-spacing: .015em; overflow-wrap: anywhere;
}
#gs-collection-game-root .gs-rpg-header small { display: block; margin-top: 3px; color: var(--rpg-muted); font-size: 12px; }
#gs-collection-game-root .gs-rpg-scene {
  display: grid; grid-template-columns: 128px minmax(0, 1fr); gap: 22px;
  align-items: start; padding: 16px 0 10px;
}
#gs-collection-game-root .gs-rpg-portrait {
  width: 128px; height: 128px; border: 2px solid #efad58;
  background: #35111d; box-shadow: inset 0 0 0 2px #1b0b13;
}
#gs-collection-game-root .gs-rpg-portrait img {
  display: block; width: 100%; height: 100%; max-width: none; object-fit: contain;
  image-rendering: pixelated; filter: none; border: 0; border-radius: 0;
  animation: none; transform: none;
}
#gs-collection-game-root .gs-rpg-copy { min-width: 0; }
#gs-collection-game-root .gs-rpg-context {
  margin: 0 0 10px; padding: 0; color: var(--rpg-muted);
  font-size: 12px; line-height: 1.5; font-style: normal;
}
#gs-collection-game-root .gs-rpg-lines { display: grid; }
#gs-collection-game-root .gs-rpg-text,
#gs-collection-game-root .gs-rpg-ghost {
  grid-area: 1 / 1; margin: 0; padding: 0; min-height: 3em;
  color: var(--rpg-ink); font-family: inherit; font-size: 18px; font-weight: 600;
  line-height: 1.5; overflow-wrap: anywhere; text-shadow: 1px 2px #1b0b13;
}
#gs-collection-game-root .gs-rpg-ghost { visibility: hidden; pointer-events: none; }
#gs-collection-game-root .gs-rpg-aside {
  margin: 4px 0 12px; padding: 8px 10px; color: #ffe0b4;
  background: #35111d; border-left: 2px solid #d7b66f; font-size: 12px;
}
#gs-collection-game-root .gs-rpg-dialogue button {
  appearance: none; font-family: inherit; text-transform: none; letter-spacing: 0;
  border-radius: 0 !important; border: 1px solid transparent;
  background: transparent; color: var(--rpg-ink); cursor: pointer;
  box-shadow: none; text-shadow: 1px 1px #11152e; transition: none;
  pointer-events: auto; touch-action: manipulation; -webkit-tap-highlight-color: transparent;
}
#gs-collection-game-root .gs-rpg-choices {
  display: grid; gap: 3px; padding-top: 10px; border-top: 1px solid #9c5234;
}
#gs-collection-game-root .gs-rpg-choices button {
  position: relative; width: 100%; min-height: 44px; padding: 9px 12px 9px 30px;
  text-align: left; font-size: 15px; line-height: 1.45; font-weight: 600;
  white-space: normal; overflow-wrap: anywhere;
}
#gs-collection-game-root .gs-rpg-choices button::before {
  content: ''; position: absolute; left: 11px; top: 50%; transform: translateY(-50%);
  border: 5px solid transparent; border-left: 7px solid #ffe8a6; opacity: 0;
}
#gs-collection-game-root .gs-rpg-choices button:hover,
#gs-collection-game-root .gs-rpg-choices button:focus-visible {
  background: #363f70; border-color: #808aac; color: #fff3cc; outline: none;
}
#gs-collection-game-root .gs-rpg-choices button:hover::before,
#gs-collection-game-root .gs-rpg-choices button:focus-visible::before { opacity: 1; }
#gs-collection-game-root .gs-rpg-dialogue .gs-rpg-leave { color: #d6b7a7; }
#gs-collection-game-root .gs-rpg-dialogue button:focus-visible { outline: 2px solid #ffe8a6; outline-offset: 2px; }
#gs-collection-game-root .gs-rpg-dialogue .gs-rpg-close { flex: 0 0 44px; width: 44px; height: 44px; padding: 0; font-size: 25px; line-height: 1; }
#gs-collection-game-root .gs-rpg-footer { display: flex; align-items: center; gap: 10px; min-height: 44px; padding-top: 8px; }
#gs-collection-game-root .gs-rpg-key-hint { margin-right: auto; color: #a9b2d0; font-size: 10px; }
#gs-collection-game-root .gs-rpg-page { color: #d6b7a7; font-size: 11px; font-variant-numeric: tabular-nums; }
#gs-collection-game-root .gs-rpg-dialogue .gs-rpg-advance { min-height: 44px; padding: 8px 10px; font-size: 13px; color: #ffe8a6; }
#gs-collection-game-root .gs-rpg-dialogue .gs-rpg-prev { width: 44px; min-height: 44px; font-size: 22px; }
#gs-collection-game-root .gs-rpg-dialogue [hidden] { display: none !important; }
#gs-collection-game-root .gs-rpg-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
/* Les sprites sont déjà animés par frames : supprimer étirement et balancement. */
#gs-collection-game-root .gs-life-sprite,
#gs-collection-game-root .gs-market-hero,
#gs-collection-game-root .gs-city-hero,
#gs-collection-game-root .gs-market-vendor,
#gs-collection-game-root .gs-room-npc,
#gs-collection-game-root .gs-npc-image img {
  image-rendering: pixelated; filter: none !important;
  animation: none !important;
}
#gs-collection-game-root .gs-life-sprite { background-size: 100% 100%; transform: none; }
#gs-collection-game-root .gs-npc-image { border-radius: 2px; background: #35111d; border: 1px solid #efad58; }
#gs-collection-game-root .gs-npc-image img { object-fit: contain; object-position: center; }
#gs-collection-game-root .gs-contest-dialogue {
  border: 3px solid #efad58; border-radius: 3px; background: linear-gradient(#741d2b, #1b0b13);
  box-shadow: inset 0 0 0 2px #9c5234; color: #f6f0d8;
}
#gs-collection-game-root .gs-contest-dialogue-portrait { border: 2px solid #efad58; border-radius: 1px; background: #35111d; }
#gs-collection-game-root .gs-contest-dialogue-copy strong { color: #ffe8a6; }
#gs-collection-game-root .gs-contest-dialogue-copy p { color: #f6f0d8; font-family: 'Lucida Console', 'Courier New', monospace; }

/* V0.9.162 : unité commune, corps 40x48 et public 48x48 (bras levés).
   La prise de parole et le nombre de candidats ne changent plus l'échelle. */
#gs-collection-game-root .gs-contest-stage {
  --gs-contest-actor-h: 144px;
  --gs-contest-actor-w: 120px;
}
#gs-collection-game-root .gs-contest-stage-competitor,
#gs-collection-game-root .gs-contest-stage-judge { width: var(--gs-contest-actor-w); }
#gs-collection-game-root .gs-contest-stage-competitor img,
#gs-collection-game-root .gs-contest-stage-judge img {
  width: var(--gs-contest-actor-w); height: var(--gs-contest-actor-h);
  max-width: none; object-fit: contain; object-position: bottom; image-rendering: pixelated;
}
#gs-collection-game-root .gs-contest-stage-crowd {
  width: var(--gs-contest-actor-h); height: var(--gs-contest-actor-h);
  max-height: none; object-fit: contain; image-rendering: pixelated;
  transform: translateX(-50%); animation: none;
}
#gs-collection-game-root .gs-contest-stage-competitor.is-speaking {
  transform: translateX(-50%); filter: brightness(1.12) saturate(1.05);
}
#gs-collection-game-root .gs-contest-stage-competitor.is-speaking::before {
  content: '▼'; position: absolute; left: 0; right: 0; top: -15px;
  color: #ffe8a6; font-size: 12px; text-shadow: 1px 2px #0d0d12;
}
#gs-collection-game-root .gs-contest-dialogue-portrait img {
  image-rendering: pixelated; object-fit: contain; filter: none; transform: none;
}

/* V0.9.163 — dialogue RPG lisible et palette rouge premium / orange impérial. */
#gs-collection-game-root .gs-rpg-dialogue {
  border: 3px solid #efad58;
  border-radius: 4px;
  background: linear-gradient(180deg, #741d2b 0%, #3b111d 58%, #1b0b13 100%);
  box-shadow: inset 0 0 0 2px #2a1019, inset 0 0 0 3px rgba(255, 210, 132, .14), 0 14px 34px rgba(0, 0, 0, .46);
  color: #fff0d0;
}
#gs-collection-game-root .gs-rpg-header {
  min-height: 46px;
  border-bottom: 1px solid rgba(240, 163, 74, .58);
}
#gs-collection-game-root .gs-rpg-header strong { color: #ffd38f; font-size: 18px; letter-spacing: .02em; }
#gs-collection-game-root .gs-rpg-copy { min-width: 0; padding: 15px 0 5px; }
#gs-collection-game-root .gs-rpg-lines { min-height: 6.3em; }
#gs-collection-game-root .gs-rpg-text,
#gs-collection-game-root .gs-rpg-ghost { color: #fff0d0; font-family: 'Lucida Console', 'Courier New', monospace; font-size: 16px; line-height: 1.62; }
#gs-collection-game-root .gs-rpg-ghost { color: rgba(255, 240, 208, .18); }
#gs-collection-game-root .gs-rpg-choices { border-top-color: rgba(240, 163, 74, .58); padding-top: 11px; }
#gs-collection-game-root .gs-rpg-choices button { color: #ffe5b1; background: rgba(33, 8, 16, .56); border-color: rgba(240, 163, 74, .34); }
#gs-collection-game-root .gs-rpg-choices button::before { border-left-color: #f0a34a; }
#gs-collection-game-root .gs-rpg-choices button:hover,
#gs-collection-game-root .gs-rpg-choices button:focus-visible { background: #8a2634; border-color: #f0a34a; color: #fff4d7; }
#gs-collection-game-root .gs-rpg-dialogue button:focus-visible { outline-color: #f0a34a; }
#gs-collection-game-root .gs-rpg-key-hint,
#gs-collection-game-root .gs-rpg-page { color: rgba(255, 224, 171, .72); }
#gs-collection-game-root .gs-rpg-dialogue .gs-rpg-advance { color: #ffd08a; }

/* Les onglets restent pixel/rouge, sans l’image active jaune. */
#gs-collection-game-root .gs-tabs.gs-tabs-room-nav button,
#gs-collection-game-root .gs-tabs.gs-tabs-room-nav .gs-tab-menu {
  background-image: none !important;
  background-color: #17131b !important;
  border-color: rgba(240, 163, 74, .34) !important;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .04) !important;
}
#gs-collection-game-root .gs-tabs.gs-tabs-room-nav button.active {
  background: linear-gradient(180deg, #9b2b3b 0%, #561522 100%) !important;
  border-color: #efad58 !important;
  color: #ffe0a4 !important;
  box-shadow: inset 0 0 0 1px rgba(255, 214, 143, .2), 0 4px 12px rgba(116, 15, 32, .28) !important;
}
#gs-collection-game-root .gs-tabs.gs-tabs-room-nav button::after { opacity: 0 !important; }
#gs-collection-game-root .gs-tabs.gs-tabs-room-nav .gs-tab-menu { color: #f4b463 !important; }

/* Parcours visible : brocante → collection → concours → budget/loyer. */
#gs-collection-game-root .gs-economy-route {
  display: flex; align-items: center; gap: 7px; width: min(100%, 980px); margin: 0 auto 12px; padding: 7px 10px;
  border: 1px solid rgba(240, 163, 74, .26); border-radius: 3px; background: rgba(20, 10, 16, .76); color: rgba(255, 233, 192, .62);
  font-size: 11px; line-height: 1.2; overflow-x: auto; scrollbar-width: none;
}
#gs-collection-game-root .gs-economy-route::-webkit-scrollbar { display: none; }
#gs-collection-game-root .gs-economy-route-label { flex: 0 0 auto; color: #f4b463; font-weight: 850; white-space: nowrap; letter-spacing: .01em; }
#gs-collection-game-root .gs-economy-route span { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
#gs-collection-game-root .gs-economy-route b { display: grid; place-items: center; width: 19px; height: 19px; border: 1px solid currentColor; border-radius: 50%; font-size: 10px; }
#gs-collection-game-root .gs-economy-route i { color: #f0a34a; font-style: normal; }
#gs-collection-game-root .gs-economy-route .is-current { color: #ffd08a; font-weight: 700; }
#gs-collection-game-root .gs-economy-route .is-current b { background: #8b2636; border-color: #efad58; }
#gs-collection-game-root .gs-economy-route .is-done { color: #dfa76a; }

/* Négociation : trois intentions compréhensibles et une réaction explicite. */
#gs-collection-game-root .gs-lot-route { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0; color: #bba9a4; font-size: 11px; }
#gs-collection-game-root .gs-lot-route span { padding: 5px 7px; border: 1px solid rgba(255,255,255,.12); border-radius: 3px; }
#gs-collection-game-root .gs-lot-route .is-current { border-color: #efad58; color: #ffd08a; background: rgba(139, 38, 54, .36); }
#gs-collection-game-root .gs-lot-route .is-done { color: #e0b27d; }
#gs-collection-game-root .gs-negotiation-heading { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 2px; margin-bottom: 3px; padding: 8px 9px; border-left: 3px solid #efad58; background: rgba(116, 29, 43, .22); }
#gs-collection-game-root .gs-negotiation-heading strong { color: #ffd08a; font-size: 13px; }
#gs-collection-game-root .gs-negotiation-heading small { color: #d8c5bc; font-size: 11px; }
#gs-collection-game-root .gs-negotiation-option { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; min-height: 58px; text-align: left; }
#gs-collection-game-root .gs-negotiation-option strong { font-size: 13px; }
#gs-collection-game-root .gs-negotiation-option small { color: #c8b6af; font-size: 10px; line-height: 1.25; }
#gs-collection-game-root .gs-negotiation-option.gs-negotiation-soft { border-color: rgba(108, 191, 145, .48); }
#gs-collection-game-root .gs-negotiation-option.gs-negotiation-aggressive { border-color: rgba(224, 103, 98, .46); }
#gs-collection-game-root .gs-negotiation-option:disabled { opacity: .46; cursor: not-allowed; }
#gs-collection-game-root .gs-vitrine-item-actions .is-solidarity { border-color: rgba(108, 191, 145, .58); color: #b8f0c6; }

/* La cinématique de concours suit la même charte que les autres paroles. */
#gs-collection-game-root .gs-contest-dialogue { border-color: #efad58; background: linear-gradient(180deg, #741d2b, #1b0b13); box-shadow: inset 0 0 0 2px #2a1019, inset 0 0 0 3px rgba(255, 210, 132, .14); }
#gs-collection-game-root .gs-contest-dialogue-copy strong { color: #ffd38f; }


/* V0.9.166 — portraits RPG restaurés + feedback social façon RPG. */
#gs-collection-game-root .gs-rpg-dialogue.has-no-portrait .gs-rpg-scene { grid-template-columns: minmax(0, 1fr); }
#gs-collection-game-root .gs-rpg-relation-pop {
  display: inline-flex; align-items: center; gap: 7px; width: fit-content;
  margin: 0 0 10px; padding: 5px 9px; border: 2px solid #bc743f;
  background: #35111d; color: #ffe0b4; font: 800 12px/1.2 'Lucida Console', 'Courier New', monospace;
  text-transform: uppercase; letter-spacing: .025em; box-shadow: 2px 2px 0 #1b0b13;
  animation: gsRelationPop .34s steps(3, end) 1;
}
#gs-collection-game-root .gs-rpg-relation-pop span { font-size: 15px; }
#gs-collection-game-root .gs-rpg-relation-pop.is-positive { border-color: #7fcf92; color: #bff6c9; }
#gs-collection-game-root .gs-rpg-relation-pop.is-negative { border-color: #df7c7c; color: #ffc0c0; }
#gs-collection-game-root .gs-rpg-relation-pop.is-neutral { border-color: #bc743f; color: #ffe0b4; }
@keyframes gsRelationPop {
  0% { transform: translateY(4px) scale(.96); opacity: .2; }
  100% { transform: translateY(0) scale(1); opacity: 1; }
}

/* V0.9.174 — contact au sol du héros.
   La position du sprite est compensée dans le moteur sur la vraie ligne des semelles.
   L'ombre reste unique, courte et centrée immédiatement sous les pieds. */
#gs-collection-game-root .gs-life-character:not(.is-seated) .gs-life-shadow {
  left: 50%;
  bottom: 2.25%;
  width: 46%;
  height: 8%;
  transform: translateX(-50%);
  background: rgba(0,0,0,.25);
  filter: blur(1.5px);
}
#gs-collection-game-root .gs-market-hero-shadow {
  left: 50%;
  bottom: 2.25%;
  width: 48%;
  height: 8%;
  transform: translateX(-50%);
  background: rgba(0,0,0,.28);
  filter: blur(1.5px);
}

/* V0.9.175 — état de la rencontre, distinct des paroles du personnage. */
#gs-collection-game-root .gs-market-status {
  display: grid; gap: 5px; margin: 10px 0; padding: 10px 12px;
  border: 1px solid #bd763e; border-left: 3px solid #efad58;
  border-radius: 4px; background: #261018; color: #ffe0b4;
  font: 13px/1.45 system-ui, sans-serif; overflow-wrap: anywhere;
}
#gs-collection-game-root .gs-market-status strong { color: #ffd08a; }
#gs-collection-game-root .gs-market-status span { display: block; color: #f2ddc1; font-size: 12px; }
#gs-collection-game-root .gs-market-status small { color: #d6b7a7; font-size: 12px; }

#gs-collection-game-root .gs-lot-main > .gs-lot-back { position: static; margin: 0 0 10px; }
#gs-collection-game-root .gs-negotiation-option { min-width: 0; white-space: normal; overflow-wrap: anywhere; }

/* V0.9.177 — stand immersif : visuel de jeu, commandes et données vivantes. */
#gs-collection-game-root .is-stall-focus { padding: 0; overflow: hidden; border-radius: 8px; background: #160c11; }
#gs-collection-game-root .is-stall-focus::before { display: none; }
#gs-collection-game-root .gs-stall-view {
  --stall-edge: #efad58; --stall-text: #fff0cf; --stall-panel: linear-gradient(150deg, #421320f5, #200b14fa);
  position: relative; isolation: isolate; display: grid; gap: 20px; padding: 24px;
  color: var(--stall-text); font-family: 'Lucida Console', 'Courier New', monospace;
  width: 100%; min-width: 0; overflow: hidden; background: #19101a;
}
#gs-collection-game-root .gs-stall-view::before {
  content: ''; position: absolute; z-index: -2; inset: 0; background-image: var(--stall-bg);
  background-size: 145% auto; background-position: 45% 45%; image-rendering: pixelated;
}
#gs-collection-game-root .gs-stall-view::after {
  content: ''; position: absolute; z-index: -1; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, #0603081a, #1406091a 60%, #0a040735);
}
#gs-collection-game-root .gs-stall-view * { box-sizing: border-box; }
#gs-collection-game-root .gs-stall-view button {
  appearance: none; display: flex; justify-content: center; align-items: center; gap: 10px;
  min-width: 0; min-height: 48px; padding: 10px 14px; margin: 0;
  border: 2px solid #d58942; border-radius: 6px; color: var(--stall-text);
  background: linear-gradient(160deg, #501724, #240c16); box-shadow: inset 0 0 0 2px #9d423740, 0 3px 0 #1b090d;
  font: 700 14px/1.3 'Lucida Console', 'Courier New', monospace; text-transform: none; letter-spacing: 0;
  cursor: pointer; touch-action: manipulation; white-space: normal; text-align: center;
}
#gs-collection-game-root .gs-stall-view button:hover { background: #742133; border-color: #ffcc81; }
#gs-collection-game-root .gs-stall-view button:focus-visible { outline: 3px solid #fff0bb; outline-offset: 2px; }
#gs-collection-game-root .gs-stall-view button:disabled { opacity: .55; cursor: not-allowed; }
#gs-collection-game-root .gs-stall-icon { display: inline-block; flex: 0 0 auto; width: 25px; height: 25px; vertical-align: middle; }
#gs-collection-game-root .gs-stall-top,
#gs-collection-game-root .gs-stall-seller,
#gs-collection-game-root .gs-stall-command-card {
  border: 2px solid var(--stall-edge); border-radius: 7px; background: var(--stall-panel);
  box-shadow: inset 0 0 0 3px #7a2e2b, inset 0 0 0 5px #e79b3e28, 0 4px 0 #240c13;
}
#gs-collection-game-root .gs-stall-top { display: grid; grid-template-columns: auto 1fr auto; align-items: center; padding: 6px; gap: 14px; }
#gs-collection-game-root .gs-stall-top h1 { color: #ffe2a8; font: 800 23px/1.2 inherit; font-family: inherit; font-size: 23px; margin: 0; text-align: center; text-transform: uppercase; }
#gs-collection-game-root .gs-stall-top h1::before,
#gs-collection-game-root .gs-stall-top h1::after { content: '✦'; display: inline-block; margin: 0 14px; color: #eaa24d; }
#gs-collection-game-root .gs-stall-wallet { display: flex; align-items: center; gap: 8px; padding: 10px; white-space: nowrap; font-size: 15px; }
#gs-collection-game-root .gs-stall-wallet .gs-stall-icon,
#gs-collection-game-root .gs-stall-product .gs-stall-icon { color: #ffc54e; }
#gs-collection-game-root .gs-stall-seller { display: grid; align-items: center; grid-template-columns: 130px minmax(0, 1fr) 225px; gap: 22px; padding: 12px 18px 12px 10px; }
#gs-collection-game-root .gs-stall-portrait { align-self: stretch; display: flex; align-items: flex-end; min-width: 0; border: 2px solid #e9a44e; border-radius: 5px; background: #23101d; overflow: hidden; }
#gs-collection-game-root .gs-stall-portrait img { width: 100%; height: 100%; max-height: 142px; object-fit: contain; image-rendering: pixelated; }
#gs-collection-game-root .gs-stall-dialogue { min-width: 0; }
#gs-collection-game-root .gs-stall-dialogue strong { font-size: 23px; color: #fff0cf; display: block; margin-bottom: 10px; }
#gs-collection-game-root .gs-stall-dialogue p { font-size: 16px; line-height: 1.45; color: #fff0cf; margin: 0; overflow-wrap: anywhere; }
#gs-collection-game-root .gs-stall-status { display: grid; gap: 15px; border-left: 1px solid #ae6f49; padding-left: 22px; font-size: 14px; }
#gs-collection-game-root .gs-stall-patience > span { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
#gs-collection-game-root .gs-stall-patience em { color: #d6ae9d; font: normal 10px/1.2 inherit; font-size: 10px; }
#gs-collection-game-root .gs-stall-segments { display: flex; gap: 6px; margin-top: 8px; }
#gs-collection-game-root .gs-stall-segments i { width: 27px; height: 14px; background: #662c2e; border-radius: 2px; box-shadow: inset 0 2px 1px #ffffff0a; }
#gs-collection-game-root .gs-stall-segments i.is-filled { background: linear-gradient(#ffd172, #ef8b27); box-shadow: inset 0 2px 0 #ffe5a8, 0 1px 0 #9b462b; }
#gs-collection-game-root .gs-stall-countdown { display: flex; align-items: center; gap: 7px; white-space: nowrap; font-size: 12px; }
#gs-collection-game-root .gs-stall-countdown b { font-size: 15px; }
#gs-collection-game-root .gs-stall-scene { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; min-width: 0; min-height: 0; margin: 0; isolation: isolate; overflow: hidden; }
#gs-collection-game-root .gs-stall-scene::before { content: ''; position: absolute; inset: 8% 7% 9%; z-index: 0; border-radius: 18px; background-image: var(--stall-bg); background-size: 165% auto; background-position: 45% 52%; filter: blur(12px) brightness(.52) saturate(.85); transform: scale(1.08); opacity: .98; }
#gs-collection-game-root .gs-stall-scene::after { content: ''; position: absolute; inset: 8% 7% 9%; z-index: 0; border-radius: 18px; background: linear-gradient(180deg, rgba(31, 10, 16, .30), rgba(10, 6, 10, .52)); box-shadow: inset 0 0 0 1px rgba(240, 190, 115, .16); }
#gs-collection-game-root .gs-stall-carton { position: relative; z-index: 1; display: block; width: 100%; height: calc(100% - 32px); object-fit: contain; image-rendering: pixelated; filter: drop-shadow(0 10px 5px #1b0c1490); }
#gs-collection-game-root .gs-stall-scene figcaption { position: relative; z-index: 1; flex: 0 0 auto; background: #2a0e19ef; color: #ffe7bc; padding: 7px 14px; border: 1px solid #ad6e40; border-radius: 4px; font-size: 12px; text-align: center; }
#gs-collection-game-root .gs-stall-commands { display: grid; align-self: center; gap: 14px; min-width: 0; }
#gs-collection-game-root .gs-stall-command-card { display: grid; gap: 14px; padding: 18px; }
#gs-collection-game-root .gs-stall-product { text-align: center; }
#gs-collection-game-root .gs-stall-product h2 { margin: 0 0 10px; color: #ffd397; font: bold 23px/1.25 'Lucida Console', 'Courier New', monospace; overflow-wrap: anywhere; }
#gs-collection-game-root .gs-stall-product > strong { display: flex; align-items: center; justify-content: center; gap: 10px; font-size: 26px; }
#gs-collection-game-root .gs-stall-tools { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
#gs-collection-game-root .gs-stall-tools button { min-height: 88px; flex-direction: column; padding: 12px 6px; }
#gs-collection-game-root .gs-stall-tools small { display: block; margin-top: 5px; font: normal 12px/1.3 system-ui,sans-serif; color: #ecd0b3; }
#gs-collection-game-root .gs-stall-final { display: grid; grid-template-columns: .8fr 1.6fr; gap: 10px; }
#gs-collection-game-root .gs-stall-final button { min-height: 62px; }
#gs-collection-game-root .gs-stall-view .gs-stall-buy { background: linear-gradient(150deg, #ad253c, #681225); border-color: #ffbc5c; box-shadow: inset 0 0 0 2px #d74d4c, 0 3px 0 #240910; }
#gs-collection-game-root .gs-stall-view .gs-stall-buy:hover { background: #c43349; }
#gs-collection-game-root .gs-stall-view > .gs-lot-action-notice { position: absolute; z-index: 2; left: 24px; right: 420px; top: 305px; bottom: auto; margin: 0; pointer-events: none; max-height: 120px; overflow: auto; }
#gs-collection-game-root .gs-stall-sheet-overlay { position: absolute; z-index: 20; inset: 0; background: #100711af; display: flex; align-items: center; justify-content: center; padding: 18px; }
#gs-collection-game-root .gs-stall-sheet { display: flex; flex-direction: column; gap: 14px; width: min(100%, 620px); max-height: 100%; min-height: 0; padding: 18px; border: 2px solid #efad58; border-radius: 7px; background: #290e1a; box-shadow: inset 0 0 0 3px #742333, 0 16px 80px #0009; }
#gs-collection-game-root .gs-stall-sheet header { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
#gs-collection-game-root .gs-stall-sheet h2 { margin: 0; color: #ffd398; font: bold 20px/1.3 'Lucida Console','Courier New',monospace; }
#gs-collection-game-root .gs-stall-sheet header button { width: 44px; height: 44px; flex: 0 0 44px; padding: 0; font-size: 25px; }
#gs-collection-game-root .gs-stall-sheet-content { min-height: 0; overflow-y: auto; overscroll-behavior: contain; font: 15px/1.5 system-ui,sans-serif; }
#gs-collection-game-root .gs-stall-sheet-content > p { margin: 0 0 12px; color: #efdbcb; }
#gs-collection-game-root .gs-stall-panel-price strong { color: #ffd398; }
#gs-collection-game-root .gs-stall-offers { display: grid; gap: 9px; margin: 14px 0; }
#gs-collection-game-root .gs-stall-offers .gs-negotiation-option { align-items: flex-start; justify-content: center; text-align: left; padding: 12px; }
#gs-collection-game-root .gs-stall-offers small { color: #efc7ad; }
#gs-collection-game-root .gs-stall-sheet-content > .gs-stall-buy { width: 100%; }
#gs-collection-game-root .gs-stall-estimate { font-size: 24px; color: #ffd398; }
#gs-collection-game-root .gs-stall-inspection { display: grid; gap: 12px; }
#gs-collection-game-root .gs-stall-inspection .gs-item-card { min-height: 98px; gap: 14px; padding: 12px; border-radius: 16px; }
#gs-collection-game-root .gs-stall-inspection .gs-item-visual { width: 78px; height: 78px; flex: 0 0 78px; border-radius: 16px; overflow: hidden; }
#gs-collection-game-root .gs-stall-inspection .gs-item-visual > span { transform: scale(1.5); transform-origin: center; }
#gs-collection-game-root .gs-stall-inspection .gs-item-visual .gs-item-catalog-sprite,
#gs-collection-game-root .gs-stall-inspection .gs-item-visual > img.gs-catalog-sprite { width: 124%; height: 124%; max-width: 124%; max-height: 124%; object-fit: contain; object-position: center; }
#gs-collection-game-root .gs-stall-inspection .gs-item-info strong { font-size: 14px; line-height: 1.22; }
#gs-collection-game-root .gs-stall-inspection .gs-item-info small,
#gs-collection-game-root .gs-stall-inspection .gs-item-info em { font-size: 11.5px; line-height: 1.24; }
#gs-collection-game-root .gs-stall-sheet-content .gs-lot-action-notice { color: #ffe4c5; line-height: 1.4; padding: 10px; margin-bottom: 14px; }


/* V0.9.187 — GS Price Checker in-game */
#gs-collection-game-root .gs-price-room-page { display: grid; gap: 14px; }
#gs-collection-game-root .gs-price-hero { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 18px 18px 16px; border: 1px solid rgba(224, 67, 93, .26); border-radius: 20px; background: linear-gradient(180deg, rgba(14,17,27,.96), rgba(9,11,17,.98)); box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
#gs-collection-game-root .gs-price-eyebrow { display: inline-block; margin-bottom: 10px; padding: 6px 14px; border-radius: 999px; border: 1px solid rgba(224, 67, 93, .30); color: #ff526d; font-size: 11px; font-weight: 900; letter-spacing: .18em; }
#gs-collection-game-root .gs-price-hero h2 { margin: 0 0 10px; font-size: 42px; line-height: .95; letter-spacing: .02em; color: #f7f2e3; }
#gs-collection-game-root .gs-price-hero p { margin: 0; max-width: 720px; color: #c9ced7; font-size: 16px; line-height: 1.6; }
#gs-collection-game-root .gs-price-back { flex: 0 0 auto; padding: 12px 16px; border-radius: 14px; border: 1px solid rgba(255,255,255,.08); background: linear-gradient(180deg, rgba(41,45,58,.95), rgba(16,18,26,.98)); color: #f5ead7; font-weight: 800; }
#gs-collection-game-root .gs-price-console { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr); gap: 14px; align-items: start; }
#gs-collection-game-root .gs-price-form-card,
#gs-collection-game-root .gs-price-collection-card { padding: 18px; border-radius: 22px; border: 1px solid rgba(255,255,255,.07); background: linear-gradient(180deg, rgba(12,15,23,.98), rgba(8,10,16,.98)); box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
#gs-collection-game-root .gs-price-form-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 14px; }
#gs-collection-game-root .gs-price-form-head h3,
#gs-collection-game-root .gs-price-collection-head h3 { margin: 4px 0 6px; color: #f7f1de; font-size: 26px; }
#gs-collection-game-root .gs-price-collection-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
#gs-collection-game-root .gs-price-collection-head p { margin: 0; color: #b7bec9; font-size: 13px; line-height: 1.45; }
#gs-collection-game-root .gs-price-collection-head strong { color: #f0dba6; font-size: 15px; }
#gs-collection-game-root .gs-price-selected-art { display: grid; place-items: center; width: 110px; height: 110px; border-radius: 20px; background: radial-gradient(circle at 35% 22%, rgba(51,146,210,.24), transparent 58%), linear-gradient(180deg, rgba(18,36,52,.95), rgba(10,15,24,.98)); border: 1px solid rgba(95, 157, 224, .24); overflow: hidden; }
#gs-collection-game-root .gs-price-selected-art .gs-catalog-sprite { width: 78px; height: 78px; object-fit: contain; }
#gs-collection-game-root .gs-price-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-bottom: 14px; }
#gs-collection-game-root .gs-price-field { display: grid; gap: 8px; padding: 12px 14px; border-radius: 16px; border: 1px solid rgba(255,255,255,.06); background: rgba(255,255,255,.02); }
#gs-collection-game-root .gs-price-field.gs-price-field-wide { grid-column: 1 / -1; }
#gs-collection-game-root .gs-price-field > span { color: #8f97a7; font-size: 12px; font-weight: 900; letter-spacing: .16em; text-transform: uppercase; }
#gs-collection-game-root .gs-price-field > div { color: #f5efe0; font-size: 20px; font-weight: 700; }
#gs-collection-game-root .gs-price-condition { position: relative; display: grid; gap: 10px; }
#gs-collection-game-root .gs-price-condition::before { content: ''; display: block; height: 12px; border-radius: 999px; background: rgba(255,255,255,.18); }
#gs-collection-game-root .gs-price-condition > i { position: absolute; top: 0; left: 0; display: block; height: 12px; border-radius: 999px; background: linear-gradient(90deg, #dc1536, #ff5d70); box-shadow: 0 0 10px rgba(224, 67, 93, .35); }
#gs-collection-game-root .gs-price-condition > b { color: #54db95; font-size: 15px; font-weight: 900; }
#gs-collection-game-root .gs-price-submit { width: 100%; margin: 4px 0 16px; padding: 15px 18px; border: 0; border-radius: 16px; background: linear-gradient(180deg, #df173a, #b90f2c); color: white; font-size: 22px; font-weight: 900; box-shadow: 0 10px 24px rgba(223, 23, 58, .22); }
#gs-collection-game-root .gs-price-submit[disabled] { opacity: .55; box-shadow: none; }
#gs-collection-game-root .gs-price-result-card { display: grid; gap: 10px; padding: 14px 16px; border-radius: 18px; border: 1px solid rgba(255,255,255,.06); background: linear-gradient(180deg, rgba(22,26,34,.96), rgba(11,13,19,.98)); }
#gs-collection-game-root .gs-price-result-card h3 { margin: 4px 0 6px; color: #f8f1db; font-size: 40px; line-height: .95; }
#gs-collection-game-root .gs-price-result-card p { margin: 0; color: #c6ccd6; line-height: 1.45; }
#gs-collection-game-root .gs-price-result-card p b { color: #f0d19d; }
#gs-collection-game-root .gs-price-result-facts { display: flex; flex-wrap: wrap; gap: 8px; }
#gs-collection-game-root .gs-price-result-facts small { padding: 7px 10px; border-radius: 999px; background: rgba(255,255,255,.05); color: #e5e9f0; font-size: 12px; }
#gs-collection-game-root .gs-price-result-note { color: #97a0af; font-size: 13px; }
#gs-collection-game-root .gs-price-collection-grid { display: grid; gap: 10px; max-height: 760px; overflow: auto; padding-right: 3px; }
#gs-collection-game-root .gs-price-item-card { display: grid; grid-template-columns: 78px minmax(0,1fr) auto; gap: 12px; align-items: center; padding: 10px; border-radius: 18px; border: 1px solid rgba(255,255,255,.05); background: rgba(255,255,255,.02); text-align: left; color: inherit; }
#gs-collection-game-root .gs-price-item-card.is-selected { border-color: rgba(232, 62, 88, .58); background: linear-gradient(180deg, rgba(60,18,28,.52), rgba(21,18,24,.92)); box-shadow: 0 0 0 1px rgba(232,62,88,.14) inset; }
#gs-collection-game-root .gs-price-item-art { display: grid; place-items: center; width: 78px; height: 78px; border-radius: 18px; background: radial-gradient(circle at 35% 22%, rgba(51,146,210,.22), transparent 58%), linear-gradient(180deg, rgba(18,36,52,.95), rgba(10,15,24,.98)); border: 1px solid rgba(95, 157, 224, .20); overflow: hidden; }
#gs-collection-game-root .gs-price-item-art .gs-catalog-sprite { width: 56px; height: 56px; object-fit: contain; }
#gs-collection-game-root .gs-price-item-copy { display: grid; gap: 4px; min-width: 0; }
#gs-collection-game-root .gs-price-item-copy strong { color: #f5efdf; font-size: 16px; }
#gs-collection-game-root .gs-price-item-copy small { color: #b1b9c6; font-size: 12px; }
#gs-collection-game-root .gs-price-item-copy em { color: #f3c97f; font-size: 11px; font-style: normal; text-transform: capitalize; }
#gs-collection-game-root .gs-price-item-badge { padding: 7px 10px; border-radius: 999px; background: rgba(224, 67, 93, .14); color: #ff8ea0; font-size: 11px; font-weight: 800; white-space: nowrap; }
#gs-collection-game-root .gs-price-item-badge.is-muted { background: rgba(255,255,255,.06); color: #cad0d8; }
#gs-collection-game-root .gs-price-empty { display: grid; gap: 6px; padding: 14px; border-radius: 18px; border: 1px dashed rgba(255,255,255,.10); color: #d3d8e0; }
#gs-collection-game-root .gs-price-empty strong { color: #f5efdf; }


/* V0.9.188 — Collection rework */
#gs-collection-game-root .gs-vitrine-stats-reworked > div {
  display: grid;
  gap: 4px;
  min-height: 64px;
}
#gs-collection-game-root .gs-vitrine-stats-reworked span {
  color: rgba(229, 235, 243, .76);
  font-size: 10px;
  line-height: 1.2;
  text-transform: uppercase;
  letter-spacing: .10em;
}
#gs-collection-game-root .gs-vitrine-stats-reworked strong {
  font-size: 23px;
}
#gs-collection-game-root .gs-vitrine-stats-reworked small {
  margin-top: 0;
  color: rgba(225, 235, 243, .62);
  font-size: 10px;
}
#gs-collection-game-root .gs-vitrine-evolution-card {
  display: grid;
  gap: 10px;
  margin: 0 0 12px;
  padding: 12px 13px;
  border: 1px solid rgba(240,190,115,.24);
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(62, 17, 25, .62), rgba(12, 11, 18, .92));
}
#gs-collection-game-root .gs-vitrine-evolution-copy {
  display: grid;
  gap: 3px;
}
#gs-collection-game-root .gs-vitrine-evolution-copy strong {
  color: #ffe4a6;
  font-size: 15px;
}
#gs-collection-game-root .gs-vitrine-evolution-copy small {
  color: #d8c4ab;
  font-size: 11px;
  line-height: 1.35;
}
#gs-collection-game-root .gs-vitrine-filter-tabs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 8px;
  margin: 0 0 12px;
}
#gs-collection-game-root .gs-vitrine-filter-tabs button {
  appearance: none;
  min-height: 44px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(255,225,178,.16);
  background: linear-gradient(180deg, rgba(18, 18, 30, .94), rgba(9, 11, 19, .98));
  color: #b8bec8;
  font-size: 13px;
  font-weight: 900;
  cursor: pointer;
}
#gs-collection-game-root .gs-vitrine-filter-tabs button.is-active {
  border-color: rgba(240,190,115,.54);
  background: linear-gradient(180deg, rgba(148, 40, 56, .92), rgba(60, 17, 27, .98));
  color: #fff1ce;
  box-shadow: inset 0 0 0 1px rgba(255,230,177,.08), 0 0 0 1px rgba(255,115,136,.06);
}
#gs-collection-game-root .gs-vitrine-managed-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  max-height: 420px;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding-right: 2px;
}
#gs-collection-game-root .gs-vitrine-card {
  display: grid;
  grid-template-columns: 74px minmax(0,1fr);
  gap: 12px;
  align-items: start;
  padding: 12px;
  border: 1px solid rgba(240,190,115,.20);
  border-radius: 16px;
  background: linear-gradient(180deg, rgba(18, 27, 41, .96), rgba(8, 12, 20, .98));
}
#gs-collection-game-root .gs-vitrine-card.is-displayed {
  border-color: rgba(240,190,115,.42);
  box-shadow: inset 0 0 0 1px rgba(255,230,177,.04);
}
#gs-collection-game-root .gs-vitrine-card-art {
  display: grid;
  place-items: center;
  width: 74px;
  min-height: 74px;
  border-radius: 14px;
  border: 1px solid rgba(95, 157, 224, .22);
  background: radial-gradient(circle at 35% 22%, rgba(51,146,210,.16), transparent 58%), linear-gradient(180deg, rgba(18,36,52,.95), rgba(10,15,24,.98));
}
#gs-collection-game-root .gs-vitrine-card-art .gs-catalog-sprite { width: 52px; height: 52px; object-fit: contain; }
#gs-collection-game-root .gs-vitrine-card-main { display: grid; gap: 8px; min-width: 0; }
#gs-collection-game-root .gs-vitrine-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}
#gs-collection-game-root .gs-vitrine-card-head h5 {
  margin: 0 0 3px;
  color: #fff6e7;
  font-size: 18px;
  line-height: 1.15;
}
#gs-collection-game-root .gs-vitrine-card-head small {
  color: #bac1cb;
  font-size: 12px;
}
#gs-collection-game-root .gs-vitrine-state-badge {
  flex: 0 0 auto;
  align-self: center;
  padding: 8px 11px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
}
#gs-collection-game-root .gs-vitrine-state-badge.is-displayed { background: rgba(56, 180, 112, .16); border: 1px solid rgba(92, 211, 136, .46); color: #b9f6ca; }
#gs-collection-game-root .gs-vitrine-state-badge.is-stored { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.11); color: #d3d9e0; }
#gs-collection-game-root .gs-vitrine-card-tags { display: flex; flex-wrap: wrap; gap: 7px; }
#gs-collection-game-root .gs-vitrine-card-tags span {
  padding: 5px 9px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
}
#gs-collection-game-root .gs-vitrine-card-tags .is-condition { background: rgba(39, 179, 128, .16); border: 1px solid rgba(39, 179, 128, .42); color: #93f0c8; }
#gs-collection-game-root .gs-vitrine-card-tags .is-rarity { background: rgba(103, 72, 201, .18); border: 1px solid rgba(138, 111, 228, .42); color: #ccbcff; text-transform: capitalize; }
#gs-collection-game-root .gs-vitrine-card-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 8px;
}
#gs-collection-game-root .gs-vitrine-card-actions button,
#gs-collection-game-root .gs-vitrine-card-links button {
  appearance: none;
  min-height: 38px;
  padding: 8px 10px;
  border-radius: 10px;
  border: 1px solid rgba(255,225,178,.18);
  background: linear-gradient(180deg, rgba(35, 34, 53, .96), rgba(14, 17, 25, .98));
  color: #f6ead5;
  font-weight: 800;
  font-size: 11px;
  cursor: pointer;
}
#gs-collection-game-root .gs-vitrine-card-actions button:hover,
#gs-collection-game-root .gs-vitrine-card-links button:hover { border-color: rgba(255,225,178,.45); }
#gs-collection-game-root .gs-vitrine-card-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
#gs-collection-game-root .gs-vitrine-card-links button {
  min-height: 34px;
  padding: 7px 10px;
  color: #d1d8e2;
  background: rgba(255,255,255,.03);
}
#gs-collection-game-root .gs-vitrine-card-links .is-solidarity { border-color: rgba(108, 191, 145, .38); color: #b8f0c6; }
#gs-collection-game-root .gs-vitrine-bottom-note {
  margin: 12px 0 0;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(240,190,115,.18);
  background: rgba(22, 12, 18, .55);
  color: #ddcdb0;
  font-size: 11px;
  text-align: center;
}


/* V0.9.189 — bottom nav simplifiée + journal */
#gs-collection-game-root .gs-tabs.gs-tabs-room-nav {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
#gs-collection-game-root .gs-tabs.gs-tabs-room-nav::before {
  display: none;
}
#gs-collection-game-root .gs-tabs.gs-tabs-room-nav button {
  min-height: 50px;
}
#gs-collection-game-root .gs-journal-view {
  display: grid;
  gap: 14px;
}
#gs-collection-game-root .gs-journal-header {
  display: grid;
  gap: 6px;
}
#gs-collection-game-root .gs-journal-header h2 {
  margin: 0;
}
#gs-collection-game-root .gs-journal-header p {
  margin: 0;
  color: var(--gs-muted);
}
#gs-collection-game-root .gs-journal-log {
  padding: 14px;
  border-radius: 16px;
  border: 1px solid rgba(240,190,115,.18);
  background: linear-gradient(180deg, rgba(22, 11, 18, .76), rgba(8, 11, 18, .96));
}
#gs-collection-game-root .gs-journal-log-head {
  display: grid;
  gap: 4px;
  margin-bottom: 10px;
}
#gs-collection-game-root .gs-journal-log h3 {
  margin: 0;
}
#gs-collection-game-root .gs-journal-log ul {
  margin: 0;
  padding-left: 18px;
  display: grid;
  gap: 7px;
}
#gs-collection-game-root .gs-journal-log li {
  color: #e8dcc5;
}


/* V0.9.190 — paramètres rouge / noir / or */
#gs-collection-game-root .gs-settings-screen-v190 {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(227, 142, 72, .42);
  border-radius: 20px;
  background:
    radial-gradient(circle at 86% 3%, rgba(183, 62, 46, .16), transparent 28%),
    linear-gradient(180deg, rgba(18, 11, 16, .985), rgba(6, 8, 13, .995));
  box-shadow: inset 0 0 0 1px rgba(255, 206, 130, .035), 0 18px 50px rgba(0,0,0,.30);
}
#gs-collection-game-root .gs-settings-screen-v190::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(90deg, transparent, rgba(255,255,255,.018), transparent),
    repeating-linear-gradient(0deg, rgba(255,255,255,.012) 0 1px, transparent 1px 4px);
  opacity: .52;
}
#gs-collection-game-root .gs-settings-screen-v190 > * { position: relative; z-index: 1; }
#gs-collection-game-root .gs-settings-hero {
  padding: 4px 2px 18px;
  border-bottom: 1px solid rgba(232, 86, 80, .22);
}
#gs-collection-game-root .gs-settings-hero .gs-kicker { color: #f0c376; letter-spacing: .16em; }
#gs-collection-game-root .gs-settings-hero h2 {
  margin: 6px 0 8px;
  color: #fff0d4;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: clamp(28px, 4vw, 42px);
  font-weight: 800;
  letter-spacing: .015em;
}
#gs-collection-game-root .gs-settings-hero p { color: #d9c8b3; }
#gs-collection-game-root .gs-settings-close {
  width: 48px;
  height: 48px;
  flex-basis: 48px;
  border: 1px solid rgba(240, 190, 115, .44);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(96, 24, 34, .94), rgba(43, 14, 22, .98));
  color: #fff2cf;
  box-shadow: inset 0 0 0 2px rgba(255, 216, 146, .05);
}
#gs-collection-game-root .gs-settings-grid-v190 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 16px;
}
#gs-collection-game-root .gs-settings-card-wide { grid-column: 1 / -1; }
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-card {
  padding: 16px;
  border: 1px solid rgba(227, 142, 72, .34);
  border-radius: 16px;
  background:
    radial-gradient(circle at 0% 0%, rgba(135, 31, 43, .20), transparent 42%),
    linear-gradient(180deg, rgba(45, 14, 22, .92), rgba(10, 10, 16, .97));
  box-shadow: inset 0 1px 0 rgba(255, 231, 191, .035), 0 8px 24px rgba(0,0,0,.18);
}
#gs-collection-game-root .gs-settings-section-head {
  display: grid;
  grid-template-columns: 48px minmax(0,1fr);
  gap: 12px;
  align-items: center;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(240,190,115,.16);
}
#gs-collection-game-root .gs-settings-section-icon {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border: 1px solid rgba(240,190,115,.45);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(111, 32, 36, .94), rgba(37, 16, 24, .98));
  color: #ffd589;
  font-size: 22px;
  font-weight: 900;
  text-shadow: 0 2px 0 rgba(0,0,0,.44);
}
#gs-collection-game-root .gs-settings-section-head strong {
  display: block;
  color: #f6cf83;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 18px;
  letter-spacing: .06em;
}
#gs-collection-game-root .gs-settings-section-head small {
  display: block;
  margin-top: 3px;
  color: #d4c0ab;
  font-size: 11px;
  line-height: 1.35;
}
#gs-collection-game-root .gs-settings-volume-list {
  display: grid;
  gap: 4px;
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-range {
  grid-template-columns: 160px minmax(0,1fr) auto;
  gap: 10px;
  margin: 0;
  padding: 10px 0;
  border-bottom: 1px solid rgba(255,255,255,.055);
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-range > span {
  color: #fff2df;
  font-size: 13px;
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-range output {
  grid-column: 3;
  color: #ffd786;
  font-size: 13px;
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-range input {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  height: 14px;
  margin: 0;
  accent-color: #d92e46;
}
#gs-collection-game-root .gs-settings-subblock {
  display: grid;
  gap: 9px;
  padding: 10px 0;
}
#gs-collection-game-root .gs-settings-subblock + .gs-settings-subblock {
  border-top: 1px solid rgba(255,255,255,.055);
}
#gs-collection-game-root .gs-settings-subtitle {
  display: block;
  margin-bottom: 8px;
  color: #f4e3cc;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .04em;
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-choice {
  min-height: 40px;
  border-color: rgba(240,190,115,.20);
  background: linear-gradient(180deg, rgba(29, 24, 33, .97), rgba(12, 13, 20, .99));
  color: #e7dbc9;
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-choice.is-selected {
  border-color: rgba(240,190,115,.58);
  color: #fff1c8;
  background: linear-gradient(180deg, rgba(181, 36, 58, .94), rgba(89, 20, 34, .98));
  box-shadow: inset 0 0 0 1px rgba(255, 213, 137, .07);
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-current-layout {
  margin-top: 0;
  border: 1px solid rgba(255,255,255,.06);
  background: rgba(0,0,0,.20);
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-toggle {
  min-height: 42px;
  border-color: rgba(240,190,115,.20);
  background: linear-gradient(180deg, rgba(31, 26, 34, .97), rgba(13, 14, 20, .99));
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-toggle.is-on {
  border-color: rgba(240,190,115,.55);
  background: linear-gradient(180deg, rgba(155, 31, 48, .82), rgba(67, 18, 29, .98));
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-toggle b { color: #c9c2b9; }
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-toggle.is-on b { color: #ffe09b; }
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-preview {
  height: 90px;
  border: 1px solid rgba(240,190,115,.18);
  border-radius: 13px;
  background: linear-gradient(180deg, rgba(8, 12, 18, .72), rgba(5, 8, 13, .88));
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-check {
  position: relative;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 12px 0;
  border-bottom: 1px solid rgba(255,255,255,.06);
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-check span { order: 1; }
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-check input {
  order: 2;
  appearance: none;
  -webkit-appearance: none;
  position: relative;
  width: 52px;
  height: 28px;
  flex: 0 0 52px;
  margin: 0;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 999px;
  background: rgba(37, 39, 47, .95);
  transition: background .18s ease, border-color .18s ease;
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-check input::after {
  content: '';
  position: absolute;
  left: 3px;
  top: 3px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #b9b8b4;
  box-shadow: 0 2px 5px rgba(0,0,0,.36);
  transition: transform .18s ease, background .18s ease;
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-check input:checked {
  border-color: rgba(240,190,115,.70);
  background: linear-gradient(180deg, #a51d39, #651426);
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-check input:checked::after {
  transform: translateX(24px);
  background: #ffe6a9;
}
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-check b { color: #f6ead8; }
#gs-collection-game-root .gs-settings-screen-v190 .gs-settings-check small { color: #b9aa9b; }
#gs-collection-game-root .gs-settings-save-actions {
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 9px;
}
#gs-collection-game-root .gs-settings-action {
  appearance: none;
  display: grid;
  gap: 4px;
  min-height: 66px;
  padding: 11px 13px;
  border: 1px solid rgba(240,190,115,.24);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(24, 23, 31, .98), rgba(9, 11, 17, .99));
  color: #eee5d7;
  text-align: left;
  cursor: pointer;
}
#gs-collection-game-root .gs-settings-action b { color: #fff0d4; font-size: 13px; }
#gs-collection-game-root .gs-settings-action small { color: #b7aa9d; font-size: 10px; line-height: 1.3; }
#gs-collection-game-root .gs-settings-action.is-primary {
  border-color: rgba(240,190,115,.54);
  background: linear-gradient(180deg, rgba(69, 38, 23, .88), rgba(23, 17, 18, .98));
}
#gs-collection-game-root .gs-settings-action.is-reset {
  border-color: rgba(234, 86, 94, .38);
  background: linear-gradient(180deg, rgba(157, 30, 49, .88), rgba(72, 17, 29, .98));
}
#gs-collection-game-root .gs-settings-action:disabled { opacity: .42; cursor: not-allowed; }
#gs-collection-game-root .gs-settings-backup-status {
  border-color: rgba(240,190,115,.16);
  background: rgba(82, 49, 19, .12);
}
#gs-collection-game-root .gs-settings-backup-status strong { color: #ebd39e; }
#gs-collection-game-root .gs-settings-danger-card {
  border-color: rgba(215, 75, 80, .30) !important;
  background: linear-gradient(180deg, rgba(67, 13, 22, .74), rgba(13, 8, 12, .96)) !important;
}
#gs-collection-game-root .gs-settings-danger-button {
  border-color: rgba(255, 128, 128, .38);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(174, 34, 50, .94), rgba(92, 19, 30, .98));
}


/* V0.9.191 — Journal + identité/Admin */
#gs-collection-game-root .gs-tabs.gs-tabs-room-nav.has-admin { grid-template-columns: repeat(5, minmax(0,1fr)); }
#gs-collection-game-root .gs-tabs.gs-tabs-room-nav .gs-nav-admin {
  color: #ffe19a;
  border-color: rgba(240,190,115,.35) !important;
}
#gs-collection-game-root .gs-journal-v191 {
  display: grid;
  gap: 12px;
  padding: 2px 0 4px;
}
#gs-collection-game-root .gs-journal-hero-v191 {
  display: grid;
  grid-template-columns: 72px minmax(0,1fr);
  gap: 14px;
  align-items: center;
  padding: 15px;
  border: 1px solid rgba(240,190,115,.32);
  border-radius: 18px;
  background: radial-gradient(circle at 82% 15%, rgba(160,30,48,.23), transparent 38%), linear-gradient(145deg, rgba(42,12,20,.96), rgba(8,12,20,.99));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05);
}
#gs-collection-game-root .gs-journal-avatar {
  display: grid;
  place-items: center;
  width: 72px;
  height: 72px;
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid rgba(240,190,115,.46);
  background: linear-gradient(180deg, rgba(105,25,38,.92), rgba(30,15,23,.98));
  color: #ffe0a0;
  font-size: 30px;
  font-weight: 900;
}
#gs-collection-game-root .gs-journal-avatar img { width: 100%; height: 100%; object-fit: cover; }
#gs-collection-game-root .gs-journal-identity h2 { margin: 4px 0 7px; color: #fff4dd; font-size: 26px; line-height: 1; }
#gs-collection-game-root .gs-journal-badges { display: flex; flex-wrap: wrap; gap: 7px; }
#gs-collection-game-root .gs-journal-badges b { padding: 5px 9px; border-radius: 999px; background: rgba(255,255,255,.06); color: #d9dce3; font-size: 10px; }
#gs-collection-game-root .gs-journal-badges .gs-journal-admin-badge { border: 1px solid rgba(240,190,115,.45); background: rgba(123,67,19,.20); color: #ffd77f; }
#gs-collection-game-root .gs-journal-objective,
#gs-collection-game-root .gs-journal-community,
#gs-collection-game-root .gs-journal-history {
  padding: 14px;
  border: 1px solid rgba(240,190,115,.20);
  border-radius: 16px;
  background: linear-gradient(180deg, rgba(36,13,20,.75), rgba(8,11,17,.97));
}
#gs-collection-game-root .gs-journal-section-title { display: grid; gap: 3px; margin-bottom: 10px; }
#gs-collection-game-root .gs-journal-section-title > span { color: #e8b96d; font-size: 10px; font-weight: 900; letter-spacing: .14em; }
#gs-collection-game-root .gs-journal-section-title > strong { color: #fff0d1; font-size: 17px; }
#gs-collection-game-root .gs-journal-section-title > small { color: #aaaeb8; font-size: 11px; line-height: 1.35; }
#gs-collection-game-root .gs-journal-objective .gs-economy-route { margin: 0; }
#gs-collection-game-root .gs-journal-stats-v191 {
  display: grid;
  grid-template-columns: repeat(5, minmax(0,1fr));
  gap: 7px;
}
#gs-collection-game-root .gs-journal-stats-v191 > div {
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 11px 10px;
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 13px;
  background: linear-gradient(180deg, rgba(25,24,34,.96), rgba(10,12,19,.99));
}
#gs-collection-game-root .gs-journal-stats-v191 small { color: #959da9; font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }
#gs-collection-game-root .gs-journal-stats-v191 strong { color: #ffe1a2; font-size: 20px; line-height: 1; overflow: hidden; text-overflow: ellipsis; }
#gs-collection-game-root .gs-journal-stats-v191 em { color: #c2c7ce; font-size: 9px; font-style: normal; }
#gs-collection-game-root .gs-journal-dashboard { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
#gs-collection-game-root .gs-journal-dashboard article {
  position: relative;
  display: grid;
  grid-template-columns: 38px minmax(0,1fr);
  gap: 9px;
  align-items: start;
  padding: 12px;
  border: 1px solid rgba(240,190,115,.16);
  border-radius: 15px;
  background: linear-gradient(180deg, rgba(24,20,29,.97), rgba(8,11,17,.99));
}
#gs-collection-game-root .gs-journal-card-icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 10px; border: 1px solid rgba(240,190,115,.34); background: rgba(116,35,28,.24); color: #ffd481; font-size: 18px; }
#gs-collection-game-root .gs-journal-dashboard small { color: #e0b96c; font-size: 9px; font-weight: 900; letter-spacing: .08em; }
#gs-collection-game-root .gs-journal-dashboard strong { display: block; margin: 3px 0; color: #f8ecd8; font-size: 14px; }
#gs-collection-game-root .gs-journal-dashboard p { margin: 0; color: #aeb4bf; font-size: 10px; line-height: 1.35; }
#gs-collection-game-root .gs-journal-dashboard button { grid-column: 2; justify-self: start; margin-top: 5px; padding: 6px 10px; border: 1px solid rgba(240,190,115,.28); border-radius: 8px; background: rgba(110,25,39,.55); color: #ffe1a0; font-size: 10px; font-weight: 900; }
#gs-collection-game-root .gs-journal-mission-facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 7px; margin-bottom: 10px; }
#gs-collection-game-root .gs-journal-mission-facts span { padding: 9px; border-radius: 10px; background: rgba(255,255,255,.035); color: #c8ccd3; font-size: 10px; }
#gs-collection-game-root .gs-journal-mission-facts b { float: right; color: #ffd77f; }
#gs-collection-game-root .gs-journal-sync { min-height: 36px; padding: 8px 12px; border: 1px solid rgba(240,190,115,.35); border-radius: 10px; background: linear-gradient(180deg, rgba(153,31,48,.9), rgba(72,18,29,.98)); color: #fff1d5; font-weight: 900; }
#gs-collection-game-root .gs-journal-sync-date { display: block; margin-top: 8px; color: #8f96a1; font-size: 9px; }
#gs-collection-game-root .gs-journal-history ul { list-style: none; display: grid; gap: 0; margin: 0; padding: 0; }
#gs-collection-game-root .gs-journal-history li { display: grid; grid-template-columns: 12px minmax(0,1fr); gap: 9px; padding: 8px 0; border-top: 1px solid rgba(255,255,255,.05); color: #d6d9df; font-size: 11px; line-height: 1.4; }
#gs-collection-game-root .gs-journal-history li:first-child { border-top: 0; }
#gs-collection-game-root .gs-journal-history li i { width: 7px; height: 7px; margin-top: 4px; border-radius: 50%; background: #d84a5f; box-shadow: 0 0 8px rgba(216,74,95,.38); }


/* V0.9.192 — Desktop home dashboard rework */
#gs-collection-game-root .gs-home-dashboard {
  display: grid;
  gap: 16px;
}
#gs-collection-game-root .gs-home-content-grid {
  padding: 18px;
}
#gs-collection-game-root .gs-home-panel,
#gs-collection-game-root .gs-home-bottom-card {
  border: 1px solid rgba(217, 175, 93, .26);
  border-radius: 22px;
  background:
    linear-gradient(180deg, rgba(21, 11, 20, .96), rgba(8, 10, 18, .98)),
    linear-gradient(180deg, rgba(255,255,255,.02), transparent);
  box-shadow: inset 0 0 0 1px rgba(255, 227, 169, .04), 0 16px 36px rgba(0,0,0,.18);
  overflow: hidden;
}
#gs-collection-game-root .gs-home-panel-head {
  display: grid;
  gap: 3px;
  padding: 12px 14px 10px;
  border-bottom: 1px solid rgba(217, 175, 93, .16);
  background: linear-gradient(180deg, rgba(53, 24, 38, .62), rgba(15, 13, 23, .12));
}
#gs-collection-game-root .gs-home-panel-head span {
  color: #f2c76b;
  font-size: 11px;
  letter-spacing: .14em;
  text-transform: uppercase;
  font-weight: 900;
}
#gs-collection-game-root .gs-home-panel-head strong {
  color: #f6efe1;
  font-size: 22px;
  line-height: 1.05;
}
#gs-collection-game-root .gs-home-panel p,
#gs-collection-game-root .gs-home-panel small,
#gs-collection-game-root .gs-home-panel em {
  color: #d6d1c7;
}
#gs-collection-game-root .gs-home-objective-body,
#gs-collection-game-root .gs-home-season-body,
#gs-collection-game-root .gs-home-stats-body,
#gs-collection-game-root .gs-home-progression-body {
  padding: 14px;
}
#gs-collection-game-root .gs-home-season-body {
  display: grid;
  gap: 7px;
  min-height: 140px;
}
#gs-collection-game-root .gs-home-season-body small { font-size: 14px; }
#gs-collection-game-root .gs-home-panel .gs-rival-line {
  padding: 14px;
  align-items: flex-start;
}
#gs-collection-game-root .gs-home-panel .gs-rival-line strong {
  display: block;
  color: #f4ecdb;
  font-size: 22px;
  margin-bottom: 4px;
}
#gs-collection-game-root .gs-home-panel .gs-rival-line small,
#gs-collection-game-root .gs-home-panel .gs-rival-line em {
  font-size: 13px;
}
#gs-collection-game-root .gs-home-panel .gs-rival-line .gs-npc {
  width: 74px;
  height: 74px;
  flex: 0 0 74px;
}
#gs-collection-game-root .gs-home-task-list {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
  display: grid;
  gap: 8px;
}
#gs-collection-game-root .gs-home-task-list li {
  border: 1px solid rgba(255,255,255,.06);
  border-radius: 12px;
  background: rgba(255,255,255,.025);
  padding: 9px 10px;
  color: #e6dccb;
  font-size: 13px;
}
#gs-collection-game-root .gs-home-bottom-row {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(320px, .9fr);
  gap: 16px;
  padding: 0 18px 18px;
}
#gs-collection-game-root .gs-home-actions-shell .gs-actions {
  padding: 14px;
  margin: 0;
}
#gs-collection-game-root .gs-home-actions-shell .gs-actions button,
#gs-collection-game-root .gs-home-log-shell {
  border-radius: 16px;
}
#gs-collection-game-root .gs-home-actions-shell .gs-actions button {
  min-height: 110px;
  border-color: rgba(217, 175, 93, .16);
  background: linear-gradient(180deg, rgba(18, 22, 34, .94), rgba(8, 10, 18, .98));
}
#gs-collection-game-root .gs-home-actions-shell .gs-actions strong {
  font-size: 18px;
}
#gs-collection-game-root .gs-home-log-shell .gs-home-news-list {
  list-style: none;
  margin: 0;
  padding: 12px 14px 14px;
  display: grid;
  gap: 10px;
}
#gs-collection-game-root .gs-home-log-shell .gs-home-news-list li {
  border: 1px solid rgba(255,255,255,.06);
  border-left: 3px solid rgba(242, 199, 107, .54);
  border-radius: 12px;
  padding: 10px 12px;
  background: rgba(255,255,255,.025);
  color: #ece2cf;
  line-height: 1.42;
}
@media (min-width: 1080px) {
  #gs-collection-game-root .gs-screen-collection .gs-home-content-grid {
    grid-template-columns: minmax(0, 1.8fr) minmax(250px, .74fr) minmax(250px, .74fr);
    grid-template-areas:
      "room objective rival"
      "room season season"
      "stats progression progression";
    align-items: start;
    gap: 16px;
  }
  #gs-collection-game-root .gs-screen-collection .gs-home-content-grid .gs-room { grid-area: room; min-height: 740px; }
  #gs-collection-game-root .gs-screen-collection .gs-home-panel-objective { grid-area: objective; }
  #gs-collection-game-root .gs-screen-collection .gs-home-panel-rival { grid-area: rival; }
  #gs-collection-game-root .gs-screen-collection .gs-home-panel-season { grid-area: season; }
  #gs-collection-game-root .gs-screen-collection .gs-home-panel-stats { grid-area: stats; }
  #gs-collection-game-root .gs-screen-collection .gs-home-panel-progression { grid-area: progression; }
  #gs-collection-game-root .gs-screen-collection .gs-home-panel-stats,
  #gs-collection-game-root .gs-screen-collection .gs-home-panel-progression { align-self: stretch; }
}

/* V0.9.198 — Journal harmonisé avec la maquette Réglages */
#gs-collection-game-root .gs-journal-screen-v198 {
  display: grid;
  gap: 16px;
  padding: 16px;
}
#gs-collection-game-root .gs-journal-hero-v198 {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
}
#gs-collection-game-root .gs-journal-hero-side {
  display: grid;
  grid-template-columns: 78px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  min-width: 240px;
}
#gs-collection-game-root .gs-journal-hero-meta strong {
  display: block;
  color: #fff0d4;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 24px;
  line-height: 1.05;
}
#gs-collection-game-root .gs-journal-screen-v198 .gs-journal-avatar {
  width: 78px;
  height: 78px;
  border-radius: 16px;
  border: 1px solid rgba(240,190,115,.45);
  background: linear-gradient(180deg, rgba(111, 32, 36, .94), rgba(37, 16, 24, .98));
  box-shadow: inset 0 0 0 2px rgba(255, 216, 146, .05);
}
#gs-collection-game-root .gs-journal-screen-v198 .gs-journal-badges {
  margin-top: 8px;
}
#gs-collection-game-root .gs-journal-grid-v198 {
  margin-top: 0;
}
#gs-collection-game-root .gs-journal-progress-card .gs-economy-route {
  margin: 2px 0 0;
}
#gs-collection-game-root .gs-journal-stats-v198 {
  display: grid;
  grid-template-columns: repeat(5, minmax(0,1fr));
  gap: 10px;
}
#gs-collection-game-root .gs-journal-stats-v198 > div {
  display: grid;
  gap: 4px;
  min-width: 0;
  padding: 12px;
  border: 1px solid rgba(240,190,115,.16);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(18, 20, 28, .98), rgba(8, 10, 16, .99));
}
#gs-collection-game-root .gs-journal-stats-v198 small {
  color: #b8a892;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
#gs-collection-game-root .gs-journal-stats-v198 strong {
  color: #ffe2a0;
  font-size: 22px;
  line-height: 1.08;
}
#gs-collection-game-root .gs-journal-stats-v198 em {
  color: #b6bac1;
  font-size: 10px;
  font-style: normal;
}
#gs-collection-game-root .gs-journal-card-body-v198 {
  display: grid;
  gap: 8px;
}
#gs-collection-game-root .gs-journal-card-body-v198 > strong {
  display: block;
  color: #fff0d3;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 26px;
  line-height: 1.06;
}
#gs-collection-game-root .gs-journal-card-body-v198 p {
  margin: 0;
  color: #d7c6b1;
  line-height: 1.45;
}
#gs-collection-game-root .gs-journal-inline-action,
#gs-collection-game-root .gs-journal-sync {
  appearance: none;
  justify-self: start;
  min-height: 42px;
  padding: 0 16px;
  border: 1px solid rgba(240,190,115,.28);
  border-radius: 11px;
  background: linear-gradient(180deg, rgba(171, 32, 53, .94), rgba(88, 20, 34, .98));
  color: #fff0cf;
  font-weight: 900;
  letter-spacing: .02em;
  box-shadow: inset 0 0 0 1px rgba(255, 213, 137, .07);
}
#gs-collection-game-root .gs-journal-mission-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 9px;
  margin-bottom: 12px;
}
#gs-collection-game-root .gs-journal-mission-facts span {
  padding: 10px 12px;
  border: 1px solid rgba(240,190,115,.14);
  border-radius: 11px;
  background: linear-gradient(180deg, rgba(18, 20, 28, .95), rgba(9, 10, 16, .98));
  color: #ddd1c2;
  font-size: 11px;
}
#gs-collection-game-root .gs-journal-mission-facts b {
  float: right;
  color: #ffd889;
}
#gs-collection-game-root .gs-journal-sync-date {
  display: block;
  margin-top: 10px;
  color: #b7a892;
  font-size: 11px;
}
#gs-collection-game-root .gs-journal-history ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
}
#gs-collection-game-root .gs-journal-history li {
  display: grid;
  grid-template-columns: 12px minmax(0,1fr);
  gap: 10px;
  align-items: start;
  padding: 10px 12px;
  border: 1px solid rgba(240,190,115,.12);
  border-radius: 11px;
  background: linear-gradient(180deg, rgba(18, 20, 28, .95), rgba(8, 10, 16, .98));
  color: #ddd4c8;
}
#gs-collection-game-root .gs-journal-history li i {
  width: 8px;
  height: 8px;
  margin-top: 5px;
  border-radius: 50%;
  background: #d84a5f;
  box-shadow: 0 0 8px rgba(216,74,95,.38);
}

/* V0.9.199 — Transition de sommeil / passage au jour suivant */
#gs-collection-game-root .gs-sleep-transition {
  position: absolute;
  inset: 0;
  z-index: 12000;
  display: grid;
  place-items: center;
  overflow: hidden;
  pointer-events: auto;
  isolation: isolate;
}
#gs-collection-game-root .gs-sleep-transition::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -2;
  background:
    radial-gradient(circle at 50% 38%, rgba(51, 62, 102, .18), transparent 32%),
    linear-gradient(180deg, rgba(10, 14, 28, .90), rgba(2, 4, 10, .99));
}
#gs-collection-game-root .gs-sleep-transition.is-sleeping {
  animation: gsSleepCurtainIn 1.55s ease-in-out both;
}
#gs-collection-game-root .gs-sleep-transition.is-waking {
  background: rgba(3, 5, 10, .98);
  animation: gsSleepCurtainOut 1.18s ease-in-out both;
}
#gs-collection-game-root .gs-sleep-transition.is-waking::before {
  background:
    radial-gradient(circle at 50% 42%, rgba(249, 199, 100, .18), transparent 30%),
    linear-gradient(180deg, rgba(32, 20, 24, .96), rgba(5, 7, 12, .98));
}
#gs-collection-game-root .gs-sleep-transition-card {
  position: relative;
  display: grid;
  justify-items: center;
  gap: 6px;
  width: min(410px, calc(100% - 36px));
  padding: 26px 26px 24px;
  border: 1px solid rgba(231, 190, 109, .26);
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(28, 18, 31, .72), rgba(8, 10, 18, .78));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.025), 0 28px 70px rgba(0,0,0,.36);
  text-align: center;
  backdrop-filter: blur(5px);
}
#gs-collection-game-root .gs-sleep-icon {
  display: grid;
  place-items: center;
  width: 72px;
  height: 72px;
  margin-bottom: 2px;
  border: 1px solid rgba(242, 199, 107, .30);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(242,199,107,.13), rgba(130,54,82,.05) 62%, transparent 64%);
  color: #f3ca78;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 43px;
  line-height: 1;
  text-shadow: 0 0 20px rgba(242,199,107,.20);
}
#gs-collection-game-root .gs-sleep-transition-card small {
  color: #d8a953;
  font-size: 9px;
  font-weight: 900;
  letter-spacing: .20em;
}
#gs-collection-game-root .gs-sleep-transition-card strong {
  color: #fff1d4;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 26px;
  line-height: 1.15;
}
#gs-collection-game-root .gs-sleep-transition-card p {
  max-width: 310px;
  margin: 2px 0 0;
  color: #c7c2bd;
  font-size: 12px;
  line-height: 1.5;
}
#gs-collection-game-root .gs-sleep-zzz {
  position: absolute;
  left: calc(50% + 24px);
  top: 19px;
  width: 72px;
  height: 64px;
  color: #f4d08b;
  font-family: Georgia, 'Times New Roman', serif;
  font-weight: 800;
  pointer-events: none;
}
#gs-collection-game-root .gs-sleep-zzz span {
  position: absolute;
  opacity: 0;
  animation: gsSleepZ 1.45s ease-in-out infinite;
}
#gs-collection-game-root .gs-sleep-zzz span:nth-child(1) { left: 0; bottom: 2px; font-size: 22px; animation-delay: 0s; }
#gs-collection-game-root .gs-sleep-zzz span:nth-child(2) { left: 27px; bottom: 23px; font-size: 17px; animation-delay: .28s; }
#gs-collection-game-root .gs-sleep-zzz span:nth-child(3) { left: 49px; bottom: 42px; font-size: 13px; animation-delay: .54s; }
#gs-collection-game-root .gs-sleep-stars {
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}
#gs-collection-game-root .gs-sleep-stars i {
  position: absolute;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: rgba(255, 234, 184, .82);
  box-shadow: 0 0 8px rgba(255, 220, 148, .42);
  animation: gsSleepStar 1.7s ease-in-out infinite alternate;
}
#gs-collection-game-root .gs-sleep-stars i:nth-child(1) { left: 16%; top: 21%; animation-delay: .15s; }
#gs-collection-game-root .gs-sleep-stars i:nth-child(2) { left: 78%; top: 19%; animation-delay: .55s; }
#gs-collection-game-root .gs-sleep-stars i:nth-child(3) { left: 24%; top: 72%; animation-delay: .8s; }
#gs-collection-game-root .gs-sleep-stars i:nth-child(4) { left: 68%; top: 67%; animation-delay: 1.05s; }
#gs-collection-game-root .gs-sleep-stars i:nth-child(5) { left: 86%; top: 51%; animation-delay: .36s; }

@keyframes gsSleepCurtainIn {
  0% { opacity: 0; background: rgba(2,4,10,0); }
  42% { opacity: 1; background: rgba(2,4,10,.65); }
  100% { opacity: 1; background: rgba(2,4,10,.98); }
}
@keyframes gsSleepCurtainOut {
  0% { opacity: 1; }
  44% { opacity: 1; }
  100% { opacity: 0; }
}
@keyframes gsSleepZ {
  0% { opacity: 0; transform: translate(-2px, 6px) scale(.85); }
  35% { opacity: .95; }
  100% { opacity: 0; transform: translate(6px, -9px) scale(1.08); }
}
@keyframes gsSleepStar {
  from { opacity: .22; transform: scale(.8); }
  to { opacity: .85; transform: scale(1.2); }
}

@media (max-width: 720px) {
  #gs-collection-game-root .gs-sleep-transition-card {
    width: min(320px, calc(100% - 30px));
    padding: 22px 18px 20px;
    border-radius: 15px;
  }
  #gs-collection-game-root .gs-sleep-icon { width: 60px; height: 60px; font-size: 36px; }
  #gs-collection-game-root .gs-sleep-transition-card strong { font-size: 21px; }
  #gs-collection-game-root .gs-sleep-transition-card p { font-size: 11px; }
}

@media (prefers-reduced-motion: reduce) {
  #gs-collection-game-root .gs-sleep-transition,
  #gs-collection-game-root .gs-sleep-zzz span,
  #gs-collection-game-root .gs-sleep-stars i { animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

/* V0.9.201 — Sur mobile, les blocs du bas de la Maison migrent vers le Journal */
#gs-collection-game-root .gs-journal-mobile-extras {
  display: grid;
  gap: 12px;
}
#gs-collection-game-root .gs-journal-mobile-extras .gs-home-bottom-card {
  margin: 0;
}

/* V0.9.211 — Gestes tactiles chambre : pincement à deux doigts plus fiable */
.gs-room,
.gs-room-world,
.gs-room-bg,
.gs-room-walk-layer {
  touch-action: none;
  overscroll-behavior: contain;
}


/* V0.9.217 — Chambre de départ : la fenêtre mobile respecte le ratio natif 3:2,
   comme les anciennes maps, pour éviter les grands aplats noirs et garder une
   lecture cohérente de l'échelle de la pièce. */
@media (max-width: 900px) {
  .gs-room.gs-room-bedroom {
    min-height: 0 !important;
    height: auto !important;
    aspect-ratio: 3 / 2;
  }
}


/* === V0.9.224 — Personnalisation : vue réinitialisée et zoom manuel accessible === */
.gs-room.is-customize-mode .gs-room-zoom {
  display: flex !important;
  right: 10px;
  left: auto;
  bottom: 144px;
  z-index: 60;
}
.gs-room.is-customize-mode .gs-room-zoom .gs-room-zoom-btn {
  pointer-events: auto;
}

/* V0.9.226 — Le décor et les commandes ont des espaces distincts. */
#gs-collection-game-root .gs-room {
  display: flex !important;
  flex-direction: column !important;
  aspect-ratio: auto !important;
}
#gs-collection-game-root .gs-room-stage {
  position: relative;
  flex: 1 1 0;
  min-height: 0;
  width: 100%;
  overflow: hidden;
  touch-action: none;
  background: #080b0e;
  isolation: isolate;
}
#gs-collection-game-root .gs-room-chrome {
  position: relative;
  flex: 0 0 auto;
  padding: 8px 10px;
  z-index: 5;
  background: #101014;
  border-bottom: 1px solid rgba(201,164,105,.18);
}
#gs-collection-game-root .gs-room-chrome .gs-customize-mode-header {
  position: static !important;
  display: flex;
  align-items: center;
  gap: 8px;
}
#gs-collection-game-root .gs-room-chrome .gs-customize-mode-banner {
  max-width: none;
  flex: 1;
  padding: 6px 9px;
  background: none;
  border: 0;
  box-shadow: none;
}
#gs-collection-game-root .gs-room-stage .gs-room-content {
  pointer-events: none !important;
}
#gs-collection-game-root .gs-room-control-dock {
  position: relative;
  flex: 0 0 auto;
  min-height: 124px;
  padding: 10px 14px 27px 122px;
  box-sizing: border-box;
  z-index: 5;
  border-top: 1px solid rgba(201,164,105,.23);
  background: linear-gradient(180deg, #141015, #0c0c10);
}
#gs-collection-game-root .gs-room .gs-room-control-dock .gs-joystick {
  position: absolute !important;
  width: 88px !important;
  height: 88px !important;
  top: 10px !important;
  bottom: auto !important;
  left: 14px !important;
  right: auto !important;
  margin: 0 !important;
  opacity: .86;
  border: 1px solid rgba(217,175,93,.45);
  background: radial-gradient(circle, rgba(116,39,42,.28), rgba(8,8,11,.90));
  box-shadow: inset 0 0 0 9px rgba(201,164,105,.04);
  pointer-events: auto !important;
}
#gs-collection-game-root .gs-room-control-dock .gs-joystick::before { display: none !important; }
#gs-collection-game-root .gs-room-control-dock .gs-joystick .gs-joystick-knob {
  width: 36px !important;
  height: 36px !important;
  margin: -18px 0 0 -18px !important;
  background: radial-gradient(circle at 35% 28%, #edb273, #9c383f 65%, #571d29);
  border: 1px solid rgba(242,200,140,.65);
}
#gs-collection-game-root .gs-room .gs-room-control-dock .gs-room-zoom {
  position: relative !important;
  inset: auto !important;
  display: flex !important;
  flex-direction: row !important;
  justify-content: flex-end;
  gap: 7px;
  margin: 0 !important;
  padding: 0 !important;
  pointer-events: auto;
}
#gs-collection-game-root .gs-room-control-dock .gs-room-zoom-btn {
  min-width: 38px !important;
  width: 38px !important;
  height: 38px !important;
  font-size: 20px !important;
  touch-action: manipulation;
}
#gs-collection-game-root .gs-room-control-dock .gs-customize-hud {
  position: relative !important;
  inset: auto !important;
  width: 100% !important;
  max-height: 150px;
  overflow-y: auto;
  display: grid;
  gap: 6px;
  margin-bottom: 8px;
  pointer-events: auto !important;
  touch-action: pan-y;
  overscroll-behavior: contain;
}
#gs-collection-game-root .gs-room-control-dock .gs-customize-hud:empty { display: none !important; }
#gs-collection-game-root .gs-room-control-dock .gs-customize-storage > div {
  max-height: 90px;
  overflow-y: auto;
  touch-action: pan-y;
}
#gs-collection-game-root .gs-room-camera-help {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 7px;
  color: #bcb4ad;
  font: 10px/1.25 system-ui, sans-serif;
  text-align: center;
  pointer-events: none;
}
#gs-collection-game-root.gs-controls-left .gs-room-control-dock {
  padding-left: 14px;
  padding-right: 122px;
}
#gs-collection-game-root.gs-controls-left .gs-room .gs-room-control-dock .gs-joystick {
  left: auto !important;
  right: 14px !important;
}
#gs-collection-game-root.gs-desktop-input .gs-room-control-dock .gs-joystick { display: none !important; }
#gs-collection-game-root.gs-desktop-input .gs-room-control-dock {
  min-height: 65px;
  padding: 8px 14px 20px;
}
#gs-collection-game-root.gs-desktop-input .gs-room-camera-help { display: none; }
#gs-collection-game-root .gs-room.is-tv-watching .gs-room-stage { min-height: 0; }

/* === V0.9.229 — TV : bilan tactile + illustrations statiques =================
   - le bilan reprend réellement le contrôle tactile : pas de caméra derrière ;
   - les commandes de chambre disparaissent pendant le bilan ;
   - la lecture affiche un storyboard fixe, différent selon la scène/page. */
#gs-collection-game-root .gs-room.is-tv-report-open .gs-room-stage,
#gs-collection-game-root .gs-room.is-tv-watching .gs-room-stage {
  touch-action: pan-y !important;
}
#gs-collection-game-root .gs-room.is-tv-report-open .gs-room-content,
#gs-collection-game-root .gs-room.is-tv-watching .gs-room-content {
  pointer-events: none !important;
}
#gs-collection-game-root .gs-tv-report-overlay,
#gs-collection-game-root .gs-tv-watching-hud {
  pointer-events: auto !important;
  touch-action: pan-y !important;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
#gs-collection-game-root .gs-room.is-tv-report-open .gs-tv-report-overlay {
  position: absolute;
  inset: 0;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  align-content: start;
  min-height: 0;
}
#gs-collection-game-root .gs-room.is-tv-report-open .gs-tv-report-card {
  margin-top: auto;
  margin-bottom: auto;
}

.gs-tv-scene-illustration {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 7;
  min-height: 116px;
  max-height: 185px;
  margin: 0 0 11px;
  overflow: hidden;
  border: 1px solid rgba(245, 213, 154, .30);
  border-radius: 10px;
  background: #151016;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.025), 0 8px 20px rgba(0,0,0,.22);
  pointer-events: none;
}
.gs-tv-scene-illustration svg { display: block; width: 100%; height: 100%; }
.gs-tv-scene-illustration img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.gs-tv-scene-illustration.is-rendered { background: #100c11; }
.gs-tv-scene-illustration .gs-tv-art-bg { fill: #120f14; }
.gs-tv-scene-illustration .gs-tv-art-sky { fill: #252634; }
.gs-tv-scene-illustration .gs-tv-art-surface { fill: #252026; }
.gs-tv-scene-illustration .gs-tv-art-orb { fill: #d3a76b; opacity: .76; }
.gs-tv-scene-illustration .gs-tv-art-clouds { fill: #d8d0c2; opacity: .26; }
.gs-tv-scene-illustration .gs-tv-art-city { fill: #3a2b31; stroke: #b98b58; stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; }
.gs-tv-scene-illustration .gs-tv-art-machine { fill: none; stroke: #c2955e; stroke-width: 9; stroke-linecap: round; stroke-linejoin: round; opacity: .88; }
.gs-tv-scene-illustration .gs-tv-art-botany { fill: #8e6f46; stroke: #d8b378; stroke-width: 7; stroke-linecap: round; stroke-linejoin: round; }
.gs-tv-scene-illustration .gs-tv-art-stars { fill: #f1dfbc; opacity: .78; }
.gs-tv-scene-illustration .gs-tv-art-horizon { fill: #1d3542; }
.gs-tv-scene-illustration .gs-tv-art-waves { fill: none; stroke: #8fadb3; stroke-width: 10; stroke-linecap: round; opacity: .78; }
.gs-tv-scene-illustration .gs-tv-art-pixels { fill: #6f4342; opacity: .78; }
.gs-tv-scene-illustration .gs-tv-art-accent-shape { fill: #ad643b; stroke: #e0b174; stroke-width: 6; stroke-linecap: round; stroke-linejoin: round; }
.gs-tv-scene-illustration .gs-tv-art-frame-shadow { fill: rgba(7, 7, 10, .46); }

/* Chaque chaîne garde une ambiance propre sans tomber dans le néon/glow. */
.gs-tv-scene-illustration.gs-tv-art-channel-gaming8 .gs-tv-art-sky { fill: #232b32; }
.gs-tv-scene-illustration.gs-tv-art-channel-gaming8 .gs-tv-art-accent-shape { fill: #9e4b39; }
.gs-tv-scene-illustration.gs-tv-art-channel-anime23 .gs-tv-art-sky { fill: #32313a; }
.gs-tv-scene-illustration.gs-tv-art-channel-anime23 .gs-tv-art-accent-shape { fill: #a66e43; }
.gs-tv-scene-illustration.gs-tv-art-channel-manga12k .gs-tv-art-sky { fill: #292634; }
.gs-tv-scene-illustration.gs-tv-art-channel-manga12k .gs-tv-art-accent-shape { fill: #8f4f46; }
.gs-tv-scene-illustration.gs-tv-art-channel-salleMinuit .gs-tv-art-sky { fill: #1c2027; }
.gs-tv-scene-illustration.gs-tv-art-channel-salleMinuit .gs-tv-art-accent-shape { fill: #76413e; }

/* Le HUD peut défiler sur un téléphone très bas : l'image ne condamne jamais
   les boutons « Lire la suite / Continuer / Arrêter ». */
#gs-collection-game-root .gs-tv-watching-hud {
  max-height: min(58dvh, 470px);
  overflow-x: hidden;
  overflow-y: auto;
}

@media (max-width: 720px) {
  #gs-collection-game-root .gs-tv-scene-illustration {
    aspect-ratio: 16 / 7.4;
    min-height: 104px;
    max-height: 145px;
    margin-bottom: 9px;
    border-radius: 8px;
  }
  #gs-collection-game-root .gs-tv-watching-hud {
    max-height: min(64dvh, 455px);
    padding-bottom: max(9px, env(safe-area-inset-bottom, 0px));
  }
  #gs-collection-game-root .gs-room.is-tv-report-open .gs-tv-report-overlay {
    padding-top: max(10px, env(safe-area-inset-top, 0px));
    padding-bottom: max(14px, env(safe-area-inset-bottom, 0px));
  }
  #gs-collection-game-root .gs-room.is-tv-report-open .gs-tv-report-card {
    margin-top: 0;
    margin-bottom: 0;
  }
}
\n\n/* === V0.9.230 — TV : grande fenêtre de lecture ==============================\n   Objectif : la lecture devient le focus tout en laissant la chambre visible\n   autour du panneau. Mobile ≈ 88 % de la zone visible ; desktop ≈ 84 %. */\n#gs-collection-game-root .gs-tv-watching-hud {\n  box-sizing: border-box;\n  top: 8%;\n  bottom: 8%;\n  left: 50%;\n  right: auto;\n  width: min(1000px, calc(100% - 40px));\n  height: auto;\n  max-width: 1000px;\n  max-height: none;\n  margin: 0;\n  padding: 18px 20px 16px;\n  transform: translateX(-50%);\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n}\n#gs-collection-game-root .gs-tv-watching-hud .gs-tv-scene-illustration {\n  flex: 0 0 auto;\n  min-height: 145px;\n  max-height: 230px;\n}\n#gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-text {\n  flex: 1 1 auto;\n  min-height: 0;\n  max-height: none;\n  overflow-x: hidden;\n  overflow-y: auto;\n  padding: 2px 6px 2px 0;\n  font-size: 15px;\n  line-height: 1.58;\n  -webkit-overflow-scrolling: touch;\n  overscroll-behavior: contain;\n}\n#gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-actions {\n  flex: 0 0 auto;\n  margin-top: 12px;\n}\n\n@media (max-width: 720px) {\n  #gs-collection-game-root .gs-tv-watching-hud {\n    top: 6%;\n    bottom: 6%;\n    left: 50%;\n    right: auto;\n    width: calc(100% - 18px);\n    max-width: none;\n    max-height: none;\n    padding: 12px 13px max(11px, env(safe-area-inset-bottom, 0px));\n    border-radius: 14px;\n    transform: translateX(-50%);\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-meta {\n    gap: 9px;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-meta strong {\n    font-size: 17px;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-meta em {\n    font-size: 10px;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-meta small {\n    font-size: 8.5px;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-count {\n    font-size: 9px;\n    padding: 6px 7px;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-progress {\n    flex: 0 0 auto;\n    margin: 9px 0 10px;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-scene-illustration {\n    flex: 0 0 auto;\n    aspect-ratio: 16 / 7.2;\n    min-height: 125px;\n    max-height: min(23dvh, 190px);\n    margin-bottom: 11px;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-text {\n    min-height: 0;\n    font-size: 14px;\n    line-height: 1.52;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-whisper {\n    display: block;\n    flex: 0 0 auto;\n    margin-top: 7px;\n    font-size: 10px;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-actions {\n    gap: 8px;\n    margin-top: 10px;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-watching-actions button {\n    min-height: 38px;\n    padding: 0 11px;\n    font-size: 12px;\n  }\n}\n\n/* Téléphones très courts : on conserve la grande fenêtre mais on réduit\n   légèrement l'illustration pour garantir l'accès aux actions. */\n@media (max-width: 720px) and (max-height: 650px) {\n  #gs-collection-game-root .gs-tv-watching-hud {\n    top: 5%;\n    bottom: 5%;\n  }\n  #gs-collection-game-root .gs-tv-watching-hud .gs-tv-scene-illustration {\n    min-height: 105px;\n    max-height: 145px;\n  }\n}\n

/* === V0.9.262 — Fonds d’écran : uniquement le petit moniteur du PC === */
.gs-room-prop.gs-prop-bureau::after { content: none !important; }

/* === V0.9.263 — Sélecteur de fonds d’écran du PC === */
.gs-pc-wallpaper-picker {
  width: min(560px, calc(100vw - 30px));
  max-height: min(76dvh, 650px);
  overflow: hidden;
}
.gs-pc-wallpaper-picker h3 {
  margin-bottom: 14px;
}
.gs-pc-wallpaper-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 9px;
  max-height: min(51dvh, 430px);
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: 2px 3px 8px;
}
.gs-pc-wallpaper-choice {
  appearance: none;
  border: 1px solid rgba(110, 225, 160, .30);
  border-radius: 11px;
  background: rgba(5, 27, 18, .78);
  color: #eafff1;
  padding: 5px;
  min-width: 0;
  cursor: pointer;
  transition: transform .12s ease, border-color .12s ease, box-shadow .12s ease;
}
.gs-pc-wallpaper-choice:active {
  transform: scale(.97);
}
.gs-pc-wallpaper-choice.is-selected {
  border-color: #70ef9e;
  box-shadow: 0 0 0 2px rgba(74, 225, 130, .18), 0 0 14px rgba(50, 216, 119, .16);
}
.gs-pc-wallpaper-thumb {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: 7px;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  image-rendering: pixelated;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.gs-pc-wallpaper-choice small {
  display: block;
  margin-top: 5px;
  font-size: 9px;
  line-height: 1.15;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: #d9f8e4;
}
@media (max-width: 720px) {
  .gs-pc-wallpaper-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    max-height: 48dvh;
    gap: 8px;
  }
  .gs-pc-wallpaper-choice small { font-size: 8.5px; }
}

/* === V0.9.287 — Faux desktop web pour le PC de la chambre === */
.gs-desktop-backdrop {
  position: fixed;
  inset: 0;
  z-index: 300;
  align-items: center;
  overflow: hidden;
  animation: none;
}
.gs-room-prompt-computer.gs-desktop-window.gs-desktop-window-pixel {
  width: min(980px, calc(100vw - 36px), calc((100dvh - 36px) * 1.777));
  max-width: 980px;
  flex-shrink: 0;
  animation: none;
  aspect-ratio: 1672 / 941;
  padding: 0;
  overflow: hidden;
  border-radius: 14px;
  background: #05070d;
  border: 1px solid rgba(255, 163, 96, .24);
  box-shadow: 0 28px 80px rgba(0,0,0,.62);
}
.gs-pixel-browser-frame {
  position: relative;
  width: 100%;
  height: 100%;
  background: #05070d url('../img/ui/pc-retroweb-window.webp') center/cover no-repeat;
  image-rendering: pixelated;
}
.gs-pixel-browser-close {
  position: absolute;
  top: 2.6%;
  right: 0.7%;
  width: 5.8%;
  height: 5.6%;
  min-width: 34px;
  min-height: 28px;
  border: 0;
  background: transparent;
  cursor: pointer;
  border-radius: 6px;
}
.gs-pixel-browser-close:focus-visible {
  outline: 2px solid rgba(255, 190, 122, .96);
  outline-offset: 1px;
}
.gs-pixel-browser-label {
  position: absolute;
  right: 5.8%;
  top: 17.3%;
  max-width: 12%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: rgba(246, 231, 196, .72);
  font-size: 10px;
  line-height: 1;
  text-align: right;
  text-shadow: 0 1px 0 rgba(0,0,0,.7);
}
.gs-pixel-browser-content {
  position: absolute;
  left: 2.4%;
  right: 2.4%;
  top: 29.2%;
  bottom: 6.4%;
  padding: 14px 16px;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
}
.gs-pixel-desktop-grid {
  display: grid;
  grid-template-columns: repeat(3, 96px);
  grid-auto-rows: minmax(110px, auto);
  gap: 12px 20px;
  align-content: start;
  justify-content: start;
}
.gs-pixel-desktop-icon {
  appearance: none;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 10px;
  width: 96px;
  min-height: 110px;
  padding: 6px 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  cursor: pointer;
  color: #f4e8cb;
  text-align: center;
  transition: transform .12s ease, border-color .12s ease, background .12s ease, box-shadow .12s ease;
}
.gs-pixel-desktop-icon:hover {
  transform: translateY(-1px);
  background: rgba(18, 39, 58, .42);
  border-color: rgba(131, 171, 205, .34);
  box-shadow: 0 8px 16px rgba(0,0,0,.18), inset 0 0 0 1px rgba(255,255,255,.04);
}
.gs-pixel-desktop-icon:focus-visible {
  outline: 2px solid rgba(255, 190, 122, .96);
  outline-offset: 2px;
}
.gs-pixel-desktop-icon-badge {
  width: 58px;
  height: 58px;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  background: linear-gradient(180deg, rgba(18, 39, 58, .86), rgba(8, 17, 29, .94));
  border: 1px solid rgba(255,255,255,.10);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03), 0 6px 14px rgba(0,0,0,.26);
}
.gs-pixel-desktop-icon.is-gold .gs-pixel-desktop-icon-badge {
  background: linear-gradient(180deg, rgba(103, 55, 0, .88), rgba(38, 24, 9, .94));
}
.gs-pixel-desktop-icon.is-paper .gs-pixel-desktop-icon-badge {
  background: linear-gradient(180deg, rgba(74, 38, 15, .88), rgba(30, 17, 10, .94));
}
.gs-pixel-desktop-icon.is-coin .gs-pixel-desktop-icon-badge {
  background: linear-gradient(180deg, rgba(92, 58, 8, .88), rgba(35, 24, 10, .94));
}
.gs-pixel-desktop-icon.is-wallpaper .gs-pixel-desktop-icon-badge {
  background: linear-gradient(180deg, rgba(58, 38, 86, .88), rgba(24, 17, 33, .94));
}
.gs-pixel-desktop-icon.is-danger .gs-pixel-desktop-icon-badge {
  background: linear-gradient(180deg, rgba(103, 24, 18, .9), rgba(42, 13, 11, .95));
}
.gs-pixel-desktop-icon-label {
  display: block;
  max-width: 88px;
  color: #f6ecd6;
  font-size: 12px;
  line-height: 1.15;
  text-shadow: 0 1px 0 rgba(0,0,0,.72);
  word-break: break-word;
}
@media (max-width: 720px) {
  .gs-room-prompt-computer.gs-desktop-window.gs-desktop-window-pixel {
    width: calc(100vw - 8px);
    border-radius: 10px;
  }
  .gs-pixel-browser-content {
    left: 2.6%;
    right: 2.6%;
    top: 29.8%;
    bottom: 6.2%;
    padding: 8px 9px;
  }
  .gs-pixel-desktop-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px 6px;
    width: 100%;
  }
  .gs-pixel-desktop-icon {
    width: auto;
    min-height: 78px;
    padding: 4px 2px;
    gap: 5px;
    border-radius: 8px;
  }
  .gs-pixel-desktop-icon-badge {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    font-size: 19px;
  }
  .gs-pixel-desktop-icon-label {
    max-width: 100%;
    font-size: 8.8px;
    line-height: 1.1;
  }
  .gs-pixel-browser-label {
    font-size: 8px;
    max-width: 18%;
  }
}


/* === V0.9.310 — onglets fonctionnels du faux navigateur PC === */
.gs-pixel-browser-tabs {
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
}
.gs-pixel-tab {
  position: absolute;
  top: 8.2%;
  height: 7.8%;
  padding: 0;
  border: 0;
  cursor: pointer;
  pointer-events: auto;
  background: transparent;
  border-radius: 9px 9px 0 0;
}
.gs-pixel-tab .sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.gs-pixel-tab.is-home { left: 2.5%; width: 20.6%; }
.gs-pixel-tab.is-journal { left: 23.2%; width: 20.8%; }
.gs-pixel-tab.is-system { left: 44.1%; width: 19.3%; }
.gs-pixel-tab.is-inactive {
  background: rgba(4, 10, 17, .34);
  box-shadow: inset 0 -2px 0 rgba(4, 8, 14, .36);
}
.gs-pixel-tab.is-active {
  background: linear-gradient(180deg, rgba(98, 122, 143, .20), rgba(42, 58, 72, .13));
  box-shadow: inset 0 3px 0 rgba(223, 93, 48, .92), inset 1px 0 0 rgba(181, 203, 217, .16), inset -1px 0 0 rgba(181, 203, 217, .12);
}
.gs-pixel-tab:hover {
  background-color: rgba(77, 103, 123, .18);
}
.gs-pixel-tab:focus-visible {
  outline: 2px solid rgba(255, 192, 126, .95);
  outline-offset: -3px;
}
.gs-pixel-tab-page {
  width: min(560px, 100%);
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.gs-pixel-page-heading {
  border: 1px solid rgba(118, 154, 185, .22);
  background: rgba(8, 19, 31, .72);
  padding: 12px 14px;
  border-radius: 10px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.025);
}
.gs-pixel-page-heading span {
  display: block;
  color: #dc6b43;
  font-size: 10px;
  letter-spacing: .16em;
  font-weight: 800;
}
.gs-pixel-page-heading strong {
  display: block;
  margin-top: 3px;
  color: #f5e7ca;
  font-size: 18px;
}
.gs-pixel-page-heading small {
  display: block;
  margin-top: 5px;
  color: rgba(232, 226, 208, .66);
  font-size: 11px;
}
.gs-pixel-mini-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 9px;
}
.gs-pixel-mini-stats span {
  min-width: 0;
  border: 1px solid rgba(116, 150, 181, .18);
  background: rgba(7, 17, 29, .76);
  border-radius: 9px;
  padding: 10px 8px;
  text-align: center;
}
.gs-pixel-mini-stats small {
  display: block;
  color: rgba(225, 220, 204, .62);
  font-size: 9px;
  text-transform: uppercase;
}
.gs-pixel-mini-stats b {
  display: block;
  margin-top: 4px;
  color: #fff0ce;
  font-size: 16px;
}
.gs-pixel-page-action {
  appearance: none;
  align-self: flex-start;
  border: 1px solid rgba(226, 102, 57, .42);
  background: rgba(66, 25, 20, .82);
  color: #f8e7c5;
  border-radius: 8px;
  padding: 10px 14px;
  font-weight: 800;
  cursor: pointer;
}
.gs-pixel-system-grid {
  display: grid;
  grid-template-columns: repeat(2, 96px);
  gap: 12px 20px;
}
@media (max-width: 720px) {
  .gs-pixel-tab { top: 8.2%; height: 8.2%; }
  .gs-pixel-tab.is-home { left: 2.5%; width: 20.6%; }
  .gs-pixel-tab.is-journal { left: 23.2%; width: 20.8%; }
  .gs-pixel-tab.is-system { left: 44.1%; width: 19.3%; }
  .gs-pixel-tab-page { gap: 8px; }
  .gs-pixel-page-heading { padding: 8px 9px; border-radius: 8px; }
  .gs-pixel-page-heading span { font-size: 7px; }
  .gs-pixel-page-heading strong { font-size: 12px; }
  .gs-pixel-page-heading small { font-size: 8px; margin-top: 3px; }
  .gs-pixel-mini-stats { gap: 5px; }
  .gs-pixel-mini-stats span { padding: 6px 4px; border-radius: 7px; }
  .gs-pixel-mini-stats small { font-size: 6.5px; }
  .gs-pixel-mini-stats b { font-size: 11px; }
  .gs-pixel-page-action { padding: 7px 9px; font-size: 9px; }
  .gs-pixel-system-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); width: 66%; gap: 7px; }
}

/* === V0.9.284 — Cartons de brocante persistants dans la chambre === */
.gs-storage-box-prop { filter: drop-shadow(0 5px 7px rgba(0,0,0,.28)); }
.gs-storage-box-more {
  position:absolute; right:-6px; top:-5px; min-width:25px; height:25px; padding:0 6px;
  display:flex; align-items:center; justify-content:center; border-radius:999px;
  color:#fff7d0; background:rgba(120,20,24,.94); border:2px solid rgba(245,181,91,.9);
  box-shadow:0 3px 9px rgba(0,0,0,.45); font:900 11px/1 system-ui,"Segoe UI",sans-serif;
}
/* V0.9.286 — cartons : point seul, sans libellé de proximité.
   Le feedback visuel n’arrive qu’au toucher/clic via :active, puis le carton s’ouvre. */
.gs-storage-box-dot.is-near { z-index:6 !important; }
.gs-storage-box-dot.is-near::before { box-shadow:0 0 9px 3px rgba(255,200,50,.5), 0 2px 4px rgba(0,0,0,.45); filter:none; }

/* === V0.9.289 — GS PRICE CHECKER : faux site web pixel-art interactif === */
#gs-collection-game-root .gs-price-web-page {
  display: grid;
  gap: 14px;
  padding: 14px;
  border: 1px solid rgba(233, 42, 67, .38);
  border-radius: 18px;
  background:
    linear-gradient(180deg, rgba(14,15,24,.985), rgba(7,8,14,.995)),
    radial-gradient(circle at 85% 0%, rgba(222, 25, 55, .16), transparent 34%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.025), 0 20px 60px rgba(0,0,0,.36);
  color: #f6f1e9;
}
#gs-collection-game-root .gs-price-web-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 10px 12px 14px;
  border-bottom: 2px solid rgba(223, 27, 59, .42);
}
#gs-collection-game-root .gs-price-web-brand {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 12px;
}
#gs-collection-game-root .gs-price-web-logo {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 58px;
  height: 58px;
  border-radius: 13px;
  border: 2px solid rgba(255, 59, 83, .64);
  background: linear-gradient(180deg, #2a0b12, #100912);
  color: #ff2648;
  font: 1000 24px/1 system-ui, sans-serif;
  letter-spacing: -.05em;
  text-shadow: 2px 2px 0 #4a0712;
  box-shadow: inset 0 0 20px rgba(255, 30, 65, .12), 0 0 18px rgba(255, 30, 65, .08);
}
#gs-collection-game-root .gs-price-web-brand small {
  display: inline-block;
  margin-bottom: 4px;
  color: #ff506d;
  font-size: 10px;
  font-weight: 950;
  letter-spacing: .19em;
}
#gs-collection-game-root .gs-price-web-brand h2 {
  margin: 0;
  color: #f6f4ed;
  font-size: clamp(25px, 4.1vw, 44px);
  line-height: .95;
  letter-spacing: -.02em;
  text-shadow: 2px 2px 0 rgba(0,0,0,.5);
}
#gs-collection-game-root .gs-price-web-brand h2 b { color: #ef2646; }
#gs-collection-game-root .gs-price-web-close {
  appearance: none;
  width: 44px;
  height: 44px;
  border-radius: 11px;
  border: 2px solid rgba(255, 102, 118, .48);
  background: linear-gradient(180deg, #ad1e34, #68101e);
  color: #ffe7dc;
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
#gs-collection-game-root .gs-price-web-lead {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 12px;
  padding: 2px 4px 4px;
}
#gs-collection-game-root .gs-price-web-lead strong { color: #fff4e9; font-size: 17px; }
#gs-collection-game-root .gs-price-web-lead span { color: #959daa; font-size: 12px; line-height: 1.4; }
#gs-collection-game-root .gs-price-search-panel,
#gs-collection-game-root .gs-price-selected-panel {
  padding: 14px;
  border: 1px solid rgba(237, 48, 75, .27);
  border-radius: 16px;
  background: linear-gradient(180deg, rgba(16,19,29,.97), rgba(8,10,16,.985));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.02);
}
#gs-collection-game-root .gs-price-search-label { display: grid; gap: 8px; }
#gs-collection-game-root .gs-price-search-label > span,
#gs-collection-game-root .gs-price-selected-head small,
#gs-collection-game-root .gs-price-selected-grid small {
  color: #c6cbd4;
  font-size: 10px;
  font-weight: 950;
  letter-spacing: .14em;
}
#gs-collection-game-root .gs-price-search-box {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  gap: 8px;
}
#gs-collection-game-root .gs-price-search-box input {
  min-width: 0;
  min-height: 46px;
  border: 1px solid rgba(255,255,255,.11);
  border-radius: 11px;
  background: rgba(20,23,34,.92);
  color: #f5f0e8;
  padding: 0 13px;
  font-size: 14px;
  outline: none;
}
#gs-collection-game-root .gs-price-search-box input:focus {
  border-color: rgba(241, 42, 71, .66);
  box-shadow: 0 0 0 2px rgba(241,42,71,.11);
}
#gs-collection-game-root .gs-price-search-box button {
  appearance: none;
  min-height: 46px;
  padding: 0 17px;
  border-radius: 11px;
  border: 1px solid rgba(255, 96, 115, .38);
  background: linear-gradient(180deg, #dd1738, #a80d28);
  color: #fff;
  font-size: 13px;
  font-weight: 950;
  cursor: pointer;
}
#gs-collection-game-root .gs-price-history-list {
  display: grid;
  gap: 7px;
  max-height: 322px;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  margin-top: 10px;
  padding-right: 2px;
}
#gs-collection-game-root .gs-price-history-row {
  appearance: none;
  display: grid;
  grid-template-columns: 52px minmax(0,1fr) auto 24px;
  gap: 10px;
  align-items: center;
  width: 100%;
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(27,30,42,.94), rgba(15,17,26,.98));
  color: inherit;
  text-align: left;
  cursor: pointer;
}
#gs-collection-game-root .gs-price-history-row.is-selected {
  border-color: rgba(244, 35, 65, .72);
  background: linear-gradient(180deg, rgba(90,18,33,.80), rgba(32,14,23,.98));
  box-shadow: inset 0 0 0 1px rgba(255,94,115,.13), 0 0 15px rgba(220,20,52,.10);
}
#gs-collection-game-root .gs-price-history-art {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border-radius: 10px;
  background: rgba(255,255,255,.035);
  border: 1px solid rgba(255,255,255,.06);
  overflow: hidden;
}
#gs-collection-game-root .gs-price-history-art .gs-catalog-sprite { width: 42px; height: 42px; object-fit: contain; }
#gs-collection-game-root .gs-price-history-copy { display: grid; gap: 3px; min-width: 0; }
#gs-collection-game-root .gs-price-history-copy strong {
  color: #fff3e9;
  font-size: 14px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#gs-collection-game-root .gs-price-history-copy small {
  color: #9fa7b4;
  font-size: 10px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#gs-collection-game-root .gs-price-history-paid { color: #fff0dc; font-size: 13px; font-weight: 950; white-space: nowrap; }
#gs-collection-game-root .gs-price-history-arrow { color: #ffb6a1; font-size: 24px; line-height: 1; }
#gs-collection-game-root .gs-price-search-empty {
  display: grid;
  gap: 4px;
  padding: 18px 14px;
  border: 1px dashed rgba(255,255,255,.11);
  border-radius: 12px;
  color: #aeb5c0;
}
#gs-collection-game-root .gs-price-search-empty strong { color: #f4eee4; }
#gs-collection-game-root .gs-price-search-empty small { font-size: 11px; line-height: 1.4; }
#gs-collection-game-root .gs-price-selected-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}
#gs-collection-game-root .gs-price-selected-head .gs-price-selected-art {
  flex: 0 0 66px;
  width: 66px;
  height: 66px;
  border-radius: 12px;
}
#gs-collection-game-root .gs-price-selected-head .gs-price-selected-art .gs-catalog-sprite { width: 52px; height: 52px; }
#gs-collection-game-root .gs-price-selected-head h3 {
  margin: 3px 0 0;
  color: #fff3e8;
  font-size: 20px;
  line-height: 1.1;
}
#gs-collection-game-root .gs-price-selected-grid {
  display: grid;
  grid-template-columns: minmax(120px,.42fr) minmax(0,1fr);
  gap: 10px;
  margin-bottom: 10px;
}
#gs-collection-game-root .gs-price-selected-grid > div {
  display: grid;
  gap: 7px;
  padding: 11px 12px;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.06);
  background: rgba(255,255,255,.025);
}
#gs-collection-game-root .gs-price-selected-grid > div > strong { color: #f7f0e6; font-size: 21px; }
#gs-collection-game-root .gs-price-selected-panel .gs-price-condition > b { font-size: 12px; }
#gs-collection-game-root .gs-price-selected-panel .gs-price-submit {
  margin: 2px 0 0;
  border-radius: 12px;
  font-size: 17px;
  min-height: 50px;
}
#gs-collection-game-root .gs-price-verdict {
  overflow: hidden;
  border-radius: 14px;
  background: #090b10;
  border: 1px solid rgba(255,255,255,.06);
}
#gs-collection-game-root .gs-price-verdict img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 235px;
  object-fit: cover;
  image-rendering: pixelated;
}
#gs-collection-game-root .gs-price-verdict.is-waiting {
  min-height: 94px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  color: #9ca4af;
  background: linear-gradient(180deg, rgba(18,20,30,.96), rgba(10,11,18,.99));
}
#gs-collection-game-root .gs-price-verdict.is-waiting strong {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 11px;
  border: 1px solid rgba(255,255,255,.09);
  color: #ef3150;
  font-size: 24px;
}
#gs-collection-game-root .gs-price-verdict.is-waiting span { font-size: 12px; }

@media (max-width: 720px) {
  #gs-collection-game-root .gs-price-web-page { padding: 9px; gap: 10px; border-radius: 14px; }
  #gs-collection-game-root .gs-price-web-header { padding: 8px 7px 10px; gap: 8px; }
  #gs-collection-game-root .gs-price-web-logo { width: 43px; height: 43px; border-radius: 10px; font-size: 18px; }
  #gs-collection-game-root .gs-price-web-brand { gap: 8px; }
  #gs-collection-game-root .gs-price-web-brand small { font-size: 8px; letter-spacing: .12em; }
  #gs-collection-game-root .gs-price-web-brand h2 { font-size: 25px; }
  #gs-collection-game-root .gs-price-web-close { width: 38px; height: 38px; font-size: 22px; }
  #gs-collection-game-root .gs-price-web-lead { display: grid; gap: 3px; }
  #gs-collection-game-root .gs-price-web-lead strong { font-size: 14px; }
  #gs-collection-game-root .gs-price-web-lead span { font-size: 10px; }
  #gs-collection-game-root .gs-price-search-panel,
  #gs-collection-game-root .gs-price-selected-panel { padding: 10px; border-radius: 13px; }
  #gs-collection-game-root .gs-price-search-box { grid-template-columns: 1fr; }
  #gs-collection-game-root .gs-price-search-box input,
  #gs-collection-game-root .gs-price-search-box button { min-height: 42px; }
  #gs-collection-game-root .gs-price-history-list { max-height: 250px; }
  #gs-collection-game-root .gs-price-history-row { grid-template-columns: 44px minmax(0,1fr) auto 16px; gap: 7px; padding: 7px; }
  #gs-collection-game-root .gs-price-history-art { width: 44px; height: 44px; }
  #gs-collection-game-root .gs-price-history-art .gs-catalog-sprite { width: 35px; height: 35px; }
  #gs-collection-game-root .gs-price-history-copy strong { font-size: 12px; }
  #gs-collection-game-root .gs-price-history-copy small { font-size: 9px; }
  #gs-collection-game-root .gs-price-history-paid { font-size: 11px; }
  #gs-collection-game-root .gs-price-selected-head .gs-price-selected-art { flex-basis: 54px; width: 54px; height: 54px; }
  #gs-collection-game-root .gs-price-selected-head .gs-price-selected-art .gs-catalog-sprite { width: 42px; height: 42px; }
  #gs-collection-game-root .gs-price-selected-head h3 { font-size: 17px; }
  #gs-collection-game-root .gs-price-selected-grid { grid-template-columns: 1fr; }
  #gs-collection-game-root .gs-price-selected-grid > div > strong { font-size: 18px; }
  #gs-collection-game-root .gs-price-verdict img { max-height: none; }
}

/* === V0.9.304 — Stockage -> placement fantôme lisible === */
.gs-custom-carry-preview.is-valid {
  opacity: .58 !important;
  filter: drop-shadow(0 0 5px rgba(75,255,151,.92)) drop-shadow(0 0 13px rgba(58,215,111,.66)) !important;
}
.gs-custom-carry-preview.is-invalid {
  opacity: .62 !important;
  filter: grayscale(.16) sepia(1) saturate(5.2) hue-rotate(318deg) brightness(.92) drop-shadow(0 0 6px rgba(255,38,38,.98)) drop-shadow(0 0 14px rgba(255,38,38,.72)) !important;
}

/* === V0.9.306 — Action principale d'aménagement dans l'en-tête de la chambre === */
#gs-collection-game-root .gs-room-titlebar .gs-room-arrange-btn {
  flex: 1 1 160px;
  max-width: 360px;
}

/* === V0.9.306 — Cinématique d'ouverture des nouvelles parties === */
.gs-opening-video-screen {
  position: relative;
  width: 100%;
  min-height: 100dvh;
  min-height: 660px;
  overflow: hidden;
  display: grid;
  place-items: center;
  background: #000;
  border-radius: 28px;
  border: 1px solid rgba(255,255,255,.05);
  box-shadow: var(--gs-shadow);
}
.gs-opening-video-host {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: #000;
}
.gs-opening-video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  background: #000;
}
.gs-opening-video-start {
  position: relative;
  z-index: 2;
  max-width: min(82%, 440px);
  padding: 14px 20px;
  border: 1px solid rgba(255,209,92,.55);
  border-radius: 12px;
  background: rgba(8,8,10,.88);
  color: #ffe8a0;
  font: inherit;
  font-weight: 800;
  letter-spacing: .02em;
  box-shadow: 0 10px 30px rgba(0,0,0,.5);
}
.gs-opening-video-start[hidden] { display: none !important; }

/* === V0.9.311 FIX — applications PC dans le langage pixel art, sans toucher au moteur === */
.gs-pixel-browser-content.is-page { align-items: stretch; overflow: auto; }
.gs-pixel-browser-content.is-wide .gs-pixel-tab-page,.gs-pixel-tab-page.gs-pixel-job-page { width:100%; max-width:none; }
.gs-pixel-app-actions { display:flex; flex-wrap:wrap; gap:10px; }
.gs-pixel-page-action.is-secondary { background:rgba(14,28,42,.82); border-color:rgba(118,154,185,.28); }
.gs-pixel-job-content h3 { color:#f6e8ca; font-size:17px; margin:2px 0 10px; }
.gs-pixel-job-content .gs-job-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-bottom:18px; }
.gs-pixel-job-content .gs-job-card { padding:16px; background:rgba(9,19,31,.76); border:1px solid rgba(118,154,185,.20); border-radius:10px; min-width:0; }
.gs-pixel-job-content .gs-job-card-heading { display:flex; flex-wrap:wrap; justify-content:space-between; gap:6px; color:rgba(233,226,208,.72); font-size:11px; }
.gs-pixel-job-content .gs-job-card-heading span { background:rgba(255,255,255,.07); border-radius:999px; padding:3px 8px; }
.gs-pixel-job-content .gs-job-card h4 { color:#fff0d2; font-size:18px; margin:10px 0 8px; }
.gs-pixel-job-content .gs-job-card p { color:rgba(234,226,210,.84); margin:5px 0 10px; text-shadow:none; }
.gs-pixel-job-content .gs-job-date { font-size:13px; font-weight:700; }
.gs-pixel-job-content .gs-job-pay { color:#ffcb83; display:block; margin:6px 0 8px; }
.gs-pixel-job-content .gs-job-terms { padding-top:10px; border-top:1px solid rgba(118,154,185,.16); font-size:13px; }
.gs-pixel-job-content .gs-job-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.gs-pixel-job-content .gs-room-prompt-btn { background:rgba(11,28,41,.88); color:#f8ebce; border:1px solid rgba(118,154,185,.26); border-radius:8px; box-shadow:none; text-shadow:none; }
.gs-pixel-job-content .gs-room-prompt-btn.is-primary { background:rgba(77,30,19,.9); border-color:rgba(226,102,57,.42); }
.gs-pixel-job-page>.gs-job-notice { background:rgba(22,52,38,.78); color:#eaf6de; padding:12px; border-radius:8px; border:1px solid rgba(129,190,139,.20); }
.gs-pixel-portal-card { border:1px solid rgba(118,154,185,.22); background:rgba(8,19,31,.72); border-radius:10px; padding:14px; }
.gs-pixel-portal-card strong { display:block; color:#fff0d2; font-size:18px; }
.gs-pixel-portal-card p { color:rgba(233,226,208,.84); margin:8px 0 12px; }
.gs-pixel-portal-card ul { margin:0; padding-left:18px; color:rgba(233,226,208,.88); }
.gs-pixel-portal-card li+li { margin-top:6px; }
.gs-pixel-wallpaper-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.gs-pixel-wallpaper-choice { appearance:none; border:1px solid rgba(118,154,185,.22); border-radius:10px; background:rgba(8,19,31,.72); padding:8px; color:#f6ecd6; text-align:left; cursor:pointer; }
.gs-pixel-wallpaper-choice.is-selected { border-color:rgba(226,102,57,.54); box-shadow:inset 0 0 0 1px rgba(226,102,57,.22); }
.gs-pixel-wallpaper-thumb { display:block; width:100%; aspect-ratio:1/1; border-radius:8px; background-size:cover; background-position:center; image-rendering:pixelated; border:1px solid rgba(255,255,255,.08); }
.gs-pixel-wallpaper-label { display:block; margin-top:7px; font-size:11px; line-height:1.15; }
@media(max-width:720px){.gs-pixel-job-content .gs-job-grid,.gs-pixel-wallpaper-grid{grid-template-columns:1fr}.gs-pixel-app-actions{gap:7px}.gs-pixel-portal-card strong{font-size:13px}.gs-pixel-portal-card p,.gs-pixel-portal-card li,.gs-pixel-wallpaper-label,.gs-pixel-job-content .gs-job-card p{font-size:10px}.gs-pixel-job-content .gs-job-card h4{font-size:13px}}


/* === V0.9.312 — PC RetroWeb plein écran mobile 1080x1920 === */
.gs-pixel-browser-back,
.gs-pixel-browser-home-hotspot {
  position:absolute;
  z-index:7;
  border:0;
  padding:0;
  margin:0;
  background:transparent;
  cursor:pointer;
}
.gs-pixel-browser-back { left:2.4%; top:17.0%; width:4.2%; height:7.0%; }
.gs-pixel-browser-home-hotspot { left:17.1%; top:17.0%; width:4.2%; height:7.0%; }
.gs-pixel-browser-back:focus-visible,
.gs-pixel-browser-home-hotspot:focus-visible { outline:2px solid rgba(255,192,126,.95); outline-offset:-2px; }

@media (max-width: 900px) {
  .gs-desktop-backdrop {
    position:fixed !important;
    inset:0 !important;
    width:100vw !important;
    height:100dvh !important;
    z-index:2147482000 !important;
    padding:0 !important;
    margin:0 !important;
    display:block !important;
    background:#02060b !important;
    backdrop-filter:none !important;
    overflow:hidden !important;
    overscroll-behavior:contain;
    animation:none !important;
  }
  .gs-room-prompt-computer.gs-desktop-window.gs-desktop-window-pixel {
    position:absolute !important;
    inset:0 !important;
    width:100vw !important;
    max-width:none !important;
    height:100dvh !important;
    max-height:none !important;
    aspect-ratio:auto !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    border-radius:0 !important;
    box-shadow:none !important;
    background:#02060b !important;
    overflow:hidden !important;
    text-align:left !important;
    animation:none !important;
  }
  .gs-pixel-browser-frame {
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    background-image:url('../img/ui/pc-retroweb-fullscreen-mobile.webp') !important;
    background-size:100% 100% !important;
    background-position:center !important;
    background-repeat:no-repeat !important;
    image-rendering:pixelated;
    overflow:hidden !important;
  }
  .gs-pixel-browser-close {
    z-index:8 !important;
    top:.55% !important;
    right:.75% !important;
    width:6.6% !important;
    height:3.9% !important;
    min-width:42px !important;
    min-height:38px !important;
    border-radius:0 !important;
  }
  .gs-pixel-browser-back {
    left:2.5% !important;
    top:9.0% !important;
    width:7.8% !important;
    height:4.9% !important;
  }
  .gs-pixel-browser-home-hotspot {
    left:23.5% !important;
    top:9.0% !important;
    width:8.7% !important;
    height:4.9% !important;
  }
  .gs-pixel-browser-tabs {
    position:absolute !important;
    inset:0 !important;
    z-index:7 !important;
  }
  .gs-pixel-tab {
    top:4.05% !important;
    height:4.85% !important;
    border-radius:0 !important;
  }
  .gs-pixel-tab.is-home { left:3.0% !important; width:27.0% !important; }
  .gs-pixel-tab.is-journal { left:30.0% !important; width:28.1% !important; }
  .gs-pixel-tab.is-system { left:58.1% !important; width:28.6% !important; }
  .gs-pixel-tab.is-inactive {
    background:rgba(2,7,12,.12) !important;
    box-shadow:none !important;
  }
  .gs-pixel-tab.is-active {
    background:rgba(90,111,129,.10) !important;
    box-shadow:inset 0 4px 0 rgba(229,89,46,.92) !important;
  }
  .gs-pixel-browser-label { display:none !important; }
  .gs-pixel-browser-content {
    position:absolute !important;
    left:3.7% !important;
    right:7.0% !important;
    top:15.0% !important;
    bottom:5.8% !important;
    width:auto !important;
    height:auto !important;
    min-height:0 !important;
    margin:0 !important;
    padding:16px 14px 22px !important;
    display:block !important;
    overflow-x:hidden !important;
    overflow-y:auto !important;
    overscroll-behavior:contain !important;
    scrollbar-width:none !important;
    -webkit-overflow-scrolling:touch;
  }
  .gs-pixel-browser-content::-webkit-scrollbar { width:0 !important; height:0 !important; }
  .gs-pixel-desktop-grid {
    width:100% !important;
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    grid-auto-rows:minmax(128px,auto) !important;
    gap:18px 14px !important;
    align-content:start !important;
    justify-content:stretch !important;
    padding:8px 2px 24px !important;
  }
  .gs-pixel-desktop-icon {
    width:100% !important;
    min-height:128px !important;
    padding:12px 6px !important;
    gap:10px !important;
    border-radius:12px !important;
    background:rgba(6,17,29,.26) !important;
  }
  .gs-pixel-desktop-icon:hover,
  .gs-pixel-desktop-icon:active {
    background:rgba(25,51,72,.50) !important;
    border-color:rgba(136,174,205,.35) !important;
  }
  .gs-pixel-desktop-icon-badge {
    width:70px !important;
    height:70px !important;
    border-radius:14px !important;
    font-size:34px !important;
  }
  .gs-pixel-desktop-icon-label {
    max-width:100% !important;
    font-size:14px !important;
    line-height:1.15 !important;
  }
  .gs-pixel-tab-page,
  .gs-pixel-browser-content.is-wide .gs-pixel-tab-page,
  .gs-pixel-tab-page.gs-pixel-job-page {
    width:100% !important;
    max-width:none !important;
    gap:14px !important;
    padding:0 0 28px !important;
  }
  .gs-pixel-page-heading {
    padding:16px 14px !important;
    border-radius:10px !important;
    background:rgba(5,17,28,.80) !important;
  }
  .gs-pixel-page-heading span { font-size:10px !important; }
  .gs-pixel-page-heading strong { font-size:20px !important; line-height:1.2 !important; }
  .gs-pixel-page-heading small { font-size:13px !important; line-height:1.35 !important; }
  .gs-pixel-mini-stats {
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:10px !important;
  }
  .gs-pixel-mini-stats span { padding:14px 8px !important; border-radius:9px !important; }
  .gs-pixel-mini-stats small { font-size:9px !important; }
  .gs-pixel-mini-stats b { font-size:18px !important; }
  .gs-pixel-page-action {
    min-height:48px !important;
    padding:12px 16px !important;
    font-size:13px !important;
    border-radius:8px !important;
  }
  .gs-pixel-system-grid {
    width:100% !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:16px !important;
  }
  .gs-pixel-portal-card {
    padding:16px !important;
    border-radius:10px !important;
    background:rgba(5,17,28,.80) !important;
  }
  .gs-pixel-portal-card strong { font-size:18px !important; }
  .gs-pixel-portal-card p,
  .gs-pixel-portal-card li { font-size:13px !important; line-height:1.45 !important; }
  .gs-pixel-wallpaper-grid {
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:12px !important;
  }
  .gs-pixel-wallpaper-label { font-size:11px !important; }
  .gs-pixel-job-content .gs-job-grid { grid-template-columns:1fr !important; gap:12px !important; }
  .gs-pixel-job-content .gs-job-card { padding:15px !important; }
  .gs-pixel-job-content .gs-job-card h4 { font-size:17px !important; }
  .gs-pixel-job-content .gs-job-card p { font-size:13px !important; line-height:1.45 !important; }
  .gs-pixel-job-content .gs-job-actions { gap:8px !important; }
  .gs-pixel-job-content .gs-room-prompt-btn { min-height:44px !important; font-size:12px !important; }
}

/* === V0.9.313 — Pack d’icônes 512 + Price Checker RetroWeb intégré === */
.gs-pixel-desktop-icon-badge {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  overflow: visible;
}
.gs-pixel-desktop-icon-badge img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  image-rendering: pixelated;
  filter: drop-shadow(0 5px 7px rgba(0,0,0,.38));
  pointer-events: none;
}
.gs-pixel-desktop-icon.is-gold .gs-pixel-desktop-icon-badge,
.gs-pixel-desktop-icon.is-paper .gs-pixel-desktop-icon-badge,
.gs-pixel-desktop-icon.is-coin .gs-pixel-desktop-icon-badge,
.gs-pixel-desktop-icon.is-wallpaper .gs-pixel-desktop-icon-badge,
.gs-pixel-desktop-icon.is-danger .gs-pixel-desktop-icon-badge {
  background: transparent !important;
}
.gs-pixel-section-icon {
  align-self: center;
  width: 86px;
  height: 86px;
  margin: 0 auto -4px;
}
.gs-pixel-section-icon img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  image-rendering: pixelated;
  filter: drop-shadow(0 5px 8px rgba(0,0,0,.34));
}

/* Price Checker: page native RetroWeb, sans ancienne fenêtre rouge/noire. */
.gs-pixel-price-page {
  width: 100% !important;
  max-width: none !important;
}
.gs-pixel-price-panel,
.gs-pixel-price-verdict {
  border: 2px solid rgba(89, 122, 149, .42);
  background: rgba(5, 16, 27, .88);
  box-shadow: inset 0 0 0 2px rgba(0,0,0,.28), inset 0 0 22px rgba(22, 59, 84, .12);
  border-radius: 5px;
  padding: 14px;
}
.gs-pixel-price-search-label > span,
.gs-pixel-price-selected-head small,
.gs-pixel-price-selected-grid small {
  display: block;
  color: #d16a43;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .13em;
  text-transform: uppercase;
}
.gs-pixel-price-search-box {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  gap: 8px;
  margin-top: 9px;
}
.gs-pixel-price-search-box input {
  min-width: 0;
  min-height: 42px;
  border: 2px solid rgba(89, 122, 149, .45);
  border-radius: 3px;
  background: #07121e;
  color: #f4e9d0;
  padding: 8px 10px;
  font: inherit;
  outline: none;
  box-shadow: inset 0 0 0 2px rgba(0,0,0,.3);
}
.gs-pixel-price-search-box input:focus {
  border-color: rgba(230, 111, 62, .78);
}
.gs-pixel-price-search-box button,
.gs-pixel-price-submit {
  appearance: none;
  border: 2px solid rgba(215, 91, 48, .68);
  border-radius: 3px;
  background: #572419;
  color: #ffedd0;
  min-height: 42px;
  padding: 8px 13px;
  font: inherit;
  font-weight: 800;
  cursor: pointer;
  box-shadow: inset 0 0 0 2px rgba(255, 156, 85, .07), 0 3px 0 rgba(0,0,0,.28);
}
.gs-pixel-price-search-box button:active,
.gs-pixel-price-submit:active {
  transform: translateY(1px);
}
.gs-pixel-price-submit:disabled {
  opacity: .42;
  cursor: not-allowed;
}
.gs-pixel-price-results {
  display: grid;
  gap: 8px;
  margin-top: 12px;
}
.gs-pixel-price-empty {
  border: 1px dashed rgba(99, 134, 163, .36);
  background: rgba(7, 19, 31, .60);
  padding: 14px;
  color: rgba(238, 229, 211, .82);
}
.gs-pixel-price-empty strong,
.gs-pixel-price-empty small {
  display: block;
}
.gs-pixel-price-empty strong { color: #f5e7ca; font-size: 14px; }
.gs-pixel-price-empty small { margin-top: 5px; font-size: 11px; line-height: 1.35; }
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-row {
  appearance: none;
  width: 100%;
  display: grid;
  grid-template-columns: 52px minmax(0,1fr) auto 18px;
  gap: 9px;
  align-items: center;
  border: 1px solid rgba(89, 122, 149, .32);
  border-radius: 3px;
  background: rgba(8, 22, 35, .84);
  color: #eee3cc;
  padding: 8px;
  text-align: left;
  cursor: pointer;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.02);
}
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-row.is-selected {
  border-color: rgba(227, 106, 59, .78);
  background: rgba(54, 27, 24, .84);
}
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-art {
  width: 52px;
  height: 52px;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: rgba(0,0,0,.18);
  border: 1px solid rgba(255,255,255,.06);
}
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-art img,
.gs-pixel-price-selected-art img,
.gs-pixel-price-selected-sprite {
  max-width: 100%;
  max-height: 100%;
  image-rendering: pixelated;
  object-fit: contain;
}
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-copy {
  min-width: 0;
}
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-copy strong,
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-copy small {
  display: block;
}
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-copy strong {
  color: #fff0d4;
  font-size: 12px;
  white-space: normal;
  overflow-wrap: anywhere;
  overflow: visible;
  text-overflow: clip;
}
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-copy small {
  color: rgba(231, 223, 206, .66);
  font-size: 9px;
  margin-top: 3px;
  white-space: normal;
  overflow-wrap: anywhere;
}
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-paid {
  color: #ffc875;
  font-weight: 800;
  font-size: 11px;
  white-space: nowrap;
}
#gs-collection-game-root .gs-pixel-price-results .gs-price-history-arrow {
  color: #d77b50;
  font-size: 18px;
}
.gs-pixel-price-selected-head {
  display: grid;
  grid-template-columns: 72px minmax(0,1fr);
  gap: 12px;
  align-items: center;
}
.gs-pixel-price-selected-art {
  width: 72px;
  height: 72px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(89, 122, 149, .32);
  background: rgba(0,0,0,.20);
}
.gs-pixel-price-selected-sprite.is-empty {
  width: 30px;
  height: 30px;
  border: 2px solid rgba(89,122,149,.34);
}
.gs-pixel-price-selected-head h3 {
  margin: 5px 0 0;
  color: #fff0d4;
  font-size: 17px;
  line-height: 1.2;
  text-shadow: none;
  letter-spacing: normal;
}
.gs-pixel-price-selected-grid {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 10px;
  margin-top: 14px;
}
.gs-pixel-price-selected-grid > div {
  border: 1px solid rgba(89, 122, 149, .25);
  background: rgba(7, 19, 31, .58);
  padding: 10px;
}
.gs-pixel-price-selected-grid strong {
  display: block;
  margin-top: 5px;
  color: #ffc875;
  font-size: 18px;
}
.gs-pixel-price-condition {
  position: relative;
  height: 28px;
  margin-top: 6px;
  overflow: hidden;
  border: 1px solid rgba(89, 122, 149, .34);
  background: #06101a;
}
.gs-pixel-price-condition i {
  position: absolute;
  inset: 0 auto 0 0;
  background: repeating-linear-gradient(90deg, #b6492c 0 8px, #d97342 8px 14px);
  opacity: .82;
}
.gs-pixel-price-condition b {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #fff1d5;
  font-size: 10px;
  text-shadow: 0 1px 1px #000;
}
.gs-pixel-price-submit {
  width: 100%;
  margin-top: 12px;
}
.gs-pixel-price-verdict {
  text-align: center;
}
.gs-pixel-price-verdict img {
  display: block;
  width: min(210px, 70%);
  height: auto;
  margin: 0 auto 6px;
  image-rendering: pixelated;
}
.gs-pixel-price-verdict strong,
.gs-pixel-price-verdict small {
  display: block;
}
.gs-pixel-price-verdict strong { color: #ffe9c0; font-size: 15px; }
.gs-pixel-price-verdict small { color: rgba(235,226,207,.68); margin-top: 4px; font-size: 10px; }
.gs-pixel-price-verdict.is-waiting > span {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  margin: 0 auto 7px;
  border: 2px solid rgba(89,122,149,.38);
  color: #d46b43;
  font-size: 25px;
  font-weight: 900;
}

@media (max-width: 900px) {
  .gs-pixel-desktop-icon-badge {
    width: min(112px, 100%) !important;
    height: auto !important;
    aspect-ratio: 1;
  }
  .gs-pixel-desktop-icon {
    min-height: 166px !important;
    background: transparent !important;
    border-color: transparent !important;
  }
  .gs-pixel-desktop-icon:hover,
  .gs-pixel-desktop-icon:active {
    background: rgba(17, 39, 57, .34) !important;
    border-color: rgba(121, 161, 194, .28) !important;
  }
  .gs-pixel-desktop-icon-label {
    font-size: 15px !important;
    text-shadow: 0 2px 2px rgba(0,0,0,.86);
  }
  .gs-pixel-section-icon {
    width: 92px;
    height: 92px;
  }
  .gs-pixel-system-grid {
    grid-template-columns: repeat(2,minmax(0,1fr)) !important;
  }
  .gs-pixel-price-panel,
  .gs-pixel-price-verdict {
    padding: 12px;
  }
  .gs-pixel-price-search-box {
    grid-template-columns: 1fr;
  }
  .gs-pixel-price-search-box input,
  .gs-pixel-price-search-box button,
  .gs-pixel-price-submit {
    min-height: 46px;
    font-size: 13px;
  }
  #gs-collection-game-root .gs-pixel-price-results .gs-price-history-row {
    grid-template-columns: 46px minmax(0,1fr) auto;
  }
  #gs-collection-game-root .gs-pixel-price-results .gs-price-history-arrow { display:none; }
  #gs-collection-game-root .gs-pixel-price-results .gs-price-history-art {
    width: 46px;
    height: 46px;
  }
  .gs-pixel-price-selected-grid {
    grid-template-columns: 1fr;
  }
}

/* V0.9.314 — Finition RetroWeb : cadre RPG et petits écrans. */
.gs-pixel-browser-content .gs-pixel-page-heading,
.gs-pixel-browser-content .gs-pixel-desktop-icon,
.gs-pixel-browser-content .gs-pixel-mini-stats span,
.gs-pixel-browser-content .gs-pixel-page-action,
.gs-pixel-price-panel,
.gs-pixel-price-verdict {
  border-radius: 2px !important;
}
.gs-pixel-price-selected-head > div,
.gs-pixel-price-selected-head h3 {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* En paysage, utiliser le cadre horizontal existant et ses propres hotspots. */
@media (max-width: 900px) and (orientation: landscape) {
  .gs-pixel-browser-frame {
    background-image: url('../img/ui/pc-retroweb-window.webp') !important;
  }
  .gs-pixel-browser-close {
    top: 2.6% !important;
    right: .7% !important;
    width: 5.8% !important;
    height: 5.6% !important;
    min-width: 34px !important;
    min-height: 28px !important;
  }
  .gs-pixel-tab { top: 8.2% !important; height: 7.8% !important; }
  .gs-pixel-tab.is-home { left: 2.5% !important; width: 20.6% !important; }
  .gs-pixel-tab.is-journal { left: 23.2% !important; width: 20.8% !important; }
  .gs-pixel-tab.is-system { left: 44.1% !important; width: 19.3% !important; }
  .gs-pixel-browser-back {
    left: 2.4% !important; top: 17% !important;
    width: 4.2% !important; height: 7% !important;
  }
  .gs-pixel-browser-home-hotspot {
    left: 17.1% !important; top: 17% !important;
    width: 4.2% !important; height: 7% !important;
  }
  .gs-pixel-browser-content {
    left: 2.4% !important; right: 2.4% !important;
    top: 29.2% !important; bottom: 6.4% !important;
    padding: 12px 14px !important;
  }
  .gs-pixel-desktop-grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
  .gs-pixel-system-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}

/* === V0.9.326 — Bibliothèque manga + lecteur Les Chroniques d’Astera === */
.gs-manga-library-backdrop { z-index: 120; }
.gs-manga-library {
  width:min(560px,94%);
  max-height:min(82vh,760px);
  overflow:auto;
  text-align:left;
}
.gs-manga-library-head small { display:block; margin-bottom:4px; color:rgba(125,255,176,.66); font-size:10px; letter-spacing:.16em; }
.gs-manga-library-head h3 { margin-bottom:5px; }
.gs-manga-library-head p { margin-bottom:14px; }
.gs-manga-list { display:grid; gap:8px; margin:0 0 12px; }
.gs-manga-card {
  appearance:none; width:100%; min-height:66px; display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:11px 12px; border:1px solid rgba(125,255,176,.24); border-radius:10px;
  background:rgba(17,56,37,.42); color:#dfffea; text-align:left; cursor:pointer;
}
.gs-manga-card:hover,.gs-manga-card:focus-visible { background:rgba(28,82,53,.58); border-color:rgba(125,255,176,.52); outline:none; }
.gs-manga-card.is-current { box-shadow:inset 3px 0 0 #7dffb0; }
.gs-manga-card.is-locked { opacity:.67; background:rgba(20,32,27,.46); }
.gs-manga-card-copy { display:grid; gap:4px; min-width:0; }
.gs-manga-card-copy strong { font:700 14px/1.18 system-ui,sans-serif; color:#f4fff8; }
.gs-manga-card-copy small { font:500 11px/1.25 system-ui,sans-serif; color:rgba(212,240,222,.68); }
.gs-manga-card-status { flex:0 0 auto; font:700 10px/1.2 system-ui,sans-serif; color:#7dffb0; text-align:right; }
.gs-manga-card.is-locked .gs-manga-card-status { color:rgba(235,240,236,.55); }
.gs-manga-library-close { width:100%; text-align:center!important; }
.gs-manga-unavailable { width:min(380px,92%); }

.gs-manga-reader-backdrop {
  position:fixed; inset:0; z-index:2147482500; display:flex; background:#060708; color:#f7f7f7;
  overflow:hidden; overscroll-behavior:contain;
}
.gs-manga-reader { width:100%; height:100%; min-width:0; display:grid; grid-template-rows:auto minmax(0,1fr) auto; background:#090a0b; }
.gs-manga-reader-head {
  display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:10px; min-height:62px; padding:8px 12px;
  border-bottom:1px solid rgba(255,255,255,.12); background:rgba(5,6,7,.98); box-shadow:0 4px 16px rgba(0,0,0,.36); z-index:2;
}
.gs-manga-reader-head > div { min-width:0; text-align:center; }
.gs-manga-reader-head strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font:800 14px/1.2 system-ui,sans-serif; }
.gs-manga-reader-head small { display:block; margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font:600 10px/1.2 system-ui,sans-serif; color:rgba(255,255,255,.65); }
.gs-manga-reader-head button,.gs-manga-reader-foot button,.gs-manga-zoom button {
  appearance:none; border:1px solid rgba(255,255,255,.18); background:#15171a; color:#fff; border-radius:9px; min-height:40px; padding:8px 11px; font:800 12px/1 system-ui,sans-serif; cursor:pointer;
}
.gs-manga-reader-head button:last-child { min-width:40px; padding:8px; font-size:20px; }
.gs-manga-page-scroll { min-height:0; overflow:auto; -webkit-overflow-scrolling:touch; display:flex; align-items:flex-start; justify-content:flex-start; background:#111; }
.gs-manga-page { display:block; height:auto; margin:0 auto; flex:0 0 auto; background:#fff; user-select:none; -webkit-user-drag:none; }
.gs-manga-preload { position:absolute!important; width:1px!important; height:1px!important; opacity:.001!important; pointer-events:none!important; }
.gs-manga-reader-foot {
  display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:8px; min-height:60px; padding:8px 10px;
  border-top:1px solid rgba(255,255,255,.12); background:rgba(5,6,7,.98); box-shadow:0 -4px 16px rgba(0,0,0,.32); z-index:2;
}
.gs-manga-reader-foot > button:first-child { justify-self:start; }
.gs-manga-reader-foot > button:last-child { justify-self:end; }
.gs-manga-reader-foot button:disabled { opacity:.34; cursor:default; }
.gs-manga-zoom { display:flex; align-items:center; justify-content:center; gap:6px; }
.gs-manga-zoom button { min-width:38px; padding:8px; font-size:18px; }
.gs-manga-zoom span { min-width:46px; text-align:center; font:800 11px/1 system-ui,sans-serif; color:rgba(255,255,255,.74); }
@media (max-width:600px) {
  .gs-manga-reader-head { min-height:56px; padding:7px 8px; gap:6px; }
  .gs-manga-reader-head button { min-height:38px; padding:7px 9px; font-size:11px; }
  .gs-manga-reader-head strong { font-size:12px; }
  .gs-manga-reader-head small { font-size:9px; }
  .gs-manga-reader-foot { grid-template-columns:1fr auto 1fr; gap:5px; min-height:58px; padding:6px; }
  .gs-manga-reader-foot > button { min-height:42px; padding:7px 8px; font-size:10px; }
  .gs-manga-zoom { gap:3px; }
  .gs-manga-zoom button { min-width:34px; min-height:38px; font-size:17px; }
  .gs-manga-zoom span { min-width:38px; font-size:9px; }
}


/* === Triplonville — sorties de quartiers hors map === */
.gs-city-map-world .gs-city-exit {
  position: absolute;
  width: var(--gs-exit-size, 64px);
  height: var(--gs-exit-size, 64px);
  transform: translate(-50%, -50%);
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  z-index: 8;
  overflow: visible;
  -webkit-tap-highlight-color: transparent;
}
.gs-city-map-world .gs-city-exit img {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  transform-origin: 50% 50%;
  filter:
    drop-shadow(1px 0 0 #100e11)
    drop-shadow(-1px 0 0 #100e11)
    drop-shadow(0 1px 0 #100e11)
    drop-shadow(0 -1px 0 #100e11)
    drop-shadow(0 3px 3px rgba(0,0,0,.58))
    drop-shadow(0 0 7px rgba(184, 43, 65, .62));
  transition: filter .16s ease, transform .16s ease;
}
.gs-city-map-world .gs-city-exit.is-se img { transform: rotate(0deg) scale(1.08); }
.gs-city-map-world .gs-city-exit.is-sw img { transform: rotate(90deg) scale(1.08); }
.gs-city-map-world .gs-city-exit.is-nw img { transform: rotate(180deg) scale(1.08); }
.gs-city-map-world .gs-city-exit.is-ne img { transform: rotate(-90deg) scale(1.08); }
.gs-city-map-world .gs-city-exit:hover img,
.gs-city-map-world .gs-city-exit:focus-visible img,
.gs-city-map-world .gs-city-exit.is-near img {
  filter:
    drop-shadow(1px 0 0 #100e11)
    drop-shadow(-1px 0 0 #100e11)
    drop-shadow(0 1px 0 #100e11)
    drop-shadow(0 -1px 0 #100e11)
    drop-shadow(0 3px 4px rgba(0,0,0,.66))
    drop-shadow(0 0 10px rgba(220, 61, 79, .86))
    brightness(1.12) saturate(1.08);
}
.gs-city-map-world .gs-city-exit:focus-visible {
  outline: 2px solid rgba(255, 214, 112, .9);
  outline-offset: 2px;
  border-radius: 12px;
}

/* === Triplonville — Kiosque de la ville === */
.gs-city-kiosk-dot {
  position: absolute;
  left: 28.33%;
  top: 56.63%;
  width: 44px;
  height: 44px;
  transform: translate(-50%, -50%);
  z-index: 4;
  pointer-events: auto;
}
.gs-city-kiosk-dot::after {
  inset: 0;
}
.gs-city-kiosk-dot::before {
  width: 14px;
  height: 14px;
}
.gs-city-kiosk-dot .gs-obj-dot-pulse {
  width: 15px;
  height: 15px;
}
.gs-city-kiosk-dot .gs-obj-dot-label {
  bottom: calc(50% + 13px);
}
.gs-city-kiosk-dot:hover .gs-obj-dot-label,
.gs-city-kiosk-dot:focus-visible .gs-obj-dot-label {
  opacity: 1;
  transform: translate(-50%, 0);
}
.gs-city-kiosk-dot:focus-visible {
  outline: 2px solid rgba(255, 220, 92, .94);
  outline-offset: 2px;
  border-radius: 50%;
}
.gs-city-kiosk-dot.is-near::before {
  box-shadow: 0 0 17px 7px rgba(255,214,72,.95), 0 2px 6px rgba(0,0,0,.52);
  filter: brightness(1.24);
}
.gs-city-kiosk-news {
  display: grid;
  gap: 10px;
}
.gs-city-kiosk-news article {
  display: grid;
  gap: 4px;
  padding: 11px 12px;
  border: 1px solid rgba(255, 214, 110, .18);
  border-radius: 12px;
  background: rgba(8, 13, 20, .58);
}
.gs-city-kiosk-news strong {
  color: #ffe09a;
  font-size: 13px;
}
.gs-city-kiosk-news p {
  margin: 0;
  color: #d8e1ed;
  font-size: 13px;
  line-height: 1.45;
}
.gs-city-kiosk-contest {
  display: grid;
  gap: 9px;
}
.gs-city-kiosk-contest .gs-city-kiosk-contest-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.gs-city-kiosk-contest .gs-city-kiosk-contest-facts span {
  padding: 5px 8px;
  border: 1px solid rgba(255, 214, 110, .22);
  border-radius: 999px;
  color: #ffe6b2;
  background: rgba(63, 39, 17, .32);
  font-size: 11px;
  font-weight: 800;
}


/* === Ville vivante : passants temporaires === */
.gs-city-passerby {
  position:absolute;
  transform:translateX(-50%);
  pointer-events:none;
  min-width:0;
  min-height:0;
  padding:0;
  margin:0;
  border:0;
  background:transparent;
  overflow:visible;
}
.gs-city-passerby-sprite {
  position:absolute;
  inset:0;
  display:block;
  background-repeat:no-repeat;
  image-rendering:pixelated;
  pointer-events:none;
}
.gs-city-passerby-shadow {
  position:absolute;
  width:49%;
  height:9%;
  left:25.5%;
  top:89.5%;
  background:rgba(0,0,0,.25);
  border-radius:50%;
  pointer-events:none;
}
.gs-city-passerby-bubble {
  position:absolute;
  left:50%;
  bottom:104%;
  transform:translateX(-50%);
  width:max-content;
  max-width:min(160px,60vw);
  padding:3px 6px;
  border:1px solid #927456;
  border-radius:4px;
  background:#1b1518;
  color:#f0e7d2;
  box-shadow:0 4px 10px rgba(0,0,0,.28);
  font:11px/1.25 var(--gs-rpg-font,monospace);
  text-align:center;
  white-space:normal;
  pointer-events:none;
  z-index:2;
}
.gs-city-passerby-bubble[hidden] { display:none; }


/* === Triplonville — ambiance de début de soirée / nuit ===
   La phase horaire est lue depuis le HUD global déjà rendu par le moteur via :has().
   Le filtre est appliqué
   à la map source ET aux occluders afin de conserver un rendu homogène quand
   un acteur passe derrière le décor. Les sprites restent plus lisibles. */
/* Eau des Tilleuls : pixels natifs à l'intérieur des fragments de la fontaine.
   Le filtre de soirée/nuit et le masquage restent ceux de leur parent. */
#gs-collection-game-root .gs-city-occluder > .gs-city-fountain-water {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
  overflow: hidden;
  pointer-events: none;
}
.gs-city-fountain-water .gs-fountain-flow {
  animation: gs-fountain-flow .64s steps(8, end) infinite;
  animation-play-state: var(--gs-fountain-play-state, running);
}
.gs-city-fountain-water .gs-fountain-ripple {
  fill: none;
  stroke: #a9def2;
  stroke-width: 1;
  transform-origin: 0 0;
  animation: gs-fountain-ripple 1.28s steps(16, end) infinite;
  animation-play-state: var(--gs-fountain-play-state, running);
}
.gs-city-fountain-water .gs-fountain-ripple.is-second { animation-delay: -.426s; }
.gs-city-fountain-water .gs-fountain-ripple.is-third { animation-delay: -.853s; }
.gs-city-fountain-water .gs-fountain-drop {
  fill: #d9f6ff;
  animation: gs-fountain-drop-left .64s steps(8, end) infinite;
  animation-play-state: var(--gs-fountain-play-state, running);
}
.gs-city-fountain-water .gs-fountain-drop.is-right {
  animation-name: gs-fountain-drop-right;
  animation-delay: -.213s;
}
.gs-city-fountain-water .gs-fountain-drop.is-middle {
  animation-name: gs-fountain-drop-middle;
  animation-delay: -.426s;
}
@keyframes gs-fountain-flow {
  from { transform: translateY(0); }
  to { transform: translateY(16px); }
}
@keyframes gs-fountain-ripple {
  0% { transform: scale(.22); opacity: .65; }
  70% { opacity: .38; }
  100% { transform: scale(1.22); opacity: 0; }
}
@keyframes gs-fountain-drop-left {
  0% { transform: translate(0, 0); opacity: .9; }
  45% { transform: translate(-5px, -8px); opacity: .8; }
  90%, 100% { transform: translate(-10px, 2px); opacity: 0; }
}
@keyframes gs-fountain-drop-right {
  0% { transform: translate(0, 0); opacity: .9; }
  45% { transform: translate(6px, -7px); opacity: .8; }
  90%, 100% { transform: translate(11px, 2px); opacity: 0; }
}
@keyframes gs-fountain-drop-middle {
  0% { transform: translate(0, 0); opacity: .9; }
  45% { transform: translate(2px, -10px); opacity: .85; }
  90%, 100% { transform: translate(4px, 1px); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  #gs-collection-game-root .gs-city-occluder > .gs-city-fountain-water { display: none; }
}
.gs-city-map-screen.is-day-cycle-evening .gs-city-map-bg,
.gs-city-map-screen.is-day-cycle-evening .gs-city-occluder,
.gs-game-shell:has(.gs-day-cycle-hud.gs-day-cycle-evening) .gs-city-map-screen .gs-city-map-bg,
.gs-game-shell:has(.gs-day-cycle-hud.gs-day-cycle-evening) .gs-city-map-screen .gs-city-occluder {
  filter: brightness(.90) saturate(.84) contrast(1.035) sepia(.055) hue-rotate(164deg);
}
.gs-city-map-screen.is-day-cycle-night .gs-city-map-bg,
.gs-city-map-screen.is-day-cycle-night .gs-city-occluder,
.gs-game-shell:has(.gs-day-cycle-hud.gs-day-cycle-night) .gs-city-map-screen .gs-city-map-bg,
.gs-game-shell:has(.gs-day-cycle-hud.gs-day-cycle-night) .gs-city-map-screen .gs-city-occluder {
  filter: brightness(.76) saturate(.72) contrast(1.07) sepia(.09) hue-rotate(164deg);
}

/* Les seuls pixels de silhouette partagent l'ambiance lumineuse du décor.
   Les zones tactiles, les étiquettes, les bulles et les ombres au sol restent
   inchangées. Aucun flou ni modification des atlas de marche pixel art. */
.gs-city-map-screen.is-day-cycle-evening .gs-city-resident-sprite,
.gs-city-map-screen.is-day-cycle-evening .gs-city-passerby-sprite {
  filter: brightness(.86) saturate(.84) contrast(1.04) sepia(.055) hue-rotate(164deg);
}
.gs-city-map-screen.is-day-cycle-night .gs-city-resident-sprite,
.gs-city-map-screen.is-day-cycle-night .gs-city-passerby-sprite {
  filter: brightness(.70) saturate(.72) contrast(1.08) sepia(.09) hue-rotate(164deg);
}

/* La nouvelle palette concerne les extérieurs uniquement. Les règles
   historiques ci-dessus préservent les ambiances propres des boutiques. */
#gs-collection-game-root .gs-city-map-screen.is-day-cycle-evening:not([data-city-district="bike-shop"]):not([data-city-district="bakery"]) :is(.gs-city-map-bg,.gs-city-occluder,.gs-city-resident-sprite,.gs-city-passerby-sprite) {
  filter: url(#gs-city-tone-evening);
}
#gs-collection-game-root .gs-city-map-screen.is-day-cycle-night:not([data-city-district="bike-shop"]):not([data-city-district="bakery"]) :is(.gs-city-map-bg,.gs-city-occluder,.gs-city-resident-sprite,.gs-city-passerby-sprite) {
  filter: url(#gs-city-tone-night);
}

/* Le joueur appartient à la même scène lumineuse, y compris sur un banc.
   Seule sa silhouette extérieure dépasse le reset global filter:none!important.
   Les intérieurs, commandes, étiquettes et ombres indépendantes sont préservés. */
#gs-collection-game-root .gs-city-map-screen.is-day-cycle-evening:not([data-city-district="bike-shop"]):not([data-city-district="bakery"]) .gs-city-map-hero > .gs-market-hero {
  filter: url(#gs-city-tone-evening) !important;
}
#gs-collection-game-root .gs-city-map-screen.is-day-cycle-night:not([data-city-district="bike-shop"]):not([data-city-district="bakery"]) .gs-city-map-hero > .gs-market-hero {
  filter: url(#gs-city-tone-night) !important;
}

/* Les montants et le fût gardent la même ambiance que le décor.
   Seules les découpes exactes des vitres émettent la lumière chaude. */
.gs-city-map-screen.is-day-cycle-evening .gs-city-occluder[data-city-glass-cut],
.gs-city-map-screen.is-day-cycle-night .gs-city-occluder[data-city-glass-cut] {
  mask-image:var(--gs-city-glass-exclusion);
  mask-mode:luminance;
  mask-repeat:no-repeat;
  mask-size:100% 100%;
}
/* Léger resserrement de l'ambiance autour de la map, sans voile par-dessus
   les personnages ni les contrôles. */
.gs-city-map-screen.is-day-cycle-evening .gs-city-map-stage,
.gs-game-shell:has(.gs-day-cycle-hud.gs-day-cycle-evening) .gs-city-map-screen .gs-city-map-stage {
  box-shadow:
    inset 0 0 78px rgba(7,19,37,.25),
    0 18px 44px rgba(0,0,0,.30);
}
.gs-city-map-screen.is-day-cycle-night .gs-city-map-stage,
.gs-game-shell:has(.gs-day-cycle-hud.gs-day-cycle-night) .gs-city-map-screen .gs-city-map-stage {
  box-shadow:
    inset 0 0 96px rgba(4,12,28,.42),
    0 18px 44px rgba(0,0,0,.34);
}


/* Le repère vélo appartient au décor arrière. Le bouton transparent n'intercepte
   plus les PNJ ; seule sa sonnette de 44px reste tactile et accessible au clavier. */
/* Atelier vélo de Farid — repère tactile inscrit dans la façade existante. */
.gs-city-map-world .gs-city-bike-shop-door {
  position:absolute; z-index:3; display:block; box-sizing:border-box;
  width:86px; height:86px; transform:translate(-50%,-76%);
  border:0; border-radius:0; background:transparent; padding:0;
  color:#f0e7d2; cursor:pointer; touch-action:manipulation; pointer-events:none;
}
.gs-city-map-world .gs-city-bike-shop-door:before {
  content:""; position:absolute; bottom:11px; left:50%; width:18px; height:10px;
  transform:translateX(-50%); background:#dfca91;
  clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%); opacity:.85;
}
.gs-city-map-world .gs-bike-shop-bell {
  position:absolute; left:50%; top:8px; transform:translateX(-50%);
  width:44px; height:44px; background:#24171c; border:2px solid #927456;
  color:#f0dfae; font:bold 20px/27px "Courier New",monospace;
  text-align:center; image-rendering:pixelated; pointer-events:auto;
}
.gs-city-map-world .gs-city-bike-shop-label {
  position:absolute; left:50%; top:-23px; transform:translateX(-50%);
  padding:4px 7px; background:#1b1518; border:2px solid #927456;
  color:#f0e7d2; font:bold 13px/1.2 "Courier New",monospace;
  white-space:nowrap; opacity:0; pointer-events:none;
}
.gs-city-map-world .gs-city-bike-shop-door:hover .gs-city-bike-shop-label,
.gs-city-map-world .gs-city-bike-shop-door:focus-visible .gs-city-bike-shop-label,
.gs-city-map-world .gs-city-bike-shop-door.is-near .gs-city-bike-shop-label { opacity:1; }
.gs-city-map-world .gs-city-bike-shop-door:focus-visible { outline:3px solid #dfca91; outline-offset:2px; }
.gs-city-map-world .gs-city-bike-shop-door.is-ringing .gs-bike-shop-bell {
  animation:gs-bike-door-ring .22s steps(2,end) 5;
}
@keyframes gs-bike-door-ring {
  0%,100% { transform:translateX(-50%) rotate(-9deg); }
  50% { transform:translateX(-50%) rotate(9deg); }
}
.gs-bike-shop-conversation .gs-bike-shop-intro {
  margin:0; padding:10px 12px; font:14px/1.5 Arial,sans-serif; color:#f0e7d2;
}
.gs-bike-shop-conversation .gs-bike-shop-choices {
  display:flex; flex-wrap:wrap; gap:8px; padding:4px 12px 14px;
}
.gs-bike-shop-conversation .gs-bike-shop-choices button { min-height:44px; flex:1 1 110px; }
.gs-bike-shop-conversation .gs-bike-shop-reply {
  display:flex; gap:12px; align-items:center; padding:12px; color:#f0e7d2;
  font:15px/1.55 Arial,sans-serif; background:#1b1518; border:1px solid #927456;
}
.gs-bike-shop-conversation .gs-bike-shop-reply img {
  flex:none; width:84px; height:84px; object-fit:contain; image-rendering:pixelated;
}
.gs-bike-shop-conversation .gs-bike-shop-reply p { margin:0; }
.gs-bike-shop-conversation .gs-bike-shop-reply strong { display:block; color:#dfca91; }
.gs-bike-shop-conversation .gs-bike-shop-reply span { display:block; margin-top:6px; }
.gs-city-map-screen[data-city-district="bike-shop"] .gs-city-map-bg { filter:none !important; }

/* Les corrections du parquet et de l’affiche sont désormais intégrées dans
   map-bike-shop.webp. Le format de carte règle les deux acteurs dans le moteur. */
.gs-city-map-screen[data-city-district="bike-shop"] .gs-city-map-stage {
  background:#0e1019; box-shadow:none;
}
@media(max-width:480px) {
 .gs-bike-shop-conversation .gs-bike-shop-reply img { width:60px;height:60px; }
 .gs-bike-shop-conversation .gs-bike-shop-reply { gap:8px;padding:8px; }
 .gs-city-map-world .gs-city-bike-shop-door { width:96px;height:96px; }
}

/* Triplonville bench-specific native sprite poses.
   The native bench stays painted in the map; never draw a second bench. */
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot {
  position:absolute; z-index:var(--gs-bench-depth,1)!important; transform:translate(-50%,-50%);
  min-width:44px; min-height:44px; padding:0;
  display:flex; align-items:center; justify-content:center;
  border:0; background:transparent; color:#ffe4aa;
  pointer-events:auto; cursor:pointer; -webkit-tap-highlight-color:transparent;
}
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot::before {width:14px; height:14px;}
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot::after {inset:0;}
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot .gs-obj-dot-pulse {width:15px; height:15px;}
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot:hover .gs-obj-dot-label,
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot:focus-visible .gs-obj-dot-label {opacity:1; transform:translate(-50%,0);}
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot small {display:none;}
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot:hover small,
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot.is-near small,
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot:focus-visible small {
  display:block; position:absolute; top:-21px; white-space:nowrap;
  background:#211820; padding:3px 5px; color:#ffe4aa; font:700 10px/1.2 monospace;
}
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot:focus-visible {outline:2px solid #fff; outline-offset:2px;}
#gs-collection-game-root .gs-city-map-world .gs-city-bench-spot[hidden] {display:none!important;}
/* City controls are UI above the physical scenery/resident depth (0..10000).
   The empty overlay never catches a walk/pan; only each44px marker is tactile.
   Bedroom markers and the navigation arrows retain their existing styles. */
#gs-collection-game-root .gs-city-map-world .gs-city-map-interactions {
  position:absolute; inset:0; z-index:20000; pointer-events:none; overflow:visible;
}
#gs-collection-game-root .gs-city-map-world .gs-city-map-interactions .gs-obj-dot {
  position:absolute; width:44px; height:44px; min-width:44px; min-height:44px;
  max-width:44px; max-height:44px; box-sizing:border-box; padding:0; border:0;
  display:flex; align-items:center; justify-content:center; background:transparent;
  transform:translate(-50%,-50%); z-index:3!important; pointer-events:auto;
}
#gs-collection-game-root .gs-city-map-interactions .gs-obj-dot::before {
  width:14px; height:14px; pointer-events:none;
}
#gs-collection-game-root .gs-city-map-interactions .gs-obj-dot::after {inset:0;}
#gs-collection-game-root .gs-city-map-interactions .gs-obj-dot-pulse {width:15px; height:15px;}
#gs-collection-game-root .gs-city-map-interactions .gs-obj-dot-label {
  top:auto; bottom:calc(50% + 16px); left:50%; border-radius:999px;
  padding:4px 8px; font:800 11px/1.2 system-ui,"Segoe UI",sans-serif;
  white-space:nowrap; max-width:calc(100vw - 28px); pointer-events:none;
}
#gs-collection-game-root .gs-city-map-interactions .gs-obj-dot:is(:hover,:focus-visible,.is-near) .gs-obj-dot-label {
  opacity:1; transform:translate(-50%,0);
}
#gs-collection-game-root .gs-city-map-world .gs-city-map-interactions .gs-city-bike-shop-door {pointer-events:none;}
#gs-collection-game-root .gs-city-map-interactions .gs-bike-shop-bell {
  left:0; top:0; width:44px; height:44px; box-sizing:border-box;
  transform:none; border:0; background:transparent; color:transparent; font-size:0;
  pointer-events:auto; animation:none; /* Keep the invisible hit target stationary while ringing. */
}
#gs-collection-game-root .gs-city-bench-watch {
  position:absolute; bottom:12px; left:50%; transform:translateX(-50%);
  z-index:45; display:flex; align-items:center; justify-content:center; flex-wrap:wrap;
  gap:8px; width:calc(100% - 24px); max-width:600px; box-sizing:border-box; padding:8px;
  border:2px solid #dca564; background:rgba(29,18,28,.95);
  color:#f9e9c3; text-align:center; font:700 12px/1.4 monospace;
}
#gs-collection-game-root .gs-city-bench-watch p {flex-basis:100%; margin:0; font:14px/1.4 Arial,sans-serif;}
#gs-collection-game-root .gs-city-bench-watch button:disabled {opacity:.55; cursor:default;}
#gs-collection-game-root .is-bench-seated .gs-city-map-context,
#gs-collection-game-root .is-bench-seated [data-city-joystick] {visibility:hidden; pointer-events:none;}
#gs-collection-game-root .gs-city-bench-watch button {
  flex:1; min-height:44px; padding:7px 8px; border:2px solid #f3b96f;
  border-radius:2px; background:#82404c; color:#fff5de; cursor:pointer; font:inherit;
}
@media (orientation:landscape) and (max-height:600px) {
  #gs-collection-game-root .gs-city-bench-watch {
    left:12px; transform:none; width:clamp(160px,30vw,260px);
  }
}
/* The validated walking sprites remain unchanged. The seat sprite sheet has
   eight 360x432 cells and is activated only by explicit bench pose classes. */
#gs-collection-game-root .gs-city-map-hero .gs-market-hero.is-city-bench-sitting,
#gs-collection-game-root .gs-city-map-hero .gs-market-hero.is-city-bench-seated,
#gs-collection-game-root .gs-city-map-hero .gs-market-hero.is-city-bench-standing {
  background-image:url("../img/avatar/bench/city-bench-sit-4dir.webp?v=bench-seat-20261031") !important;
  background-size:1000% 800% !important;
  background-position:var(--gs-bench-frame,100%) var(--gs-bench-row,0%) !important;
  background-repeat:no-repeat !important; image-rendering:pixelated;
}
#gs-collection-game-root .gs-city-map-hero .gs-market-hero.is-city-bench-sitting {
  animation:none !important;
}
#gs-collection-game-root .gs-city-map-hero .gs-market-hero.is-city-bench-seated {
  animation:gsCityBenchIdle 2.2s steps(1,end) infinite !important;
}
#gs-collection-game-root .gs-city-map-hero .gs-market-hero.is-city-bench-looking {
  animation:none !important; transform:translateX(-50%);
}
#gs-collection-game-root .gs-city-map-hero .gs-market-hero.is-city-bench-standing {
  animation:none !important;
}
@keyframes gsCityBenchIdle {0%,90%,100%{transform:translateX(-50%) translateY(0)} 91%,99%{transform:translateX(-50%) translateY(1px)}}
#gs-collection-game-root.gs-reduce-motion .gs-city-map-hero .gs-market-hero.is-city-bench-seated{animation:none!important}
@media(prefers-reduced-motion:reduce){#gs-collection-game-root .gs-city-map-hero .gs-market-hero.is-city-bench-seated{animation:none!important}}
