/* ============================================
   ACCOUNT PAGE — /compte
   ============================================ */

.account-page {
    padding-top: calc(var(--navbar-height) + var(--space-3xl));
    padding-bottom: var(--space-4xl);
    min-height: 100vh;
}

.account-loading {
    text-align: center;
    padding: var(--space-3xl) 0;
    color: var(--text-muted);
}

.account-loading i {
    font-size: 2rem;
    margin-bottom: var(--space-md);
    color: var(--red-bright);
}

/* --- Gate (not logged in) --- */
.account-gate {
    max-width: 520px;
    margin: 0 auto;
    text-align: center;
    padding: var(--space-3xl) var(--space-lg);
}

.account-gate-icon {
    font-size: 3.5rem;
    color: var(--red-bright);
    margin-bottom: var(--space-lg);
}

.account-gate h1 {
    font-size: clamp(1.8rem, 4vw, 2.6rem);
    margin-bottom: var(--space-md);
}

.account-gate p {
    margin-bottom: var(--space-xl);
}

/* --- Hero banner (cf. maquette compte-2-simple) --- */
.hero-banner {
    height: 200px;
    border-radius: var(--radius-lg);
    overflow: hidden;
    position: relative;
    margin-bottom: var(--space-xl);
    border: 1px solid var(--glass-border);
}

.hero-banner img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.hero-banner::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(5, 5, 7, 0) 35%, var(--bg-primary, #050507) 100%);
}

.promo-banner {
    border-radius: var(--radius-lg);
    overflow: hidden;
    margin-top: var(--space-xl);
    border: 1px solid var(--glass-border);
}

.promo-banner img { width: 100%; display: block; }

.teaser-card {
    text-align: center;
    padding: var(--space-xl) var(--space-lg);
}

.teaser-card img {
    width: 56px;
    height: 56px;
    object-fit: contain;
    margin: 0 auto 10px;
}

.teaser-card .label { font-size: 0.8rem; color: var(--text-tertiary); }

/* --- Header --- */
.account-header {
    display: flex;
    align-items: center;
    gap: var(--space-lg);
    margin-bottom: var(--space-2xl);
}

.account-avatar {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    border: 2px solid var(--glass-border-hover);
    object-fit: cover;
}

.account-header h1 {
    font-size: clamp(1.8rem, 4vw, 2.6rem);
    margin-bottom: 4px;
}

.account-badges {
    display: flex;
    gap: var(--space-sm);
    flex-wrap: wrap;
}

/* --- Tabs --- */
.account-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: var(--space-xl);
    border-bottom: 1px solid var(--glass-border);
    padding-bottom: var(--space-md);
}

.account-tab {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 18px;
    border-radius: var(--radius-full);
    background: var(--bg-glass);
    border: 1px solid var(--glass-border);
    color: var(--text-secondary);
    font-size: 0.85rem;
    font-weight: 600;
    transition: all var(--transition-fast);
    white-space: nowrap;
}

.account-tab:hover {
    background: var(--bg-glass-hover);
    color: var(--text-primary);
}

.account-tab.active {
    background: linear-gradient(135deg, var(--red-primary), var(--red-bright));
    color: white;
    border-color: transparent;
}

/* --- Panel / cards --- */
.account-panel {
    min-height: 200px;
}

.account-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
}

/* Regroupement de blocs hétérogènes (cf. Aperçu) : même rythme que .account-list,
   retour Val 20261014 "les blocs n'ont pas assez d'espace entre elles". */
.account-stack {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
    margin-bottom: var(--space-xl);
}
.account-stack:last-child { margin-bottom: 0; }

.account-card {
    background: var(--bg-glass);
    backdrop-filter: blur(var(--glass-blur));
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-lg);
    padding: var(--space-lg) var(--space-xl);
}

.account-card h3 {
    font-family: var(--font-body);
    font-size: 1.1rem;
    font-weight: 700;
    margin-bottom: var(--space-sm);
    display: flex;
    align-items: center;
    gap: 8px;
}

.account-card-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-md);
    flex-wrap: wrap;
    margin-bottom: 4px;
}

.account-card-actions {
    margin-top: var(--space-md);
    display: flex;
    gap: var(--space-sm);
}

.account-cta-card {
    text-align: center;
    padding: var(--space-2xl);
}

.account-cta-icon {
    font-size: 2.2rem;
    color: var(--red-bright);
    margin-bottom: var(--space-md);
    display: block;
}

