/* Compagnon — animal virtuel pour phpBB */

.compagnon { --cp-accent: #2f80c2; --cp-good: #4caf50; --cp-low: #f0a020; --cp-crit: #e0453a; --cp-soft: rgba(47, 128, 194, 0.08); }
.compagnon-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.compagnon-title { margin: 0; }
.compagnon-balance { background: var(--cp-soft); border-radius: 20px; padding: 4px 12px; }
.compagnon-daily { background: linear-gradient(90deg, #fff3c4, #ffe1ec); color: #5a3d00; border-radius: 8px; padding: 10px 14px; margin-bottom: 10px; font-weight: bold; animation: cp-pop .5s ease-out; }
.compagnon-panel h3 { margin-top: 0; }

.compagnon-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 10px; }
.compagnon-grid--boards { grid-template-columns: 1fr 1fr; margin-top: 10px; }
@media (max-width: 800px) { .compagnon-grid, .compagnon-grid--boards { grid-template-columns: 1fr; } }

/* Scène */
.compagnon-stage { position: relative; height: 200px; display: flex; align-items: flex-end; justify-content: center; border-radius: 10px; background: linear-gradient(180deg, #d9efff 0%, #eef8ff 65%, #cfe9c4 65%, #b8dca9 100%); overflow: hidden; }
.compagnon-pet { position: relative; z-index: 2; line-height: 1; margin-bottom: 22px; transform-origin: 50% 100%; user-select: none; transition: font-size .4s; }
.compagnon-pet--baby { font-size: 70px; }
.compagnon-pet--young { font-size: 95px; }
.compagnon-pet--adult { font-size: 120px; }
.compagnon-pet--legend { font-size: 140px; filter: drop-shadow(0 0 12px gold); }
.compagnon-shadow { position: absolute; bottom: 18px; width: 90px; height: 14px; background: rgba(0, 0, 0, .15); border-radius: 50%; z-index: 1; }
.compagnon-bubble { position: absolute; top: 14px; right: 22%; font-size: 30px; z-index: 3; }

.compagnon-mood--joyful .compagnon-pet { animation: cp-bounce 1s infinite ease-in-out; }
.compagnon-mood--happy .compagnon-pet { animation: cp-sway 3s infinite ease-in-out; }
.compagnon-mood--hungry .compagnon-pet, .compagnon-mood--sad .compagnon-pet, .compagnon-mood--dirty .compagnon-pet, .compagnon-mood--tired .compagnon-pet { animation: cp-droop 4s infinite ease-in-out; filter: saturate(.6); }
.compagnon-mood--sick .compagnon-pet { animation: cp-shiver .4s infinite; filter: hue-rotate(60deg) saturate(.7); }
.compagnon-mood--sleeping .compagnon-pet { animation: cp-breathe 3s infinite ease-in-out; filter: brightness(.85); }
.compagnon-mood--sleeping { background: linear-gradient(180deg, #23305a 0%, #3b4d80 65%, #4a6b48 65%, #3c5a3a 100%); }
.compagnon-mood--runaway .compagnon-pet { opacity: .15; filter: grayscale(1); }

.compagnon-mood--joyful .compagnon-bubble::after { content: "💖"; }
.compagnon-mood--hungry .compagnon-bubble::after { content: "🍖"; }
.compagnon-mood--dirty .compagnon-bubble::after { content: "🪰"; }
.compagnon-mood--tired .compagnon-bubble::after { content: "🥱"; }
.compagnon-mood--sad .compagnon-bubble::after { content: "💧"; }
.compagnon-mood--sick .compagnon-bubble::after { content: "🤒"; }
.compagnon-mood--sleeping .compagnon-bubble::after { content: "💤"; animation: cp-float 2.5s infinite; display: inline-block; }
.compagnon-mood--runaway .compagnon-bubble::after { content: "🏃💨"; }
.compagnon-bubble::after { animation: cp-pop .4s ease-out; display: inline-block; }

.compagnon-pet.is-happy-hop { animation: cp-hop .6s ease-out !important; }
.compagnon-float { position: absolute; z-index: 5; font-size: 32px; pointer-events: none; animation: cp-rise 1.2s ease-out forwards; }

/* Identité et jauges */
.compagnon-identity { text-align: center; margin: 10px 0; }
.compagnon-name { margin: 0; font-size: 1.6em; }
.compagnon-sub { opacity: .75; }
.compagnon-moodtext { font-style: italic; margin: 4px 0 8px; }
.compagnon-xp { position: relative; height: 18px; border-radius: 9px; background: rgba(0, 0, 0, .08); overflow: hidden; max-width: 340px; margin: 0 auto; }
.compagnon-xp-fill { height: 100%; background: linear-gradient(90deg, #a46cf5, #ee6fc1); transition: width .6s; }
.compagnon-xp-label { position: absolute; inset: 0; font-size: 11px; line-height: 18px; font-weight: bold; }

.compagnon-stats { display: grid; gap: 6px; margin: 12px 0; }
.compagnon-stat { display: grid; grid-template-columns: 130px 1fr 34px; align-items: center; gap: 8px; }
.compagnon-bar { height: 12px; background: rgba(0, 0, 0, .08); border-radius: 6px; overflow: hidden; }
.compagnon-bar-fill { height: 100%; background: var(--cp-good); transition: width .6s, background-color .6s; }
.compagnon-bar-fill.is-low { background: var(--cp-low); }
.compagnon-bar-fill.is-critical { background: var(--cp-crit); animation: cp-blink 1s infinite; }
.compagnon-stat-value { text-align: right; font-weight: bold; }

/* Boutons */
.compagnon-actions { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 8px; }
.compagnon-actions--visit { grid-template-columns: minmax(140px, 220px); justify-content: center; }
.compagnon-action-form { margin: 0; }
.compagnon-btn { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 4px; border: 1px solid rgba(0, 0, 0, .12); border-radius: 10px; background: #fff; color: inherit; cursor: pointer; transition: transform .1s, box-shadow .2s; position: relative; }
.compagnon-btn:hover:not([disabled]) { transform: translateY(-2px); box-shadow: 0 4px 10px rgba(0, 0, 0, .12); }
.compagnon-btn:active:not([disabled]) { transform: scale(.96); }
.compagnon-btn[disabled] { opacity: .5; cursor: not-allowed; }
.compagnon-btn-icon { font-size: 26px; line-height: 1.1; }
.compagnon-btn-label { font-weight: bold; }
.compagnon-btn-cost { font-size: 10px; opacity: .7; }
.compagnon-btn-timer { font-size: 10px; color: var(--cp-crit); min-height: 12px; }

.compagnon-runaway { text-align: center; }
.compagnon-runaway .compagnon-actions, .compagnon-runaway form { max-width: 220px; margin: 0 auto; }
.compagnon-hint { text-align: center; opacity: .75; }
.compagnon-inline { display: flex; gap: 6px; margin-bottom: 8px; flex-wrap: wrap; }
.compagnon-danger { color: var(--cp-crit) !important; }

.compagnon-facts, .compagnon-journal, .compagnon-board { list-style: none; margin: 0; padding: 0; }
.compagnon-facts li, .compagnon-journal li { padding: 3px 0; }
.compagnon-journal li { border-bottom: 1px dashed rgba(0, 0, 0, .1); font-size: .95em; }
.compagnon-journal-time { display: block; font-size: .8em; opacity: .6; }
.compagnon-board li { display: grid; grid-template-columns: 32px minmax(0, 1fr) auto auto; gap: 8px; align-items: center; padding: 4px 0; border-bottom: 1px solid rgba(0, 0, 0, .06); }
.compagnon-board li.is-runaway { opacity: .5; }
.compagnon-board-pet { font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.compagnon-board-score { font-weight: bold; }
.compagnon-footer { text-align: center; opacity: .7; margin-top: 8px; }

/* Adoption */
.compagnon-species { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 8px; margin: 10px 0; }
.compagnon-species-card { position: relative; display: flex; flex-direction: column; align-items: center; padding: 10px 4px; border: 2px solid rgba(0, 0, 0, .1); border-radius: 12px; cursor: pointer; background: #fff; transition: transform .15s, border-color .15s; }
.compagnon-species-card:hover { transform: translateY(-2px); }
.compagnon-species-card input { position: absolute; opacity: 0; }
.compagnon-species-card:has(input:checked) { border-color: var(--cp-accent); box-shadow: 0 0 0 3px var(--cp-soft); }
.compagnon-species-card--rare { background: linear-gradient(180deg, #fff, #eef5ff); }
.compagnon-species-card--legend { background: linear-gradient(180deg, #fff, #fff4d6); }
.compagnon-species-emoji { font-size: 44px; }
.compagnon-species-name { font-weight: bold; }
.compagnon-species-cost { font-size: 11px; opacity: .75; }
.compagnon-species-tier { position: absolute; top: 4px; right: 6px; font-size: 9px; text-transform: uppercase; font-weight: bold; color: #b07a00; }
.compagnon-adopt-name { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }

/* Toast */
.compagnon-toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%) translateY(30px); opacity: 0; z-index: 1000; max-width: 90%; padding: 10px 18px; border-radius: 24px; background: #263238; color: #fff; font-weight: bold; box-shadow: 0 6px 18px rgba(0, 0, 0, .25); transition: all .3s; pointer-events: none; }
.compagnon-toast.is-visible { opacity: 1; transform: translateX(-50%) translateY(0); }
.compagnon-toast.is-error { background: #b3261e; }

/* Barre de navigation et viewtopic */
.compagnon-navlink-emoji { margin-right: 3px; }
.compagnon-badge { margin-left: 3px; }
.compagnon-badge--alert { background: #e0453a; color: #fff; animation: cp-blink 1.2s infinite; }
.compagnon-mini a { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; margin-top: 4px; border-radius: 12px; background: rgba(47, 128, 194, .08); text-decoration: none !important; }
.compagnon-mini-emoji { font-size: 18px; line-height: 1; }
.compagnon-mini-emoji--legend { filter: drop-shadow(0 0 4px gold); }
.compagnon-mini-level { font-size: 10px; opacity: .7; }
.compagnon-mini--sleeping .compagnon-mini-emoji::after { content: "💤"; font-size: 10px; }
.compagnon-mini--runaway .compagnon-mini-emoji { opacity: .3; filter: grayscale(1); }
.compagnon-mini--hungry .compagnon-mini-emoji::after, .compagnon-mini--sick .compagnon-mini-emoji::after, .compagnon-mini--sad .compagnon-mini-emoji::after, .compagnon-mini--dirty .compagnon-mini-emoji::after, .compagnon-mini--tired .compagnon-mini-emoji::after { content: "❗"; font-size: 10px; }

@keyframes cp-bounce { 0%, 100% { transform: translateY(0) scaleY(1); } 40% { transform: translateY(-18px) scaleY(1.04); } 55% { transform: translateY(0) scaleY(.94); } }
@keyframes cp-hop { 0% { transform: translateY(0); } 30% { transform: translateY(-30px) rotate(-8deg); } 60% { transform: translateY(0) rotate(6deg); } 100% { transform: none; } }
@keyframes cp-sway { 0%, 100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } }
@keyframes cp-droop { 0%, 100% { transform: scaleY(.96) translateY(2px); } 50% { transform: scaleY(.92) translateY(4px); } }
@keyframes cp-shiver { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-2px); } 75% { transform: translateX(2px); } }
@keyframes cp-breathe { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.04, .97); } }
@keyframes cp-float { 0% { transform: translate(0, 0); opacity: 1; } 100% { transform: translate(10px, -14px); opacity: .2; } }
@keyframes cp-rise { 0% { transform: translateY(0) scale(.6); opacity: 0; } 20% { opacity: 1; transform: translateY(-10px) scale(1.1); } 100% { transform: translateY(-90px) scale(1); opacity: 0; } }
@keyframes cp-pop { 0% { transform: scale(.6); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
@keyframes cp-blink { 50% { opacity: .45; } }
@media (prefers-reduced-motion: reduce) { .compagnon * { animation: none !important; transition: none !important; } }

/* ===== v2 : dessins, onglets, boutique, partage ===== */
.compagnon-head-tools { display: flex; align-items: center; gap: 8px; }
.compagnon-mute { border: 1px solid rgba(0, 0, 0, .12); background: #fff; border-radius: 50%; width: 34px; height: 34px; font-size: 16px; cursor: pointer; }
.compagnon-center { text-align: center; }
.compagnon-big-button { font-size: 1.15em !important; padding: 6px 18px !important; }
.compagnon-section { margin: 16px 0 6px; }

.compagnon-svg { display: block; width: 100%; height: 100%; overflow: visible; }
.compagnon-pet--svg { line-height: 0; }
.compagnon-pet--svg.compagnon-pet--baby { width: 110px; height: 110px; }
.compagnon-pet--svg.compagnon-pet--young { width: 140px; height: 140px; }
.compagnon-pet--svg.compagnon-pet--adult { width: 165px; height: 165px; }
.compagnon-pet--svg.compagnon-pet--legend { width: 185px; height: 185px; }
.compagnon-stage { height: 230px; }
.compagnon-tail { transform-box: fill-box; transform-origin: 0% 100%; }
.compagnon-mood--joyful .compagnon-tail--wag, .compagnon-mood--happy .compagnon-tail--wag { animation: cp-wag .35s infinite alternate ease-in-out; }
.compagnon-mood--joyful .compagnon-svg--cat .compagnon-tail, .compagnon-mood--happy .compagnon-svg--cat .compagnon-tail { animation: cp-wag 1.6s infinite alternate ease-in-out; }
@keyframes cp-wag { from { transform: rotate(-10deg); } to { transform: rotate(14deg); } }

.compagnon-prop { position: absolute; z-index: 3; font-size: 34px; line-height: 1; pointer-events: none; }
.compagnon-prop--jouet { left: 14%; bottom: 20px; animation: cp-sway 3s infinite ease-in-out; }
.compagnon-prop--gamelle { right: 14%; bottom: 18px; }
.compagnon-prop--soin { right: 6%; bottom: 60px; font-size: 26px; }
.compagnon-prop--couchage { left: 50%; bottom: 4px; transform: translateX(-50%); font-size: 70px; z-index: 1; opacity: .9; }
.compagnon-prop--deco { left: 50%; top: 8px; transform: translateX(-50%); font-size: 30px; }
.compagnon-prop--collier { left: 50%; bottom: 22%; transform: translateX(-50%); font-size: 20px; }

.compagnon-tabs { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 2px solid rgba(0, 0, 0, .08); margin: 6px 0 10px; }
.compagnon-tab { border: 0; background: transparent; padding: 8px 12px; cursor: pointer; font-weight: bold; color: inherit; border-bottom: 3px solid transparent; margin-bottom: -2px; }
.compagnon-tab.is-active { border-bottom-color: var(--cp-accent); color: var(--cp-accent); }
.compagnon-count { display: inline-block; min-width: 18px; padding: 0 5px; border-radius: 9px; background: var(--cp-accent); color: #fff; font-size: 10px; line-height: 18px; text-align: center; }

.compagnon-shop { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.compagnon-item { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 3px; padding: 10px 6px; border: 1px solid rgba(0, 0, 0, .1); border-radius: 12px; background: #fff; }
.compagnon-item.is-equipped { border-color: var(--cp-good); box-shadow: 0 0 0 3px rgba(76, 175, 80, .15); }
.compagnon-item.is-owned { opacity: .65; }
.compagnon-item-emoji { font-size: 38px; line-height: 1.1; border-bottom: 4px solid var(--item-color, transparent); border-radius: 4px; }
.compagnon-item-slot { font-size: 10px; text-transform: uppercase; opacity: .6; }
.compagnon-item-desc { font-size: 11px; opacity: .8; min-height: 2.6em; }
.compagnon-item-owned, .compagnon-item-from { font-size: 11px; color: var(--cp-good); font-weight: bold; }
.compagnon-item-from { color: #c04d8a; }
.compagnon-item form { margin: 0; }

.compagnon-species-emoji .compagnon-svg { width: 64px; height: 64px; margin: 0 auto; }
.compagnon-species--breeds .compagnon-species-emoji .compagnon-svg { width: 72px; height: 72px; }
.compagnon-species-card--premium { background: linear-gradient(180deg, #fff, #fff4d6); }
.compagnon-species-card.is-current { border-color: var(--cp-good); }
.compagnon-species-card form { margin-top: 4px; }
.compagnon-breeds h4, .compagnon-adopt h4 { margin: 14px 0 4px; }

.compagnon-share-buttons { display: flex; flex-wrap: wrap; gap: 6px; }
.compagnon-share-btn { flex: 1 1 45%; display: inline-block; text-align: center; padding: 8px 6px; border-radius: 8px; border: 0; color: #fff !important; font-weight: bold; text-decoration: none !important; cursor: pointer; font-size: 12px; }
.compagnon-share-btn--whatsapp { background: #25d366; }
.compagnon-share-btn--email { background: #6b7a8f; }
.compagnon-share-btn--facebook { background: #1877f2; }
.compagnon-share-btn--x { background: #111; }
.compagnon-share-btn--telegram { background: #229ed9; }
.compagnon-share-btn--copy { background: #8e5cd9; }
.compagnon-share-btn--native { background: var(--cp-accent); }

.compagnon-moderate { margin-top: 12px; padding: 8px; border: 1px dashed #c0392b; border-radius: 8px; }
.compagnon-board-avatar { display: inline-block; width: 30px; height: 30px; vertical-align: middle; font-size: 22px; line-height: 30px; text-align: center; }
.compagnon-mini-emoji .compagnon-svg { width: 34px; height: 34px; display: inline-block; vertical-align: middle; }
.compagnon-mini-emoji { display: inline-flex; align-items: center; }

/* ===== v3 : costumes, pension, succès, concours ===== */
.compagnon-prop--costume { left: 50%; top: 10px; transform: translateX(-50%); font-size: 34px; }
.compagnon-prop--costume.has-deco { transform: translateX(-140%); }
.compagnon-pension-sign { position: absolute; z-index: 4; left: 50%; top: 40%; transform: translate(-50%, -50%) rotate(-4deg); background: #fff8e1; border: 2px solid #c9a227; border-radius: 8px; padding: 6px 12px; font-weight: bold; box-shadow: 0 3px 8px rgba(0, 0, 0, .15); }
.compagnon-mood--vacation .compagnon-pet { opacity: .25; filter: grayscale(.6); }
.compagnon-mood--vacation { background: linear-gradient(180deg, #ffe7b3 0%, #fff4dc 65%, #f2d7a6 65%, #e5c38b 100%); }
.compagnon-daily--achievement { background: linear-gradient(90deg, #e3f2fd, #ede7f6); color: #2d2a6e; }

.compagnon-item { position: relative; }
.compagnon-item.is-limited { border-color: #e08a3c; background: linear-gradient(180deg, #fff, #fff2e6); }
.compagnon-item-limited { position: absolute; top: -8px; left: 50%; transform: translateX(-50%); white-space: nowrap; background: #e0452a; color: #fff; font-size: 10px; font-weight: bold; border-radius: 10px; padding: 1px 8px; }

.compagnon-achievements { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; }
.compagnon-ach { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 2px; padding: 10px 6px; border-radius: 12px; border: 1px dashed rgba(0, 0, 0, .2); background: rgba(255, 255, 255, .5); filter: grayscale(1); opacity: .6; }
.compagnon-ach.is-done { filter: none; opacity: 1; border-style: solid; border-color: #e6b422; background: linear-gradient(180deg, #fff, #fff8dc); }
.compagnon-ach-icon { font-size: 34px; }
.compagnon-ach-desc { font-size: 11px; opacity: .8; }
.compagnon-ach-reward { font-size: 11px; font-weight: bold; color: #8a6d00; }
.compagnon-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.compagnon-badge-ach { font-size: 26px; background: #fff8dc; border: 1px solid #e6b422; border-radius: 50%; width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; }

.compagnon-pension-form { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; justify-content: center; }

.compagnon-contest { background: linear-gradient(180deg, #fff9e8, #ecf1f3); margin-top: 10px; }
.compagnon-contest h4 { margin: 6px 0; }
.compagnon-podium { list-style: none; margin: 0; padding: 0; }
.compagnon-podium li { display: grid; grid-template-columns: 32px minmax(0, 1fr) auto auto; gap: 8px; align-items: center; padding: 4px 0; border-bottom: 1px solid rgba(0, 0, 0, .06); }
.compagnon-podium-pet { font-weight: bold; }
.compagnon-podium-avatar, .compagnon-winner-avatar { display: inline-block; width: 40px; height: 40px; vertical-align: middle; font-size: 28px; line-height: 40px; text-align: center; }
.compagnon-winners { display: flex; gap: 8px; justify-content: center; align-items: flex-end; }
.compagnon-winner { display: flex; flex-direction: column; align-items: center; padding: 8px; border-radius: 12px; background: #fff; text-decoration: none !important; color: inherit !important; min-width: 90px; }
.compagnon-winner--1 { order: 2; padding-bottom: 24px; box-shadow: 0 0 0 3px #f5c542; }
.compagnon-winner--2 { order: 1; }
.compagnon-winner--3 { order: 3; }
.compagnon-winner-medal { font-size: 24px; }
.compagnon-winner--1 .compagnon-winner-avatar { width: 64px; height: 64px; font-size: 44px; line-height: 64px; }

/* ===================== v4 ===================== */

.compagnon [hidden] { display: none !important; }

/* Plafond de gains */
.compagnon-cap { display: inline-flex; align-items: center; gap: 8px; background: var(--cp-soft); border-radius: 20px; padding: 4px 12px; font-size: 12px; }
.compagnon-cap-bar { display: inline-block; width: 70px; height: 6px; border-radius: 3px; background: rgba(0, 0, 0, .1); overflow: hidden; }
.compagnon-cap-bar b { display: block; height: 100%; background: linear-gradient(90deg, #3d9b4f, #f5a623); transition: width .6s; }

/* Quêtes du jour */
.compagnon-quests .inner { background: linear-gradient(180deg, rgba(255, 244, 214, .6), transparent 60%); border-radius: 8px; }
.compagnon-quest-list { list-style: none; margin: 0 0 8px; padding: 0; }
.compagnon-quest { display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; grid-template-rows: auto 6px; gap: 2px 8px; align-items: center; padding: 6px 0; border-bottom: 1px dashed rgba(0, 0, 0, .08); }
.compagnon-quest-icon { grid-row: span 2; font-size: 20px; text-align: center; }
.compagnon-quest-count { font-size: 11px; font-weight: bold; opacity: .75; }
.compagnon-quest-bar { grid-column: 2 / 4; height: 6px; border-radius: 3px; background: rgba(0, 0, 0, .08); overflow: hidden; }
.compagnon-quest-bar b { display: block; height: 100%; background: linear-gradient(90deg, #f5a623, #f56a6a); transition: width .6s; }
.compagnon-quest.is-done .compagnon-quest-text { text-decoration: line-through; opacity: .6; }
.compagnon-quest.is-done .compagnon-quest-bar b { background: #3d9b4f; }
.compagnon-quest.is-done .compagnon-quest-count::after { content: " ✔"; color: #3d9b4f; }
.compagnon-quest.is-just-done { animation: compagnon-pop .6s ease; }
.compagnon-quest-claim { text-align: center; margin: 6px 0; }
.compagnon-quest-claim .button { animation: compagnon-glow 1.6s ease-in-out infinite; }
.compagnon-quest-claimed { text-align: center; font-weight: bold; color: #3d9b4f; }
@keyframes compagnon-pop { 0% { transform: scale(1); } 40% { transform: scale(1.05); background: rgba(61, 155, 79, .12); } 100% { transform: scale(1); } }
@keyframes compagnon-glow { 0%, 100% { box-shadow: 0 0 0 0 rgba(245, 166, 35, .0); } 50% { box-shadow: 0 0 0 6px rgba(245, 166, 35, .35); } }

/* Mini-jeu */
.compagnon-game { margin: 8px 0 12px; border-radius: 12px; overflow: hidden; border: 2px solid rgba(47, 128, 194, .25); }
.compagnon-game-hud { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 12px; background: rgba(47, 128, 194, .08); font-size: 15px; }
.compagnon-game-timer { flex: 1; height: 8px; border-radius: 4px; background: rgba(0, 0, 0, .08); overflow: hidden; }
.compagnon-game-timer b { display: block; height: 100%; width: 100%; background: linear-gradient(90deg, #f56a6a, #f5a623, #3d9b4f); transition: width .1s linear; }
.compagnon-game-field { position: relative; height: 320px; background: linear-gradient(180deg, #bfe6ff 0%, #e8f7ff 62%, #a8dd8b 62%, #7cc464 100%); overflow: hidden; touch-action: manipulation; user-select: none; }
.compagnon-game-pet { position: absolute; left: 50%; bottom: 14px; width: 90px; height: 90px; margin-left: -45px; font-size: 64px; line-height: 90px; text-align: center; pointer-events: none; }
.compagnon-game-pet .compagnon-svg { width: 90px; height: 90px; }
.compagnon-game-pet.is-jump { animation: compagnon-jump .35s ease-out; }
@keyframes compagnon-jump { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-22px); } }
.compagnon-ball { position: absolute; top: -50px; width: 48px; height: 48px; margin: 0; padding: 0; border: 0; background: none; font-size: 34px; line-height: 48px; cursor: pointer; animation: compagnon-fall 2.4s linear forwards; -webkit-tap-highlight-color: transparent; }
.compagnon-ball.is-gold { font-size: 38px; filter: drop-shadow(0 0 6px gold); }
.compagnon-ball.is-caught { animation-play-state: paused; font-size: 20px; font-weight: bold; color: #3d9b4f; transform: scale(1.3); transition: transform .3s, opacity .3s; opacity: 0; }
@keyframes compagnon-fall { from { transform: translateY(0) rotate(0); } to { transform: translateY(400px) rotate(360deg); } }
.compagnon-game-start { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; justify-content: center; margin: 10px 0; }
.compagnon-game-done { font-weight: bold; color: #3d9b4f; }
.compagnon-board li.is-me { background: rgba(245, 166, 35, .12); border-radius: 6px; }

/* Œuf mystère */
.compagnon-egg { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 18px; padding: 10px; border-radius: 12px; background: radial-gradient(circle at 50% 40%, #fff8e6, transparent 70%); }
.compagnon-egg-picture .compagnon-svg { width: 140px; height: 140px; }
.compagnon-egg.is-incubating .compagnon-egg-picture { animation: compagnon-wobble 2.4s ease-in-out infinite; transform-origin: 50% 90%; }
@keyframes compagnon-wobble { 0%, 70%, 100% { transform: rotate(0); } 76% { transform: rotate(-7deg); } 82% { transform: rotate(6deg); } 88% { transform: rotate(-3deg); } }
.compagnon-egg-info { display: flex; flex-direction: column; align-items: center; gap: 8px; min-width: 200px; text-align: center; }
.compagnon-egg-info .compagnon-xp { width: 100%; }
.compagnon-species-card--rare { background: linear-gradient(135deg, #ffe3f1, #e3f0ff, #e9ffe3); box-shadow: 0 0 0 2px #c9a2ff inset; }

/* Mini-carte au survol (viewtopic) */
.compagnon-mini.has-card { position: relative; }
.compagnon-mini.has-card a .compagnon-svg { transition: transform .2s; }
.compagnon-mini.has-card:hover a .compagnon-svg { transform: scale(1.25); }
.compagnon-card { display: none; position: absolute; z-index: 60; left: 0; top: 100%; width: 210px; margin-top: 4px; padding: 10px; border-radius: 10px; background: #fff; color: #333; box-shadow: 0 6px 20px rgba(0, 0, 0, .18); font-size: 11px; line-height: 1.4; text-align: left; }
.compagnon-mini.has-card:hover .compagnon-card, .compagnon-mini.has-card:focus-within .compagnon-card { display: block; }
.compagnon-card::before { content: ""; position: absolute; top: -6px; left: 18px; border: 6px solid transparent; border-top: 0; border-bottom-color: #fff; }
.compagnon-card-head strong { display: block; font-size: 13px; }
.compagnon-card-head span { display: block; opacity: .7; }
.compagnon-card-mood { margin: 6px 0; font-style: italic; }
.compagnon-card-stats, .compagnon-profile-stats { display: grid; gap: 3px; }
.compagnon-card-stat { display: grid; grid-template-columns: 18px 1fr auto; align-items: center; gap: 6px; }
.compagnon-card-stat em { font-style: normal; font-size: 10px; opacity: .7; min-width: 22px; text-align: right; }
.compagnon-card-bar { height: 6px; border-radius: 3px; background: rgba(0, 0, 0, .08); overflow: hidden; }
.compagnon-card-bar b { display: block; height: 100%; background: #3d9b4f; }
.compagnon-card-bar b.is-low { background: #f5a623; }
.compagnon-card-bar b.is-critical { background: #e0453a; }
.compagnon-card-foot { margin-top: 6px; opacity: .75; }
.compagnon-card-link { display: block; margin-top: 6px; font-weight: bold; }

/* Profil du membre */
.compagnon-profile-body { display: flex; flex-wrap: wrap; gap: 18px; align-items: flex-start; }
.compagnon-profile-pet { position: relative; display: block; width: 120px; height: 120px; border-radius: 50%; background: radial-gradient(circle, #eaf5ff 0%, #d5ebff 70%); text-align: center; line-height: 120px; flex: none; }
.compagnon-profile-pet .compagnon-svg { width: 110px; height: 110px; margin-top: 5px; vertical-align: top; }
.compagnon-profile-emoji { font-size: 70px; }
.compagnon-profile-costume { position: absolute; top: -6px; right: -4px; font-size: 32px; line-height: 1; }
.compagnon-profile-info { flex: 1; min-width: 220px; }
.compagnon-profile-info h4 { margin: 0 0 2px; font-size: 1.3em; }
.compagnon-profile-sub { margin: 0; opacity: .75; }
.compagnon-profile-mood { margin: 4px 0 8px; font-style: italic; }
.compagnon-profile-stats { max-width: 320px; margin-bottom: 8px; }
.compagnon-profile-facts { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 14px; }
.compagnon-profile-badges { font-size: 20px; letter-spacing: 2px; margin: 0 0 8px; }
