/* ════ Espace client — additions au design system MS-Info existant ════
   Ce fichier n'ajoute que ce qui manque à css/style.css (copié tel quel).
   Toutes les couleurs/espacements réutilisent les variables déjà définies. */

:root {
    --ok:      #2f9e5b;
    --ok-l:    #4dbd77;
    --ok-dim:  rgba(47,158,91,.1);
    --ok-brd:  rgba(47,158,91,.25);
}

/* ════ MISE EN PAGE PLEINE HAUTEUR ════
   Sur les pages courtes (ex: Mon compte), le footer suivait directement le contenu,
   laissant un grand vide en bas des écrans hauts. On pousse le footer en bas de la
   fenêtre au lieu de le laisser flotter juste sous un contenu court. */
body { min-height:100vh; display:flex; flex-direction:column }
.page-wrap { flex:1 0 auto }
footer { flex-shrink:0 }

/* ════ NAV — resserrement sur largeurs moyennes ════
   Le nav client compte jusqu'à 5 liens (contre 4-5 sur le site vitrine) : on resserre
   légèrement l'espacement avant que le hamburger ne prenne le relais à 640px (inchangé),
   sans jamais masquer les liens ni le bouton de déconnexion. */
@media(max-width:1150px) and (min-width:641px) {
    nav { padding:0 1.25rem }
    .nav-links { gap:1.1rem }
    .nav-links a { font-size:.78rem }
    .nav-brand-name { display:none }
}

/* ════ AUTH ════ */
.auth-shell {
    min-height:calc(100vh - var(--nav-h));
    display:flex; align-items:center; justify-content:center;
    padding:3rem 1.25rem;
}
.auth-card {
    width:100%; max-width:420px;
    background:var(--card); border:1px solid var(--brd2);
    border-radius:var(--radius-lg); padding:2.2rem;
}
.auth-card h1 {
    font-family:'Outfit',sans-serif; font-size:1.35rem; font-weight:800;
    letter-spacing:-.03em; margin-bottom:.35rem;
}
.auth-card > p.auth-sub { color:var(--t2); font-size:.84rem; margin-bottom:1.6rem; line-height:1.7 }
.auth-links { margin-top:1.4rem; display:flex; flex-direction:column; gap:.5rem; text-align:center }
.auth-links a { color:var(--t2); font-size:.8rem; text-decoration:none; transition:color .2s }
.auth-links a:hover { color:var(--red-l) }
.auth-check-icon {
    width:52px; height:52px; border-radius:14px; background:var(--red-dim2);
    border:1px solid var(--red-brd); display:flex; align-items:center; justify-content:center;
    margin-bottom:1.1rem; color:var(--red-l);
}
.auth-check-icon svg { width:22px; height:22px }

/* ════ FORM ERRORS / CONSENT ════ */
.field-error { color:var(--red-l); font-size:.74rem; margin-top:.35rem; line-height:1.5 }
.form-group.has-error input,
.form-group.has-error textarea,
.form-group.has-error select { border-color:var(--red-brd); background:rgba(200,41,58,.05) }
.consent-row {
    display:flex; align-items:flex-start; gap:.6rem; margin:1.1rem 0 1.4rem;
    font-size:.78rem; color:var(--t2); line-height:1.6;
}
.consent-row input[type="checkbox"] { margin-top:.2rem; accent-color:var(--red) }
.consent-row a { color:var(--red-l); text-decoration:none }
.consent-row a:hover { text-decoration:underline }