.account-meta {
    font-size: 0.85rem;
    color: var(--text-tertiary);
}

.account-date {
    font-size: 0.8rem;
    color: var(--text-muted);
}

.account-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
    margin-top: var(--space-sm);
    color: var(--red-bright);
}

.account-reasons {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: var(--space-sm);
}

.account-reasons li {
    font-size: 0.85rem;
    color: var(--text-secondary);
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

.account-reasons li i {
    color: var(--red-bright);
    margin-top: 2px;
}

.account-inline-form {
    display: flex;
    gap: var(--space-sm);
    margin-top: var(--space-sm);
}

.account-inline-form input {
    flex: 1;
}

.account-inline-form-stack {
    flex-direction: column;
    align-items: stretch;
}

.account-list-actions {
    display: flex;
    gap: var(--space-sm);
    margin-bottom: var(--space-sm);
}

.account-overview-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-lg);
}

.account-points {
    font-family: var(--font-display);
    font-size: 1.5rem;
    color: var(--red-bright);
}

.account-rights-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: var(--space-sm);
}

.account-right-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    border-radius: var(--radius-full);
    background: rgba(107, 142, 78, 0.12);
    border: 1px solid rgba(107, 142, 78, 0.25);
    color: var(--faction-civil);
    font-size: 0.8rem;
}

.account-order-row {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: var(--space-sm);
    padding: var(--space-sm) 0;
    border-bottom: 1px solid var(--glass-border);
    font-size: 0.85rem;
}

.account-order-row:last-child { border-bottom: none; }

/* --- Empty / error state --- */
.account-empty {
    text-align: center;
    padding: var(--space-3xl);
    max-width: 480px;
    margin: 0 auto;
}

.account-empty-icon {
    font-size: 2.8rem;
    color: var(--text-muted);
    margin-bottom: var(--space-lg);
}

.account-empty h3 {
    font-size: 1.4rem;
    margin-bottom: var(--space-sm);
}

/* --- Application timeline --- */
.app-timeline {
    display: flex;
    align-items: center;
    gap: 4px;
    margin: var(--space-md) 0;
    flex-wrap: wrap;
}

.app-timeline-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    flex: 1;
    min-width: 70px;
}

.app-timeline-dot {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--bg-secondary);
    border: 2px solid var(--glass-border);
    color: transparent;
    font-size: 0.7rem;
}

.app-timeline-step.done .app-timeline-dot {
    background: var(--faction-civil);
    border-color: var(--faction-civil);
    color: white;
}

.app-timeline-step.current .app-timeline-dot {
    border-color: var(--red-bright);
    box-shadow: 0 0 12px var(--red-glow);
}

.app-timeline-step span {
    font-size: 0.7rem;
    text-align: center;
    color: var(--text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.app-timeline-line {
    flex: 0.5;
    height: 2px;
    background: var(--glass-border);
    margin-bottom: 20px;
}

.app-timeline-line.done {
    background: var(--faction-civil);
}

.app-timeline-rejected {
    display: flex;
    align-items: center;
    gap: var(--space-md);
    color: var(--red-bright);
    margin: var(--space-md) 0;
}

.app-timeline-rejected i {
    font-size: 1.8rem;
}

.app-timeline-note {
    font-size: 0.85rem;
    color: var(--text-secondary);
    margin-top: var(--space-sm);
}

/* --- KPI row (bandeau sous le header, cf. DA compte-2-simple) --- */
.account-kpi-row {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-lg);
    margin-bottom: var(--space-xl);
}

.kpi-card {
    background: var(--bg-glass);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-lg);
    padding: var(--space-lg);
}

.kpi-card .icon {
    width: 38px;
    height: 38px;
    border-radius: 10px;
    background: rgba(255, 26, 60, 0.12);
    color: var(--accent, var(--red-bright));
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: var(--space-sm);
}

.kpi-card .num {
    font-family: var(--font-display);
    font-size: 1.7rem;
    line-height: 1.1;
}

.kpi-card .label {
    font-size: 0.78rem;
    color: var(--text-tertiary);
}

.account-subhead {
    font-size: 0.75rem;
    color: var(--text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin: var(--space-md) 0 var(--space-xs);
}

.card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-sm);
    flex-wrap: wrap;
    margin-bottom: var(--space-sm);
}

