@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Sans:wght@300;400;500;600;700&display=swap');

:root {
  --red:#C8102E; --red-dark:#9B0D22; --red-glow:rgba(200,16,46,0.12);
  --black:#080808; --dark:#111111; --dark2:#181818; --dark3:#222222;
  --border:rgba(255,255,255,0.07); --border-hover:rgba(255,255,255,0.14);
  --border-accent:rgba(200,16,46,0.35);
  --white:#FFFFFF; --grey:#777; --grey-light:#AAA;
  --success:#22C55E; --warning:#F59E0B; --error:#EF4444; --info:#60A5FA; --purple:#A78BFA;
  --admin-color:#F59E0B;
  --radius:8px; --radius-lg:14px;
  --t:all 0.17s ease;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'DM Sans',sans-serif;background:var(--black);color:var(--white);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased;}
code{background:var(--dark3);padding:.1em .4em;border-radius:4px;font-size:.82em;color:var(--info);}

/* HEADER */
.app-header{background:var(--dark);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;}
.header-content{max-width:1400px;margin:0 auto;padding:.8rem 1.5rem;display:flex;align-items:center;gap:1rem;}
.brand{display:flex;align-items:center;gap:.7rem;flex-shrink:0;}
.logo{height:34px;width:auto;}
.brand-text h1{font-family:'Bebas Neue',sans-serif;font-size:1.3rem;letter-spacing:3px;line-height:1;}
.brand-text p{font-size:.6rem;color:var(--grey);letter-spacing:1.5px;text-transform:uppercase;}
.main-nav{display:flex;gap:.15rem;flex:1;flex-wrap:wrap;}
.nav-btn{padding:.42rem .8rem;border:none;background:transparent;color:var(--grey);border-radius:var(--radius);font-family:'DM Sans',sans-serif;font-weight:500;font-size:.8rem;cursor:pointer;transition:var(--t);white-space:nowrap;display:none;align-items:center;gap:.3rem;}
.nav-btn:hover{background:var(--dark3);color:var(--white);}
.nav-btn.active{background:var(--red);color:var(--white);}
.nav-btn-disabled{opacity:.45;cursor:not-allowed!important;position:relative;}
.nav-btn-disabled::after{content:'🔒';font-size:.6rem;margin-left:.2rem;}
.nav-badge{display:inline-flex;align-items:center;justify-content:center;background:var(--admin-color);color:#000;font-size:.58rem;font-weight:800;min-width:15px;height:15px;border-radius:8px;padding:0 3px;}
.nav-badge.hidden{display:none;}
.header-right{display:flex;align-items:center;gap:.75rem;margin-left:auto;flex-shrink:0;}
.user-chip{display:flex;align-items:center;gap:.5rem;background:var(--dark2);border:1px solid var(--border);border-radius:20px;padding:.3rem .75rem .3rem .3rem;font-size:.8rem;}
.user-chip.hidden{display:none;}
.chip-avatar{width:24px;height:24px;background:var(--red);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;flex-shrink:0;}
.chip-role{font-size:.68rem;padding:.1rem .45rem;border-radius:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;}
.chip-role.admin{background:rgba(245,158,11,.15);color:var(--admin-color);}
.chip-role.membre,.chip-role.technicien{background:rgba(255,255,255,.05);color:var(--grey-light);}
.logout-btn{padding:.42rem .9rem;border:1px solid var(--border);background:transparent;color:var(--grey);border-radius:var(--radius);font-family:'DM Sans',sans-serif;font-weight:500;font-size:.8rem;cursor:pointer;transition:var(--t);}
.logout-btn:hover{background:var(--error);border-color:var(--error);color:var(--white);}
.logout-btn.hidden{display:none;}

/* LAYOUT */
.app-main{max-width:1400px;margin:0 auto;padding:2rem 1.5rem;}
.section{display:none;animation:fadeIn .2s ease;}
.section.active{display:block;}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}

