/* ==========================================
   GLOBAL GAME UI — blocked teaser, tabs, toasts
   ========================================== */

.blocked-progress {
    margin: var(--gap-lg) 0;
    padding: var(--gap-lg);
    background: rgba(var(--accent-rgb), 0.05);
    border-radius: var(--radius);
}

.blocked-progress__header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--gap-sm);
    font-size: var(--text-md);
}

.blocked-progress__bar {
    margin: 0 0 var(--gap-xs);
}

/* Global progress threshold reached, only the matching City building is left to build — same visual treatment as
   .blocked-progress, direct button to City */
.blocked-building {
    margin: var(--gap-lg) 0;
    padding: var(--gap-lg);
    background: rgba(var(--accent-rgb), 0.05);
    border-radius: var(--radius);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--gap-sm);
}

.blocked-building__text {
    font-size: var(--text-md);
    margin: 0;
}

/* —— Section Tabs —— */
.section-tabs__wrap {
    margin-top: var(--gap-xl);
}
.section-tabs {
    display: flex;
    gap: 0;
    border-bottom: var(--border-w-strong) solid var(--border);
    margin-bottom: var(--gap-xl);
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
}
.section-tabs__btn {
    flex-shrink: 0;
    padding: var(--gap-md) var(--gap-xl);
    background: none;
    border: none;
    border-bottom: var(--border-w-accent) solid transparent;
    margin-bottom: calc(var(--border-w-strong) * -1);
    cursor: pointer;
    font-weight: var(--weight-bold);
    font-size: var(--text-md);
    color: var(--muted);
    transition: color 0.2s, border-color 0.2s;
    white-space: nowrap;
}
.section-tabs__btn:hover {
    color: var(--accent);
}
.section-tabs__btn.active {
    color: var(--accent);
    border-bottom-color: var(--accent);
}
.section-tabs__panel {
    display: none;
}
.section-tabs__panel.active {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--gap-lg);
}
@media (max-width: 900px) {
    .section-tabs__btn {
        padding: var(--gap-sm) var(--gap-lg);
        font-size: var(--text-md);
    }
}

/* ==========================================
   TOAST NOTIFICATIONS
   ========================================== */
#toast-container {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: var(--z-tooltip);
    display: flex;
    flex-direction: column;
    gap: var(--gap-md);
    pointer-events: none;
}

.toast {
    display: flex;
    align-items: flex-start;
    gap: var(--gap-md);
    padding: var(--gap-lg) var(--gap-lg) var(--gap-lg) var(--space);
    border-radius: var(--radius);
    font-size: var(--text-sm);
    font-weight: var(--weight-text);
    max-width: 340px;
    box-shadow: var(--shadow-toast);
    animation: toast-in 0.25s ease forwards;
    opacity: 1;
    pointer-events: auto;
    transition: opacity 0.35s ease;
}

.toast__text {
    flex: 1;
    line-height: 1.4;
}

.toast__close {
    flex-shrink: 0;
    background: none;
    border: none;
    color: inherit;
    opacity: 0.75;
    font-size: var(--text-lg);
    line-height: 1;
    cursor: pointer;
    padding: 0;
}

.toast__close:hover {
    opacity: 1;
}

/* Single notification system for the whole game (success/error/warning/info/reward) — same position, same
   behavior, only the color changes per type.
   The Arena combat panel is persistent game content, not a message. */
.toast--success {
    background: rgba(var(--success-rgb), 0.92);
    color: var(--on-accent);
    border: var(--border-w) solid rgba(var(--overlay-white-rgb), 0.15);
}

.toast--error {
    background: rgba(var(--error-rgb), 0.92);
    color: var(--on-accent);
    border: var(--border-w) solid rgba(var(--overlay-white-rgb), 0.15);
}

.toast--warning {
    background: rgba(var(--warning-rgb), 0.92);
    color: var(--on-accent);
    border: var(--border-w) solid rgba(var(--overlay-white-rgb), 0.15);
}

