.error-boundary{display:flex;align-items:center;justify-content:center;min-height:400px;padding:2rem}.error-boundary__content{max-width:600px;text-align:center;padding:2rem;border-radius:8px;background:var(--color-surface);border:2px solid var(--color-error)}.error-boundary__title{color:var(--color-error);font-size:1.5rem;font-weight:600;margin:0 0 1rem}.error-boundary__message{color:var(--color-text);font-size:1rem;margin:0 0 1.5rem}.error-boundary__actions{display:flex;gap:1rem;justify-content:center;margin-bottom:1rem}.error-boundary__btn{padding:.75rem 1.5rem;font-size:1rem;font-weight:500;border:none;border-radius:6px;cursor:pointer;transition:all .2s ease}.error-boundary__btn--primary{background:var(--color-primary);color:#fff}.error-boundary__btn--primary:hover{background:var(--color-primary-hover)}.error-boundary__btn--secondary{background:var(--color-surface-elevated);color:var(--color-text);border:1px solid var(--color-border)}.error-boundary__btn--secondary:hover{background:var(--color-surface-hover)}.error-boundary__btn:active{transform:translateY(1px)}.error-boundary__details{margin-top:1.5rem;text-align:left;background:var(--color-surface-elevated);padding:1rem;border-radius:6px}.error-boundary__details summary{cursor:pointer;font-weight:500;color:var(--color-text-secondary);-webkit-user-select:none;user-select:none}.error-boundary__details summary:hover{color:var(--color-text)}.error-boundary__stack{margin-top:1rem;padding:1rem;background:var(--color-background);border-radius:4px;overflow-x:auto;font-family:Consolas,Monaco,Courier New,monospace;font-size:.85rem;color:var(--color-error);white-space:pre-wrap;word-break:break-word}.theme-toggle{display:flex;justify-content:center;align-items:center;width:40px;height:40px;border-radius:.5rem;background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);transition:all .15s ease-in-out}.theme-toggle:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}.theme-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.theme-toggle__icon{display:block;width:20px;height:20px;filter:var(--icon-filter)}.tool-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:.75rem;padding:1.5rem;transition:all .25s ease-in-out}.tool-card:hover{border-color:var(--color-border-hover);box-shadow:0 4px 12px var(--color-shadow)}.tool-card{display:block;text-decoration:none;cursor:pointer}.tool-card:hover{transform:translateY(-2px)}.tool-card:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.tool-card__title{font-size:1.25rem;font-weight:600;color:var(--color-text);margin-bottom:.75rem}.tool-card__description{font-size:1rem;color:var(--color-text-secondary);line-height:1.75;margin:0}.home__header{margin-bottom:3rem;text-align:center}.home__title{margin-bottom:1rem}.home__subtitle{font-size:1.125rem;color:var(--color-text-secondary);max-width:640px;margin:0 auto}.home__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}@media(max-width:639px){.home__grid{grid-template-columns:1fr}}.participant-input__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.participant-input h3{margin:0}.participant-input__header-actions{display:flex;align-items:center;gap:.75rem}.participant-input__count{font-size:.875rem;color:var(--color-text-secondary);font-weight:500}.participant-input__settings-btn{position:relative;background:transparent;border:none;cursor:pointer;padding:.5rem;line-height:1;opacity:.6;transition:opacity .15s ease-in-out,transform .15s ease-in-out}.participant-input__settings-btn img{width:18px;height:18px;display:block;filter:var(--icon-filter)}.participant-input__settings-btn:hover{opacity:1;transform:scale(1.1)}.participant-input__settings-btn:active{transform:scale(.95)}.participant-input__error-dot{position:absolute;top:2px;right:2px;width:6px;height:6px;background:var(--color-error);border-radius:50%;border:1px solid var(--color-background)}.participant-input__textarea{width:100%;min-height:200px;padding:1rem;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:.875rem;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:.5rem;resize:vertical;transition:border-color .15s ease-in-out}.participant-input__textarea:focus{outline:none;border-color:var(--color-primary)}.participant-input__textarea::placeholder{color:var(--color-text-secondary)}.participant-input__warning{margin-top:.75rem;padding:.5rem .75rem;border-left:3px solid;border-radius:.25rem;font-size:.875rem;background:var(--color-warning-bg);border-color:var(--color-warning);color:var(--color-warning);margin-top:1rem;padding:.75rem 1rem}.participant-input__error{margin-top:.75rem;padding:.5rem .75rem;border-left:3px solid;border-radius:.25rem;font-size:.875rem;background:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error);margin-top:1rem;padding:.75rem 1rem}.settings-panel__backdrop{position:fixed;inset:0;background:#0003;z-index:100;animation:fadeIn .15s ease-in-out}.settings-panel__popover{position:fixed;width:320px;max-height:500px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:.5rem;box-shadow:0 4px 20px #00000026;z-index:101;animation:slideDown .25s ease-in-out}@media(max-width:640px){.settings-panel__popover{width:calc(100vw - 16px);max-width:320px}}.settings-panel__header{display:flex;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid var(--color-border);background:var(--color-background);border-radius:.5rem .5rem 0 0}.settings-panel__title{font-size:1.125rem;font-weight:600;color:var(--color-text);margin:0}.settings-panel__close{background:transparent;border:none;font-size:1.125rem;color:var(--color-text-secondary);cursor:pointer;padding:.5rem;line-height:1;transition:color .15s ease-in-out}.settings-panel__close:hover{color:var(--color-text)}.settings-panel__content{padding:1rem}.settings-panel__section{padding:1rem 0}.settings-panel__section:not(:last-child){border-bottom:1px solid var(--color-border)}.settings-panel__section-title{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--color-text)}.settings-panel__checkbox{display:flex;justify-content:flex-start;align-items:center;gap:.75rem;cursor:pointer;font-size:1rem}.settings-panel__checkbox input[type=checkbox]{cursor:pointer}.settings-panel__checkbox--disabled{opacity:.5;cursor:not-allowed}.settings-panel__checkbox--disabled input[type=checkbox]{cursor:not-allowed}.settings-panel__tooltip{cursor:help;opacity:.7;transition:opacity .15s ease-in-out}.settings-panel__tooltip img{width:14px;height:14px;display:inline-block;vertical-align:middle;filter:var(--icon-filter)}.settings-panel__tooltip:hover{opacity:1}.settings-panel__n-cycle{display:flex;justify-content:flex-start;align-items:center;gap:.75rem;margin-top:.75rem;flex-wrap:wrap}.settings-panel__n-cycle-disabled{font-size:1rem;color:var(--color-text-secondary);font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace}.settings-panel__n-cycle-controls{display:flex;justify-content:flex-start;align-items:center;gap:.5rem}.settings-panel__n-cycle-hint{font-size:.875rem;color:var(--color-text-secondary);font-style:italic;display:flex;justify-content:flex-start;align-items:center;gap:.5rem}.settings-panel__n-cycle-suffix{font-size:1rem;color:var(--color-text)}.settings-panel__select--inline,.settings-panel__input--inline{padding:.5rem .75rem;font-size:.875rem;min-width:auto}.settings-panel__select--inline{width:auto;min-width:50px}.settings-panel__input--inline{width:60px}.settings-panel__cycle-settings{margin-top:1rem;padding-left:1.5rem;display:flex;flex-direction:column;gap:1rem}.settings-panel__cycle-operator,.settings-panel__cycle-size{display:flex;flex-direction:column;gap:.5rem}.settings-panel__label{font-size:.875rem;font-weight:500;color:var(--color-text-secondary)}.settings-panel__select,.settings-panel__input{padding:.75rem;border:1px solid var(--color-border);border-radius:.25rem;background:var(--color-background);color:var(--color-text);font-size:1rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;transition:border-color .15s ease-in-out}.settings-panel__select:focus,.settings-panel__input:focus{outline:none;border-color:var(--color-primary)}.settings-panel__input--error{border-color:var(--color-error)}.settings-panel__validation{font-size:.875rem;padding:.5rem .75rem;border-radius:.25rem;border:1px solid}.settings-panel__validation--error{color:var(--color-error);background:var(--color-error-bg);border-color:var(--color-error)}.settings-panel__validation--warning{color:var(--color-warning);background:var(--color-warning-bg);border-color:var(--color-warning)}.settings-panel__radio-group{display:flex;justify-content:flex-start;align-items:center;gap:1.5rem;flex-wrap:wrap}.settings-panel__radio{display:flex;justify-content:flex-start;align-items:center;gap:.5rem;cursor:pointer;font-size:1rem}.settings-panel__radio input[type=radio]{cursor:pointer}.settings-panel__custom-separator{margin-top:.75rem;padding:.75rem;border:1px solid var(--color-border);border-radius:.25rem;background:var(--color-background);color:var(--color-text);font-size:1rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;transition:border-color .15s ease-in-out}.settings-panel__custom-separator:focus{outline:none;border-color:var(--color-primary)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.constraints-panel{padding:1rem;border:1px solid var(--color-border);border-radius:.5rem;background:var(--color-surface)}.constraints-panel__tabs{display:flex;border-bottom:1px solid var(--color-border);margin:-1rem -1rem 1rem}.constraints-panel__tabs__tab{flex:1;padding:.75rem 1rem;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--color-text-secondary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s ease-in-out}.constraints-panel__tabs__tab:first-child{border-top-left-radius:.5rem}.constraints-panel__tabs__tab:last-child{border-top-right-radius:.5rem}.constraints-panel__tabs__tab:hover:not(.constraints-panel__tabs__tab--active){background:var(--color-background);color:var(--color-text)}.constraints-panel__tabs__tab--active{color:var(--color-primary);border-bottom-color:var(--color-primary);background:var(--color-background)}.constraints-panel__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.constraints-panel__title{font-size:1rem;font-weight:600;color:var(--color-text);margin:0}.constraints-panel__actions{display:flex;gap:.5rem}.constraints-panel__upload-btn,.constraints-panel__reset-btn{display:flex;align-items:center;justify-content:center;padding:.5rem .75rem;font-size:.875rem;font-weight:500;background:var(--color-background);color:var(--color-text);border:1px solid var(--color-border);border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out}.constraints-panel__upload-btn img,.constraints-panel__reset-btn img{width:16px;height:16px;display:block;filter:var(--icon-filter)}.constraints-panel__upload-btn:hover,.constraints-panel__reset-btn:hover{background:var(--color-surface);border-color:var(--color-primary)}.constraints-panel__upload-btn:hover img,.constraints-panel__reset-btn:hover img{filter:brightness(0) saturate(100%) invert(43%) sepia(96%) saturate(1893%) hue-rotate(223deg) brightness(99%) contrast(93%)}.constraints-panel__upload-btn:active,.constraints-panel__reset-btn:active{transform:scale(.98)}.constraints-panel__tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;max-height:200px;overflow-y:auto;overflow-x:hidden}.constraints-panel__tag{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:.25rem;font-size:.875rem;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;transition:all .15s ease-in-out}.constraints-panel__tag--invalid{border-color:var(--color-error);background:var(--color-error-bg)}.constraints-panel__tag:hover{border-color:var(--color-primary)}.constraints-panel__tag-text{color:var(--color-text)}.constraints-panel__tag-remove{background:transparent;border:none;color:var(--color-text-secondary);cursor:pointer;padding:0;line-height:1;font-size:.875rem;transition:color .15s ease-in-out}.constraints-panel__tag-remove:hover{color:var(--color-error)}.constraints-panel__add{display:grid;grid-template-columns:1fr auto 1fr auto;gap:.5rem;align-items:center;margin-bottom:.75rem}.constraints-panel__input{padding:.5rem .75rem;font-size:.875rem;background:var(--color-background);color:var(--color-text);border:1px solid var(--color-border);border-radius:.25rem;transition:border-color .15s ease-in-out}.constraints-panel__input:focus{outline:none;border-color:var(--color-primary)}.constraints-panel__input::placeholder{color:var(--color-text-secondary)}.constraints-panel__arrow{font-size:.875rem;color:var(--color-text-secondary)}.constraints-panel__add-btn{padding:.5rem .75rem;font-size:1rem;font-weight:500;background:var(--color-primary);color:#fff;border:none;border-radius:.25rem;cursor:pointer;transition:background .15s ease-in-out;min-width:32px;align-self:stretch}.constraints-panel__add-btn:hover:not(:disabled){background:var(--color-primary-hover)}.constraints-panel__add-btn:disabled{opacity:.5;cursor:not-allowed}.constraints-panel__error{margin-top:.75rem;padding:.5rem .75rem;border-left:3px solid;border-radius:.25rem;font-size:.875rem;background:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error)}.constraints-panel__warning{margin-top:.75rem;padding:.5rem .75rem;border-left:3px solid;border-radius:.25rem;font-size:.875rem;background:var(--color-warning-bg);border-color:var(--color-warning);color:var(--color-warning)}.save-load-controls{display:flex;flex-direction:column;gap:.75rem;position:relative}.save-load-controls__error-banner{margin-top:.75rem;padding:.5rem .75rem;border-left:3px solid;background:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error);padding:.75rem 1rem;font-size:.875rem;border-radius:.25rem;animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.save-load-controls__buttons{display:flex;gap:.75rem;align-items:center}.save-load-controls__btn{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:.875rem;font-weight:500;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out}.save-load-controls__btn img{width:16px;height:16px;filter:var(--icon-filter)}.save-load-controls__btn:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-border-hover)}.save-load-controls__btn:disabled{opacity:.5;cursor:not-allowed}.save-load-controls__load-wrapper{position:relative}.save-load-controls__dropdown{position:absolute;top:calc(100% + .5rem);right:0;min-width:200px;max-height:300px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:.5rem;box-shadow:0 4px 12px var(--color-shadow);z-index:100}.save-load-controls__dropdown::-webkit-scrollbar{width:8px;height:8px}.save-load-controls__dropdown::-webkit-scrollbar-track{background:var(--color-surface)}.save-load-controls__dropdown::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:.25rem}.save-load-controls__dropdown::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}.save-load-controls__dropdown-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;cursor:pointer;transition:background .15s ease-in-out}.save-load-controls__dropdown-item:hover{background:var(--color-surface-hover)}.save-load-controls__dropdown-item:not(:last-child){border-bottom:1px solid var(--color-border)}.save-load-controls__dropdown-name{font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.save-load-controls__delete-btn{padding:.5rem;font-size:.875rem;color:var(--color-text-secondary);background:none;border:none;border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out}.save-load-controls__delete-btn:hover{color:var(--color-error);background:var(--color-error-bg)}.save-load-controls__dialog-overlay{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:100}.save-load-controls__dialog{background:var(--color-surface);border:1px solid var(--color-border);border-radius:.75rem;padding:2rem;max-width:400px;width:90%;box-shadow:0 8px 24px var(--color-shadow)}.save-load-controls__dialog h3{margin:0 0 1rem}.save-load-controls__input{width:100%;padding:.75rem 1rem;font-size:1rem;background:var(--color-background);color:var(--color-text);border:1px solid var(--color-border);border-radius:.25rem;margin-bottom:1rem}.save-load-controls__input:focus{outline:none;border-color:var(--color-primary)}.save-load-controls__error{margin-top:.75rem;padding:.5rem .75rem;border-left:3px solid;border-radius:.25rem;font-size:.875rem;background:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error);margin-bottom:1rem;padding:.75rem}.save-load-controls__dialog-actions{display:flex;gap:.75rem;justify-content:flex-end}.save-load-controls__dialog-btn{padding:.75rem 1.5rem;font-size:.875rem;font-weight:500;border:none;border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out}.save-load-controls__dialog-btn--secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.save-load-controls__dialog-btn--secondary:hover{background:var(--color-surface-hover)}.save-load-controls__dialog-btn--primary{background:var(--color-primary);color:#fff}.save-load-controls__dialog-btn--primary:hover{background:var(--color-primary-hover)}.output-display__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:1rem}.output-display h3{margin:0}.output-display__actions{display:flex;gap:.75rem}.output-display__btn{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem;font-size:.875rem;font-weight:500;border:1px solid var(--color-border);border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out}.output-display__btn img{width:16px;height:16px;display:block;filter:var(--icon-filter)}.output-display__btn:active{transform:scale(.95)}.output-display__btn--ban-all{background:var(--color-surface);color:var(--color-text)}.output-display__btn--ban-all:hover{background:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error)}.output-display__btn--regenerate{background:var(--color-surface);color:var(--color-text)}.output-display__btn--regenerate:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}.output-display__btn--copy{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.output-display__btn--copy img{filter:brightness(0) invert(1)}.output-display__btn--copy:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.output-display__btn--download{background:var(--color-surface);color:var(--color-text)}.output-display__btn--download:hover{background:var(--color-surface-hover);border-color:var(--color-primary)}.output-display__btn--download:hover img{filter:brightness(0) saturate(100%) invert(43%) sepia(96%) saturate(1893%) hue-rotate(223deg) brightness(99%) contrast(93%)}.output-display__warning{margin-top:.75rem;padding:.5rem .75rem;border-left:3px solid;border-radius:.25rem;font-size:.875rem;background:var(--color-warning-bg);border-color:var(--color-warning);color:var(--color-warning);margin-bottom:1rem;padding:.75rem 1rem}.output-display__error{margin-top:.75rem;padding:.5rem .75rem;border-left:3px solid;border-radius:.25rem;font-size:.875rem;background:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error);margin-bottom:1rem;padding:.75rem 1rem}.output-display__success{margin-top:.75rem;padding:.5rem .75rem;border-left:3px solid;border-radius:.25rem;font-size:.875rem;background:var(--color-success-bg);border-color:var(--color-success);color:var(--color-success);margin-top:1rem;padding:.75rem 1rem}.output-display__bricks{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;max-height:400px;overflow-y:auto;overflow-x:hidden}.output-display__cycle-divider{font-size:1.25rem;font-weight:700;color:var(--color-border);padding:0 .5rem;-webkit-user-select:none;user-select:none}.output-display__brick{position:relative;display:inline-flex;align-items:center;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:.25rem;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:.875rem;transition:all .15s ease-in-out;cursor:default}.output-display__brick:hover{border-color:var(--color-primary);box-shadow:0 2px 4px var(--color-shadow)}.output-display__brick:hover .output-display__brick-text{opacity:.3}.output-display__brick:hover .output-display__brick-actions{opacity:1}.output-display__brick-text{font-weight:500;white-space:nowrap;transition:opacity .15s ease-in-out}.output-display__brick-actions{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;gap:.5rem;opacity:0;transition:opacity .15s ease-in-out;pointer-events:none}.output-display__brick-actions:has(button){pointer-events:auto}@media(max-width:639px){.output-display__brick-actions{opacity:0}}.output-display__brick:active .output-display__brick-actions{opacity:1}.output-display__action-btn{padding:.5rem .75rem;background:var(--color-background);border:1px solid var(--color-border);border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out;box-shadow:0 2px 8px #00000026}.output-display__action-btn img{width:14px;height:14px;filter:var(--icon-filter);display:block}.output-display__action-btn:hover{background:var(--color-surface);border-color:var(--color-primary);transform:scale(1.05)}.output-display__action-btn:hover img{filter:brightness(0) saturate(100%) invert(43%) sepia(96%) saturate(1893%) hue-rotate(223deg) brightness(99%) contrast(93%)}.output-display__action-btn--remove-ban{background:var(--color-error-bg);border-color:var(--color-error)}.output-display__action-btn--remove-ban:hover{background:var(--color-error);transform:scale(1.05)}.output-display__action-btn--remove-force{background:var(--color-success-bg);border-color:var(--color-success)}.output-display__action-btn--remove-force:hover{background:var(--color-success);transform:scale(1.05)}.graph-visualization__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border)}.graph-visualization__header h3{margin:0}.graph-visualization__controls{display:flex;align-items:center;gap:.75rem}.graph-visualization__info{font-size:.875rem;color:var(--color-text-secondary);font-weight:500;padding:.5rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:.25rem}.graph-visualization__reset-btn{padding:.5rem .75rem;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out;display:flex;align-items:center}.graph-visualization__reset-btn img{width:16px;height:16px;display:block;filter:var(--icon-filter)}.graph-visualization__reset-btn:hover{background:var(--color-background);border-color:var(--color-primary)}.graph-visualization__reset-btn:active{transform:scale(.98)}.graph-visualization--empty{display:flex;justify-content:center;align-items:center;min-height:300px;background:var(--color-surface);border:1px dashed var(--color-border);border-radius:.75rem}.graph-visualization--empty p{color:var(--color-text-secondary);margin:0}.graph-visualization__svg{width:100%;height:500px;max-height:500px;max-width:600px;margin:0 auto;display:block;background:var(--color-surface);border:1px solid var(--color-border);border-radius:.75rem;-webkit-user-select:none;user-select:none;touch-action:none}.graph-visualization__cycle-bg{transition:opacity .15s ease-in-out}.graph-visualization__cycle-label{-webkit-user-select:none;user-select:none;pointer-events:none}.graph-visualization__edge{stroke:var(--color-primary);stroke-width:2;fill:none;opacity:.7;transition:opacity .15s ease-in-out}.graph-visualization__edge:hover{opacity:1;stroke-width:3}.graph-visualization__node{cursor:pointer;transition:all .15s ease-in-out}.graph-visualization__node:hover .graph-visualization__node-circle{fill:var(--color-primary);stroke:var(--color-primary-hover)}.graph-visualization__node:hover .graph-visualization__node-text{fill:#fff}.graph-visualization__node-circle{fill:var(--color-surface);stroke:var(--color-border);stroke-width:2;transition:all .15s ease-in-out}.graph-visualization__node-text{fill:var(--color-text);font-weight:500;pointer-events:none;transition:fill .15s ease-in-out}.generated-pairings-panel__tabs{display:flex;border-bottom:1px solid var(--color-border);margin-bottom:1rem}.generated-pairings-panel__tabs__tab{flex:1;padding:.75rem 1rem;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--color-text-secondary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s ease-in-out}.generated-pairings-panel__tabs__tab:hover:not(.generated-pairings-panel__tabs__tab--active){background:var(--color-background);color:var(--color-text)}.generated-pairings-panel__tabs__tab--active{color:var(--color-primary);border-bottom-color:var(--color-primary);background:var(--color-background)}.secret-santa__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:3rem;gap:1.5rem;flex-wrap:wrap}.secret-santa__header>div{flex:1;min-width:300px}.secret-santa__title{margin:0 0 .75rem}.secret-santa__description{font-size:1rem;color:var(--color-text-secondary);margin:0}.secret-santa__grid{display:grid;grid-template-columns:1fr;gap:3rem;align-items:start}@media(min-width:768px){.secret-santa__grid{grid-template-columns:2fr 3fr}}.secret-santa__inputs{display:flex;flex-direction:column;gap:1.5rem}.secret-santa__output{display:flex;flex-direction:column;gap:2rem;min-height:400px}@media(min-width:768px){.secret-santa__output{min-height:0}}.secret-santa__generate-btn{padding:1rem 2rem;font-size:1.125rem;font-weight:600;background:var(--color-primary);color:#fff;border:none;border-radius:.5rem;cursor:pointer;transition:all .15s ease-in-out;box-shadow:0 2px 8px var(--color-shadow)}.secret-santa__generate-btn:hover:not(:disabled){background:var(--color-primary-hover);transform:translateY(-1px);box-shadow:0 4px 12px var(--color-shadow)}.secret-santa__generate-btn:active:not(:disabled){transform:translateY(0)}.secret-santa__generate-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.app-container{display:flex;flex-direction:column;height:100vh;overflow:hidden;background:var(--color-background);color:var(--color-text)}.app-header{flex-shrink:0;height:64px;display:flex;justify-content:space-between;align-items:center;padding:0 1.5rem;background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:10}@media(max-width:639px){.app-header{padding:0 1rem}}.header-content{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:1280px;margin:0 auto}.app-title{font-size:1.25rem;font-weight:700;color:var(--color-primary);margin:0}@media(max-width:639px){.app-title{font-size:1.125rem}}.app-main{flex:1;overflow-y:auto;overflow-x:hidden}.app-main::-webkit-scrollbar{width:8px;height:8px}.app-main::-webkit-scrollbar-track{background:var(--color-surface)}.app-main::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:.25rem}.app-main::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}.content-wrapper{width:100%;max-width:1280px;margin:0 auto;padding:2rem 1.5rem}@media(max-width:639px){.content-wrapper{padding:1.5rem 1rem}}:root[data-theme=dark]{--color-background: #0f0f0f;--color-surface: #1a1a1a;--color-surface-hover: #252525;--color-border: #2a2a2a;--color-border-hover: #3a3a3a;--color-text: #e8e8e8;--color-text-secondary: #a0a0a0;--color-primary: #6366f1;--color-primary-hover: #4f46e5;--color-error: #ef4444;--color-error-bg: rgba(239, 68, 68, .1);--color-warning: #f59e0b;--color-warning-bg: rgba(245, 158, 11, .1);--color-success: #4caf50;--color-success-bg: rgba(76, 175, 80, .1);--color-shadow: rgba(0, 0, 0, .3);--icon-filter: invert(93%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(100%) contrast(88%)}:root[data-theme=light]{--color-background: #ffffff;--color-surface: #f9fafb;--color-surface-hover: #f3f4f6;--color-border: #e5e7eb;--color-border-hover: #d1d5db;--color-text: #111827;--color-text-secondary: #6b7280;--color-primary: #6366f1;--color-primary-hover: #4f46e5;--color-error: #dc2626;--color-error-bg: rgba(220, 38, 38, .1);--color-warning: #d97706;--color-warning-bg: rgba(217, 119, 6, .1);--color-success: #16a34a;--color-success-bg: rgba(22, 163, 74, .1);--color-shadow: rgba(0, 0, 0, .1);--icon-filter: invert(6%) sepia(7%) saturate(1471%) hue-rotate(176deg) brightness(94%) contrast(91%)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:1rem;line-height:1.5;background:var(--color-background);color:var(--color-text);overflow:hidden;transition:background-color .25s ease-in-out,color .25s ease-in-out}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.25;color:var(--color-text)}h1{font-size:2.25rem}@media(max-width:639px){h1{font-size:1.875rem}}h2{font-size:1.875rem}@media(max-width:639px){h2{font-size:1.5rem}}h3{font-size:1.5rem}@media(max-width:639px){h3{font-size:1.25rem}}p{margin-bottom:1rem;line-height:1.75}a{color:var(--color-primary);text-decoration:none;transition:color .15s ease-in-out}a:hover{color:var(--color-primary-hover)}button{font-family:inherit;font-size:inherit;line-height:inherit;cursor:pointer;border:none;background:none;color:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