/* LOGIN */
#login-section{min-height:80vh;display:none;align-items:center;justify-content:center;}
#login-section.active{display:flex;}
.login-box{width:100%;max-width:400px;background:var(--dark);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2.5rem;}
.login-logo{text-align:center;margin-bottom:2rem;}
.login-logo img{height:48px;margin-bottom:1rem;}
.login-logo h2{font-family:'Bebas Neue',sans-serif;font-size:2.2rem;letter-spacing:4px;}
.login-logo p{color:var(--grey);font-size:.82rem;}
.login-error{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);color:var(--error);padding:.65rem .9rem;border-radius:var(--radius);font-size:.82rem;margin-bottom:1rem;}
.login-error.hidden{display:none;}

/* PAGE HEADER */
.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:1.5rem;gap:1rem;flex-wrap:wrap;}
.page-title{font-family:'Bebas Neue',sans-serif;font-size:2rem;letter-spacing:2px;line-height:1;}
.page-title .accent{color:var(--red);}
.page-sub{color:var(--grey);font-size:.83rem;margin-top:.3rem;}
.page-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-start;}
.role-badge{display:inline-flex;align-items:center;padding:.18rem .65rem;border-radius:20px;font-size:.7rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;vertical-align:middle;}
.role-badge.admin{background:rgba(245,158,11,.15);color:var(--admin-color);border:1px solid rgba(245,158,11,.3);}
.role-badge.membre,.role-badge.technicien{background:rgba(255,255,255,.05);color:var(--grey-light);border:1px solid var(--border);}

/* CARDS */
.card{background:var(--dark);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.75rem;margin-bottom:1.25rem;}
.card-header-sm{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;}
.card-header-sm h3{font-family:'Bebas Neue',sans-serif;font-size:1.05rem;letter-spacing:1.5px;}
.form-title{font-family:'Bebas Neue',sans-serif;font-size:1.4rem;letter-spacing:2px;margin-bottom:1.25rem;}

/* BUTTONS */
.btn{padding:.55rem 1.1rem;border:none;border-radius:var(--radius);font-family:'DM Sans',sans-serif;font-weight:600;font-size:.82rem;cursor:pointer;transition:var(--t);display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap;}
.btn-primary{background:var(--red);color:var(--white);}
.btn-primary:hover{background:var(--red-dark);transform:translateY(-1px);}
.btn-secondary{background:var(--dark3);color:var(--white);border:1px solid var(--border);}
.btn-secondary:hover{background:var(--dark2);}
.btn-outline{background:transparent;color:var(--grey-light);border:1px solid var(--border);}
.btn-outline:hover{border-color:var(--red);color:var(--white);}
.btn-success{background:var(--success);color:#000;font-weight:700;}
.btn-success:hover{background:#16a34a;}
.btn-danger{background:rgba(239,68,68,.15);color:var(--error);border:1px solid rgba(239,68,68,.3);}
.btn-danger:hover{background:var(--error);color:var(--white);}
.btn-sm{padding:.32rem .75rem;font-size:.76rem;}
.btn-full{width:100%;justify-content:center;}
.btn-icon{padding:.35rem .6rem;}

/* FORMS */
.form{margin-bottom:0;}
.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1rem;}
.form-group{display:flex;flex-direction:column;gap:.35rem;}
.form-group label{font-size:.75rem;font-weight:600;color:var(--grey-light);letter-spacing:.5px;text-transform:uppercase;}
.form-group input,.form-group select,.form-group textarea,.modal-input{padding:.62rem .88rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--dark2);color:var(--white);font-family:'DM Sans',sans-serif;font-size:.88rem;transition:var(--t);width:100%;}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus,.modal-input:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px var(--red-glow);}
.form-group select option{background:var(--dark2);}
.form-group textarea{min-height:90px;resize:vertical;}
.form-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.25rem;}

