@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap";:root{--vvd-blue:#0b4f8c;--vvd-blue-light:#e0f2fe;--vvd-red:#c21d1d;--vvd-red-light:#fee2e2;--vvd-gold:#c68a0c;--vvd-gold-light:#fef3c7;--bg-primary:#f6f8fb;--bg-secondary:#fff;--text-primary:#111827;--text-secondary:#4b5563;--text-muted:#9ca3af;--border-color:#e5e7eb;--border-focus:#0b4f8c;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000000d, 0 2px 4px -1px #00000008;--shadow-lg:0 10px 15px -3px #0000000d, 0 4px 6px -2px #00000005;--radius-sm:.375rem;--radius-md:.75rem;--radius-lg:1rem;--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--transition-smooth:all .2s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}button,input,textarea,select{font-family:inherit}a{color:inherit;text-decoration:none}.container{width:100%;max-width:640px;margin:0 auto;padding:1rem 1rem 5rem}.card{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:var(--transition-smooth);margin-bottom:1rem;padding:1.25rem}.card:hover{box-shadow:var(--shadow-md);border-color:var(--border-color)}h1{color:var(--vvd-blue);margin-bottom:.5rem;font-size:1.75rem;font-weight:700}h2{color:var(--text-primary);margin-bottom:.75rem;font-size:1.25rem;font-weight:600}h3{color:var(--text-primary);font-size:1rem;font-weight:600}.text-muted{color:var(--text-muted);font-size:.875rem}.form-group{margin-bottom:1rem}.form-group label{color:var(--text-secondary);margin-bottom:.375rem;font-size:.875rem;font-weight:500;display:block}.input-control{border:1px solid var(--border-color);border-radius:var(--radius-sm);background-color:var(--bg-secondary);width:100%;color:var(--text-primary);transition:var(--transition-smooth);padding:.625rem .875rem;font-size:.95rem}.input-control:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--vvd-blue-light);outline:none}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-smooth);border:none;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:.625rem 1.25rem;font-size:.95rem;font-weight:600;display:inline-flex}.btn-primary{background-color:var(--vvd-blue);color:#fff}.btn-primary:hover{background-color:#083c6c}.btn-secondary{color:var(--text-primary);background-color:#e5e7eb}.btn-secondary:hover{background-color:#d1d5db}.btn-danger{background-color:var(--vvd-red);color:#fff}.btn-danger:hover{background-color:#991b1b}.btn-outline{border:1px solid var(--border-color);color:var(--text-secondary);background-color:#0000}.btn-outline:hover{color:var(--text-primary);background-color:#f3f4f6}.bottom-nav{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border-color);z-index:1000;background-color:#ffffffd9;justify-content:space-around;width:100%;max-width:640px;padding:.5rem 0;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -4px 10px #00000008}.nav-item{color:var(--text-secondary);border-radius:var(--radius-sm);transition:var(--transition-smooth);white-space:nowrap;flex-direction:column;align-items:center;padding:.25rem 1rem;font-size:.75rem;font-weight:500;display:flex}@media (width<=480px){.nav-item{padding:.25rem .35rem;font-size:.68rem}.nav-icon{font-size:1.1rem}}.nav-item.active{color:var(--vvd-blue);font-weight:600}.nav-icon{justify-content:center;align-items:center;margin-bottom:.125rem;font-size:1.25rem;display:inline-flex}.badge{text-transform:uppercase;border-radius:9999px;padding:.25rem .5rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge-blue{background-color:var(--vvd-blue-light);color:var(--vvd-blue)}.badge-red{background-color:var(--vvd-red-light);color:var(--vvd-red)}.badge-gold{background-color:var(--vvd-gold-light);color:var(--vvd-gold)}.badge-gray{color:#4b5563;background-color:#f3f4f6}.badge-dark{color:#f9fafb;background-color:#1f2937}@keyframes pulse-subtle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.95;transform:scale(1.02)}}.animate-pulse-subtle{animation:2s ease-in-out infinite pulse-subtle}.grid{gap:1rem;display:grid}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex{align-items:center;gap:.5rem;display:flex}.justify-between{justify-content:space-between}.flex-col{flex-direction:column}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999;background-color:#0006;justify-content:center;align-items:center;width:100vw;height:100vh;padding:1rem;animation:.2s ease-out fadeIn;display:flex;position:fixed;top:0;left:0}.modal-card{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);width:100%;max-width:400px;box-shadow:var(--shadow-lg);padding:1.5rem;animation:.2s cubic-bezier(.34,1.56,.64,1) scaleUp}.btn-sm{width:auto!important;padding:.375rem .75rem!important;font-size:.85rem!important}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleUp{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.header.svelte-12qhfyh{background-color:var(--vvd-blue);color:#fff;box-shadow:var(--shadow-md);z-index:100;padding:.75rem 1rem;position:sticky;top:0}.header-content.svelte-12qhfyh{justify-content:space-between;align-items:center;max-width:640px;margin:0 auto;display:flex}.brand.svelte-12qhfyh{align-items:center;gap:.75rem;display:flex}.brand.svelte-12qhfyh h1:where(.svelte-12qhfyh){color:#fff;letter-spacing:.05em;margin:0;font-size:1.25rem;font-weight:800;line-height:1.1}.subtitle.svelte-12qhfyh{color:var(--vvd-gold-light);opacity:.9;font-size:.75rem}.logo-circle.svelte-12qhfyh{background:#ffffff26;border:1px solid #ffffff40;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.5rem;display:flex}.user-info-box.svelte-12qhfyh{-webkit-backdrop-filter:blur(12px);transition:var(--transition-smooth);background:#ffffff14;border:1px solid #ffffff1f;border-radius:9999px;align-items:center;gap:.625rem;padding:.3rem .5rem .3rem .3rem;display:flex;box-shadow:0 4px 12px #0000001a}.user-info-box.svelte-12qhfyh:hover{background:#ffffff1f;border-color:#fff3;box-shadow:0 4px 16px #00000026}.user-avatar.svelte-12qhfyh{background:linear-gradient(135deg, var(--vvd-gold) 0%, var(--vvd-red) 100%);color:#fff;text-shadow:0 1px 2px #0003;-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:.75rem;font-weight:800;display:flex;box-shadow:0 2px 4px #00000026}.user-meta.svelte-12qhfyh{flex-direction:column;align-items:flex-start;gap:.05rem;display:flex}.user-name.svelte-12qhfyh{color:#fff;letter-spacing:-.01em;font-size:.8rem;font-weight:700;line-height:1.1}.user-role-label.svelte-12qhfyh{color:#ffffffb3;text-transform:uppercase;letter-spacing:.03em;align-items:center;gap:.25rem;font-size:.6rem;font-weight:600;line-height:1;display:flex}.user-role-label.svelte-12qhfyh .role-dot:where(.svelte-12qhfyh){background-color:#fff9;border-radius:50%;width:5px;height:5px;display:inline-block}.user-role-label.admin.svelte-12qhfyh{color:#fca5a5}.user-role-label.admin.svelte-12qhfyh .role-dot:where(.svelte-12qhfyh){background-color:var(--vvd-red);box-shadow:0 0 4px var(--vvd-red)}.user-role-label.instructor.svelte-12qhfyh{color:#fde68a}.user-role-label.instructor.svelte-12qhfyh .role-dot:where(.svelte-12qhfyh){background-color:var(--vvd-gold);box-shadow:0 0 4px var(--vvd-gold)}.user-role-label.visiteur.svelte-12qhfyh{color:#fcd34d}.user-role-label.visiteur.svelte-12qhfyh .role-dot:where(.svelte-12qhfyh){background-color:#f59e0b;box-shadow:0 0 4px #f59e0b}.user-role-label.svelte-12qhfyh:not(.admin):not(.instructor):not(.visiteur){color:#bae6fd}.user-role-label.svelte-12qhfyh:not(.admin):not(.instructor):not(.visiteur) .role-dot:where(.svelte-12qhfyh){background-color:#38bdf8;box-shadow:0 0 4px #38bdf8}.btn-google.svelte-12qhfyh{color:#3c4043;border-radius:var(--radius-md);cursor:pointer;width:100%;transition:var(--transition-smooth);background-color:#fff;border:1px solid #dadce0;justify-content:center;align-items:center;gap:.75rem;padding:.7rem 1rem;font-size:.925rem;font-weight:600;display:flex;box-shadow:0 1px 3px #00000014}.btn-google.svelte-12qhfyh:hover:not(:disabled){background-color:#f8f9fa;border-color:#d2e3fc;box-shadow:0 2px 6px #3c404326}.btn-google.svelte-12qhfyh:disabled{opacity:.6;cursor:not-allowed}.google-icon.svelte-12qhfyh{flex-shrink:0}.auth-divider.svelte-12qhfyh{text-align:center;color:var(--text-muted);align-items:center;margin:1.25rem 0;font-size:.8rem;font-weight:500;display:flex}.auth-divider.svelte-12qhfyh:before,.auth-divider.svelte-12qhfyh:after{content:"";border-bottom:1px solid var(--border-color);flex:1}.auth-divider.svelte-12qhfyh span:where(.svelte-12qhfyh){padding:0 .75rem}.logout-btn.svelte-12qhfyh{color:#fffc;cursor:pointer;width:26px;height:26px;transition:var(--transition-smooth);background:#ffffff14;border:1px solid #ffffff1a;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex}.logout-btn.svelte-12qhfyh:hover{color:#fff;background-color:#fff3;border-color:#ffffff4d;transform:scale(1.05)}.logout-btn.svelte-12qhfyh:active{transform:scale(.95)}.logout-icon.svelte-12qhfyh{transition:transform .2s;display:block}.logout-btn.svelte-12qhfyh:hover .logout-icon:where(.svelte-12qhfyh){transform:translate(1px)}.loading-container.svelte-12qhfyh{text-align:center;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:4rem 1rem;display:flex}.spinner.svelte-12qhfyh{border:3px solid #0b4f8c1a;border-left-color:var(--vvd-blue);border-radius:50%;width:36px;height:36px;animation:1s linear infinite svelte-12qhfyh-spin}.spinner-small.svelte-12qhfyh{vertical-align:middle;border:2px solid #fff3;border-left-color:currentColor;border-radius:50%;width:14px;height:14px;margin-right:.25rem;animation:1s linear infinite svelte-12qhfyh-spin;display:inline-block}@keyframes svelte-12qhfyh-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.auth-container.svelte-12qhfyh{background:radial-gradient(circle at 10% 20%,#f0f5fa 0%,#e9f0f8 90%);justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.auth-card.svelte-12qhfyh{border-radius:var(--radius-lg);border:1px solid #0b4f8c1a;width:100%;max-width:400px;padding:2.25rem 2rem;box-shadow:0 10px 25px #0b4f8c14}.auth-brand.svelte-12qhfyh{text-align:center;flex-direction:column;align-items:center;margin-bottom:1.75rem;display:flex}.auth-brand.svelte-12qhfyh .logo-circle:where(.svelte-12qhfyh){background-color:var(--vvd-blue-light);width:60px;height:60px;margin-bottom:.75rem;font-size:2rem}.auth-form.svelte-12qhfyh .form-group:where(.svelte-12qhfyh){margin-bottom:1.25rem}.alert.svelte-12qhfyh{border-radius:var(--radius-sm);margin-bottom:1.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1.4}.alert-danger.svelte-12qhfyh{background-color:var(--vvd-red-light);color:var(--vvd-red);border:1px solid #c21d1d26}.alert-success.svelte-12qhfyh{color:#065f46;background-color:#d1fae5;border:1px solid #065f4626}.modal-close-btn.svelte-12qhfyh{color:var(--text-secondary);cursor:pointer;width:32px;height:32px;transition:var(--transition-smooth);z-index:10;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.25rem;font-weight:700;display:flex;position:absolute;top:1rem;right:1rem}.modal-close-btn.svelte-12qhfyh:hover{background-color:var(--bg-primary);color:var(--text-primary)}.relative.svelte-12qhfyh{position:relative}.visitor-footer.svelte-12qhfyh{text-align:center;color:#ffffff80;background-color:#05182b;border-top:1px solid #ffffff0d;margin-top:3rem;padding:2.5rem 1rem;font-size:.8rem}.visitor-footer.svelte-12qhfyh p:where(.svelte-12qhfyh){margin:0}@media (width<=480px){.header.svelte-12qhfyh{padding:.5rem .75rem}.brand.svelte-12qhfyh{gap:.5rem}.logo-circle.svelte-12qhfyh{width:32px;height:32px;font-size:1.15rem}.brand.svelte-12qhfyh h1:where(.svelte-12qhfyh){font-size:1.1rem}.subtitle.svelte-12qhfyh{font-size:.65rem}}
