h1{text-align:center}p{margin-bottom:1.2em;text-align:center;text-indent:0}.main-container{display:flex;flex-direction:column;align-items:center;gap:16px;padding:10px 20px}.palette{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}.palette-swatch{width:34px;height:34px;border:3px solid transparent;border-radius:6px;cursor:pointer;transition:border-color .15s,transform .1s}.palette-swatch:hover{transform:scale(1.1)}.palette-swatch.selected{border-color:#fff;box-shadow:0 0 8px rgba(255,255,255,.6)}.btn-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.btn{padding:10px 22px;border:none;border-radius:6px;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .2s,transform .1s}.btn-solve{background:#4caf50;color:#fff;transition:transform .1s}.btn-solve:hover{transform:scale(1.1)}.btn-reset{background:#f44336;color:#fff;transition:transform .1s}.btn-reset:hover{transform:scale(1.1)}.solution-area{text-align:center;min-height:28px}.solution-area .label{font-size:.8rem;color:#aaa;margin-bottom:4px}.solution-area .algo{font-family::'ui-monospace','JetBrains Mono',monospace,'Courier New';font-variant-ligatures:none;font-size:1.2rem;color:#fff;max-width:420px}.solution-area .error{color:#ef5350}#status-msg{font-size:.8rem;color:#aaa;min-height:1.2em}.canvas-crop{width:90%;aspect-ratio:1.4;overflow:hidden;position:relative}#viewer-canvas{width:100%;aspect-ratio:1;position:absolute;transform:translateY(-15%);background:var(--bg-primary);cursor:pointer;touch-action:none}.move-counter{font-size:.85rem;color:#aaa}.algo .move{display:inline-block;padding:1px 3px;border-radius:3px}.algo .move.active{background:#fff;color:#000;font-weight:700}.controls{display:flex;gap:8px;align-items:center}.ctrl-btn{width:44px;height:44px;border:none;border-radius:50%;background:#333;color:#fff;font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.ctrl-btn:hover{background:#555}.ctrl-btn:disabled{opacity:.5;cursor:default}.speed-control{display:flex;gap:6px;color:#fff}.speed-control input[type=range]{width:180px}