:root{
    --ink: #3b2a6f;          /* texte principal (mauve foncé) */
    --ink-2: #51468e;        /* titres secondaires */
    --muted: #6f6b88;        /* texte atténué */
    --primary: #6b4fd3;      /* mauve */
    --primary-600: #5a3fd6;  /* hover */
    --primary-100: #f2efff;  /* pastel clair */

    --surface: #ffffff;
    --surface-2: #fbf8ff;    /* blanc lavande */
    --border: #e7e1ff;       /* lavande pâle */
    --bg: #f6f7fb;           /* fond app clair */

    --radius-lg: 16px;
    --radius-md: 12px;
    --radius-sm: 10px;

    --shadow: 0 10px 26px rgba(107,79,211,.08);
}

/* ===== Base typo & couleurs ===== */
html{ font-size: 18px; }
body{
    font-family:"Montserrat",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans";
    color: var(--ink);
    background: var(--bg);
    line-height: 1.55;
}
h1,h2,h3,h4,h5,h6{ color: var(--ink-2); }
a{ color: var(--primary); }
a:hover{ color: var(--primary-600); }

/* ===== Fond campus===== */
.app-body.bg-landing{
    background: url("../images/campus-dprShx4.png") center/cover fixed no-repeat;
}
.bg-overlay{ display:none; }
.app-body.bg-landing .bg-overlay{
    display:block;
    position:fixed; inset:0;
    background: radial-gradient(ellipse at 20% 10%, rgba(255,255,255,.05), rgba(0,0,0,.30)),
    linear-gradient(rgba(10,10,15,.40), rgba(10,10,15,.32));
    z-index:0;
}
.topbar, .page-wrap, .footer{ position:relative; z-index:1; }

/* ===== Navbar ===== */
.topbar{
    background: var(--surface) !important;
    border-bottom: 1px solid var(--border) !important;
    box-shadow: 0 6px 22px rgba(107,79,211,.06);
}
.navbar-brand{
    color: var(--ink);
    margin-right: 1rem;
}
.topbar .navbar-nav{
    flex-wrap: nowrap;
    gap: 1rem;
}
.navbar .nav-link{
    color:#5a5870;
    font-size: 1.02rem;
    font-weight: 500;
    white-space: nowrap;
    padding: .5rem .75rem;
    line-height: 1.1;
}
.navbar .nav-link:hover{ color: var(--primary-600); }

/* Responsive : compacter un peu avant burger */
@media (max-width: 1400px){
    .topbar .navbar-nav{ gap: .75rem; }
    .navbar .nav-link{ font-size: .98rem; padding: .45rem .6rem; }
}

/* ===== Conteneur principal ===== */
.page-wrap{ padding-top:.75rem; }
@media (min-width:1200px){
    .page-wrap.container-xxl{ max-width: 1180px; }
}

/* ===== Cartes génériques ===== */
.card{
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow);
}
.card > .card-header{
    background: var(--surface-2);
    border-bottom: 1px solid var(--border);
    border-top-left-radius: var(--radius-lg);
    border-top-right-radius: var(--radius-lg);
}

