@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";.control-panel{background:var(--color-panel-background);border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px var(--color-shadow);border:1px solid var(--color-border);height:100%;min-height:400px;overflow-y:auto;display:flex;flex-direction:column}.control-section{margin-bottom:2rem;flex:1;display:flex;flex-direction:column}.control-section:last-child{margin-bottom:0}.control-section h2{margin:0 0 1rem;font-size:1.25rem;font-weight:600;color:var(--color-foreground);border-bottom:2px solid var(--color-accent);padding-bottom:.5rem}.algorithm-selector{display:flex;flex-direction:column;gap:.75rem}.control-label{font-weight:500;color:var(--color-foreground);font-size:.875rem}.control-select{padding:.75rem;border:2px solid var(--color-border);border-radius:8px;background:var(--color-panel-background);color:var(--color-foreground);font-size:.875rem;transition:border-color .2s ease,box-shadow .2s ease}.control-select:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-shadow)}.control-select:disabled{opacity:.6;cursor:not-allowed}.algorithm-description{font-size:.75rem;color:var(--color-foreground-muted);line-height:1.4;padding:.5rem;background:var(--color-panel-background);border-radius:6px;border-left:3px solid var(--color-accent)}.speed-control{display:flex;flex-direction:column;gap:.75rem}.control-slider{width:100%;height:6px;border-radius:3px;background:var(--color-border);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.control-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--color-accent);cursor:pointer;border:2px solid var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow)}.control-slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--color-accent);cursor:pointer;border:2px solid var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow)}.control-slider:focus{box-shadow:0 0 0 3px var(--color-shadow)}.control-slider:disabled{opacity:.6;cursor:not-allowed}.speed-slider{width:100%;height:6px;border-radius:3px;background:var(--color-border);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background-color .3s ease}.speed-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--color-accent);cursor:pointer;border:2px solid var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow);transition:all .2s ease}.speed-slider::-webkit-slider-thumb:hover{transform:scale(1.1);box-shadow:0 3px 6px var(--color-shadow-strong)}.speed-slider::-webkit-slider-thumb:active{transform:scale(.95)}.speed-slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--color-accent);cursor:pointer;border:2px solid var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow);transition:all .2s ease}.speed-slider::-moz-range-thumb:hover{transform:scale(1.1);box-shadow:0 3px 6px var(--color-shadow-strong)}.speed-slider::-moz-range-thumb:active{transform:scale(.95)}.speed-slider:focus{outline:none;box-shadow:0 0 0 3px var(--color-shadow)}.speed-slider:focus::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--color-shadow),0 2px 4px var(--color-shadow)}.speed-slider:focus::-moz-range-thumb{box-shadow:0 0 0 3px var(--color-shadow),0 2px 4px var(--color-shadow)}.speed-slider:disabled{opacity:.6;cursor:not-allowed}.speed-slider:disabled::-webkit-slider-thumb{cursor:not-allowed;opacity:.6}.speed-slider:disabled::-moz-range-thumb{cursor:not-allowed;opacity:.6}:root[data-theme=dark] .speed-slider{background:var(--color-border)}:root[data-theme=dark] .speed-slider::-webkit-slider-thumb{border-color:var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow-strong)}:root[data-theme=dark] .speed-slider::-moz-range-thumb{border-color:var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow-strong)}:root[data-theme=light] .speed-slider{background:var(--color-border)}:root[data-theme=light] .speed-slider::-webkit-slider-thumb{border-color:var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow)}:root[data-theme=light] .speed-slider::-moz-range-thumb{border-color:var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow)}@media (prefers-contrast: high){.speed-slider{background:var(--color-foreground)!important}.speed-slider::-webkit-slider-thumb{border:3px solid var(--color-foreground)!important;background:var(--color-accent)!important}.speed-slider::-moz-range-thumb{border:3px solid var(--color-foreground)!important;background:var(--color-accent)!important}}@media (prefers-reduced-motion: reduce){.speed-slider,.speed-slider::-webkit-slider-thumb,.speed-slider::-moz-range-thumb{transition:none!important}.speed-slider::-webkit-slider-thumb:hover,.speed-slider::-moz-range-thumb:hover{transform:none!important}}.array-size-control{display:flex;flex-direction:column;gap:.75rem}.array-size-slider{width:100%;height:6px;border-radius:3px;background:var(--color-border);outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background-color .3s ease}.array-size-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--color-accent);cursor:pointer;border:2px solid var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow);transition:all .2s ease}.array-size-slider::-webkit-slider-thumb:hover{transform:scale(1.1);box-shadow:0 3px 6px var(--color-shadow-strong)}.array-size-slider::-webkit-slider-thumb:active{transform:scale(.95)}.array-size-slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--color-accent);cursor:pointer;border:2px solid var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow);transition:all .2s ease}.array-size-slider::-moz-range-thumb:hover{transform:scale(1.1);box-shadow:0 3px 6px var(--color-shadow-strong)}.array-size-slider::-moz-range-thumb:active{transform:scale(.95)}.array-size-slider:focus{outline:none;box-shadow:0 0 0 3px var(--color-shadow)}.array-size-slider:focus::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--color-shadow),0 2px 4px var(--color-shadow)}.array-size-slider:focus::-moz-range-thumb{box-shadow:0 0 0 3px var(--color-shadow),0 2px 4px var(--color-shadow)}.array-size-slider:disabled{opacity:.6;cursor:not-allowed}.array-size-slider:disabled::-webkit-slider-thumb{cursor:not-allowed;opacity:.6}.array-size-slider:disabled::-moz-range-thumb{cursor:not-allowed;opacity:.6}:root[data-theme=dark] .array-size-slider{background:var(--color-border)}:root[data-theme=dark] .array-size-slider::-webkit-slider-thumb{border-color:var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow-strong)}:root[data-theme=dark] .array-size-slider::-moz-range-thumb{border-color:var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow-strong)}:root[data-theme=light] .array-size-slider{background:var(--color-border)}:root[data-theme=light] .array-size-slider::-webkit-slider-thumb{border-color:var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow)}:root[data-theme=light] .array-size-slider::-moz-range-thumb{border-color:var(--color-panel-background);box-shadow:0 2px 4px var(--color-shadow)}@media (prefers-contrast: high){.array-size-slider{background:var(--color-foreground)!important}.array-size-slider::-webkit-slider-thumb{border:3px solid var(--color-foreground)!important;background:var(--color-accent)!important}.array-size-slider::-moz-range-thumb{border:3px solid var(--color-foreground)!important;background:var(--color-accent)!important}}@media (prefers-reduced-motion: reduce){.array-size-slider,.array-size-slider::-webkit-slider-thumb,.array-size-slider::-moz-range-thumb{transition:none!important}.array-size-slider::-webkit-slider-thumb:hover,.array-size-slider::-moz-range-thumb:hover{transform:none!important}}.speed-description{font-size:.75rem;color:var(--color-foreground-muted);text-align:center}.control-buttons{display:flex;flex-direction:column;gap:.75rem}.control-button{padding:.875rem 1rem;border:none;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px}.control-button:focus{outline:none;box-shadow:0 0 0 3px var(--color-shadow)}.control-button:disabled{opacity:.6;cursor:not-allowed}.control-button.primary{background:var(--color-accent);color:var(--color-accent-foreground)}.control-button.primary:hover:not(:disabled){background:var(--color-hover-strong);transform:translateY(-1px)}.control-button.success{background:var(--color-success);color:var(--color-success-foreground)}.control-button.success:hover:not(:disabled){background:var(--color-hover-strong);transform:translateY(-1px)}.control-button.info{background:var(--color-info);color:var(--color-info-foreground)}.control-button.info:hover:not(:disabled){background:var(--color-hover-strong);transform:translateY(-1px)}.control-button.warning{background:var(--color-warning);color:var(--color-warning-foreground)}.control-button.warning:hover:not(:disabled){background:var(--color-hover-strong);transform:translateY(-1px)}.control-button.danger{background:var(--color-error);color:var(--color-error-foreground)}.control-button.danger:hover:not(:disabled){background:var(--color-hover-strong);transform:translateY(-1px)}.metrics-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.metric-item{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;background:var(--color-panel-background);border-radius:8px;border:1px solid var(--color-border)}.metric-label{font-size:.75rem;color:var(--color-foreground-muted);font-weight:500}.metric-value{font-size:1.125rem;font-weight:600;color:var(--color-accent);font-family:Courier New,monospace}.algorithm-info{background:var(--color-panel-background);border-radius:8px;padding:1rem;border:1px solid var(--color-border)}.complexity-info{display:flex;flex-direction:column;gap:.5rem}.complexity-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--color-border)}.complexity-item:last-child{border-bottom:none}.complexity-label{font-size:.875rem;color:var(--color-foreground-muted)}.complexity-value{font-size:.875rem;font-weight:600;color:var(--color-accent);font-family:Courier New,monospace}@media (max-width: 767px){.control-panel{margin-bottom:1rem;min-height:600px}.metrics-grid{grid-template-columns:1fr}.control-buttons{flex-direction:row;flex-wrap:wrap}.control-button{flex:1;min-width:120px}}@media (prefers-contrast: high){.control-panel{border:2px solid var(--color-foreground)}.control-section h2{border-bottom:3px solid var(--color-foreground)}.control-button{border:2px solid var(--color-foreground)}}@media (prefers-reduced-motion: reduce){.control-button{transition:none}.control-button:hover:not(:disabled){transform:none}}.control-button:focus-visible{box-shadow:0 0 0 3px var(--color-shadow-strong)}.control-select:focus-visible{box-shadow:0 0 0 3px var(--color-shadow-strong)}.control-slider:focus-visible{box-shadow:0 0 0 3px var(--color-shadow-strong)}.btn{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;line-height:1;min-height:44px;font-family:inherit}.btn:disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.btn:focus{outline:none;box-shadow:0 0 0 3px var(--color-shadow)}.btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn-soft{background:var(--color-panel-background);color:var(--color-foreground);border:1px solid var(--color-border);box-shadow:0 1px 3px var(--color-shadow)}.btn-soft:hover:not(:disabled){background:var(--color-hover);border-color:var(--color-border-strong);box-shadow:0 2px 6px var(--color-shadow-strong);transform:translateY(-1px)}.btn-soft:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 3px var(--color-shadow)}.btn-solid{background:var(--color-accent);color:var(--color-accent-foreground);box-shadow:0 1px 3px var(--color-shadow)}.btn-solid:hover:not(:disabled){background:var(--color-hover-strong);box-shadow:0 2px 6px var(--color-shadow-strong);transform:translateY(-1px)}.btn-solid:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 3px var(--color-shadow)}.btn-green{background:var(--color-success);color:var(--color-success-foreground);box-shadow:0 1px 3px var(--color-shadow)}.btn-green:hover:not(:disabled){background:var(--color-hover-strong);box-shadow:0 2px 6px var(--color-shadow-strong);transform:translateY(-1px)}.btn-green:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 3px var(--color-shadow)}.btn-blue{background:var(--color-info);color:var(--color-info-foreground);box-shadow:0 1px 3px var(--color-shadow)}.btn-blue:hover:not(:disabled){background:var(--color-hover-strong);box-shadow:0 2px 6px var(--color-shadow-strong);transform:translateY(-1px)}.btn-blue:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 3px var(--color-shadow)}.btn-yellow{background:var(--color-warning);color:var(--color-warning-foreground);box-shadow:0 1px 3px var(--color-shadow)}.btn-yellow:hover:not(:disabled){background:var(--color-hover-strong);box-shadow:0 2px 6px var(--color-shadow-strong);transform:translateY(-1px)}.btn-yellow:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 3px var(--color-shadow)}.btn-red{background:var(--color-error);color:var(--color-error-foreground);box-shadow:0 1px 3px var(--color-shadow)}.btn-red:hover:not(:disabled){background:var(--color-hover-strong);box-shadow:0 2px 6px var(--color-shadow-strong);transform:translateY(-1px)}.btn-red:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 3px var(--color-shadow)}.btn-gray{background:var(--color-foreground-muted);color:var(--color-panel-background);box-shadow:0 1px 3px var(--color-shadow)}.btn-gray:hover:not(:disabled){background:var(--color-foreground-subtle);box-shadow:0 2px 6px var(--color-shadow-strong);transform:translateY(-1px)}.btn-gray:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 3px var(--color-shadow)}:root[data-theme=dark] .btn-soft{background:var(--color-panel-background);border-color:var(--color-border);color:var(--color-foreground)}:root[data-theme=dark] .btn-soft:hover:not(:disabled){background:var(--color-hover);border-color:var(--color-border-strong)}:root[data-theme=light] .btn-soft{background:var(--color-panel-background);border-color:var(--color-border);color:var(--color-foreground)}:root[data-theme=light] .btn-soft:hover:not(:disabled){background:var(--color-hover);border-color:var(--color-border-strong)}@media (prefers-contrast: high){.btn{border:2px solid var(--color-foreground)!important}.btn:focus-visible{outline:3px solid var(--color-foreground)!important;outline-offset:3px!important}}@media (prefers-reduced-motion: reduce){.btn{transition:none!important}.btn:hover:not(:disabled){transform:none!important}.btn:active:not(:disabled){transform:none!important}}.accent-color-preview{width:16px!important;height:16px!important;border-radius:4px!important;border:1px solid var(--color-border)!important;flex-shrink:0!important}.theme-switcher-button{display:flex!important;align-items:center!important;gap:.5rem!important;padding:.75rem 1rem!important;border-radius:8px!important;font-size:.875rem!important;font-weight:500!important;transition:all .2s ease!important;background:var(--color-panel-background)!important;color:var(--color-foreground)!important;border:1px solid var(--color-border)!important;cursor:pointer!important}.theme-switcher-button:hover{background:var(--color-hover)!important;border-color:var(--color-border-strong)!important;transform:translateY(-1px)!important;box-shadow:0 2px 6px var(--color-shadow-strong)!important}.theme-switcher-button:focus{outline:none!important;border-color:var(--color-accent)!important;box-shadow:0 0 0 3px var(--color-shadow)!important}.theme-switcher-button:focus-visible{outline:2px solid var(--color-accent)!important;outline-offset:2px!important}.select-trigger{background-color:var(--color-panel-background);color:var(--color-foreground);border:2px solid var(--color-border);border-radius:8px;padding:.75rem;font-size:.875rem;min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:.5rem;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease}.select-trigger:hover{border-color:var(--color-border-strong);background-color:var(--color-hover)}.select-trigger:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-shadow)}.select-trigger:disabled{opacity:.6;cursor:not-allowed;background-color:var(--color-disabled);color:var(--color-disabled-foreground)}.select-options{background-color:var(--color-overlay-background);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 12px var(--color-shadow-strong);padding:.5rem;min-width:200px;max-height:300px;overflow-y:auto;z-index:50}.select-option{color:var(--color-foreground);background-color:transparent;border-radius:6px;padding:.75rem 1rem;cursor:pointer;transition:background-color .15s ease;font-size:.875rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:.125rem 0;width:100%;text-align:left;border:none;outline:none}.select-option:hover,.select-option-active{background-color:var(--color-hover)}.select-option-selected{background-color:var(--color-accent);color:var(--color-accent-foreground)}.dropdown-container{position:relative;display:inline-block}.dropdown-trigger{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-radius:8px;font-size:.875rem;font-weight:500;transition:all .2s ease;background:var(--color-panel-background);color:var(--color-foreground);border:1px solid var(--color-border);cursor:pointer}.dropdown-trigger:hover{background:var(--color-hover);border-color:var(--color-border-strong);transform:translateY(-1px);box-shadow:0 2px 6px var(--color-shadow-strong)}.dropdown-trigger:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-shadow)}.dropdown-items{position:absolute;top:100%;right:0;background-color:var(--color-overlay-background);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 12px var(--color-shadow-strong);padding:.5rem;min-width:200px;z-index:50;margin-top:.25rem}.dropdown-item{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-radius:6px;cursor:pointer;transition:background-color .15s ease;font-size:.875rem;margin:.125rem 0;border:none;outline:none;width:100%;text-align:left;background:transparent;color:var(--color-foreground)}.dropdown-item:hover,.dropdown-item-active{background-color:var(--color-hover)}.dropdown-item-selected{background-color:var(--color-accent);color:var(--color-accent-foreground)}.dropdown-separator{background-color:var(--color-border);height:1px;margin:.5rem 0}.dropdown-item-container{position:relative}.dropdown-item-container:hover .accent-color-submenu{display:block}.accent-color-submenu{display:none;position:absolute;left:100%;top:0;background-color:var(--color-overlay-background);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 12px var(--color-shadow-strong);padding:.5rem;min-width:180px;z-index:51;margin-left:.25rem}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.justify-between{justify-content:space-between}.grid{display:grid}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.text-sm{font-size:.875rem}.font-semibold{font-weight:600}.text-gray-500{color:var(--color-foreground-muted)}:root[data-theme=dark] .select-trigger{background-color:var(--color-panel-background);border-color:var(--color-border);color:var(--color-foreground)}:root[data-theme=dark] .select-trigger:hover{background-color:var(--color-hover);border-color:var(--color-border-strong)}:root[data-theme=dark] .select-options{background-color:var(--color-overlay-background);border-color:var(--color-border);box-shadow:0 4px 12px var(--color-shadow-strong)}:root[data-theme=dark] .select-option{color:var(--color-foreground)}:root[data-theme=dark] .select-option:hover{background-color:var(--color-hover)}:root[data-theme=dark] .select-option-selected{background-color:var(--color-accent);color:var(--color-accent-foreground)}:root[data-theme=dark] .dropdown-trigger{background-color:var(--color-panel-background);border-color:var(--color-border);color:var(--color-foreground)}:root[data-theme=dark] .dropdown-trigger:hover{background-color:var(--color-hover);border-color:var(--color-border-strong)}:root[data-theme=dark] .dropdown-items{background-color:var(--color-overlay-background);border-color:var(--color-border);box-shadow:0 4px 12px var(--color-shadow-strong)}:root[data-theme=dark] .dropdown-item{color:var(--color-foreground)}:root[data-theme=dark] .dropdown-item:hover{background-color:var(--color-hover)}:root[data-theme=dark] .dropdown-item-selected{background-color:var(--color-accent);color:var(--color-accent-foreground)}:root[data-theme=light] .select-trigger{background-color:var(--color-panel-background);border-color:var(--color-border);color:var(--color-foreground)}:root[data-theme=light] .select-trigger:hover{background-color:var(--color-hover);border-color:var(--color-border-strong)}:root[data-theme=light] .select-options{background-color:var(--color-overlay-background);border-color:var(--color-border);box-shadow:0 4px 12px var(--color-shadow-strong)}:root[data-theme=light] .select-option{color:var(--color-foreground)}:root[data-theme=light] .select-option:hover{background-color:var(--color-hover)}:root[data-theme=light] .select-option-selected{background-color:var(--color-accent);color:var(--color-accent-foreground)}:root[data-theme=light] .dropdown-trigger{background-color:var(--color-panel-background);border-color:var(--color-border);color:var(--color-foreground)}:root[data-theme=light] .dropdown-trigger:hover{background-color:var(--color-hover);border-color:var(--color-border-strong)}:root[data-theme=light] .dropdown-items{background-color:var(--color-overlay-background);border-color:var(--color-border);box-shadow:0 4px 12px var(--color-shadow-strong)}:root[data-theme=light] .dropdown-item{color:var(--color-foreground)}:root[data-theme=light] .dropdown-item:hover{background-color:var(--color-hover)}:root[data-theme=light] .dropdown-item-selected{background-color:var(--color-accent);color:var(--color-accent-foreground)}@media (prefers-contrast: high){.select-trigger,.dropdown-trigger,.select-options,.dropdown-items{border-width:2px;border-color:var(--color-foreground)}.select-option:hover,.dropdown-item:hover{background-color:var(--color-foreground);color:var(--color-panel-background)}}@media (prefers-reduced-motion: reduce){.select-trigger,.select-option,.dropdown-trigger,.dropdown-item{transition:none}}.bar-display{width:100%;height:100%;min-height:400px;display:flex;flex-direction:column;position:relative}.bar-container{flex:1;display:flex;align-items:flex-end;justify-content:flex-start;padding:24px;position:relative;overflow:hidden;background:var(--color-panel-background);border:1px solid var(--color-border);border-radius:8px}.bar{border-radius:2px 2px 0 0;min-height:4px;position:relative;cursor:pointer;box-shadow:0 1px 3px var(--color-shadow);transition:background-color .2s ease,box-shadow .2s ease,transform .2s ease}.bar:hover{transform:scaleY(1.05);box-shadow:0 2px 6px var(--color-shadow-strong);transition:transform .2s ease,box-shadow .2s ease}.bar-display{--bar-default-color: var(--color-foreground-muted);--bar-compare-color: var(--color-info);--bar-swap-color: var(--color-error);--bar-select-color: var(--color-warning);--bar-insert-color: var(--color-success);--bar-merge-color: var(--color-accent);--bar-sorted-color: var(--color-success);--bar-active-color: var(--color-info);--bar-border-color: var(--color-foreground);--bar-count-color: var(--color-warning);--bar-collect-color: var(--color-accent);--bar-write-color: var(--color-success);--bar-note-color: var(--color-foreground-subtle)}.step-indicator{position:absolute;top:1rem;left:50%;transform:translate(-50%);background:var(--color-panel-background);border:2px solid var(--color-accent);border-radius:8px;padding:.75rem 1rem;box-shadow:0 4px 6px var(--color-shadow);z-index:10;display:flex;flex-direction:column;align-items:center;gap:.25rem;min-width:200px}.step-type{font-size:.75rem;font-weight:700;color:var(--color-accent);text-transform:uppercase;letter-spacing:.05em}.step-description{font-size:.875rem;color:var(--color-foreground);text-align:center;line-height:1.3}.array-info{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--color-panel-background);border-top:1px solid var(--color-border);font-size:.875rem;color:var(--color-foreground-muted)}.array-size,.array-range{font-weight:500}.bar-display.empty{display:flex;align-items:center;justify-content:center;min-height:300px}.empty-message{text-align:center;color:var(--color-foreground-muted)}.empty-message p{margin:.25rem 0}.empty-message p:first-child{font-size:1.125rem;font-weight:500}.empty-message p:last-child{font-size:.875rem}@media (max-width: 767px){.bar-display{min-height:600px}.bar-container{padding:16px}.step-indicator{position:relative;top:auto;left:auto;transform:none;margin-bottom:1rem;width:100%}.array-info{flex-direction:column;gap:.5rem;text-align:center}}.bar.animate-compare{animation:pulse .5s ease-in-out}.bar.animate-swap{animation:shake .3s ease-in-out}.bar.animate-insert{animation:slideIn .4s ease-out}.bar.animate-merge{animation:glow .6s ease-in-out}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}@keyframes slideIn{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes glow{0%,to{box-shadow:0 1px 3px var(--color-shadow)}50%{box-shadow:0 0 20px var(--bar-merge-color)}}@media (prefers-reduced-motion: reduce){.bar{transition:none!important}.bar:hover{transform:none}.step-indicator{animation:none}}.bar:focus{outline:2px solid var(--color-accent);outline-offset:2px}@media print{.bar-display{break-inside:avoid}.step-indicator{display:none}.bar{border:1px solid var(--color-foreground);box-shadow:none}}.bar-container::-webkit-scrollbar{width:8px;height:8px}.bar-container::-webkit-scrollbar-track{background:var(--color-panel-background);border-radius:4px}.bar-container::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.bar-container::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}.bar-display.loading .bar-container{opacity:.7}.bar-display.loading:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:40px;height:40px;border:4px solid var(--color-border);border-top:4px solid var(--color-accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}.algorithm-explanation{background:var(--color-panel-background);border:1px solid var(--color-border);border-radius:12px;padding:24px;box-shadow:0 2px 8px var(--color-shadow);height:100%;min-height:400px;overflow-y:auto}.explanation-header{margin-bottom:24px;padding-bottom:16px;border-bottom:2px solid var(--color-accent)}.algorithm-title{margin:0 0 8px;color:var(--color-foreground);font-size:1.5rem;font-weight:600}.algorithm-description{margin:0;color:var(--color-foreground-muted);line-height:1.6;font-size:.95rem}.explanation-content,.explanation-sections{display:flex;flex-direction:column;gap:24px}.section-title{margin:0 0 16px;color:var(--color-foreground);font-size:1.1rem;font-weight:600}.pseudo-code-section{margin-bottom:0}.pseudo-code{background:var(--color-panel-background);border:1px solid var(--color-border);border-radius:8px;padding:16px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.9rem;line-height:1.5}.code-line{display:flex;align-items:center;padding:4px 8px;border-radius:4px;transition:background-color .2s ease}.code-line:hover{background-color:var(--color-hover)}.line-number{color:var(--color-foreground-subtle);font-size:.8rem;min-width:30px;margin-right:12px;-webkit-user-select:none;user-select:none}.line-content{color:var(--color-foreground);flex:1}.highlight-compare{background-color:var(--color-hover);border-left:3px solid var(--color-warning)}.highlight-swap{background-color:var(--color-hover);border-left:3px solid var(--color-error)}.highlight-select{background-color:var(--color-hover);border-left:3px solid var(--color-info)}.highlight-insert{background-color:var(--color-hover);border-left:3px solid var(--color-success)}.highlight-merge{background-color:var(--color-hover);border-left:3px solid var(--color-accent)}.current-step-section{margin-bottom:0}.current-step{background:var(--color-panel-background);border:1px solid var(--color-border);border-radius:8px;padding:16px}.step-type,.step-indices,.step-values,.step-description{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px;padding:8px 0;border-bottom:1px solid var(--color-border-subtle);gap:12px}.step-type:last-child,.step-indices:last-child,.step-values:last-child,.step-description:last-child{margin-bottom:0;border-bottom:none}.step-label{font-weight:500;color:var(--color-foreground-muted);font-size:.9rem;min-width:80px;flex-shrink:0}.step-value{color:var(--color-foreground);font-weight:600;font-size:.9rem;text-align:right;flex:1;word-break:break-word}.no-step{text-align:center;padding:32px 16px;color:var(--color-foreground-muted);background:var(--color-panel-background);border:1px solid var(--color-border);border-radius:8px}.no-step p{margin:8px 0;font-size:.95rem}.performance-section{margin-bottom:0}.complexity-grid{display:grid;grid-template-columns:1fr;gap:12px}.complexity-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--color-panel-background);border-radius:6px;border:1px solid var(--color-border)}.complexity-label{font-size:.9rem;color:var(--color-foreground-muted);font-weight:500}.complexity-value{font-size:.9rem;color:var(--color-accent);font-weight:600;font-family:Monaco,Menlo,Ubuntu Mono,monospace}.metrics-section{margin-bottom:0}.metrics-grid{display:grid;grid-template-columns:1fr;gap:12px}.metric-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--color-panel-background);border-radius:6px;border:1px solid var(--color-border)}.metric-label{font-size:.9rem;color:var(--color-foreground-muted);font-weight:500}.metric-value{font-size:.9rem;color:var(--color-accent);font-weight:600;font-family:Monaco,Menlo,Ubuntu Mono,monospace}@media (max-width: 768px){.algorithm-explanation{padding:16px;min-height:600px}.explanation-content,.explanation-sections{gap:16px}.step-type,.step-indices,.step-values,.step-description{flex-direction:column;align-items:flex-start;gap:4px}.step-value{text-align:left;max-width:100%}.step-label{min-width:auto}}@media (min-width: 1024px){.complexity-grid,.metrics-grid{grid-template-columns:1fr 1fr}}@media (prefers-contrast: high){.algorithm-explanation{border-width:2px}.code-line{border-left-width:4px}.complexity-item,.metric-item{border-width:2px}}@media (prefers-reduced-motion: reduce){.code-line{transition:none}}.sorting-visualizer{background:var(--color-page-background);color:var(--color-foreground);display:flex;flex-direction:column;min-height:0;flex:1}.visualizer-content{width:100%;margin:0;padding:2rem 1rem;display:grid;grid-template-columns:1fr;gap:2rem;flex:1;align-items:stretch}.control-section{order:1}.visualization-section{order:2;min-height:400px;background:var(--color-panel-background);border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px var(--color-shadow-subtle);border:1px solid var(--color-border)}.explanation-section{order:3}.control-section,.visualization-section,.explanation-section{height:100%}@media (min-width: 768px){.visualizer-content{grid-template-columns:280px minmax(0,1fr) 300px;gap:2rem}.control-section{order:1;grid-column:1}.visualization-section{order:2;grid-column:2}.explanation-section{order:3;grid-column:3}}@media (min-width: 1024px){.visualizer-content{grid-template-columns:clamp(260px,24vw,350px) minmax(0,1fr) clamp(260px,26vw,350px);gap:clamp(1rem,2vw,2rem);grid-auto-rows:1fr}.control-section{order:1;grid-column:1}.visualization-section{order:2;grid-column:2}.explanation-section{order:3;grid-column:3}}@media (min-height: 900px) and (max-width: 1400px){.visualization-section{max-width:min(900px,65vw);justify-self:center}}@media (orientation: portrait) and (min-width: 768px){.visualization-section{max-width:min(900px,70vw);justify-self:center}}@media (min-width: 1440px){.visualizer-content{grid-template-columns:400px 1fr 400px;gap:3rem}}@media (prefers-contrast: high){.visualization-section{border:3px solid var(--color-foreground);box-shadow:none}}@media (prefers-reduced-motion: reduce){.visualization-section{transition:none}}.sorting-visualizer:focus-within{outline:2px solid var(--color-accent);outline-offset:2px}@media print{.sorting-visualizer{background:#fff;color:#000}.control-section,.explanation-section{display:none}.visualization-section{box-shadow:none;border:1px solid var(--color-border)}}.visualizer-header{padding:2rem 1rem;background:var(--color-panel-background);color:var(--color-foreground);box-shadow:0 2px 4px var(--color-shadow);border-bottom:1px solid var(--color-border)}.header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:2rem}.header-text{text-align:left;flex:1}.header-controls{flex-shrink:0;display:flex;align-items:center}.visualizer-header h1{margin:0 0 .5rem;font-size:2.5rem;font-weight:700;letter-spacing:-.025em;color:var(--color-foreground)}.visualizer-header p{margin:0;font-size:1.125rem;color:var(--color-foreground-muted);max-width:600px}@media (max-width: 768px){.header-content{flex-direction:column;text-align:center;gap:1rem}.header-text{text-align:center}.header-controls{justify-content:center}}@media (prefers-contrast: high){.visualizer-header{background:var(--color-foreground);color:var(--color-page-background);border-bottom:3px solid var(--color-page-background)}}.site-footer{background:var(--color-panel-background);color:var(--color-foreground);border-top:1px solid var(--color-border);box-shadow:0 -2px 4px var(--color-shadow-subtle)}.site-footer__inner{max-width:1400px;margin:0 auto;padding:1rem;display:flex;align-items:center;justify-content:center}.site-footer__text{margin:0;font-size:.875rem;color:var(--color-foreground-muted)}.site-footer__link{color:var(--color-foreground);text-decoration:underline}.site-footer__link:hover,.site-footer__link:focus-visible{color:var(--color-foreground);text-decoration-thickness:2px}.App{min-height:100vh;display:flex;flex-direction:column}.gradient-bg{background:linear-gradient(135deg,color-mix(in srgb,var(--accent-a5) 100%,transparent),color-mix(in srgb,var(--accent-a8) 100%,transparent));transition:background .3s ease}@media (max-width: 520px){h1{font-size:1.5rem}}:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;--theme-transition-duration: .3s;--theme-transition-timing: ease;--theme-transition-properties: background-color, color, border-color, box-shadow}:root[data-theme=light]{--color-page-background: #ffffff;--color-panel-background: #f8fafc;--color-overlay-background: #ffffff;--color-foreground: #0f172a;--color-foreground-muted: #475569;--color-foreground-subtle: #64748b;--color-border: #e2e8f0;--color-border-strong: #cbd5e1;--color-border-subtle: #f1f5f9;--color-accent: #3b82f6;--color-accent-foreground: #ffffff;--color-hover: #f8fafc;--color-hover-strong: #f1f5f9;--color-active: #e2e8f0;--color-success: #10b981;--color-success-foreground: #ffffff;--color-warning: #f59e0b;--color-warning-foreground: #ffffff;--color-error: #ef4444;--color-error-foreground: #ffffff;--color-info: #3b82f6;--color-info-foreground: #ffffff;--color-shadow: rgba(0, 0, 0, .1);--color-shadow-strong: rgba(0, 0, 0, .15);--color-shadow-subtle: rgba(0, 0, 0, .05);--color-code-background: #f1f5f9;--color-code-foreground: #0f172a;--color-code-border: #e2e8f0;--color-surface: #ffffff;--color-surface-hover: #f8fafc;--color-input-background: #ffffff;--color-input-border: #e2e8f0;--color-input-border-focus: #3b82f6;--color-disabled: #94a3b8;--color-disabled-foreground: #64748b}:root[data-theme=dark]{--color-page-background: #0f172a;--color-panel-background: #1e293b;--color-overlay-background: #334155;--color-foreground: #f8fafc;--color-foreground-muted: #cbd5e1;--color-foreground-subtle: #94a3b8;--color-border: #334155;--color-border-strong: #475569;--color-border-subtle: #1e293b;--color-accent: #60a5fa;--color-accent-foreground: #0f172a;--color-hover: #1e293b;--color-hover-strong: #334155;--color-active: #475569;--color-success: #34d399;--color-success-foreground: #0f172a;--color-warning: #fbbf24;--color-warning-foreground: #0f172a;--color-error: #f87171;--color-error-foreground: #0f172a;--color-info: #60a5fa;--color-info-foreground: #0f172a;--color-shadow: rgba(0, 0, 0, .3);--color-shadow-strong: rgba(0, 0, 0, .4);--color-shadow-subtle: rgba(0, 0, 0, .2);--color-code-background: #334155;--color-code-foreground: #f8fafc;--color-code-border: #475569;--color-surface: #1e293b;--color-surface-hover: #334155;--color-input-background: #1e293b;--color-input-border: #475569;--color-input-border-focus: #60a5fa;--color-disabled: #475569;--color-disabled-foreground: #64748b}:root:not([data-theme]){--color-page-background: #ffffff;--color-panel-background: #f8fafc;--color-overlay-background: #ffffff;--color-foreground: #0f172a;--color-foreground-muted: #475569;--color-foreground-subtle: #64748b;--color-border: #e2e8f0;--color-border-strong: #cbd5e1;--color-border-subtle: #f1f5f9;--color-accent: #3b82f6;--color-accent-foreground: #ffffff;--color-hover: #f8fafc;--color-hover-strong: #f1f5f9;--color-active: #e2e8f0;--color-success: #10b981;--color-success-foreground: #ffffff;--color-warning: #f59e0b;--color-warning-foreground: #ffffff;--color-error: #ef4444;--color-error-foreground: #ffffff;--color-info: #3b82f6;--color-info-foreground: #ffffff;--color-shadow: rgba(0, 0, 0, .1);--color-shadow-strong: rgba(0, 0, 0, .15);--color-shadow-subtle: rgba(0, 0, 0, .05);--color-code-background: #f1f5f9;--color-code-foreground: #0f172a;--color-code-border: #e2e8f0;--color-surface: #ffffff;--color-surface-hover: #f8fafc;--color-input-background: #ffffff;--color-input-border: #e2e8f0;--color-input-border-focus: #3b82f6;--color-disabled: #94a3b8;--color-disabled-foreground: #64748b}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background-color:var(--color-page-background);color:var(--color-foreground);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,Arial,sans-serif;transition:background-color var(--theme-transition-duration) var(--theme-transition-timing),color var(--theme-transition-duration) var(--theme-transition-timing)}h1,h2,h3,h4,h5,h6{color:var(--color-foreground);transition:color .3s ease}p,span,div{color:inherit}*{transition:background-color .3s ease,color .3s ease,border-color .3s ease,box-shadow .3s ease}*,*:before,*:after{transition-property:var(--theme-transition-properties);transition-timing-function:var(--theme-transition-timing);transition-duration:var(--theme-transition-duration)}img,svg,canvas,video{transition:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;transition:outline .1s ease}:focus-visible:not(:focus-visible){outline:none}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}@media (prefers-contrast: high){:focus-visible{outline:3px solid var(--color-foreground);outline-offset:3px}body{background-color:var(--color-page-background);color:var(--color-foreground)}*{border-color:var(--color-border-strong)!important}}@media (prefers-reduced-motion: reduce){:root{--theme-transition-duration: 0s}*,*:before,*:after{transition:none!important;animation:none!important}}::selection{background-color:var(--color-accent);color:var(--color-accent-foreground)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-panel-background)}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-border)}.accent-color-preview{width:14px;height:14px;border-radius:7px;border:1px solid var(--color-border);transition:border-color .3s ease}:root[data-theme=dark] .accent-color-preview{border-color:var(--color-border-strong);box-shadow:0 0 0 1px var(--color-border-strong)}:root[data-theme=light] .accent-color-preview{border-color:var(--color-border);box-shadow:0 0 0 1px var(--color-border)}.accent-color-preview{position:relative;overflow:hidden}.accent-color-preview:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:50%;box-shadow:inset 0 0 0 1px #ffffff1a;pointer-events:none}@media print{.sorting-visualizer{background:#fff!important;color:#000!important}.control-section,.explanation-section{display:none!important}.visualization-section{box-shadow:none!important;border:1px solid #000!important}*{background:#fff!important;color:#000!important;box-shadow:none!important}}.theme-debug{border:2px dashed var(--color-accent);background:var(--color-panel-background);padding:1rem;margin:1rem 0}.theme-fallback{background-color:var(--color-page-background, #ffffff);color:var(--color-foreground, #000000)}@media (max-width: 768px){:root{--theme-transition-duration: .2s;--color-shadow: rgba(0, 0, 0, .08);--color-shadow-strong: rgba(0, 0, 0, .12);--color-shadow-subtle: rgba(0, 0, 0, .04)}}@media (hover: none) and (pointer: coarse){button,input,select,textarea{min-height:44px;min-width:44px}.control-section,.visualization-section,.explanation-section{padding:1rem}}@media (-webkit-min-device-pixel-ratio: 2),(min-resolution: 192dpi){*{border-width:.5px}}.theme-loading{opacity:.7;transition:opacity var(--theme-transition-duration) var(--theme-transition-timing)}.theme-loading.loaded{opacity:1}.theme-transitioning{transition:all var(--theme-transition-duration) var(--theme-transition-timing)}.theme-smooth{transition:background-color var(--theme-transition-duration) var(--theme-transition-timing),color var(--theme-transition-duration) var(--theme-transition-timing),border-color var(--theme-transition-duration) var(--theme-transition-timing),box-shadow var(--theme-transition-duration) var(--theme-transition-timing)}.theme-error{background-color:var(--color-error);color:var(--color-error-foreground);border-color:var(--color-error)}.theme-success{background-color:var(--color-success);color:var(--color-success-foreground);border-color:var(--color-success)}.theme-warning{background-color:var(--color-warning);color:var(--color-warning-foreground);border-color:var(--color-warning)}.theme-info{background-color:var(--color-info);color:var(--color-info-foreground);border-color:var(--color-info)}.theme-disabled{background-color:var(--color-disabled);color:var(--color-disabled-foreground);border-color:var(--color-disabled);cursor:not-allowed;opacity:.6}.theme-hover:hover{background-color:var(--color-hover)}.theme-hover-strong:hover{background-color:var(--color-hover-strong)}.theme-active:active{background-color:var(--color-active)}.theme-focus:focus{border-color:var(--color-input-border-focus);box-shadow:0 0 0 3px var(--color-shadow)}@keyframes theme-loading-pulse{0%,to{opacity:1}50%{opacity:.5}}.theme-loading-pulse{animation:theme-loading-pulse 1.5s ease-in-out infinite}.theme-transition-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--color-overlay-background);opacity:0;pointer-events:none;transition:opacity var(--theme-transition-duration) var(--theme-transition-timing);z-index:9999}.theme-transition-overlay.active{opacity:.1;pointer-events:auto}*{color:inherit;background-color:inherit;border-color:inherit}.theme-switcher-button{background-color:var(--color-panel-background)!important;color:var(--color-foreground)!important;border:1px solid var(--color-border)!important;box-shadow:0 1px 3px var(--color-shadow)!important;transition:all .3s ease!important}.theme-switcher-button:hover{background-color:var(--color-hover)!important;box-shadow:0 2px 6px var(--color-shadow-strong)!important}:root[data-theme=dark] .theme-switcher-button{background-color:var(--color-panel-background)!important;border-color:var(--color-border)!important}:root[data-theme=light] .theme-switcher-button{background-color:var(--color-surface)!important;border-color:var(--color-border)!important}.theme-switcher-button svg{color:var(--color-foreground)!important}.theme-switcher-button span{color:var(--color-foreground)!important}.theme-switcher-button:focus-visible{outline:2px solid var(--color-accent)!important;outline-offset:2px!important;box-shadow:0 0 0 4px var(--color-shadow)!important}.theme-switcher-button{font-weight:500!important;letter-spacing:.025em!important}:root[data-theme=dark] .theme-switcher-button{text-shadow:0 1px 2px rgba(0,0,0,.1)!important}:root[data-theme=light] .theme-switcher-button{text-shadow:0 1px 2px rgba(255,255,255,.1)!important}@media (max-width: 768px){.theme-switcher-button{padding:.375rem .75rem!important;font-size:.875rem!important}.theme-switcher-button span{display:none!important}.theme-switcher-button svg{width:18px!important;height:18px!important}}@media (prefers-contrast: high){.theme-switcher-button{border-width:2px!important;outline:2px solid var(--color-foreground)!important;outline-offset:2px!important}}.theme-switcher-button.loading{opacity:.7!important;cursor:wait!important;pointer-events:none!important}.theme-switcher-button:disabled{opacity:.5!important;cursor:not-allowed!important;pointer-events:none!important}.theme-switcher-button{transition:all .3s ease,background-color .3s ease,color .3s ease,border-color .3s ease,box-shadow .3s ease!important}.theme-switcher-button:hover{transform:translateY(-1px)!important}.theme-switcher-button:active{transform:translateY(0)!important}.theme-switcher-button{display:flex!important;align-items:center!important;gap:.5rem!important;padding:.5rem 1rem!important;font-weight:500!important;border-radius:6px!important}.theme-switcher-button svg{flex-shrink:0!important;width:16px!important;height:16px!important}input,textarea,select,button{color:var(--color-foreground);background-color:var(--color-input-background);border-color:var(--color-input-border)}