/* ALERTS */
.alerts-container{margin-bottom:1.5rem;}
.alert-card{display:flex;align-items:flex-start;gap:1rem;border-radius:var(--radius-lg);padding:1.1rem 1.4rem;margin-bottom:.75rem;}
.alert-card.warning{background:rgba(245,158,11,.07);border:1px solid rgba(245,158,11,.22);}
.alert-card.info{background:rgba(96,165,250,.07);border:1px solid rgba(96,165,250,.2);}
.alert-icon{font-size:1.3rem;flex-shrink:0;}
.alert-card strong{color:var(--admin-color);font-size:.88rem;display:block;}
.alert-card p{color:var(--grey-light);font-size:.8rem;margin-top:.15rem;}
.alert-card a{color:var(--red);text-decoration:none;font-weight:600;}
.alert-card a:hover{text-decoration:underline;}

/* STATS */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:1.5rem;}
.stat-card{background:var(--dark);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.35rem;display:flex;align-items:center;gap:1rem;transition:var(--t);}
.stat-card:hover{border-color:var(--border-accent);}
.stat-icon{font-size:1.3rem;width:2.8rem;height:2.8rem;display:flex;align-items:center;justify-content:center;background:var(--red-glow);border:1px solid var(--border-accent);border-radius:var(--radius);flex-shrink:0;}
.stat-content h3{font-size:1.6rem;font-weight:700;line-height:1;}
.stat-content p{color:var(--grey);font-size:.72rem;margin-top:.2rem;text-transform:uppercase;letter-spacing:.4px;}

/* HOME */
.home-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:1.25rem;}
.home-prest-item{padding:.85rem 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:1rem;}
.home-prest-item:last-child{border-bottom:none;}
.home-prest-name{font-size:.88rem;font-weight:600;}
.home-prest-meta{font-size:.75rem;color:var(--grey);margin-top:.15rem;}
.home-devis-item{padding:.85rem 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;}
.home-devis-item:last-child{border-bottom:none;}

