/* Interface de l’espace applicatif (connexion, inscription, compte, back-office).
   Extrait du <style> inline de templates/layout.html.twig : servi par AssetMapper,
   ce fichier est mis en cache de façon immuable au lieu d’être renvoyé dans le HTML
   de chacune des 15 pages concernées.
   Palette alignée sur assets/styles.css (thème sombre du site vitrine). */

:root {
    --bg:#05090C; --bg-elev:#0B1117; --bg-card:#0C141B;
    --ink:#E9F2F5; --muted:#7E929C;
    --line:rgba(255,255,255,0.08); --line-strong:rgba(255,255,255,0.16);
    --acc:#A98BFF; --acc-rgb:169,139,255; --ink-on-acc:#1E1240;
    --grad:linear-gradient(115deg,#6CB8FF 0%,#A98BFF 50%,#E892FF 100%);
    --glow:0 0 40px rgba(169,139,255,0.28);
    --ok:#5ee9b5; --danger:#ff8a8a; --warn:#ffcf7a;
    --radius:18px; --radius-sm:11px;
}
* { box-sizing:border-box; }
body { margin:0; font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
    color:var(--ink); background:var(--bg); -webkit-font-smoothing:antialiased; }
a { color:var(--acc); text-decoration:none; }
a:hover { text-decoration:underline; }
.app-nav { display:flex; align-items:center; justify-content:space-between; gap:1rem;
    padding:1rem 1.5rem; background:rgba(5,9,12,0.72); backdrop-filter:blur(20px);
    border-bottom:1px solid var(--line); position:sticky; top:0; z-index:100; }
.app-nav .brand { font-weight:700; font-size:1.15rem; color:var(--ink); letter-spacing:.02em; }
.app-nav .brand span { background:var(--grad); -webkit-background-clip:text;
    background-clip:text; color:transparent; }
.app-nav nav { display:flex; gap:1.25rem; align-items:center; }
.app-nav nav a { color:var(--muted); font-size:.95rem; font-weight:500; }
.app-nav nav a:hover { color:var(--acc); text-decoration:none; }
.app-main { max-width:1040px; margin:2.5rem auto; padding:0 1.25rem; }
.card { background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius);
    padding:2rem; max-width:460px; margin:0 auto 1.5rem;
    box-shadow:0 1px 3px rgba(0,0,0,.3); }
.card.wide { max-width:100%; }
h1 { margin-top:0; font-size:1.55rem; letter-spacing:-.01em; }
h2 { font-size:1.15rem; }
label { display:block; margin:1rem 0 .35rem; font-weight:600; font-size:.9rem; color:var(--ink); }
input[type=text], input[type=email], input[type=password], input[type=date],
input[type=number], input[type=tel], select {
    width:100%; padding:.7rem .8rem; background:var(--bg-elev); color:var(--ink);
    border:1px solid var(--line-strong); border-radius:var(--radius-sm); font-size:1rem; }
input::placeholder { color:var(--muted); }
input:focus, select:focus { outline:none; border-color:var(--acc);
    box-shadow:0 0 0 3px rgba(var(--acc-rgb),0.18); }
.form-help, small { color:var(--muted); font-size:.85rem; }
.btn, button[type=submit] { display:inline-block; margin-top:1.4rem; padding:.72rem 1.3rem;
    background:var(--grad); color:var(--ink-on-acc); border:0; border-radius:var(--radius-sm);
    font-size:1rem; font-weight:700; cursor:pointer; box-shadow:var(--glow); }
.btn:hover, button[type=submit]:hover { filter:brightness(1.06); text-decoration:none; transform:translateY(-1px); }
.btn--ghost { background:rgba(255,255,255,0.03); color:var(--ink);
    border:1px solid var(--line-strong); box-shadow:none; }
.btn--ghost:hover { border-color:var(--acc); color:var(--acc); }
.btn--sm { margin-top:0; padding:.45rem .8rem; font-size:.85rem; }
.muted { color:var(--muted); font-size:.92rem; }
.flash { padding:.8rem 1rem; border-radius:var(--radius-sm); margin-bottom:1.25rem; font-size:.95rem; border:1px solid; }
.flash-success { background:rgba(94,233,181,0.08); color:var(--ok); border-color:rgba(94,233,181,0.3); }
.flash-error { background:rgba(255,138,138,0.08); color:var(--danger); border-color:rgba(255,138,138,0.3); }
ul, .form-errors { color:var(--danger); font-size:.86rem; }
table { width:100%; border-collapse:collapse; margin-top:1.25rem; font-size:.92rem; }
th, td { text-align:left; padding:.65rem .7rem; border-bottom:1px solid var(--line); vertical-align:middle; }
th { color:var(--muted); font-weight:600; font-size:.82rem; text-transform:uppercase; letter-spacing:.04em; }
tr:hover td { background:rgba(255,255,255,0.02); }
code { background:var(--bg-elev); padding:.1rem .4rem; border-radius:6px; color:var(--acc); font-size:.9em; }
.checkbox-row { display:flex; align-items:center; gap:.5rem; }
.checkbox-row label { margin:0; font-weight:400; color:var(--muted); }
.checkbox-row input { width:auto; }
/* Badges de statut */
.badge { display:inline-block; padding:.25rem .6rem; border-radius:999px; font-size:.78rem;
    font-weight:600; border:1px solid var(--line-strong); white-space:nowrap; }