/* ════ FLASH MESSAGES ════ */
.flash-stack { max-width:1080px; margin:1.2rem auto 0; padding:0 clamp(1.5rem,5vw,4rem); display:flex; flex-direction:column; gap:.6rem }
.flash {
    padding:.75rem 1.1rem; border-radius:10px; font-size:.85rem;
    border:1px solid var(--brd2); background:var(--card);
}
.flash-success { border-color:var(--ok-brd); background:var(--ok-dim); color:#bfe9cf }
.flash-error { border-color:var(--red-brd); background:var(--red-dim); color:#f3c3c9 }
.flash-info { color:var(--t1) }

/* ════ DASHBOARD ════ */
.dash-stats { margin-bottom:1.5rem }
.stat-card { text-decoration:none; color:var(--white); display:block }
.stat-value { font-family:'Outfit',sans-serif; font-size:2.2rem; font-weight:800; letter-spacing:-.03em; color:var(--white) }
.stat-label { font-size:.78rem; color:var(--t2); margin-top:.3rem }
.dash-actions { display:flex; gap:.9rem; margin-bottom:2.5rem; flex-wrap:wrap }
.dash-columns { display:grid; grid-template-columns:1fr 1fr; gap:2rem }
.dash-block-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:.9rem }
.dash-block-title { font-family:'Outfit',sans-serif; font-size:1rem; font-weight:700; letter-spacing:-.01em }
.dash-block-link { font-size:.78rem; color:var(--red-l); text-decoration:none }
.dash-block-link:hover { text-decoration:underline }
.dash-empty { color:var(--t3); font-size:.83rem }
.dash-list { display:flex; flex-direction:column; gap:.6rem }
.dash-list-item {
    display:flex; align-items:center; justify-content:space-between; gap:1rem;
    background:var(--card); border:1px solid var(--brd2); border-radius:11px;
    padding:.85rem 1.1rem; text-decoration:none; color:var(--white); transition:all .25s;
}
a.dash-list-item:hover { border-color:var(--red-brd); transform:translateX(3px) }
.dash-list-title { font-size:.87rem; font-weight:600 }
.dash-list-sub { font-size:.72rem; color:var(--t3); margin-top:.15rem; font-family:'JetBrains Mono',monospace }

/* ════ STATUS BADGES (discrets, palette existante) ════ */
.badge.status-nouveau { background:rgba(132,138,170,.12); color:var(--t1); border-color:var(--brd2) }
.badge.status-en_cours { background:var(--red-dim2); color:var(--red-l); border-color:var(--red-brd) }
.badge.status-attente_client,
.badge.status-attente_msinfo { background:rgba(200,160,41,.1); color:#d8ab4a; border-color:rgba(200,160,41,.25) }
.badge.status-resolu,
.badge.status-ferme { background:var(--ok-dim); color:var(--ok-l); border-color:var(--ok-brd) }

/* ════ ADMIN — FICHE CLIENT ════ */
.admin-client-forms { display:grid; grid-template-columns:1fr 1fr; gap:1.5rem }
.admin-client-forms .card { padding:1.6rem 1.8rem }
.form-block-title { font-family:'Outfit',sans-serif; font-size:.92rem; font-weight:700; margin-bottom:1rem }
@media(max-width:900px) { .admin-client-forms { grid-template-columns:1fr } }

/* ════ ACCOUNT ════ */
.account-shell { padding:3rem clamp(1.5rem,5vw,4rem); max-width:640px; margin:0 auto }
.account-tabs { display:flex; gap:1.4rem; margin-bottom:2rem; border-bottom:1px solid var(--brd); padding-bottom:.2rem }
.account-tabs a { color:var(--t2); text-decoration:none; font-size:.84rem; padding-bottom:.8rem; border-bottom:2px solid transparent; transition:color .2s }
.account-tabs a:hover { color:var(--white) }
.account-tabs a.active { color:var(--white); border-color:var(--red) }
.danger-zone { margin-top:2.5rem; padding-top:1.5rem; border-top:1px solid var(--brd) }
.danger-zone h3 { font-family:'Outfit',sans-serif; font-size:.95rem; color:var(--red-l); margin-bottom:.4rem }
.danger-zone p { font-size:.82rem; color:var(--t2); margin-bottom:1rem; line-height:1.7 }

/* ════ LIST HEADER (matériel, tickets…) ════ */
.list-header { display:flex; align-items:flex-start; justify-content:space-between; gap:1.5rem; margin-bottom:2rem; flex-wrap:wrap }
.empty-state {
    text-align:center; padding:3.5rem 1.5rem; background:var(--card); border:1px dashed var(--brd2);
    border-radius:var(--radius-lg); color:var(--t2);
}
.empty-state p { margin-bottom:1.2rem; font-size:.88rem }

/* ════ EQUIPMENT ════ */
.equipment-card { display:block; text-decoration:none }
.equipment-card-label { font-family:'Outfit',sans-serif; font-weight:700; font-size:.98rem; margin-top:.8rem }
.equipment-card-sub { font-size:.78rem; color:var(--t2); margin-top:.25rem }
.equipment-detail-card { padding:1.8rem 2rem }
.detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:1.2rem 2rem }
.detail-grid dt { font-family:'JetBrains Mono',monospace; font-size:.65rem; color:var(--t3); text-transform:uppercase; letter-spacing:.06em; margin-bottom:.3rem }
.detail-grid dd { font-size:.9rem; color:var(--white) }
.detail-notes { margin-top:1.5rem; padding-top:1.5rem; border-top:1px solid var(--brd) }
.detail-notes dt { font-family:'JetBrains Mono',monospace; font-size:.65rem; color:var(--t3); text-transform:uppercase; letter-spacing:.06em; margin-bottom:.4rem }
.detail-notes p { font-size:.87rem; color:var(--t1); line-height:1.75; white-space:pre-wrap }

/* ════ FORM HINTS ════ */
.field-hint { font-size:.73rem; color:var(--t3); margin-top:.4rem; line-height:1.5 }

/* ════ TICKETS ════ */
.ticket-list-item .badge { flex-shrink:0 }
.ticket-meta { display:flex; gap:.5rem; flex-wrap:wrap; align-items:center }
.ticket-meta a.badge { text-decoration:none }

.thread { display:flex; flex-direction:column; gap:1rem; margin:1.8rem 0 }
.thread-msg {
    background:var(--card); border:1px solid var(--brd2); border-left:3px solid var(--brd2);
    border-radius:11px; padding:1.1rem 1.3rem;
}
.thread-msg-admin { border-left-color:var(--red); background:var(--red-dim) }
.thread-msg-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:.6rem }
.thread-author {
    font-family:'JetBrains Mono',monospace; font-size:.66rem; letter-spacing:.08em; text-transform:uppercase;
    color:var(--t2);
}
.thread-msg-admin .thread-author { color:var(--red-l) }
.thread-date { font-size:.72rem; color:var(--t3) }
.thread-content { font-size:.88rem; color:var(--t1); line-height:1.75; white-space:pre-wrap }
.thread-attachments { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.9rem }
.thread-attachment {
    display:inline-flex; align-items:center; gap:.4rem; padding:.4rem .8rem;
    background:rgba(7,8,15,.4); border:1px solid var(--brd2); border-radius:8px;
    font-size:.76rem; color:var(--t1); text-decoration:none; transition:all .2s;
}
.thread-attachment:hover { border-color:var(--red-brd); color:var(--red-l) }
.thread-attachment svg { width:14px; height:14px; flex-shrink:0 }
.reply-form { padding:1.6rem 1.8rem }