/* PRESTATIONS */
.prestations-grid{display:grid;gap:1rem;}
.prestation-card{background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;transition:var(--t);}
.prestation-card:hover{border-color:var(--border-hover);}
.prestation-card.admin-view{border-color:rgba(245,158,11,.15);}
.prestation-card.admin-view:hover{border-color:rgba(245,158,11,.35);}
.prestation-top{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.75rem;}
.prestation-top h3{font-size:1.05rem;font-weight:600;}
.prestation-badges{display:flex;gap:.4rem;align-items:center;flex-shrink:0;flex-wrap:wrap;}
.prestation-badge{font-size:.68rem;font-weight:700;padding:.18rem .55rem;border-radius:20px;white-space:nowrap;text-transform:uppercase;letter-spacing:.5px;}
.badge-upcoming{background:var(--red-glow);color:var(--red);border:1px solid var(--border-accent);}
.badge-past{background:rgba(255,255,255,.04);color:var(--grey);border:1px solid var(--border);}
.badge-admin{background:rgba(245,158,11,.12);color:var(--admin-color);border:1px solid rgba(245,158,11,.28);font-size:.6rem;letter-spacing:1px;}
.prestation-meta{display:flex;gap:1.25rem;flex-wrap:wrap;margin-bottom:.5rem;}
.prestation-meta span{font-size:.82rem;color:var(--grey-light);display:flex;align-items:center;gap:.3rem;}
/* RSVP */
.rsvp-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;padding-top:1rem;border-top:1px solid var(--border);}
.rsvp-label{font-size:.78rem;color:var(--grey);}
.rsvp-tag{display:inline-flex;align-items:center;gap:.3rem;font-size:.78rem;font-weight:600;padding:.25rem .65rem;border-radius:20px;}
.rsvp-tag.present{background:rgba(34,197,94,.12);color:var(--success);border:1px solid rgba(34,197,94,.28);}
.rsvp-tag.absent{background:rgba(239,68,68,.1);color:var(--error);border:1px solid rgba(239,68,68,.22);}
.rsvp-tag.approved{background:rgba(245,158,11,.12);color:var(--admin-color);border:1px solid rgba(245,158,11,.28);}
/* Convocation privée */
.confirmation-card{background:linear-gradient(135deg,var(--dark2),var(--dark3));border:1px solid var(--border-accent);border-radius:var(--radius);padding:1.25rem;margin-top:1rem;display:none;}
.confirmation-card.visible{display:block;animation:slideDown .22s ease;}
.confirmation-card.pending{border-color:rgba(245,158,11,.28);background:rgba(245,158,11,.04);}
@keyframes slideDown{from{opacity:0;transform:translateY(-5px);}to{opacity:1;transform:none;}}
.confirmation-card h4{font-family:'Bebas Neue',sans-serif;font-size:1rem;letter-spacing:2px;color:var(--red);margin-bottom:.75rem;}
.confirmation-card.pending h4{color:var(--admin-color);}
.conf-row{font-size:.85rem;color:var(--grey-light);margin-bottom:.3rem;}
.conf-row strong{color:var(--white);margin-right:.4rem;}
.conf-note{margin-top:.7rem;padding-top:.7rem;border-top:1px solid var(--border);font-size:.78rem;color:var(--grey);font-style:italic;}
/* Admin panels */
.admin-rsvp-panel{margin-top:1rem;padding:1.1rem;background:rgba(245,158,11,.04);border:1px solid rgba(245,158,11,.13);border-radius:var(--radius);}
.prest-equip-panel{margin-top:.75rem;padding:1rem;background:rgba(96,165,250,.04);border:1px solid rgba(96,165,250,.13);border-radius:var(--radius);}
.admin-panel-title{font-size:.73rem;text-transform:uppercase;letter-spacing:1px;color:var(--admin-color);margin-bottom:.75rem;font-weight:700;display:flex;align-items:center;gap:.75rem;}
.rsvp-pending-row{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;padding:.5rem 0;border-bottom:1px solid var(--border);}
.rsvp-pending-row:last-child{border-bottom:none;}
.rsvp-user-id{font-size:.82rem;font-weight:600;min-width:70px;}
.rsvp-pending-label{font-size:.73rem;color:var(--warning);font-style:italic;}
.admin-notes-box{margin:.75rem 0;padding:.9rem 1rem;background:rgba(200,16,46,.06);border:1px solid var(--border-accent);border-radius:var(--radius);}
.admin-notes-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.5px;color:var(--red);font-weight:700;display:block;margin-bottom:.35rem;}
.admin-notes-box p{font-size:.84rem;color:var(--grey-light);}
.no-rsvp{font-size:.82rem;color:var(--grey);font-style:italic;}
/* Matos tags */
.equip-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem;}
.equip-tag{font-size:.75rem;background:rgba(96,165,250,.1);color:var(--info);border:1px solid rgba(96,165,250,.25);border-radius:20px;padding:.18rem .6rem;cursor:pointer;transition:var(--t);}
.equip-tag:hover{background:rgba(96,165,250,.2);}
/* Equip check list in modal */
.equip-check-row{display:flex;align-items:center;gap:.5rem;padding:.6rem .5rem;border-bottom:1px solid var(--border);cursor:pointer;font-size:.84rem;border-radius:4px;transition:var(--t);}
.equip-check-row:hover{background:var(--dark3);}
.equip-check-row input{accent-color:var(--red);width:16px;height:16px;}