/* ===== Boutons ===== */
.btn{ border-radius:10px; font-weight:600; }
.btn-primary{ background: var(--primary); border-color: var(--primary); }
.btn-primary:hover{ background: var(--primary-600); border-color: var(--primary-600); }
.btn-outline-primary{ color: var(--primary); border-color: var(--primary); background:#fff; }
.btn-outline-primary:hover{ background: var(--primary); color:#fff; }

/* ===== Inputs (général) ===== */
.form-control,.form-select{
    border:1px solid var(--border);
    border-radius:10px;
    background:#fff;
}
.form-control:focus,.form-select:focus{
    border-color: var(--primary-100);
    box-shadow: 0 0 0 .25rem rgba(107,79,211,.15);
}

/* ===== Alerts (flash) ===== */
.alert{
    border-radius: var(--radius-md);
    border-width: 1px;
}
.alert-primary{ background: var(--primary-100); color: var(--ink); border-color: var(--border); }

/* ===== Modals ===== */
.modal-content{
    border-radius: var(--radius-lg);
    border: 1px solid var(--border);
    box-shadow: var(--shadow);
}

/* ===================== ACCUEIL ===================== */
.hero-landing{
    min-height: 48vh;
    display: flex;
    align-items: center;
    padding: 2.5rem 0 2rem;
    margin-top: 1rem;
    margin-bottom: 0;
}
.hero-inner{
    max-width: 900px;
    margin: 0 auto;
    padding: 2rem 2.5rem;
    background: rgba(255,255,255,0.92);
    border: 1px solid var(--border);
    border-radius: 14px;
    box-shadow: 0 12px 32px rgba(0,0,0,.12);
    text-align: center;
    backdrop-filter: blur(2px);
}
.hero-title{
    font-size: clamp(2rem, 2.2vw + 1rem, 3rem);
    color: var(--ink-2);
}
.hero-lead{
    color: #5b5780;
    font-size: 1.06rem;
}
.hero-landing .btn-primary{
    box-shadow: 0 4px 15px rgba(107,79,211,0.35);
}

/* FEATURES */
.features-section{
    background: #fff;
    border-top: 1px solid var(--border);
    border-radius: 18px 18px 0 0;
    padding: 2.5rem 0 3rem;
    margin-top: -18px;
    box-shadow: 0 -6px 20px rgba(0,0,0,.06);
}
.feature-card{
    border-radius: 12px;
    transition: transform .2s ease, box-shadow .2s ease;
    border: 1px solid var(--border);
    background: var(--surface);
}
.feature-card:hover{
    transform: translateY(-6px);
    box-shadow: 0 10px 30px rgba(107,79,211,.10);
}
.feature-card .card-title{ color: var(--ink-2); font-size: 1.05rem; }
.feature-card .card-text{ color: var(--muted); }

/* ===================== FOOTER ===================== */
.footer{
    font-size: 0.95rem;
    background: #fff;
    border-top: 1px solid var(--border);
}
.footer h5,
.footer h4,
.footer h6{
    color: var(--ink-2);
    font-size: 1.05rem;
    font-weight: 600;
    margin-bottom: 1rem;
    text-transform: uppercase;
}
.footer p{
    color: var(--muted);
    font-size: 0.95rem;
    margin-bottom: 0.5rem;
    line-height: 1.6;
}
.footer .row > div:first-child p{
    color: var(--primary) !important;
    font-size: 0.98rem;
    line-height: 1.6;
    margin: 0;
}
.footer a{
    color: var(--primary);
    text-decoration: none;
    font-size: 0.95rem;
}
.footer a:hover{
    color: var(--primary-600);
    text-decoration: underline;
}
.footer small{
    color: var(--muted);
    font-size: 0.85rem;
}

/* ===== Tables pastel  ===== */
.table{
    --bs-table-bg: transparent;
    --bs-table-striped-bg: #f6f3ff;
    --bs-table-hover-bg: #efe9ff;
    border-color: var(--border);
}
.table thead th{
    border-bottom:2px solid var(--border);
    color:var(--ink-2);
}

/* ================================================== */
/* ======= Améliorations ciblées du formulaire ====== */
/* ================================================== */

/* Carte contenant le formulaire d’édition */
.form-card{
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    background: var(--surface);
    box-shadow: var(--shadow);
}

/* Titres dans la carte du formulaire */
.form-card h1,
.form-card h2,
.form-card h3,
.form-card .h3{
    color: var(--ink-2);
}

/* Champs dans la carte du formulaire */
.form-card .form-control,
.form-card .form-select,
.form-card .form-check-input{
    border:1px solid var(--border);
    border-radius: var(--radius-md);
    background:#fff;
}

.form-card .form-control:focus,
.form-card .form-select:focus,
.form-card .form-check-input:focus{
    border-color: var(--primary-600);
    box-shadow: 0 0 0 .25rem rgba(107,79,211,.15);
    outline: none;
}

.form-card .form-label{ color: var(--ink-2); font-weight:600; }
.form-card .form-text{ color: var(--muted); }

/* Input-group dans la carte (ex: suffixe "min") */
.form-card .input-group-text{
    border-color: var(--border);
    background: var(--surface-2);
    color: var(--ink-2);
    border-radius: var(--radius-md);
}

/* Espacements harmonisés entre champs rendus par form_widget */
.form-card .form-group,
.form-card .mb-3{ margin-bottom: 1rem; }

/* Boutons de la carte */
.form-card .btn-primary{
    background: var(--primary);
    border-color: var(--primary);
}
.form-card .btn-primary:hover{
    background: var(--primary-600);
    border-color: var(--primary-600);
}
.form-card .btn-outline-secondary{
    background:#fff;
}

/* Champs invalides (validation HTML5/Symfony) */
.form-card .is-invalid,
.form-card .form-control.is-invalid,
.form-card .form-select.is-invalid{
    border-color: #dc3545;
    box-shadow: 0 0 0 .25rem rgba(220,53,69,.15);
}
.form-card .invalid-feedback{ display:block; }

/* Petits écrans : éviter les débordements à l’intérieur des cartes */
@media (max-width: 576px){
    .form-card .d-flex{ flex-wrap: wrap; }
}

/* ================================================== */
/* ===== Hovers génériques pour toutes les pages ==== */
/* ================================================== */

/* Cartes (tous les .card) */
.card{
    transition: box-shadow .18s ease, transform .08s ease;
}
.card:hover{
    box-shadow: 0 14px 36px rgba(107,79,211,.12);
    transform: translateY(-2px);
}

/* Boutons */
.btn{
    transition: transform .08s ease, box-shadow .15s ease, background-color .15s ease, border-color .15s ease;
}
.btn:hover{ transform: translateY(-1px); }
.btn:active{ transform: translateY(0); }

/* Inputs & selects */
.form-control,
.form-select{
    transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.form-control:hover,
.form-select:hover{
    border-color: var(--primary);
}
.form-control:focus,
.form-select:focus{
    border-color: var(--primary-600);
    box-shadow: 0 0 0 .25rem rgba(107,79,211,.15);
}

/* Images dans une card (ex: photo de profil, avatar) */
.card img{
    transition: transform .18s ease, box-shadow .18s ease;
}
.card img:hover{
    transform: scale(1.02);
    box-shadow: 0 12px 28px rgba(0,0,0,.12);
}

