:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}body{background-color:#212529;color:#fff;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.exclusion-group-manager{margin:20px 0;padding:20px;background:#f9f9f9;border-radius:8px}.exclusion-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.exclusion-header h3{margin:0;font-size:18px}.exclusion-description{color:#666;font-size:14px;margin:0 0 20px}.no-groups{color:#999;font-style:italic;text-align:center;padding:20px}.btn-add-group{background:#4caf50;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px}.btn-add-group:hover:not(:disabled){background:#45a049}.btn-add-group:disabled{background:#ccc;cursor:not-allowed}.exclusion-groups-list{display:flex;flex-direction:column;gap:12px}.exclusion-group{background:#fff;border:1px solid #ddd;border-radius:6px;padding:12px}.group-view-mode{display:flex;justify-content:space-between;align-items:center;gap:12px}.group-members{flex:1;display:flex;flex-wrap:wrap;gap:6px}.member-tag{background:#e3f2fd;color:#1976d2;padding:4px 10px;border-radius:12px;font-size:14px}.group-actions{display:flex;gap:8px}.btn-edit,.btn-delete,.btn-save,.btn-cancel{padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:14px}.btn-edit{background:#2196f3;color:#fff}.btn-edit:hover:not(:disabled){background:#1976d2}.btn-delete:hover:not(:disabled){background:#d32f2f}.btn-edit:disabled,.btn-delete:disabled{background:#ccc;cursor:not-allowed}.group-edit-mode{display:flex;flex-direction:column;gap:12px}.member-selector{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto;padding:10px;background:#fafafa;border-radius:4px}.member-checkbox{display:flex;align-items:center;gap:8px;cursor:pointer;padding:6px;border-radius:4px}.member-checkbox:hover{background:#f0f0f0}.member-checkbox input[type=checkbox]{cursor:pointer}.btn-save{background:#4caf50;color:#fff}.btn-save:hover{background:#45a049}.secret-santa-form{max-width:800px;margin:0 auto;padding:20px}.secret-santa-form h2{margin-top:0;margin-bottom:24px;color:#333}.form-section{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #eee}.form-section:last-of-type{border-bottom:none}.form-section h3{margin-top:0;margin-bottom:8px;font-size:18px;color:#444}.section-description{color:#666;font-size:14px;margin:0 0 16px}.secret-santa-form label{display:block;margin-bottom:16px}.secret-santa-form label>span{display:block;margin-bottom:6px;font-weight:500;color:#555}.secret-santa-form input[type=text],.secret-santa-form input[type=date],.secret-santa-form textarea{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:14px;font-family:inherit}.secret-santa-form input[type=text]:focus,.secret-santa-form input[type=date]:focus,.secret-santa-form textarea:focus{outline:none;border-color:#4caf50}.secret-santa-form input[type=text]:disabled,.secret-santa-form input[type=date]:disabled,.secret-santa-form textarea:disabled{background:#f5f5f5;cursor:not-allowed}.participant-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;padding:16px;background:#f9f9f9;border-radius:6px}.participant-checkbox{display:flex!important;align-items:center;gap:8px;cursor:pointer;padding:8px;border-radius:4px;margin-bottom:0!important}.participant-checkbox:hover{background:#f0f0f0}.participant-checkbox input[type=checkbox]{cursor:pointer}.participant-checkbox input[type=checkbox]:disabled{cursor:not-allowed}.validation-indicator{padding:12px 16px;border-radius:6px;margin-bottom:20px;font-size:14px;font-weight:500}.validation-indicator.valid{background:#e8f5e9;color:#2e7d32;border:1px solid #a5d6a7}.validation-indicator.invalid{background:#fff3e0;color:#e65100;border:1px solid #ffcc80}.validation-success:before{content:"✓ ";font-weight:700}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:20px}.form-actions button{padding:10px 20px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:background .2s}.form-actions button[type=button]{background:#9e9e9e;color:#fff}.form-actions button[type=button]:hover:not(:disabled){background:#757575}.form-actions .btn-primary{background:#4caf50;color:#fff}.form-actions .btn-primary:hover:not(:disabled){background:#45a049}.form-actions button:disabled{background:#ccc;cursor:not-allowed}.locked-notice{background:#fff3cd;border:1px solid #ffc107;color:#856404;padding:12px;border-radius:4px;margin-top:16px;text-align:center}.generation-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.generation-modal{background:#fff;border-radius:8px;padding:32px;max-width:500px;width:90%;box-shadow:0 4px 20px #0000004d}.generation-modal h2{margin-top:0;margin-bottom:24px;text-align:center;color:#333}.entropy-phase{text-align:center}.instructions{color:#666;margin-bottom:20px}.entropy-input{width:100%;padding:12px;font-size:16px;border:2px solid #ddd;border-radius:6px;margin-bottom:8px;box-sizing:border-box}.entropy-input:focus{outline:none;border-color:#4caf50}.entropy-counter{color:#999;font-size:14px;margin:0}.generating-phase{text-align:center;padding:20px 0}.spinner{width:50px;height:50px;border:4px solid #f3f3f3;border-top:4px solid #4CAF50;border-radius:50%;margin:0 auto 20px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.generating-text{font-size:18px;color:#555;margin-bottom:16px}.progress-stats{background:#f9f9f9;padding:12px;border-radius:4px;font-size:14px;color:#666}.progress-stats p{margin:4px 0}.error-phase{text-align:center;padding:20px 0}.error-icon{font-size:48px;margin-bottom:16px}.error-message{font-size:18px;color:#d32f2f;margin-bottom:8px}.error-details{color:#666;font-size:14px;margin-bottom:24px}.success-phase{text-align:center;padding:20px 0}.success-icon{font-size:48px;color:#4caf50;margin-bottom:16px}.success-message{font-size:18px;color:#2e7d32;margin-bottom:8px}.success-details{color:#666;font-size:14px;margin-bottom:24px}.modal-actions{display:flex;gap:12px;justify-content:center;margin-top:24px}.modal-actions button{padding:10px 24px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:background .2s}.btn-retry{background:#2196f3;color:#fff}.btn-retry:hover{background:#1976d2}.btn-confirm{background:#4caf50;color:#fff}.btn-confirm:hover{background:#45a049}.assignment-preview{max-width:600px;margin:0 auto;padding:20px}.preview-header{text-align:center;margin-bottom:32px}.preview-header h2{margin-top:0;margin-bottom:12px;color:#333}.preview-instructions{color:#666;font-size:14px;margin:0}.assignments-list{background:#f9f9f9;border-radius:8px;padding:24px;margin-bottom:24px;max-height:400px;overflow-y:auto}.assignment-row{display:flex;align-items:center;gap:12px;padding:12px;background:#fff;border-radius:6px;margin-bottom:8px;box-shadow:0 1px 3px #0000001a}.assignment-row:last-child{margin-bottom:0}.giver,.receiver{flex:1;font-weight:500;color:#333}.giver{text-align:right;color:#1976d2}.receiver{text-align:left;color:#2e7d32}.arrow{font-size:20px;color:#999}.preview-actions{display:flex;gap:12px;justify-content:center}.preview-actions button{padding:10px 24px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:background .2s}.btn-cancel{background:#9e9e9e;color:#fff}.btn-cancel:hover{background:#757575}.btn-regenerate{background:#2196f3;color:#fff}.btn-regenerate:hover{background:#1976d2}.btn-finalize{background:#4caf50;color:#fff}.btn-finalize:hover{background:#45a049}.finalize-warning{background:#fff3e0;border:2px solid #ff9800;border-radius:8px;padding:24px;text-align:center}.warning-icon{font-size:48px;margin-bottom:12px}.finalize-warning h3{margin:0 0 12px;color:#e65100}.finalize-warning p{color:#666;margin:0 0 24px}.warning-actions{display:flex;gap:12px;justify-content:center}.warning-actions button{padding:10px 24px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:background .2s}.btn-confirm-finalize{background:#ff9800;color:#fff}.btn-confirm-finalize:hover:not(:disabled){background:#f57c00}.btn-confirm-finalize:disabled{background:#ccc;cursor:not-allowed}.participant-view{max-width:600px;margin:0 auto;padding:20px}.exchange-header{display:flex;align-items:center;gap:16px;margin-bottom:16px}.exchange-header h2{margin:0;flex:1;color:#333}.status-badge{padding:6px 12px;border-radius:12px;color:#fff;font-size:12px;font-weight:600;text-transform:uppercase}.exchange-description{color:#666;font-size:14px;margin-bottom:24px;padding:12px;background:#f9f9f9;border-radius:6px}.exchange-details{display:flex;flex-direction:column;gap:12px;margin-bottom:32px;padding:16px;background:#f9f9f9;border-radius:6px}.detail-item{display:flex;justify-content:space-between;align-items:center}.detail-label{font-weight:500;color:#666;font-size:14px}.detail-value{color:#333;font-size:14px}.assignment-card{background:#fff;border:2px solid #4CAF50;border-radius:8px;padding:32px;text-align:center;box-shadow:0 2px 8px #0000001a}.assignment-card.loading{border-color:#2196f3}.assignment-card.error{border-color:#f44336}.assignment-card.info{border-color:#ff9800}.assignment-card h3{margin:0 0 24px;color:#4caf50;font-size:20px}.assignment-reveal{padding:24px;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-radius:8px}.assignment-label{margin:0 0 12px;color:#666;font-size:16px}.assignment-name{margin:0;font-size:32px;font-weight:700;color:#1976d2}.assignment-card.loading p,.assignment-card.error p,.assignment-card.info p{margin:0;font-size:16px;color:#666}.info-detail{margin-top:8px!important;font-size:14px!important;color:#999!important}.all-assignments-list{display:flex;flex-direction:column;gap:12px;padding:16px;background:#f9f9f9;border-radius:8px;max-height:400px;overflow-y:auto}.assignment-item{display:flex;align-items:center;gap:12px;padding:12px;background:#fff;border-radius:6px;box-shadow:0 1px 3px #0000001a}.giver-name,.receiver-name{flex:1;font-weight:500}.giver-name{text-align:right;color:#1976d2}.receiver-name{text-align:left;color:#2e7d32}.assignment-item .arrow{font-size:20px;color:#999}.secret-santa-list{padding:20px;max-width:1200px;margin:0 auto}.secret-santa-list.loading,.secret-santa-list.error{text-align:center;padding:60px 20px;color:#666}.list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px}.list-header h1{margin:0;color:#333}.btn-create{background:#4caf50;color:#fff;border:none;padding:10px 20px;border-radius:4px;font-size:14px;cursor:pointer;transition:background .2s}.btn-create:hover{background:#45a049}.empty-state{text-align:center;padding:60px 20px;color:#999}.empty-state p{margin:8px 0;font-size:16px}.empty-hint{font-size:14px!important;color:#bbb!important}.exchanges-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:24px}.exchange-card{background:#fff;border:1px solid #ddd;border-radius:8px;padding:20px;box-shadow:0 2px 4px #0000001a;transition:box-shadow .2s}.exchange-card:hover{box-shadow:0 4px 8px #00000026}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.card-header h3{margin:0 12px 0 0;font-size:18px;color:#333;flex:1}.status-badge{padding:4px 10px;border-radius:12px;color:#fff;font-size:11px;font-weight:600;text-transform:uppercase;white-space:nowrap}.card-description{color:#666;font-size:14px;margin:0 0 16px;line-height:1.4}.card-details{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;padding:12px;background:#f9f9f9;border-radius:6px}.detail{display:flex;justify-content:space-between;font-size:14px}.detail .label{color:#666;font-weight:500}.detail .value{color:#333}.card-actions{display:flex;gap:8px;flex-wrap:wrap}.card-actions button{flex:1;min-width:70px;padding:8px 12px;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:background .2s}.btn-view{background:#2196f3;color:#fff}.btn-view:hover{background:#1976d2}.btn-edit{background:#ff9800;color:#fff}.btn-edit:hover{background:#f57c00}.btn-generate{background:#4caf50;color:#fff}.btn-generate:hover{background:#45a049}.btn-reveal{background:#9c27b0;color:#fff}.btn-reveal:hover{background:#7b1fa2}.btn-delete{background:#f44336;color:#fff}.btn-delete:hover{background:#d32f2f}.participant-view-wrapper{padding:20px;max-width:800px;margin:0 auto}.btn-back{background:#9e9e9e;color:#fff;border:none;padding:8px 16px;border-radius:4px;font-size:14px;cursor:pointer;margin-bottom:20px;transition:background .2s}.btn-back:hover{background:#757575}.secret-santa-app{max-width:1200px;margin:0 auto}.secret-santa-app.error,.secret-santa-app.empty{text-align:center;padding:60px 20px;color:#999}.family-selector{margin-bottom:24px;padding:16px;background:#495057;border-radius:8px}.family-selector label{display:flex;align-items:center;gap:12px;color:#fff}.family-selector label span{font-weight:500}.family-selector select{flex:1;padding:8px 12px;border:1px solid #6c757d;border-radius:4px;background:#fff;font-size:14px;cursor:pointer}.family-selector select:focus{outline:none;border-color:#007bff}