/* DEVIS */
.devis-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:1.25rem;}
.devis-stat{background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;text-align:center;}
.devis-stat-val{font-size:1.5rem;font-weight:700;line-height:1;}
.devis-stat-label{font-size:.72rem;color:var(--grey);text-transform:uppercase;letter-spacing:.4px;margin-top:.2rem;}
.devis-grid{display:grid;gap:.85rem;}
.devis-card{background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;transition:var(--t);}
.devis-card:hover{border-color:var(--border-hover);}
.devis-card-left{flex:1;min-width:180px;}
.devis-card-left h4{font-size:.95rem;font-weight:600;}
.devis-card-left p{font-size:.78rem;color:var(--grey);margin-top:.15rem;}
.devis-card-montant{font-size:1.3rem;font-weight:700;white-space:nowrap;}
.devis-card-actions{display:flex;gap:.5rem;flex-wrap:wrap;}
.devis-status-badge{font-size:.68rem;font-weight:700;padding:.18rem .55rem;border-radius:20px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;}
.ds-draft{background:rgba(255,255,255,.05);color:var(--grey);border:1px solid var(--border);}
.ds-sent{background:rgba(96,165,250,.12);color:var(--info);border:1px solid rgba(96,165,250,.28);}
.ds-accepted{background:rgba(34,197,94,.12);color:var(--success);border:1px solid rgba(34,197,94,.28);}
.ds-refused{background:rgba(239,68,68,.1);color:var(--error);border:1px solid rgba(239,68,68,.22);}

/* CALENDAR */
.cal-month-label{font-family:'Bebas Neue',sans-serif;font-size:1.2rem;letter-spacing:2px;padding:0 .5rem;}
.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.cal-header-cell{text-align:center;font-size:.72rem;font-weight:700;color:var(--grey);text-transform:uppercase;letter-spacing:.5px;padding:.5rem 0;}
.cal-cell{min-height:80px;background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius);padding:.4rem;transition:var(--t);}
.cal-cell.today{border-color:var(--red);background:var(--red-glow);}
.cal-cell.other-month{opacity:.3;}
.cal-day{font-size:.75rem;font-weight:600;color:var(--grey-light);margin-bottom:.25rem;}
.cal-cell.today .cal-day{color:var(--red);font-weight:800;}
.cal-event{font-size:.62rem;background:var(--red);color:var(--white);border-radius:3px;padding:.08rem .3rem;margin-bottom:.12rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;}
.task-prestation-block{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border);}
.task-prestation-block:last-child{border-bottom:none;}
.task-prest-title{font-size:.88rem;font-weight:600;margin-bottom:.5rem;}
.task-items{display:flex;flex-wrap:wrap;gap:.5rem;}
.task-item{display:flex;align-items:center;gap:.5rem;background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius);padding:.4rem .75rem;font-size:.8rem;}
.task-item select{background:transparent;border:none;color:var(--grey-light);font-size:.78rem;font-family:'DM Sans',sans-serif;cursor:pointer;padding:0;}

/* EQUIPMENT */
.equip-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;margin-bottom:1.25rem;}
.equip-stat{background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem;text-align:center;}
.equip-stat-val{font-size:1.5rem;font-weight:700;line-height:1;}
.equip-stat-label{font-size:.7rem;color:var(--grey);text-transform:uppercase;letter-spacing:.4px;margin-top:.15rem;}
/* Deux barres de filtres côte à côte */
.equip-filters-row{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1.1rem;align-items:flex-start;}
.equip-filters-row .filter-bar{margin-bottom:0;flex:1;min-width:220px;}
.filter-label{font-size:.72rem;font-weight:700;color:var(--grey);text-transform:uppercase;letter-spacing:.5px;margin-right:.25rem;white-space:nowrap;}
.equipment-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;}
.equipment-item{background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius);padding:.95rem;display:flex;align-items:center;gap:.75rem;transition:var(--t);}
.equipment-item:hover{border-color:var(--border-hover);transform:translateX(2px);}
/* Point coloré cliquable = cycle statut */
.equip-dot-btn{width:14px;height:14px;border-radius:50%;flex-shrink:0;cursor:pointer;transition:transform .15s ease;border:2px solid rgba(255,255,255,.2);}
.equip-dot-btn:hover{transform:scale(1.35);}
.equip-info{flex:1;min-width:0;}
.equip-info strong{font-size:.87rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.equip-info span{font-size:.72rem;color:var(--grey);text-transform:capitalize;}
.equip-status-badge{font-size:.67rem;font-weight:700;padding:.16rem .48rem;border-radius:4px;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;}
.s-disponible{background:rgba(34,197,94,.1);color:var(--success);}
.s-en-prestation{background:rgba(96,165,250,.1);color:var(--info);}
.s-en-reparation{background:rgba(245,158,11,.1);color:var(--warning);}
.s-construction{background:rgba(167,139,250,.1);color:var(--purple);}
.s-perdu{background:rgba(239,68,68,.1);color:var(--error);}
/* Modal équipement statut */
.equip-modal-status{margin-bottom:.5rem;}

/* TIMESHEET */
.timesheet-stats{display:flex;gap:1.5rem;flex-wrap:wrap;padding:1rem 0;margin:.5rem 0 1rem;border-top:1px solid var(--border);border-bottom:1px solid var(--border);}
.ts-stat{text-align:center;}
.ts-stat-val{font-size:1.5rem;font-weight:700;color:var(--red);}
.ts-stat-label{font-size:.72rem;color:var(--grey);text-transform:uppercase;letter-spacing:.4px;}
.entries-list h3{font-size:.73rem;text-transform:uppercase;letter-spacing:1px;color:var(--grey);margin-bottom:.85rem;}
.entry-item{display:flex;justify-content:space-between;align-items:center;padding:.8rem .95rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--dark2);margin-bottom:.45rem;transition:var(--t);}
.entry-item:hover{border-color:var(--border-hover);}
.entry-left strong{font-size:.88rem;display:block;}
.entry-left span{font-size:.75rem;color:var(--grey);}
.entry-right{font-size:1.2rem;font-weight:700;color:var(--red);}