/* ════ ADMIN — FILTRES & TABLEAUX ════ */
.filter-bar { display:flex; gap:.7rem; flex-wrap:wrap; margin:1.6rem 0 2rem }
.filter-bar input[type="search"] {
    flex:1; min-width:200px; padding:.7rem 1rem; background:rgba(7,8,15,.6);
    border:1px solid var(--brd2); border-radius:10px; color:var(--white); font-family:'Inter',sans-serif; font-size:.86rem;
}
.filter-bar select {
    padding:.7rem 1rem; background:rgba(7,8,15,.6); border:1px solid var(--brd2);
    border-radius:10px; color:var(--white); font-family:'Inter',sans-serif; font-size:.86rem;
}
.filter-bar-wide select { min-width:150px }

.table-wrap { overflow-x:auto; border:1px solid var(--brd2); border-radius:var(--radius) }
.table-admin { width:100%; border-collapse:collapse; font-size:.85rem; white-space:nowrap }
.table-admin th {
    text-align:left; padding:.85rem 1.1rem; font-family:'JetBrains Mono',monospace; font-size:.65rem;
    letter-spacing:.06em; text-transform:uppercase; color:var(--t3); background:var(--bg2); border-bottom:1px solid var(--brd);
}
.table-admin td { padding:.9rem 1.1rem; border-bottom:1px solid var(--brd); color:var(--t1) }
.table-admin tbody tr:last-child td { border-bottom:none }
.table-row-link { cursor:pointer; transition:background .2s }
.table-row-link:hover { background:var(--card-h) }
.table-admin .mono { font-family:'JetBrains Mono',monospace; font-size:.78rem; color:var(--t2) }

.admin-controls { display:flex; gap:1.6rem; flex-wrap:wrap; padding:1.2rem 1.5rem; margin-bottom:1.8rem }
.admin-control-row { display:flex; align-items:center; gap:.6rem }
.admin-control-row label {
    font-family:'JetBrains Mono',monospace; font-size:.65rem; color:var(--t3);
    text-transform:uppercase; letter-spacing:.06em; white-space:nowrap;
}
.admin-control-row select {
    padding:.5rem .8rem; background:rgba(7,8,15,.6); border:1px solid var(--brd2);
    border-radius:8px; color:var(--white); font-family:'Inter',sans-serif; font-size:.82rem;
}

/* ════ INTERVENTIONS (client) ════ */
.intervention-stack { display:flex; flex-direction:column; gap:1rem; margin-top:1.5rem }
.intervention-card-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:.7rem }
.intervention-problem { font-size:.9rem; color:var(--white); font-weight:600; line-height:1.6 }
.intervention-observations { font-size:.84rem; color:var(--t2); margin-top:1rem; padding-top:1rem; border-top:1px solid var(--brd); line-height:1.7 }
.intervention-doc-link { margin-top:1rem }

/* ════ RESPONSIVE ════ */
@media(max-width:640px) {
    .auth-card { padding:1.6rem }
    .dash-columns { grid-template-columns:1fr }
    .dash-actions { flex-direction:column }
    .dash-actions .btn { width:100%; justify-content:center }
    .list-header { flex-direction:column }
    .detail-grid { grid-template-columns:1fr }
    .filter-bar { flex-direction:column }
    .filter-bar input, .filter-bar select { width:100% }
    .admin-controls { flex-direction:column; gap:1rem }
    .admin-control-row { justify-content:space-between }
    .admin-control-row select { flex:1 }
}