.toast--reward {
    background: rgba(var(--accent-rgb), 0.92);
    color: var(--on-accent);
    border: var(--border-w) solid rgba(var(--overlay-white-rgb), 0.15);
}

.toast--hide {
    opacity: 0;
}

/* Panel shown by a picker link without reload (app.js, data-pick-*): short entrance so the change is noticed */
[data-pick-panel-of].is-picked {
    animation: scaleIn 0.25s ease;
}

@keyframes toast-in {
    from { transform: translateY(16px); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
}

/*Empty state ("no item"), used by several sections*/
.section-empty {
    text-align: center;
    padding: var(--gap-xl) var(--space);
    color: var(--muted);
    font-size: var(--text-md);
}

.section-empty__icon {
    font-size: var(--glyph-size);
    display: block;
    margin-bottom: var(--gap-lg);
    opacity: 0.5;
}

@media (max-width: 900px) {
    #toast-container {
        bottom: 16px;
        right: 12px;
        left: 12px;
        align-items: flex-end;
    }
    .toast {
        max-width: 100%;
    }
}

/* ==========================================
   BADGES (shared component, reused by every section with achievements)
   ========================================== */
.badges__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: var(--gap-lg);
}

.badges__card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--gap-xs);
    padding: var(--gap-lg) var(--gap-md);
    border-radius: var(--radius-lg);
    border: var(--border-w) solid rgba(var(--muted-rgb), 0.24);
    background: rgba(var(--muted-rgb), 0.06);
}

.badges__card--unlocked {
    border-color: rgba(var(--success-rgb), 0.32);
    background: rgba(var(--success-rgb), 0.08);
}

.badges__card--locked {
    opacity: 0.55;
    filter: grayscale(1);
}

.badges__card-icon {
    font-size: var(--glyph-size);
}

.badges__card-title {
    font-weight: var(--weight-bold);
}

/* Section tag — only used by the aggregated showcase (Mon profil), where badges from every rubrique are mixed together */
.badges__card-section {
    font-size: var(--text-sm);
    font-weight: var(--weight-bold);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--accent);
}

.badges__card-desc {
    font-size: var(--text-sm);
    color: var(--muted);
}

.badges__card-locked-label {
    font-size: var(--text-sm);
    color: var(--muted);
    margin-top: var(--gap-xs);
}

.badges__card-unlocked-label {
    font-size: var(--text-sm);
    color: var(--success);
    margin-top: var(--gap-xs);
}

/* ==========================================
   AMÉLIORATIONS: shared tab of every section (templates/upgrades_tab.php)
   ========================================== */
.upg__cell-title {
    display: flex;
    align-items: center;
    gap: var(--gap-sm);
    font-size: var(--text-sm);
    font-weight: var(--weight-bold);
}

.upg__cell-icon {
    font-size: var(--text-md);
    line-height: 1;
}

.upg__cell-desc {
    font-size: var(--text-sm);
    color: var(--muted);
}

.upg__cell-effect {
    font-size: var(--text-sm);
    color: var(--text);
}

/* Generic progress bar, shared by the Améliorations tab (--accent color by default) */
.upg__cell-bar {
    width: 100%;
    border-radius: var(--radius-pill);
    background: rgba(var(--bar-track-rgb, var(--accent-rgb)), 0.15);
    overflow: hidden;
    height: 5px;
    margin-top: var(--gap-xs);
}

.upg__cell-bar-fill {
    height: 100%;
    width: var(--bar-pct, 0%);
    border-radius: var(--radius-pill);
    background: var(--bar-fill-color, var(--accent));
    transition: width 0.6s ease;
}

.upg__cell-maxed {
    display: inline-flex;
    align-items: center;
    gap: var(--gap-xs);
    margin-top: var(--gap-xs);
    padding: var(--gap-2xs) var(--gap-md);
    border-radius: var(--radius-pill);
    font-size: var(--text-sm);
    font-weight: var(--weight-bold);
    color: var(--success);
    background: rgba(var(--success-rgb), 0.14);
    border: var(--border-w) solid rgba(var(--success-rgb), 0.32);
}