.badge--received { color:#9fd3ff; border-color:rgba(108,184,255,.4); background:rgba(108,184,255,.08); }
.badge--emailed, .badge--processing { color:var(--warn); border-color:rgba(255,207,122,.4); background:rgba(255,207,122,.08); }
.badge--quoted { color:var(--acc); border-color:rgba(var(--acc-rgb),.4); background:rgba(var(--acc-rgb),.1); }
.badge--won, .badge--accepted { color:var(--ok); border-color:rgba(94,233,181,.4); background:rgba(94,233,181,.08); }
.badge--lost, .badge--email_failed, .badge--refused { color:var(--danger); border-color:rgba(255,138,138,.4); background:rgba(255,138,138,.08); }
.badge--sent { color:#9fd3ff; border-color:rgba(108,184,255,.4); background:rgba(108,184,255,.08); }
.badge--expired { color:var(--muted); border-color:var(--line-strong); background:rgba(255,255,255,.03); }
.inline-form { display:flex; gap:.4rem; align-items:center; }
.inline-form select { width:auto; padding:.4rem .6rem; font-size:.85rem; }
.table-scroll { overflow-x:auto; }
/* ===== Messagerie ===== */
textarea { width:100%; min-height:96px; resize:vertical; padding:.7rem .8rem;
    background:var(--bg-elev); color:var(--ink); border:1px solid var(--line-strong);
    border-radius:var(--radius-sm); font:inherit; }
textarea:focus { outline:none; border-color:var(--acc); box-shadow:0 0 0 3px rgba(var(--acc-rgb),.18); }
.thread { display:flex; flex-direction:column; gap:.85rem; margin:1.25rem 0; }
.thread__empty { color:var(--muted); padding:1rem 0; }
.msg { max-width:80%; padding:.7rem .95rem; border-radius:14px; }
.msg__meta { font-size:.74rem; color:var(--muted); margin-bottom:.3rem; }
.msg__body { white-space:pre-wrap; word-wrap:break-word; line-height:1.5; }
.msg--admin { align-self:flex-start; background:var(--bg-elev); border:1px solid var(--line); border-bottom-left-radius:4px; }
.msg--client { align-self:flex-end; background:rgba(var(--acc-rgb),.1); border:1px solid rgba(var(--acc-rgb),.3); border-bottom-right-radius:4px; }
.unread-dot { display:inline-block; min-width:20px; height:20px; padding:0 6px; border-radius:10px;
    background:var(--grad); color:var(--ink-on-acc); font-size:.72rem; font-weight:700;
    text-align:center; line-height:20px; box-shadow:var(--glow); }
.dl { display:grid; grid-template-columns:180px 1fr; gap:.5rem 1rem; margin:1rem 0; }
.dl dt { color:var(--muted); font-size:.88rem; }
.dl dd { margin:0; }
/* ===== Dashboard client : sidebar + contenu ===== */
.dash { display:grid; grid-template-columns:240px 1fr; gap:1.5rem; align-items:start; }
.dash__side { position:sticky; top:88px; }
.side-nav { position:relative; display:flex; flex-direction:column; gap:.15rem;
    background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius); padding:.55rem; }
.side-nav__indicator { position:absolute; left:.55rem; right:.55rem; top:0; height:0;
    background:rgba(var(--acc-rgb),.12); border:1px solid rgba(var(--acc-rgb),.32);
    border-radius:var(--radius-sm); pointer-events:none;
    transition:transform .35s cubic-bezier(.16,1,.3,1), height .35s cubic-bezier(.16,1,.3,1); }
.side-nav__link { position:relative; z-index:1; display:flex; align-items:center; gap:.65rem;
    padding:.72rem .8rem; border-radius:var(--radius-sm); color:var(--muted);
    font-weight:500; font-size:.95rem; transition:color .25s; }
.side-nav__link:hover { color:var(--ink); text-decoration:none; }
.side-nav__link.is-active { color:var(--acc); }
.side-nav__link svg { width:18px; height:18px; flex:none; }
.side-nav__link--muted { margin-top:.35rem; border-top:1px solid var(--line); padding-top:.85rem; }
.side-nav__link--muted:hover { color:var(--danger); }
.dash__content { animation:dashSlide .42s cubic-bezier(.16,1,.3,1); min-width:0; }
@keyframes dashSlide { from { opacity:0; transform:translateX(22px); } to { opacity:1; transform:none; } }
@media (max-width:760px) {
    .dash { grid-template-columns:1fr; gap:1rem; }
    .dash__side { position:static; }
    .side-nav { flex-direction:row; overflow-x:auto; }
    .side-nav__indicator { display:none; }
    .side-nav__link--muted { margin-top:0; border-top:none; padding-top:.72rem; white-space:nowrap; }
}
@media (prefers-reduced-motion: reduce) {
    .dash__content { animation:none; }
    .side-nav__indicator { transition:none; }
}
    