.hidden { display: none !important; }

/* --- Personnages : fiche enrichie --- */
.char-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-lg);
}

.char-card {
    background: var(--bg-glass);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.char-card-top {
    padding: var(--space-lg);
    display: flex;
    gap: var(--space-md);
    align-items: center;
    border-bottom: 1px solid var(--glass-border);
}

.char-avatar {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--accent, var(--red-primary)), var(--red-primary));
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-display);
    font-size: 1.1rem;
    flex-shrink: 0;
    color: #fff;
}

.char-card-top h4 {
    font-size: 1rem;
    font-weight: 700;
}

.char-card-top .job {
    font-size: 0.8rem;
    color: var(--text-tertiary);
}

.char-tag {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    padding: 2px 10px;
    border-radius: var(--radius-full);
    background: rgba(255, 26, 60, 0.12);
    color: var(--accent, var(--red-bright));
    margin-left: auto;
    white-space: nowrap;
}

.char-tag.secondary {
    background: rgba(155, 89, 182, 0.15);
    color: #9B59B6;
}

.char-card-body { padding: var(--space-lg); }

.stat-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-sm);
    margin-bottom: var(--space-sm);
}

.stat-box {
    background: var(--bg-glass-hover);
    border-radius: 9px;
    padding: 10px 8px;
    text-align: center;
}

.stat-box .v {
    font-family: var(--font-display);
    font-size: 1.1rem;
}

.stat-box .k {
    font-size: 0.65rem;
    color: var(--text-tertiary);
}

.list-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 6px 0;
    border-bottom: 1px solid var(--glass-border);
    font-size: 0.82rem;
    gap: var(--space-sm);
}

.list-row:last-child { border-bottom: none; }

.plate {
    font-family: monospace;
    background: var(--bg-glass-hover);
    padding: 2px 8px;
    border-radius: 5px;
    font-size: 0.75rem;
    white-space: nowrap;
}

/* --- Journal / chapitres --- */
.chapter-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px solid var(--glass-border);
    gap: var(--space-sm);
    flex-wrap: wrap;
}

.chapter-row:last-child { border-bottom: none; }

.chapter-row h5 { font-size: 0.9rem; font-weight: 600; }
.chapter-row .meta { font-size: 0.75rem; color: var(--text-tertiary); }

.chapter-row-actions { display: flex; gap: 6px; }

.vis-chip {
    font-size: 0.68rem;
    font-weight: 600;
    padding: 3px 10px;
    border-radius: var(--radius-full);
    display: inline-flex;
    align-items: center;
    gap: 5px;
    white-space: nowrap;
}

.vis-chip.private { background: var(--bg-glass-hover); color: var(--text-tertiary); }
.vis-chip.staff { background: rgba(155, 89, 182, 0.15); color: #9B59B6; }
.vis-chip.public { background: rgba(107, 142, 78, 0.15); color: var(--faction-civil); }

.journal-editor {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-md);
}

.journal-editor textarea { min-height: 220px; font-family: monospace; font-size: 0.85rem; }

.journal-preview {
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-md);
    padding: var(--space-md);
    font-size: 0.85rem;
    line-height: 1.6;
    max-height: 220px;
    overflow-y: auto;
    background: var(--bg-glass-hover);
}

.journal-preview h2, .journal-preview h3, .journal-preview h4 { margin: 8px 0 4px; }

.public-profile-box {
    margin-top: var(--space-lg);
    padding-top: var(--space-lg);
    border-top: 1px solid var(--glass-border);
}

.switch { position: relative; display: inline-block; width: 44px; height: 24px; flex-shrink: 0; }
.switch input { opacity: 0; width: 0; height: 0; }
.switch-track {
    position: absolute; inset: 0; cursor: pointer;
    background: var(--bg-glass-hover);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-full);
    transition: all var(--transition-fast);
}
.switch-track::before {
    content: '';
    position: absolute;
    width: 18px; height: 18px;
    left: 2px; top: 2px;
    background: var(--text-tertiary);
    border-radius: 50%;
    transition: all var(--transition-fast);
}
.switch input:checked + .switch-track { background: var(--accent, var(--red-bright)); border-color: transparent; }
.switch input:checked + .switch-track::before { transform: translateX(20px); background: #fff; }

/* --- Tickets : messagerie --- */
.tickets-layout {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: var(--space-md);
}

.ticket-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

.ticket-item {
    background: var(--bg-glass);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-md);
    padding: var(--space-md);
    cursor: pointer;
    transition: all var(--transition-fast);
}