.upg__cell-form {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--gap-xs);
}

.upg__cell-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--gap-sm);
}

.table--compact .table__row {
    padding: var(--gap-sm) var(--gap-md);
    gap: var(--gap-md);
    /* Amélioration (icon/name/level/bar/description) / Effet / Coût / Action — Amélioration and Effet
       carry the most text, Action holds only a short button: inverted compared to the generic
       .table ratio */
    grid-template-columns: 2.2fr 2fr 0.9fr 1.2fr;
}

@media (max-width: 900px) {
    .table--compact .table__row {
        grid-template-columns: 1fr;
    }
}

.upg__cell-reason {
    font-size: var(--text-sm);
    color: var(--warning);
}

/* Reason on its own line under a button (Prison actions) */
.upg__cell-reason--block {
    display: block;
    margin-top: var(--gap-sm);
    line-height: 1.35;
}

/* <details> fallback for a large Améliorations group (upgrades_tab.php), generic,
   without section tint */
.upg__group-toggle { margin-top: var(--gap-xs); }
.upg__group-toggle-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--gap-sm);
    cursor: pointer;
    padding: var(--gap-sm) var(--gap-xs);
    font-size: var(--text-sm);
    font-weight: var(--weight-bold);
    color: var(--accent);
    list-style: none;
}
.upg__group-toggle-summary::-webkit-details-marker { display: none; }
.upg__group-toggle-summary::marker { display: none; }
.upg__group-toggle-arrow { transition: transform 0.2s ease; }
.upg__group-toggle[open] .upg__group-toggle-arrow { transform: rotate(180deg); }

/* ==========================================
   ITEM CARD: small catalogue items (Zoo species, Arena bestiary, Companion tricks)
   ========================================== */
.item-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: var(--gap-lg);
}

.item-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gap-xs);
    padding: var(--gap-lg) var(--gap-md);
    border-radius: var(--radius-lg);
    border: var(--border-w) solid rgba(var(--muted-rgb), 0.14);
    background: rgba(var(--muted-rgb), 0.03);
    text-align: center;
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
}

.item-card:hover:not(.item-card--locked) {
    transform: translateY(-2px);
    border-color: rgba(var(--accent-rgb), 0.3);
    box-shadow: var(--shadow);
}

.item-card--locked {
    opacity: 0.5;
    pointer-events: none;
}

/* Tint modifiers — border + faint background in a semantic color, used for a difficulty tier
   (Arena), a relationship warning (Zoo compatibility conflict), or any future tri-state need */
.item-card--tint-success { border-color: rgba(var(--success-rgb), 0.25); background: rgba(var(--success-rgb), 0.05); }
.item-card--tint-warning { border-color: rgba(var(--warning-rgb), 0.25); background: rgba(var(--warning-rgb), 0.05); }
.item-card--tint-error   { border-color: rgba(var(--error-rgb), 0.25); background: rgba(var(--error-rgb), 0.05); }
.item-card--tint-accent  { border-color: rgba(var(--accent-rgb), 0.3); background: rgba(var(--accent-rgb), 0.06); }

.item-card__icon {
    font-size: var(--glyph-size);
    line-height: 1;
}

.item-card__name {
    font-size: var(--text-md);
    font-weight: var(--weight-bold);
    color: var(--text);
}

/* Description or secondary info line (0 to 2 per card: price, upkeep, victory count, date...) */
.item-card__desc {
    font-size: var(--text-sm);
    color: var(--muted);
    line-height: 1.5;
}

.item-card__desc--accent {
    font-weight: var(--weight-bold);
    color: var(--accent);
}

.item-card .btn {
    margin-top: var(--gap-xs);
    width: 100%;
    font-size: var(--text-sm);
    padding: var(--gap-xs) var(--gap-sm);
}