/* MEMBRES */
.membres-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;}
.membre-card{background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.35rem;transition:var(--t);}
.membre-card:hover{border-color:var(--border-hover);transform:translateY(-2px);}
.membre-card.inactif{opacity:.5;}
.membre-card-top{display:flex;align-items:flex-start;gap:.85rem;margin-bottom:1rem;}
.membre-avatar{width:44px;height:44px;background:var(--red);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:700;flex-shrink:0;}
.membre-avatar.admin{background:var(--admin-color);color:#000;}
.membre-avatar.technicien{background:var(--info);color:#000;}
.membre-info h4{font-size:.95rem;font-weight:600;}
.membre-info p{font-size:.78rem;color:var(--grey);margin-top:.1rem;}
.membre-badges{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.85rem;}
.membre-role-badge{font-size:.67rem;font-weight:700;padding:.15rem .5rem;border-radius:10px;text-transform:uppercase;letter-spacing:.5px;}
.mr-admin{background:rgba(245,158,11,.12);color:var(--admin-color);border:1px solid rgba(245,158,11,.28);}
.mr-membre{background:rgba(255,255,255,.05);color:var(--grey-light);border:1px solid var(--border);}
.mr-technicien{background:rgba(96,165,250,.1);color:var(--info);border:1px solid rgba(96,165,250,.25);}
.mr-inactif{background:rgba(239,68,68,.08);color:var(--error);border:1px solid rgba(239,68,68,.2);}
.membre-detail{font-size:.78rem;color:var(--grey-light);margin-bottom:.3rem;}
.membre-detail strong{color:var(--grey);}
.membre-actions{display:flex;gap:.5rem;margin-top:1rem;padding-top:.85rem;border-top:1px solid var(--border);}

/* DOCUMENTS */
.documents-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;}
.document-card{display:flex;flex-direction:column;align-items:flex-start;gap:.65rem;padding:1.35rem;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--dark2);text-decoration:none;color:var(--white);transition:var(--t);}
.document-card:hover{border-color:var(--border-accent);transform:translateY(-2px);}
.document-icon{font-size:1.4rem;width:2.8rem;height:2.8rem;display:flex;align-items:center;justify-content:center;background:var(--red-glow);border:1px solid var(--border-accent);border-radius:var(--radius);}
.document-card h3{font-size:.88rem;font-weight:600;}
.document-card p{font-size:.75rem;color:var(--grey);}