.ticket-item:hover { border-color: var(--glass-border-hover); }
.ticket-item.active { border-color: var(--accent, var(--red-bright)); background: rgba(255, 26, 60, 0.08); }

.ticket-item .top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 4px;
}

.ticket-item .pole { font-size: 0.68rem; color: var(--text-tertiary); text-transform: uppercase; }
.ticket-item h5 { font-size: 0.85rem; font-weight: 600; }

.status {
    font-size: 0.62rem;
    font-weight: 700;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: var(--radius-full);
}
.status.ouvert { background: rgba(107, 142, 78, 0.15); color: var(--faction-civil); }
.status.attente { background: rgba(232, 132, 42, 0.15); color: #E8842A; }
.status.clos { background: var(--bg-glass-hover); color: var(--text-tertiary); }

.ticket-thread {
    background: var(--bg-glass);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-lg);
    display: flex;
    flex-direction: column;
    min-height: 420px;
}

.thread-header {
    padding: var(--space-md) var(--space-lg);
    border-bottom: 1px solid var(--glass-border);
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--space-sm);
}

.thread-header h4 { font-size: 1rem; font-weight: 700; }
.thread-header .pole { font-size: 0.75rem; color: var(--text-tertiary); text-transform: uppercase; }

.discord-sync {
    font-size: 0.72rem;
    color: var(--faction-civil);
    display: flex;
    align-items: center;
    gap: 6px;
}

.thread-messages {
    flex: 1;
    padding: var(--space-lg);
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
    max-height: 360px;
    overflow-y: auto;
}

.msg {
    max-width: 75%;
    padding: 10px 14px;
    border-radius: var(--radius-md);
    font-size: 0.85rem;
}

.msg .meta {
    font-size: 0.68rem;
    color: var(--text-tertiary);
    margin-bottom: 4px;
    display: flex;
    gap: 6px;
    align-items: center;
}

.msg.player {
    align-self: flex-end;
    background: linear-gradient(135deg, var(--accent, var(--red-primary)), var(--red-primary));
    color: #fff;
}
.msg.player .meta { color: rgba(255, 255, 255, 0.75); }
.msg.staff {
    align-self: flex-start;
    background: var(--bg-glass-hover);
    border: 1px solid var(--glass-border);
}

.thread-reply {
    border-top: 1px solid var(--glass-border);
    padding: var(--space-md) var(--space-lg);
    display: flex;
    gap: var(--space-sm);
}

.thread-reply textarea {
    flex: 1;
    background: var(--bg-glass-hover);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-md);
    padding: 10px 14px;
    color: var(--text-primary);
    font-family: var(--font-body);
    resize: none;
    min-height: 42px;
}

.thread-reply textarea:focus { outline: none; border-color: var(--accent, var(--red-bright)); }

.thread-actions {
    padding: var(--space-sm) var(--space-lg) var(--space-md);
    display: flex;
    justify-content: flex-end;
}

.thread-closed {
    padding: var(--space-md) var(--space-lg);
    text-align: center;
    color: var(--text-tertiary);
    font-size: 0.85rem;
    border-top: 1px solid var(--glass-border);
}

/* --- Points Stories : récompenses --- */
.rewards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: var(--space-sm);
    margin-top: var(--space-sm);
}

.reward-card {
    background: var(--bg-glass-hover);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-md);
    padding: var(--space-md);
    text-align: center;
}

.reward-name { font-size: 0.85rem; font-weight: 600; margin-bottom: 4px; }
.reward-cost { font-family: var(--font-display); font-size: 1.1rem; color: var(--accent, var(--red-bright)); margin-bottom: var(--space-sm); }

@media (max-width: 767px) {
    .account-overview-grid { grid-template-columns: 1fr; }
    .account-header { flex-direction: column; text-align: center; }
    .account-order-row { grid-template-columns: 1fr; gap: 2px; }
    .app-timeline-step span { display: none; }
    .account-kpi-row { grid-template-columns: 1fr 1fr; }
    .char-grid { grid-template-columns: 1fr; }
    .stat-grid { grid-template-columns: 1fr 1fr 1fr; }
    .tickets-layout { grid-template-columns: 1fr; }
    .journal-editor { grid-template-columns: 1fr; }
}
