:root{--marine: #4527D6;--marine-dark: #2E1899;--gold: #A85F00;--gold-light: #FDA10E;--ink: #16171B;--ink-soft: #585C68;--line: #E3E5EB;--bg-alt: #F3F4F7;--success: #0E8F5D;--success-bg: #E3F8EE;--danger: #B3352A;--danger-bg: #FBEAE8;--warn-bg: #FFF1DC;--radius: 10px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(22, 23, 27, .06), 0 1px 1px rgba(22, 23, 27, .04);--shadow-md: 0 4px 12px rgba(22, 23, 27, .08), 0 2px 4px rgba(22, 23, 27, .05);--shadow-lg: 0 12px 28px rgba(22, 23, 27, .12), 0 4px 8px rgba(22, 23, 27, .06);--transition-fast: .15s ease;--transition-base: .25s cubic-bezier(.4, 0, .2, 1);--gradient-marine: linear-gradient(135deg, var(--marine) 0%, var(--marine-dark) 100%)}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg-alt);color:var(--ink)}@keyframes ejdaFadeInUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes ejdaGradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.fade-in-up{animation:none}@media(prefers-reduced-motion:no-preference){.fade-in-up{opacity:0;animation:ejdaFadeInUp .5s ease-out forwards;animation-delay:var(--fade-delay, 0s)}}.living-gradient{background:var(--gradient-marine);background-size:220% 220%}@media(prefers-reduced-motion:no-preference){.living-gradient{animation:ejdaGradientShift 12s ease infinite}}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{color:#fff;padding:16px 24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px}.app-header h1{font-size:18px;margin:0;font-weight:600;white-space:nowrap}.app-header .user-info{font-size:13px;opacity:.9;display:flex;align-items:center;gap:12px;white-space:nowrap}@media(max-width:480px){.app-header h1{font-size:15px}}.btn{border:none;border-radius:var(--radius);padding:10px 18px;font-size:14px;font-weight:600;cursor:pointer}.btn-primary{position:relative;isolation:isolate;overflow:hidden;background:var(--marine);color:#fff;transition:color var(--transition-base),transform var(--transition-fast),box-shadow var(--transition-base)}.btn-primary:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:var(--gradient-marine);transform:scaleX(0);transform-origin:left;transition:transform var(--transition-base)}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled):before{transform:scaleX(1)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4);transition:background var(--transition-base)}.btn-ghost:hover{background:#ffffff1f}.btn-success{background:var(--success);color:#fff}.btn-danger{background:var(--danger);color:#fff}.btn-secondary{background:#fff;color:var(--ink);border:1px solid var(--line)}.login-screen{flex:1;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:48px 40px;max-width:380px;width:100%;text-align:center;display:flex;flex-direction:column;gap:18px}.login-card h1{color:var(--marine);font-size:24px;margin:0}.login-card p{color:var(--ink-soft);margin:0;font-size:14px}.login-card .btn-primary{padding:12px 20px}.login-card .btn-ghost{color:var(--ink);border-color:var(--line)}.login-card .btn-ghost:hover{background:#0000000a}.main-content{flex:1;padding:24px;max-width:900px;margin:0 auto;width:100%}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:24px}.tile{position:relative;background:#fff;border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-md);cursor:pointer;border-top:4px solid transparent;text-align:left;transition:transform var(--transition-base),box-shadow var(--transition-base);overflow:hidden}.tile:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--tile-gradient, var(--gradient-marine))}.tile:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.tile h3{margin:0 0 6px;font-size:16px;color:var(--ink)}.tile p{margin:0;font-size:13px;color:var(--ink-soft)}.back-link{background:none;border:none;color:var(--marine);font-weight:600;cursor:pointer;padding:0;margin-bottom:16px;font-size:14px}.card{background:#fff;border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-md);margin-bottom:16px}.status-pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.status-nouvelle{background:var(--warn-bg);color:var(--gold)}.status-encours{background:#e4e9fb;color:var(--marine)}.status-traitee{background:var(--success-bg);color:var(--success)}.status-refusee{background:var(--danger-bg);color:var(--danger)}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line)}th{color:var(--ink-soft);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em}tbody tr:hover{background:var(--bg-alt)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink-soft)}.form-grid input,.form-grid select,.form-grid textarea{padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius);font-size:14px;font-family:inherit}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{outline:none;border-color:var(--marine);box-shadow:0 0 0 3px #4527d61f}.form-grid .full{grid-column:1 / -1}.empty-state{text-align:center;padding:40px;color:var(--ink-soft)}.error-banner{background:var(--danger-bg);color:var(--danger);padding:12px 16px;border-radius:var(--radius);margin-bottom:16px;font-size:14px}.warning-banner{background:var(--warn-bg);color:var(--gold);padding:12px 16px;border-radius:var(--radius);margin-bottom:16px;font-size:13.5px}.info-banner{background:#e4e9fb;color:var(--marine);padding:10px 14px;border-radius:var(--radius);margin-bottom:12px;font-size:13px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:24px 0 8px;flex-wrap:wrap}.section-title h2{margin:0;font-size:16px}@media(max-width:600px){.form-grid,.tile-grid{grid-template-columns:1fr}}.calendrier-dispo{padding:16px}.calendrier-entete{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:12px}.calendrier-entete strong{font-size:15px;min-width:160px;text-align:center}.calendrier-nav{padding:4px 12px;font-size:16px;line-height:1}.calendrier-grille{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendrier-jours-entete{margin-bottom:4px}.calendrier-jour-label{text-align:center;font-size:11px;color:var(--ink-soft);font-weight:600}.calendrier-cellule{aspect-ratio:1 / 1;border-radius:8px;border:1px solid var(--line);padding:4px;display:flex;flex-direction:column;gap:2px;overflow:hidden;font-size:10.5px}.calendrier-cellule-vide{border:none}.calendrier-numero{font-size:12px;font-weight:600;color:var(--ink)}.calendrier-cellule-occupee{background:var(--danger-bg);border-color:var(--danger)}.calendrier-cellule-occupee .calendrier-numero{color:var(--danger)}.calendrier-cellule-aujourdhui{box-shadow:0 0 0 2px var(--marine) inset}.calendrier-etiquette{color:var(--danger);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendrier-legende{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-soft);margin:12px 0 0}.calendrier-pastille{display:inline-block;width:10px;height:10px;border-radius:3px;margin-left:10px}.calendrier-pastille:first-child{margin-left:0}.calendrier-pastille-occupee{background:var(--danger-bg);border:1px solid var(--danger)}.calendrier-pastille-libre{background:#fff;border:1px solid var(--line)}@media(max-width:600px){.calendrier-cellule{font-size:9px}.calendrier-numero{font-size:10.5px}.calendrier-etiquette{display:none}}.galerie-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.galerie-vignette{position:relative;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);background:var(--bg-alt);cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}.galerie-vignette img{width:100%;height:100%;object-fit:cover}.galerie-vignette-chargement,.galerie-vignette-erreur{font-size:12px;color:var(--ink-soft)}.galerie-vignette-legende{position:absolute;bottom:0;left:0;right:0;background:#0009;color:#fff;font-size:11px;padding:4px 6px;text-align:left}.galerie-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.galerie-lightbox-contenu{background:#fff;border-radius:var(--radius-lg);padding:16px;max-width:90vw;max-height:90vh;overflow:auto;text-align:center}.galerie-lightbox-contenu img{max-width:100%;max-height:70vh;border-radius:var(--radius)}.galerie-lightbox-info{margin:12px 0;font-size:13px;color:var(--ink-soft)}@media print{.app-header,.tile-grid,.no-print{display:none!important}.rapport-entete{display:block!important;margin-bottom:16px}.main-content{padding:0}.card{box-shadow:none;border:1px solid var(--line)}}
