*{box-sizing:border-box}:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.6;font-weight:400;color:#213547;background-color:#f0f2f5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600;line-height:1.2}button{font-family:inherit}button:focus,button:focus-visible{outline:2px solid #667eea;outline-offset:2px}.app{min-height:100vh;display:flex;flex-direction:column;background-image:url(/noel2.avif);background-size:cover}.header{background:linear-gradient(135deg,#c41e3a,#165b33);color:#fff;padding:2rem;text-align:center;box-shadow:0 4px 6px #0000001a}.header h1{margin:0;font-size:2.5rem;font-weight:700}.subtitle{margin:.5rem 0 0;font-size:1.1rem;opacity:.9}.main{flex:1;max-width:800px;margin:0 auto;padding:2rem;width:100%}.section{background:#fff;border-radius:8px;padding:1.5rem;margin-bottom:2rem;box-shadow:0 2px 4px #0000001a}.section h2{margin-top:0;color:#333;font-size:1.5rem;margin-bottom:1rem}.error-message{background:#fee;color:#c33;padding:1rem;border-radius:4px;margin-bottom:1rem;border-left:4px solid #c33}.participant-form{display:flex;gap:.5rem;margin-bottom:1rem}.input{flex:1;padding:.75rem;border:2px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .3s}.input:focus{outline:none;border-color:#c41e3a}.select{width:100%;padding:.75rem;border:2px solid #ddd;border-radius:4px;font-size:1rem;background:#fff;cursor:pointer;margin-bottom:1rem}.select:focus{outline:none;border-color:#c41e3a}.btn{padding:.75rem 1.5rem;border:none;border-radius:4px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .3s;background:#667eea;color:#fff}.btn:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0003}.btn:disabled{background:#ccc;cursor:not-allowed;transform:none}.btn-primary{background:linear-gradient(135deg,#c41e3a,#165b33)}.btn-secondary{background:#165b33}.btn-danger{background:#dc3545}.btn-small{padding:.4rem .8rem;font-size:.85rem}.btn-large{padding:1rem 2rem;font-size:1.1rem}.file-input-label{display:inline-block;position:relative;overflow:hidden}.file-input{position:absolute;left:-9999px}.participant-list h3{margin-top:0;color:#555}.participant-list ul{list-style:none;padding:0;margin:0}.participant-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:#f8f9fa;margin-bottom:.5rem;border-radius:4px;border-left:4px solid #165b33}.participant-item span{font-weight:500}.empty-state{text-align:center;padding:2rem;color:#999;font-style:italic}.draw-reveal{text-align:center}.draw-reveal h3{margin-top:0;color:#555}.reveal-form{display:flex;flex-direction:column;gap:1rem}.revealed-result{text-align:center}.result-card{background:linear-gradient(135deg,#c41e3a,#165b33);color:#fff;padding:2rem;border-radius:8px;margin-bottom:1rem}.result-text{font-size:1.2rem;margin:0 0 1rem}.receiver-name{font-size:2rem;font-weight:700;margin:0;text-shadow:2px 2px 4px rgba(0,0,0,.2)}.action-buttons{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center;margin-top:1rem}.info-text{text-align:center;color:#666;font-size:.9rem;margin-top:1rem}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background-image:url(/sapin.jpg);background-size:cover;padding:1rem}.login-box{background:#fff;border-radius:12px;padding:2.5rem;box-shadow:0 10px 25px #0003;max-width:400px;width:100%}.login-box h1{margin:0 0 .5rem;color:#333;text-align:center}.login-box .subtitle{text-align:center;color:#666;margin-bottom:2rem}.login-form{display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:600;color:#333;font-size:.9rem}.form-group input{padding:.75rem;border:2px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .3s}.form-group input:focus{outline:none;border-color:#c41e3a}.password-input-wrapper{position:relative;display:flex;align-items:center}.password-input-wrapper input{flex:1;padding-right:3rem}.password-toggle{position:absolute;right:.5rem;background:transparent;border:none;cursor:pointer;font-size:1.3rem;padding:.5rem;display:flex;align-items:center;justify-content:center;transition:opacity .2s;-webkit-user-select:none;user-select:none}.password-toggle:hover{opacity:.7}.password-toggle:focus{outline:2px solid #c41e3a;outline-offset:2px;border-radius:4px}.login-help{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid #eee;font-size:.85rem;color:#666;text-align:center}.login-help p{margin:.5rem 0}.admin-panel{max-width:900px;margin:0 auto;padding:2rem}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid #c41e3a}.admin-header h1{margin:0;color:#333}.add-participant-form{display:flex;gap:.5rem;margin-bottom:1.5rem}.add-participant-form input{flex:1;padding:.75rem;border:2px solid #ddd;border-radius:4px;font-size:1rem}.add-participant-form input:focus{outline:none;border-color:#c41e3a}.credentials-display{background:#fff9e6;border:2px solid #ffc107;border-radius:8px;padding:1.5rem;margin-top:1rem}.credentials-display h3{margin-top:0;color:#333}.credentials-list{display:grid;gap:1rem;margin:1rem 0}.credential-item{background:#fff;padding:1rem;border-radius:4px;border-left:4px solid #165b33}.credential-item code{background:#f5f5f5;padding:.2rem .5rem;border-radius:3px;font-family:Courier New,monospace;font-size:.9rem}.credential-link{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed #ddd}.credential-link small{display:block;color:#666;margin-bottom:.25rem;font-size:.85rem}.participants-list{display:grid;gap:.75rem}.participant-item .participant-info{display:flex;align-items:center;gap:.5rem}.draw-info{background:#f8f9fa;padding:1.5rem;border-radius:8px}.success-message{background:#d4edda;color:#155724;padding:1rem;border-radius:4px;margin-bottom:1rem;border-left:4px solid #28a745}.success-text{color:#28a745;font-weight:600;font-size:1.1rem}.warning-text{color:#856404;background:#fff3cd;padding:.75rem;border-radius:4px;margin-top:1rem;border-left:4px solid #ffc107}.participant-view{max-width:700px;margin:0 auto;padding:2rem}.participant-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid #c41e3a;flex-wrap:wrap}.participant-header h1{margin:0;color:#333;font-size:1.8rem}.christmas-lights-title{text-shadow:0 0 10px rgba(255,255,255,.8);font-weight:700;background:#000000b3;padding:1rem 1.5rem;border-radius:12px;display:inline-block}.light-bulb{display:inline-block;animation:twinkle 2s infinite}.light-bulb:nth-child(4n+1){color:red;animation-delay:0s;text-shadow:0 0 10px #ff0000,0 0 20px #ff0000}.light-bulb:nth-child(4n+2){color:#0f0;animation-delay:.5s;text-shadow:0 0 10px #00ff00,0 0 20px #00ff00}.light-bulb:nth-child(4n+3){color:gold;animation-delay:1s;text-shadow:0 0 10px #ffd700,0 0 20px #ffd700}.light-bulb:nth-child(4n+4){color:#00bfff;animation-delay:1.5s;text-shadow:0 0 10px #00bfff,0 0 20px #00bfff}@keyframes twinkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.1)}}.btn-logout{white-space:nowrap;flex-shrink:0}.reveal-container{margin-top:2rem}.loading{text-align:center;padding:3rem;color:#c41e3a;font-size:1.2rem}.reveal-box{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 4px 12px #0000001a;text-align:center}.reveal-box h2{margin-top:0;color:#333;text-align:center}.reveal-box .info-text{margin:1rem 0 2rem;font-size:1rem}.reveal-box .btn{margin-top:1rem}.reveal-gift-btn{font-size:1.2rem;padding:1.2rem 2.5rem;box-shadow:0 6px 20px #c41e3a4d;transition:all .3s ease}.reveal-gift-btn:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 8px 25px #c41e3a66}.reveal-gift-btn:active:not(:disabled){transform:translateY(-1px)}.assignment-reveal{background:linear-gradient(135deg,#c41e3a,#165b33);color:#fff;padding:2.5rem;border-radius:12px;margin:1.5rem 0;text-align:center}.reveal-text{font-size:1.2rem;margin-bottom:1rem;opacity:.95}.receiver-name{font-size:2.5rem;font-weight:700;margin:1rem 0;text-shadow:2px 2px 4px rgba(0,0,0,.2)}.info-box{background:#e7f3ff;border-left:4px solid #2196f3;padding:1.5rem;border-radius:4px;margin-top:1rem}.info-box h2{margin-top:0;color:#1976d2}.info-box p{margin:.5rem 0;color:#555}.footer{background:#f8f9fa;text-align:center;padding:1.5rem;color:#666;border-top:1px solid #ddd;margin-top:2rem}.footer p{margin:0}@media(max-width:768px){.header h1{font-size:2rem}.main,.section{padding:1rem}.action-buttons{flex-direction:column}.btn{width:100%}.login-container{background-image:url(/noel_verti.avif)}.login-box{padding:1.5rem}.password-toggle{font-size:1.5rem;padding:.75rem}.participant-view{padding:1rem}.participant-header{flex-direction:column;align-items:flex-start;gap:1rem}.participant-header h1{font-size:1.5rem;width:100%}.christmas-lights-title{font-size:1.3rem;padding:.75rem 1rem}.light-bulb{animation:twinkle 1.5s infinite}.btn-logout{width:100%}.reveal-box,.assignment-reveal{padding:1.5rem}.receiver-name{font-size:2rem}.admin-panel{padding:1rem}.admin-header{flex-direction:column;align-items:flex-start;gap:1rem}.admin-header button{width:100%}}