/* ROLES */
.roles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:1rem;}
.role-card{padding:1.35rem;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--dark2);}
.role-card h3{font-family:'Bebas Neue',sans-serif;font-size:1.05rem;letter-spacing:2px;color:var(--red);margin-bottom:.2rem;}
.role-person{color:var(--grey-light);font-weight:600;font-size:.85rem;margin-bottom:.85rem;}
.role-card ul{list-style:none;}
.role-card li{color:var(--grey);font-size:.8rem;margin-bottom:.28rem;padding-left:.9rem;position:relative;}
.role-card li::before{content:'—';color:var(--red);position:absolute;left:0;}

/* ADMIN */
.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.25rem;}
.admin-section-title{font-family:'Bebas Neue',sans-serif;font-size:1.1rem;letter-spacing:2px;margin-bottom:1rem;}
.admin-hint{font-size:.78rem;color:var(--grey);margin-top:.75rem;line-height:1.6;}
.admin-actions-list{display:flex;flex-direction:column;}
.admin-action-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 0;border-bottom:1px solid var(--border);}
.admin-action-row:last-child{border-bottom:none;}
.admin-action-row strong{font-size:.85rem;display:block;}
.admin-action-row p{font-size:.75rem;color:var(--grey);margin-top:.1rem;}
.admin-action-row.danger strong{color:var(--error);}
.admin-stat-row{display:flex;justify-content:space-between;align-items:center;padding:.6rem 0;border-bottom:1px solid var(--border);font-size:.85rem;}
.admin-stat-row:last-child{border-bottom:none;}
.admin-stat-row span:last-child{font-weight:700;}

/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:999;display:flex;align-items:center;justify-content:center;padding:1rem;}
.modal-overlay.hidden{display:none;}
.modal-box{background:var(--dark);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:540px;max-height:90vh;overflow-y:auto;}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--dark);z-index:1;}
.modal-header h3{font-family:'Bebas Neue',sans-serif;font-size:1.25rem;letter-spacing:2px;}
.modal-close{background:none;border:none;color:var(--grey);font-size:1.1rem;cursor:pointer;padding:.2rem;transition:var(--t);}
.modal-close:hover{color:var(--white);}
#modal-body{padding:1.5rem;}

/* MISC */
.filter-bar{display:flex;gap:.45rem;flex-wrap:wrap;align-items:center;}
.filter-btn{padding:.3rem .8rem;border:1px solid var(--border);background:transparent;color:var(--grey);border-radius:20px;font-family:'DM Sans',sans-serif;font-size:.77rem;font-weight:600;cursor:pointer;transition:var(--t);}
.filter-btn:hover{color:var(--white);border-color:var(--border-hover);}
.filter-btn.active{background:var(--red);border-color:var(--red);color:var(--white);}
.message{padding:.8rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.84rem;font-weight:500;}
.message.hidden{display:none;}
.message.success{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.28);color:var(--success);}
.message.error{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.28);color:var(--error);}
.message.info{background:var(--dark2);border:1px solid var(--border);color:var(--grey-light);}
.empty-state{text-align:center;padding:3rem 1rem;color:var(--grey);font-size:.88rem;}
.empty-icon{font-size:2.5rem;margin-bottom:.75rem;}
.hidden{display:none!important;}
.admin-only{display:none;}

/* RESPONSIVE */
@media(max-width:900px){
  .header-content{flex-wrap:wrap;gap:.5rem;}
  .main-nav{order:3;width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:.25rem;}
  .app-main{padding:1rem;}
  .home-grid{grid-template-columns:1fr;}
  .equip-filters-row{flex-direction:column;}
}
@media(max-width:600px){
  .stats-grid{grid-template-columns:1fr 1fr;}
  .form-row{grid-template-columns:1fr;}
  .equipment-grid{grid-template-columns:1fr;}
  .membres-grid{grid-template-columns:1fr;}
  .admin-grid{grid-template-columns:1fr;}
  .calendar-grid{grid-template-columns:repeat(7,1fr);}
  .cal-cell{min-height:50px;}
}
